Bouw een circuit om de waarde te berekenen. Lineaire algoritmen - diagram, structuur en berekening

2.1 Ontwikkeling van het algoritme.

Algoritme- Dit

A. beschrijving van de volgorde van acties om een ​​probleem op te lossen of een doel te bereiken;

B. regels voor het uitvoeren vangen;

C. beschrijving van berekeningen met wiskundige formules.

Voordat u begint met het ontwikkelen van een algoritme, is het noodzakelijk om de taak duidelijk te begrijpen: wat er als resultaat moet worden verkregen, welke initiële gegevens nodig zijn en wat beschikbaar is, welke beperkingen er op deze gegevens bestaan. Vervolgens moet u opschrijven welke acties moeten worden ondernomen om het gewenste resultaat uit de initiële gegevens te verkrijgen.

In de praktijk zijn de meest voorkomende vormen van presentatie van algoritmen:

Verbaal (opnamen in natuurlijke taal);

Grafisch (afbeeldingen van grafische symbolen);

Pseudocodes (semi-geformaliseerde beschrijvingen van algoritmen in een voorwaardelijke algoritmische taal, inclusief zowel elementen van een programmeertaal als zinnen in natuurlijke taal, algemeen aanvaarde wiskundige notaties, enz.);

Programmeren (teksten in programmeertalen).

De verbale manier om algoritmen te schrijven is een beschrijving van de opeenvolgende fasen van gegevensverwerking. Het algoritme wordt in vrije vorm in natuurlijke taal gespecificeerd.

Voorbeeld. Schrijf een algoritme op voor het vinden van de grootste gemene deler (GCD) van twee natuurlijke getallen.

Het algoritme zou er als volgt uit kunnen zien:

1. stel twee cijfers in;

2. als de getallen gelijk zijn, neem dan een van deze als antwoord en stop, anders ga je door met het uitvoeren van het algoritme;

3. bepaal het grootste van de getallen;

4. vervang het grotere getal door het verschil tussen de grotere en kleinere getallen;

5. herhaal het algoritme vanaf stap 2.

Het beschreven algoritme is toepasbaar op alle natuurlijke getallen en zou tot een oplossing voor het probleem moeten leiden. Overtuig jezelf hiervan door met dit algoritme de grootste gemene deler van de getallen 125 en 75 te bepalen.

De verbale methode is om de volgende redenen niet wijdverspreid:

Dergelijke beschrijvingen zijn niet strikt formaliseerbaar;

Last van langdradigheid van noten;

Er is ruimte voor onduidelijkheid bij de interpretatie van individuele regelgeving.

De grafische manier om algoritmen te presenteren is compacter en visueler dan de verbale manier.

Grafisch weergegeven wordt het algoritme weergegeven als een reeks onderling verbonden functionele blokken, die elk overeenkomen met de uitvoering van een of meer acties.

Deze grafische weergave wordt een stroomdiagram of stroomdiagram genoemd.

Pseudocode is een systeem van notaties en regels dat is ontworpen om algoritmen op uniforme wijze te schrijven.

Het neemt een tussenpositie in tussen natuurlijke en formele talen.

Aan de ene kant ligt het dicht bij gewone natuurlijke taal, zodat algoritmen erin kunnen worden geschreven en gelezen als gewone tekst. Aan de andere kant gebruikt pseudocode enkele formele constructies en wiskundige symboliek, waardoor de algoritmenotatie dichter bij de algemeen aanvaarde wiskundige notatie komt.

In pseudocode worden geen strikte syntactische regels aangenomen voor het schrijven van commando's die inherent zijn aan formele talen, wat het gemakkelijker maakt om het algoritme in de ontwerpfase te schrijven en het mogelijk maakt om een ​​bredere reeks commando's te gebruiken die zijn ontworpen voor een abstracte uitvoerder. Pseudocode bevat echter meestal enkele constructies die inherent zijn aan formele talen, waardoor het gemakkelijker wordt om van het schrijven in pseudocode over te gaan naar het schrijven van een algoritme in een formele taal. Met name in pseudocode, maar ook in formele talen, zijn er functiewoorden waarvan de betekenis voor eens en voor altijd wordt bepaald. Er is geen enkele of formele definitie van pseudocode, dus er zijn verschillende pseudocodes mogelijk, die verschillen in de reeks functiewoorden en basis(basis)constructies.

2.2 Blokdiagram.

Een stroomdiagram is een grafische weergave van een algoritme waarin het wordt weergegeven als een reeks onderling verbonden functionele blokken, die elk overeenkomen met de uitvoering van een of meer acties.

In het stroomdiagram komt elk type actie (het invoeren van initiële gegevens, het berekenen van de waarden van uitdrukkingen, het controleren van de voorwaarden, het controleren van de herhaling van acties, het voltooien van de verwerking, enz.) overeen met een geometrische figuur die wordt weergegeven als een bloksymbool. Bloksymbolen zijn verbonden door overgangslijnen die de volgorde bepalen waarin acties worden uitgevoerd.

Dit zijn de meest gebruikte symbolen.

Naam symbool Benaming en voorbeeld van vulling Uitleg
Proces Computationele actie of reeks acties
Oplossing Voorwaarden controleren
Wijziging Begin van de cyclus
Vooraf gedefinieerd proces Berekeningen per subroutine, standaard subroutine
IO I/O in het algemeen
Start-stop Begin, einde van het algoritme, binnenkomst en uitgang van de subroutine
Document Resultaten afdrukken

Het blok "proces" wordt gebruikt om een ​​actie of reeks acties aan te duiden die de betekenis, vorm van presentatie of plaatsing van gegevens verandert. Om de duidelijkheid van het diagram te verbeteren, kunnen meerdere afzonderlijke verwerkingsblokken tot één blok worden gecombineerd. De presentatie van individuele operaties is vrij gratis.

Het "beslissingsblok" wordt gebruikt om voorwaardelijke besturingsovergangen aan te geven. Elk oplossingsblok moet de vraag, voorwaarde of vergelijking identificeren die het definieert.

Het blok "modificatie" wordt gebruikt om cyclische structuren te organiseren. (Het woord modificatie betekent wijziging, transformatie). In het blok wordt een cyclusparameter geschreven, waarvan de beginwaarde, de randvoorwaarde en de stap voor het wijzigen van de parameterwaarde voor elke herhaling worden aangegeven.

Het blok "vooraf gedefinieerd proces" wordt gebruikt om oproepen naar hulpalgoritmen aan te geven die autonoom bestaan ​​in de vorm van enkele onafhankelijke modules, en voor oproepen naar bibliotheekroutines.

Voorbeeld. Maak een blokdiagram van een algoritme voor het bepalen van de hoogten ha, hb, hc van een driehoek met zijden a, b, c, if



Waar p = (a + b + c) / 2.
Oplossing. Laten we de notatie introduceren dan h a = t/a, h b = t/b, h c = t/k. Het stroomdiagram moet start, invoer a, b, c, berekening p, t, h bevatten a, h b, h c , voer de resultaten uit en stop.

2.3 Algoritmestructuren.

Algoritmen kunnen worden gezien als bepaalde structuren die bestaan ​​uit individuele basiselementen (dat wil zeggen basiselementen). Uiteraard zou bij deze benadering van algoritmen de studie van de basisprincipes van hun ontwerp moeten beginnen met de studie van deze basiselementen

De logische structuur van elk algoritme kan worden weergegeven door een combinatie van drie basisstructuren: volgen, vertakken en herhalen.

Kenmerkend voor basisstructuren is de aanwezigheid van één input en één output.

1. Basisstructuur volgt. Gevormd uit een reeks acties die de een na de ander volgen:

2. Basisvertakkingsstructuur. Biedt, afhankelijk van het resultaat van het controleren van de voorwaarde (ja of nee), de keuze voor een van de alternatieve manieren om het algoritme te bedienen. Elk pad leidt naar een gemeenschappelijke uitvoer, dus het algoritme blijft werken, ongeacht welk pad wordt gekozen.

Structuur vertakking bestaat in vier hoofdvarianten:

Als-dan-anders;

De keuze is anders.

1) als-als-voorwaarde, dan eindigt de actie als 2) if-else if-voorwaarde dan actie 1, anders eindigen acties 2 if 3) keuze keuze met voorwaarde 1: acties 1 met voorwaarde 2: acties 2. . . . . . . . . . . . onder voorwaarde N: acties N einde keuze

4) keuze - anders keuze onder voorwaarde 1: actie 1 onder voorwaarde 2: actie 2. . . . . . . . . . . .

onder voorwaarde N: acties N anders acties N+1 einde keuze

Voorbeeld. Maak een blokdiagram van het algoritme voor het berekenen van de functie

De basisstructuur is een cyclus. Biedt herhaalde uitvoering van een bepaalde reeks acties, die de hoofdtekst van de lus wordt genoemd. De cyclusstructuur bestaat in drie hoofdversies:.

Lustype

De basisstructuur is een cyclus. Biedt herhaalde uitvoering van een bepaalde reeks acties, die de hoofdtekst van de lus wordt genoemd. Voor.

Geeft opdracht om de lusbody uit te voeren voor alle waarden van een bepaalde variabele (lusparameter) in een bepaald bereik.

De basisstructuur is een cyclus. Biedt herhaalde uitvoering van een bepaalde reeks acties, die de hoofdtekst van de lus wordt genoemd. Doei.

Geeft opdracht om de hoofdtekst van de lus uit te voeren zolang aan de voorwaarde die na het woord while is geschreven, is voldaan.

doen - voorlopig

Geeft opdracht om de hoofdtekst van de lus uit te voeren zolang aan de voorwaarde die na het woord while is geschreven, is voldaan. De voorwaarde wordt gecontroleerd nadat de lusbody is uitgevoerd. Merk op dat lussen voor en while ook lussen worden genoemd waarbij de voorwaarde vooraf wordt gecontroleerd, en lussen om te doen - while - lussen waarbij de voorwaarde achteraf wordt gecontroleerd. Met andere woorden, de hoofdteksten van de for- en while-lussen worden mogelijk niet één keer uitgevoerd als de luseindvoorwaarde aanvankelijk niet waar is. Voer de hoofdtekst van de lus uit totdat deze minstens één keer wordt uitgevoerd, zelfs als de voorwaarde voor het beëindigen van de lus aanvankelijk niet waar is. Cyclus voor i van i1 tot i2 stap i3 cycluslichaam (volgorde van acties) einde van de cyclus

loop while condition loop body (volgorde van acties) einde van de lus

cyclus doe luslichaam (reeks acties) tot het einde van de lus

met een gegeven nauwkeurigheid (voor een gegeven wisselmachtreeks zal de vereiste nauwkeurigheid worden bereikt wanneer de volgende term in absolute waarde kleiner wordt).

Het berekenen van sommen is een typische cyclische taak. De eigenaardigheid van ons specifieke probleem is dat het aantal termen (en dus het aantal herhalingen van de lusbody) op voorhand onbekend is. Daarom moet de lus eindigen wanneer de vereiste nauwkeurigheid is bereikt.

Bij het samenstellen van een algoritme moet je er rekening mee houden dat de tekens van de termen elkaar afwisselen en dat de kracht van het getal x in de tellers van de termen toeneemt.

we zullen eindigen met een zeer inefficiënt algoritme dat een groot aantal bewerkingen vereist. Het is veel beter om de berekeningen als volgt te organiseren: als je de teller van een term aanwijst met de letter p, dan is de teller van de volgende term gelijk aan -р*х (het minteken zorgt voor de afwisseling van de tekens van de termen), en de term zelf zal m zijn

zal gelijk zijn aan p/i, waarbij i het getal van de term is.

Een algoritme dat een iteratieve lus bevat, wordt een iteratief algoritme genoemd. Iteratieve algoritmen worden gebruikt bij de implementatie van iteratieve numerieke methoden. Bij iteratieve algoritmen is het noodzakelijk ervoor te zorgen dat de voorwaarde voor het verlaten van de cyclus wordt bereikt (convergentie van het iteratieve proces). Anders zal het algoritme een lus maken, d.w.z. aan de belangrijkste eigenschap van het algoritme – effectiviteit – zal niet worden voldaan.

Geneste lussen.

Er kunnen gevallen zijn waarin het nodig is een bepaalde reeks uitspraken binnen de hoofdtekst van een lus te herhalen, dat wil zeggen om een ​​binnenste lus te organiseren. Deze structuur wordt een lus binnen een lus of geneste lussen genoemd. De nestdiepte van lussen (dat wil zeggen het aantal lussen dat in elkaar is genest) kan verschillen.

Wanneer u een dergelijke structuur gebruikt, is het, om computertijd te besparen, noodzakelijk om alle instructies die niet afhankelijk zijn van de parameter van de binnenste lus, van de binnenste lus naar de buitenste te verplaatsen.

Voorbeeld geneste lussen voor. Bereken de som van de elementen van de gegeven matrix A(5,3).

Voorbeeld geneste lussen voor nu. Bereken het product van die elementen van de gegeven matrix A(10,10) die zich op het snijpunt van even rijen en even kolommen bevinden.

Het dagelijks leven van elke persoon omvat het oplossen van een groot aantal taken van verschillende complexiteit op het werk of tijdens het studeren. Sommige taken zijn zo eenvoudig dat wanneer we ze uitvoeren, we bepaalde acties automatisch uitvoeren, zonder zelfs maar na te denken. De oplossing voor elk probleem, zelfs het eenvoudigste, wordt meestal achtereenvolgens in verschillende stappen uitgevoerd. Dit soort volgorde bij het oplossen van problemen wordt een algoritme genoemd. Vandaag zullen we kijken naar wat lineaire algoritmen zijn, hoe hun structuur wordt weergegeven, hoe ze worden opgelost en geprogrammeerd.

Algoritmische taal

Dit concept is een nauwkeurige instructie voor de uitvoerder om een ​​bepaalde reeks acties uit te voeren, gericht op het oplossen van de taak.

Deze taal is een manier om algoritmen te beschrijven die meestal gebruikersgericht zijn.

  • Algoritme begin-eindblok. Op het blok staat een inscriptie "begin" of "einde".
  • Gegevensinvoer/uitvoerblok. Dit blok wordt weergegeven als een parallellogram. Er zijn de volgende opschriften op geplaatst: "invoer", "uitvoer", "afdrukken". Ze gaan ook vergezeld van een lijst met invoer- of uitvoervariabelen.
  • Rekenblok of beslissingsblok. Het komt overeen met een rechthoek. Het blok moet de inscriptie hebben: "operatie", "groep operaties".

Met behulp van dergelijke blokdiagrammen wordt de oplossing van lineaire algoritmen weergegeven. Laten we het vervolgens hebben over de kenmerken van het toewijzen van waarden.

Lineaire computationele algoritmen

De belangrijkste elementaire actie in een computeralgoritme is het toekennen van een bepaalde waarde aan een variabele. In het geval dat de waarde van een constante wordt bepaald door het type notatie ervan, zal de variabele waarde uitsluitend als resultaat van de toewijzing een specifieke waarde ontvangen. Dit kan op twee manieren worden gedaan: met behulp van het toewijzingscommando; met behulp van het invoercommando.

Een voorbeeld van een lineaire algoritme-oplossing

Laten we een voorbeeld geven van een beschrijving van de regels voor het delen van gewone breuken met behulp van een lineair algoritme, dat in schoolboeken de volgende inhoud heeft:

  • de teller van breuk 1 moet worden vermenigvuldigd met de noemer van breuk 2;
  • de noemer van breuk 1 moet worden vermenigvuldigd met de teller van breuk 2;
  • je moet een breuk opschrijven waarvan de teller het resultaat is van het voltooien van stap 1, en de noemer het resultaat is van het voltooien van stap 2. De algebraïsche vorm van deze regel is als volgt:

a/b: c/d=(a*d)/(b*d)=m/n.

Laten we dus een algoritme bouwen voor het delen van breuken voor een computer. Om verwarring te voorkomen, gebruiken we voor variabelen dezelfde notatie als in de hierboven aangegeven formule. a, b, c, d - brongegevens in de vorm van gehele variabelen. Het resultaat zal ook gehele waarden zijn. De oplossing in algoritmische taal zal als volgt zijn:

alg Deling van breuken

intact a, b, c, d, m, n

voer a, b, c, d in

con

Grafische vorm van de oplossing

Het diagram van het hierboven beschreven lineaire algoritme ziet er als volgt uit:

Het commando voor waardetoewijzing heeft het volgende formaat:

Variabele:=expressie.

Het “:=” teken wordt gelezen als toewijzen.

Toewijzing is een opdracht die de computer nodig heeft om de volgende acties uit te voeren:

  • expressieberekeningen;
  • het toewijzen van de resulterende waarde aan een variabele.

Het bovenstaande algoritme bevat twee opdrachten als toewijzing. In een blokdiagram moet de toewijzingsinstructie worden geschreven in een rechthoek die een rekenblok wordt genoemd.

Bij het beschrijven van lineaire algoritmen is er geen bijzondere noodzaak om strikte regels te volgen bij het schrijven van expressies. Je kunt ze schrijven met de gebruikelijke wiskundige vorm. Dit is tenslotte niet de strikte syntaxis van een programmeertaal.

In het gegeven voorbeeld van het algoritme is er ook een invoercommando:

Voer a, b, c, d in.

Het invoercommando in een blokdiagram wordt geschreven in een parallellogram, dat wil zeggen in een invoer-uitvoerblok. Door dit commando uit te voeren, onderbreekt de processor de werking totdat de gebruiker bepaalde acties uitvoert. Namelijk: de gebruiker moet de invoervariabelen (hun waarden) typen op het (toetsenbord) en op Enter drukken, dat fungeert als enter-toets. Het is belangrijk dat de waarden in dezelfde volgorde worden ingevoerd als de overeenkomstige variabelen in de invoerlijst.

Lineair algoritme. Zijn programmering

Zoals vermeld aan het begin van het artikel, kunnen lineaire programma's de volgende uitspraken bevatten:

  • opdracht;
  • invoer;
  • conclusie.

Dat wil zeggen dat met behulp van de vermelde operatoren algoritmen worden geïmplementeerd.

In programmeertaal wordt het dus als volgt geschreven:

LET A = B, waarbij A een variabele is, B een uitdrukking. Bijvoorbeeld A = Y + 20.

De invoerinstructie ziet er als volgt uit:

INGANG, bijvoorbeeld: INGANG C

De operator voor het uitvoeren van gegevens, waarden, wordt in de volgende vorm geschreven:

AFDRUKKEN. Bijvoorbeeld PRINT S.

Laten we een eenvoudig voorbeeld geven. We moeten een programma schrijven dat de som van de getallen A en B vindt die via het toetsenbord zijn ingevoerd.

In een programmeertaal krijgen we een programma, waarvan de tekst hieronder wordt weergegeven.

Invoer- en uitvoeroperatoren in de programmeertaal Pascal

Pascal biedt geen speciale operatoren om de invoer- of uitvoerbewerkingen aan te geven die lineaire algoritmen gebruiken. In programma's wordt informatie uitgewisseld via ingebouwde procedures. Omdat er geen voorafgaande beschrijving van de standaardprocedure nodig is, is deze beschikbaar voor elk programma dat een aanroep ernaar bevat. Bovendien is de naam van de genoemde procedure geen gereserveerd woord.

Bij het invoeren van gegevens worden dergelijke operators gebruikt om te verwijzen naar een standaardprocedure voor gegevensinvoer die al in het programma is ingebouwd.

Lezen (A, B, C), waarbij A, B, C variabelen zijn die in het RAM moeten worden ingevoerd om te kunnen onthouden.

Readlnn (x1, y, x2) - na voltooiing van de invoer gaat de cursor naar het begin van een nieuwe regel.

Leeslnn; - geeft aan dat u wacht om op “Enter” te drukken. Normaal gesproken wordt deze verklaring vóór het laatste “End” in de tekst ingevoegd om de resultaten van de programma-uitvoering op het inhoudsscherm op te slaan.

Gegevens worden op het monitorscherm weergegeven met behulp van de volgende operators:

Schrijven (A, B, C) - door de waarden A, B, C op één regel op te geven, verlaat de cursor de huidige regel niet.

Writeln (z, y, z2) - nadat het uitvoeren van waarden is voltooid, wordt de cursor op deze positie naar een nieuwe regel verplaatst.

Schrijven; - geeft aan dat u één regel overslaat en naar het begin van een nieuwe gaat.

Met behulp van zulke eenvoudige operatoren worden gegevens in- en uitgevoerd in de Pascal-taal.

Bij het implementeren van algoritmen voor analoge signaalverwerking is het vaak nodig om wiskundige functies te berekenen. De meest voorkomende functies zijn logaritmische en exponentiële functies. Deze functies worden gebruikt in schema's om het dynamische bereik van een verzonden of opgenomen signaal te verkleinen en te vergroten (companding). Een andere veel voorkomende toepassing van exponent- en logaritme-wiskundige circuits is het berekenen van het product en de verdeling van ingangssignalen.

Om een ​​niet-lineaire functie te berekenen, wordt vaak een operationele versterker omringd door negatieve feedback gebruikt. Als voorbeeld toont figuur 1 het circuit van een logaritmische versterker.


Figuur 1. Logaritmisch versterkercircuit

In dit circuit is een niet-lineair element (halfgeleiderdiode) opgenomen in het negatieve feedbackcircuit, dat een exponentiële afhankelijkheid van de stroom heeft van de aangelegde spanning. Als gevolg van de feedbackactie wordt de afhankelijkheid van de uitgangsspanning van de ingang logaritmisch. De versterking van dit logaritmecircuit wordt bepaald door R1. Typisch is het logaritmecircuit ontworpen voor eenheidsversterking.

Als in dit circuit een diode met een kwadratische stroom-spanningskarakteristiek wordt gebruikt, berekent deze de vierkantswortel van het ingangssignaal. Het is handig om te gebruiken in circuits voor het bepalen van de signaalamplitude tijdens kwadratuursignaalverwerking.

(1),

Het omgekeerde van de logaritmische functie, de exponentiële, wordt op een vergelijkbare manier berekend. Alleen in dit geval wordt het niet-lineaire element niet in het terugkoppelcircuit opgenomen, maar aan de ingang van de versterker. Figuur 2 toont een diagram voor het berekenen van de exponent op een operationele versterker.


Figuur 2. Schema voor het berekenen van de exponent

Als in deze schakeling een diode met een kwadratische stroom-spanningskarakteristiek wordt gebruikt, berekent de schakeling het kwadraat van de ingangsspanning en kan deze worden gebruikt als schakeling voor het bepalen van het ingangssignaalvermogen.

Met behulp van deze circuits voor het berekenen van wiskundige functies kunt u het product van twee analoge signalen berekenen. Hierbij wordt de bekende eigenschap van logaritmen gebruikt om het product van variabelen te vervangen door de som van de logaritmen van deze variabelen. Voor de inverse conversie wordt de exponentberekeningsfunctie gebruikt. In dit geval is de basis van de logaritme volkomen onbelangrijk.

(2),

Het vermenigvuldigingscircuit dat formule (1) op operationele versterkers implementeert, wordt getoond in figuur 3.



Figuur 3. Operationeel ver

Ondanks de eenvoud van implementatie wordt een dergelijk schema vrij zelden gebruikt, omdat Vermenigvuldiging is alleen mogelijk bij positieve invoerwaarden. Daarom worden meestal vermenigvuldigingscircuits gebruikt die op de basis zijn gebouwd.

Om functies te berekenen is het niet altijd mogelijk om een ​​niet-lineair element met een gegeven stroom-spanningskarakteristiek te selecteren. In dit geval kunt u een stuksgewijs lineaire benadering van de functie gebruiken. Het is gemakkelijk om elke versterking op een operationele versterker te implementeren door simpelweg de waarde van de weerstand in het feedbackcircuit te veranderen, waardoor de helling van de functie wordt ingesteld. Het schakelen van weerstanden wanneer de ingangsspanning verandert, is het gemakkelijkst te doen met behulp van diodeschakelaars, die worden voorzien van de door ons ingestelde uitschakelspanning. Een soortgelijk diagram wordt getoond in Figuur 4.


Figuur 4. Functieversterkercircuit

Transistorgebaseerde vermenigvuldigers worden vaak gebruikt om complexere functies te berekenen. In het eenvoudigste geval kunnen de X- en Y-ingangen worden gecombineerd om een ​​circuit te verkrijgen voor het berekenen van het kwadraat van het ingangssignaal ( Y=X 2).

Ze kunnen worden gebruikt als elektronische spanningsregelaars. Door een constante spanning op een van de ingangen aan te leggen, kunt u het niveau van de wisselspanning regelen die aan de uitgang aan de uitgang wordt geleverd.

Literatuur:

Lees samen met het artikel "Schema's voor het berekenen van wiskundige functies":

Algemene instructies
Om de circuits in Sect. 5.1 beschrijft de volgende stappen:
1. Beschrijving van de functie van het benodigde circuit.
2. Toewijzing van invoer- en uitvoervariabelen en toewijzing van waarden 0 en 1.
3. Een waarheidstabel opstellen.
4. Bepaling van de noodzakelijke logische bewerkingen.
5. Vereenvoudiging en, indien nodig, transformatie van de schakeling.
Als de waarheidstabel bekend is, dan is het nu raadzaam om de 4e fase te starten met het samenstellen van de normale vorm van OR. Het zal zoveel mogelijk worden vereenvoudigd met behulp van een Carnot-diagram. Aan het einde van stap 4 wordt een vereenvoudigde logische functie verkregen, die kan worden gebruikt om een ​​logisch digitaal circuit samen te stellen.
Stap 5 controleert of verdere vereenvoudiging van de gevonden functie met behulp van logische algebra mogelijk en rationeel is. Zo ja, dan moet er vereenvoudiging plaatsvinden.
Nu moeten we uitzoeken welke logische elementen beschikbaar zijn. De logische functie moet zodanig worden getransformeerd dat deze alleen de beschikbare logische elementen bevat. Vervolgens kunt u het circuit samenstellen.

Digitaal aan/uit circuit vanaf meerdere locaties

Met behulp van logische poorten moet u een circuit synthetiseren dat vanaf meerdere locaties functioneert als een aan/uit-circuit. De uitgangsstatus mag alleen veranderen als de status van een van de ingangen verandert. Als beide ingangen hun status veranderen, mag de uitgangsstatus niet veranderen. Het circuit moet worden gebouwd op OR-NOT-elementen.
De gewenste schakeling heeft twee ingangen en één uitgang. De invoervariabelen worden A en B genoemd. De uitvoervariabele heet Z (Figuur 5.47).
De waarheidstabel van een circuit met twee ingangsvariabelen heeft 4 opties (Fig. 5.48). De begintoestand Z voor de eerste optie kan op elke manier worden ingesteld. Geselecteerde Z = 0.
Wanneer u van optie 1 naar optie 2 gaat, verandert variabele A van status. Variabele B verandert de toestand niet. Als slechts één van de ingangen van status verandert, moet uitgang Z volgens de gegeven taak zijn status veranderen. Z moet gelijk zijn aan 1.
Wanneer u van optie 2 naar optie 3 gaat, veranderen de variabelen A en B van status. Z mag niet veranderen. Wanneer we van optie 3 naar optie 4 gaan, verandert variabele A van status van 0 naar 1. B blijft gelijk aan 1. Z moet dus van status veranderen van 1 naar 0. De waarheidstabel is klaar. Het zou er anders uit kunnen zien als we bij optie 1 Z= 1 hadden gekozen.
Voor de waarheidstabel (Fig. 5.48) moet je de normaalvorm OR opschrijven. Het ziet er zo uit:
Z = (AaB)w(AaB).
Als u de normale vorm OR in het Carnot-diagram invoert, ziet u dat verdere vereenvoudiging onmogelijk is (Fig. 5.49).
Omdat het circuit op OR-HE-elementen moet worden gebouwd, is het noodzakelijk om de vergelijkingen te transformeren:
Z = (AaB)w(AaB)-,
Z = (AaB)v(AaB),
Z = AaBaAaB.

Rijst. 5,50 Digitaal circuit

Het circuit dat is opgebouwd volgens de getransformeerde vergelijking wordt getoond in Fig. 5,50.

Twee op de drie wisselen

Systemen die een verhoogd risico met zich meebrengen, zoals een kerncentrale, moeten bij een ongeval onmiddellijk worden stilgelegd. Het uitschakelen gebeurt automatisch via een digitaal circuit. Er kunnen valse alarmen optreden in noodsensoren die verantwoordelijk zijn voor uitschakelingen. Daarom zijn op elke kritieke locatie drie identieke noodsensoren geïnstalleerd (Fig. 5.51).
Uitschakeling mag alleen plaatsvinden als ten minste twee van de drie alarmsensoren worden geactiveerd. Deze aanpak voorkomt onnodige systeemafsluitingen die financiële verliezen veroorzaken. Bij activering hebben noodsensoren status 1. Het systeem moet worden uitgeschakeld als status 1 actief is aan de uitgang van het circuit.
Wat dus nodig is, is een circuit waarvan de uitgang zich in toestand 1 bevindt wanneer ten minste twee van de drie ingangen zich in toestand 1 bevinden. Dit circuit wordt een twee-uit-drie-schakelaar genoemd.
De invoervariabelen heten A, B en C. De uitvoervariabele is Z. Laten we een waarheidstabel maken met behulp van een verbale beschrijving van het werkingsprincipe van het circuit. Wanneer twee invoervariabelen gelijk zijn aan 1, is Z = 1. Als alle drie de invoervariabelen gelijk zijn aan 1, moet Z ook gelijk zijn aan 1. Zo'n waarheidstabel wordt getoond in figuur 2. 5.52.
Vervolgens wordt volgens de gecompileerde waarheidstabel de normale vorm OR geschreven:

Rijst. 5.51.

Z = (A een B een C) v (A een B een C) v a5aC|v(^aSaC).

De normale vorm van OR wordt vereenvoudigd met behulp van een Carnot-diagram (Fig. 5.53). Er kunnen drie dubbele groepen worden gevormd. De vereenvoudigde vergelijking is:
Z = (AaB)w(BaC)w(AaC).
Met behulp van deze vergelijking kunt u een diagram maken (Fig. 5.54).
Vaak zijn alleen OK-HE-elementen aanwezig. Om een ​​circuit te bouwen met alleen OR-HE-elementen, transformeren we de vergelijking: in °-
Z = (AaB)v(BaC)v(AaC);
======= S O.
Z = (A l B)v (B aC)v (A lC);
—=====—= Afb. 5.55. Schakelcircuit "twee"
Z = AlVlVlSlAlS. van drie" op Sh1I-NE-elementen.
Het bijbehorende diagram wordt getoond in Fig. 5.55.

Pariteitscircuit

Om fouten in codes te detecteren (zie paragrafen 8.7 en 8.8), en voor besturings- en monitoringtaken, is vaak een circuit nodig waarbij de uitgang 1 is terwijl een even aantal ingangen 1 is.
Dit circuit wordt een pariteitscircuit genoemd.
Het is vereist om een ​​circuit met vier ingangen te synthetiseren. De invoervariabelen zijn A, B, C en D. De uitvoervariabele is Y.
Eerst moet je een waarheidstabel maken. Y zal altijd gelijk zijn aan 1 als 0, 2 of 4 invoervariabelen gelijk zijn aan 1 (Figuur 5.56).
Uit de waarheidstabel verkrijgen we de normale OR-vorm:
Y = (A l V lS l D)\/ ^A l V lS l (A l V lS l (A l V aS l
v(A l V lS l [A l V lS l (A l V lS l (A l V lS l D).

Individuele volledige voegwoorden zijn genummerd. Laten we proberen de normale vorm van OR te vereenvoudigen met behulp van een Karnaugh-kaart (Fig. 5.57). Hier worden we geconfronteerd met een zeldzaam geval waarin de vorming van groepen onmogelijk is. Dit betekent dat deze normale vorm van OR niet kan worden vereenvoudigd, en het diagram ervan wordt getoond in Fig. 5.58.

Een logisch drempelcircuit is een circuit waarin een bepaald minimumaantal ingangsvariabelen de status 1 moet hebben voordat er een logische 1 aan de uitgang verschijnt.
U moet bijvoorbeeld een circuit berekenen met vijf invoervariabelen. De uitgang mag alleen 1 zijn als minimaal 4 ingangen 1 zijn.
De invoervariabelen heten A, B, C, D en E. De uitvoervariabele is Z. Eerst moeten we de waarheidstabel definiëren. Met vijf variabelen zijn er 32 opties mogelijk (Fig. 5.59):
Z =¦ (A l V lS l D l E^v (A l V lS l D l E)v (A l V lS l D l v^A l V lS l D l E^v [A l V lS l D l E ^ v (A l B lS l D l E).
Normaalvorm OR bestaat uit zes volledige voegwoorden.
De normale vorm van OR wordt vereenvoudigd met behulp van een Carnot-diagram (Fig. 5.60). Je kunt 5 dubbele groepen vormen. Dit resulteert in de volgende vereenvoudigde logische functie:
Z = (A aBaCaE)v (A aBaDaE)v (A aBaCaD)v v(A aC a D a E)v (B aC a D a E).

Het diagram voor de vereenvoudigde functie wordt getoond in Fig. 5.61. Deze vergelijking kan verder worden vereenvoudigd met behulp van de algebra van de logica. Voor de eerste drie volledige voegwoorden kunnen we tussen haakjes zetten (AaB), voor de laatste twee - (C l D). De resulterende functie is:
Z = [(A A B) A ((C A E) V (D A E) A C A X>))] V [(C A D) A ((A A E) V (B A Z))] . Toch was het niet mogelijk een significante vereenvoudiging te bewerkstelligen.

Vergelijkingscircuit (comparator)

In de digitale technologie moet je vaak digitale gegevens met elkaar vergelijken. Het eenvoudigste vergelijkingscircuit, de zogenaamde comparator, vergelijkt de toestand van twee variabelen met elkaar.
Laat de variabelen A en B heten. A en B kunnen gelijk zijn. A kan groter zijn dan B en omgekeerd. De comparator heeft drie uitgangen voor deze drie mogelijke opties. Ze worden aangeduid met X, Y en Z en hun toestanden worden als volgt toegewezen:
A = Z => X = 1;
A > B^> Y= 1;
A< В =>Z = 1.
Het is dus noodzakelijk om een ​​circuit te synthetiseren met twee ingangsvariabelen A en B en uitgangsvariabelen X, Y en Z.
Bij het vormen van een waarheidstabel moet u de regels volgen: A is groter dan B als A = 1 en B = 0. Dienovereenkomstig is B groter dan A als B = 1 en A = 0. De waarheidstabel wordt getoond in Fig. 5.62.
Logische functies worden verkregen uit de waarheidstabel:
X = (AaB)v(AaB);
Y = A een B;
Z = A een B.
Deze vergelijkingen zijn niet verder vereenvoudigd. 5.63.

Rijst. 5.62.

Rijst. 5.63.

Voordat ze de fabriek verlaten, worden transistors gecontroleerd om er zeker van te zijn dat vier belangrijke parameters A, B, C en D binnen het acceptabele bereik liggen. Voor de metingen worden vier digitale sensoren gebruikt. De sensor geeft 1 weer als de gemeten waarde binnen het bereik van acceptabele waarden ligt. Als de gemeten waarde buiten het bereik van acceptabele waarden ligt, geeft de sensor 0 weer.
Transistoren worden gesorteerd met behulp van een digitaal circuit. Als alle vier de waarden binnen het bereik van acceptabele waarden vallen, wordt de uitvoervariabele M 1. Als alleen B buiten het bereik van acceptabele waarden valt, wordt de uitvoervariabele N 1. Als alleen B en D buiten het bereik van acceptabele waarden, dan krijgt de uitgangsvariabele U toestand 1. In alle andere gevallen is de uitgang Z 1, wat betekent dat de transistor defect is.
Het is vereist om het circuit te berekenen en het alleen op NAND-elementen te bouwen (ook wel "in de NAND-basis" genoemd).
De ingangen zijn vier variabelen A, B, C en D. De uitgangsvariabelen zijn M, N, U en Z. M wordt 1 als A = 1, 5 = 1, C = 1 en D = 1. Dit is optie 16 in waarheidstabel (afb.
5,64). zal 1 zijn als A = \, 5 = 0, C = 1 en D = 1 (optie 14). U is gelijk aan 1 als A 1 is, 5 = 0,
C = 1 en D = 0 (optie 6). In alle andere gevallen, behalve 6, 14 en 16, Z-1.

Rijst. 5,64. Waarheidstabel voor transistorsorteercircuit. Voor meer duidelijkheid zijn er geen nullen voor de uitvoervariabele geschreven

Het resultaat is de volgende logische functies:
M = AaBaCaD;
N = A een B een C een D; U = A a B aC a D. Functie Z bevat 13 volledige voegwoorden. Z is dan altijd 1 als noch M, N, noch U gelijk is aan 1. Het is beter om voor Z de normale OR-vorm te schrijven (zie figuur 5.64):
Z = (^4a5aCaD)v^a5aCaD^v^aBaCaZ));
Z = M v N vU. Dan voor de directe waarde van Z:
Z = M v N vU.

Rijst. 5,65.

De functies gevonden voor M, Nn U kunnen niet worden vereenvoudigd. Ze moeten samen met de vergelijking voor Z opnieuw worden berekend naar de NAND-basis:
M = AaBaCaD\
N = A een B aC l D;
U = AlVlSlO",
Z = M v N v U = M een N aU;
Z = M een N een U.
Uit deze vergelijkingen wordt het diagram uit figuur 2 verkregen. 5,65. Via de uitgangen M, N, U en Z kan een mechanisch apparaat worden aangestuurd dat de transistors in 4 verschillende containers verdeelt.

samenvatting van andere presentaties

“Algoritmische basisstructuren” - Uitvoering van “loop body”-opdrachten. Blokdiagram van de algoritmische structuur "vertakking". Laat n=5; ik=4. Blokdiagram van het cyclische algoritme. Einde. Algoritmische structuur "keuze". Laat n=5; ik=5. Begin. Vertakkende structuur. Laat n=5; ik=6. Basistypen van algoritmische structuren. Algoritmische structuur "cyclus". Positief getal. Stroomdiagram van de algoritmische structuur van de "keuze". Lineair algoritmeblokdiagram.

"Soorten algoritmen" - Schoonmaken van appartementen. Open de zak. Lesmotto. Torens van Hanoi. Naam van het figuur. Bekijk de tekenfilm. Oogst de oogst. Inleiding tot het algoritme. Benader de kruising. Cyclische algoritmen. Ga de tuin in. Palmen. Algoritme van menselijk handelen. Grafisch dictaat. Opname-algoritmen. Algoritme.

Een cyclus vastleggen in een procedure. Correctie van de procedure. Primaire kleuren. Laten we een muur tekenen. Wat is een algoritme? Team. Interactieve tutorial. Laten we het dak tekenen. Laten we een huis tekenen. Laten we tekenen. We tekenen ramen. Het huis is klaar. Cyclus. Kennis. Verander de penkleur.

“Lineaire algoritmeproblemen” - X = 0 Er zijn geen oplossingen. Y = 2. X = 3 Y = 1/48. De coördinaten van de hoekpunten van driehoek ABC zijn gegeven. Bereken de waarde van de Y-functie bij X=2 met behulp van het algoritmestroomdiagram. Converteer A naar grotere informatie-eenheden. Algoritmisatie is het proces waarbij een algoritme (actieplan) wordt ontwikkeld om een ​​probleem op te lossen. X = -1 Er zijn geen oplossingen. Voorbeelden van probleemoplossing. De lengtes van de zijden van de driehoek A, B, C worden gegeven. Zoek de oppervlakte van de driehoek S. Maak een blokdiagram van het algoritme voor het oplossen van het probleem.

"Algoritmische constructies" - Een methode om algoritmen weer te geven in de vorm van een grafiek. Vertakking. Presentatie van algoritmen in de vorm van een beschrijving van een reeks acties. Presentatievormen van algoritmen. Stroomdiagram van het algoritme “Wallpapering”. Algoritmische ontwerpen. Algoritme voor het oplossen van het probleem. Blokdiagram. Grafische manier om algoritmen te presenteren. Methoden voor het presenteren van algoritmen. Algoritme. Complex algoritme. Blokdiagrammen van basisstructuren.

"Belangrijkste soorten algoritmische structuren" - Schrijf algoritmen in verbale vorm. Werk in groepen. Structuur. Spelling van voorvoegsels. Basistypen van algoritmische structuren. Zelfstandig werk controleren. Lichaamsbeweging. Taken om kennis te consolideren. Algoritme. Basisstructuur. Initiële parameters instellen. Recept voor het maken van thee. Vertakking. Zoek de wortel. Lus met postvoorwaarde. Cyclus. Blokkeer karakters. Einde van het algoritme. Belangrijkste soorten agroritmische structuren.