Windows.  Virus.  Bärbara datorer.  Internet.  Kontor.  Verktyg.  Förare

När man implementerar analoga signalbehandlingsalgoritmer är det ofta nödvändigt att beräkna matematiska funktioner. De vanligaste funktionerna är logaritmiska och exponentiella funktioner. Dessa funktioner används i scheman för att minska och öka det dynamiska omfånget för en sänd eller inspelad signal (kompande). En annan vanlig tillämpning av matematiska exponent- och logaritmkretsar är att beräkna produkten och divisionen av insignaler.

För att beräkna en olinjär funktion används ofta en operationsförstärkare omgiven av negativ återkoppling. Som ett exempel visar figur 1 kretsen för en logaritmisk förstärkare.


Figur 1. Logaritmisk förstärkarkrets

I denna krets ingår ett olinjärt element (halvledardiod) i den negativa återkopplingskretsen, som har ett exponentiellt beroende av strömmen på den pålagda spänningen. Som ett resultat av återkopplingsåtgärden blir beroendet av utgångsspänningen på ingången logaritmiskt. Förstärkningen för denna logaritmkrets bestäms av R1. Vanligtvis är logaritmkretsen utformad för enhetsförstärkning.

Om en diod med en kvadratisk ström-spänningskarakteristik används i denna krets, kommer den att beräkna kvadratroten av insignalen. Det är bekvämt att använda i kretsar för att bestämma signalamplitud under kvadratursignalbehandling.

(1),

Inversen av den logaritmiska funktionen, exponentialen, beräknas på liknande sätt. Endast i detta fall ingår inte det olinjära elementet i återkopplingskretsen, utan vid ingången till förstärkaren. Figur 2 visar ett diagram för beräkning av exponenten på en operationsförstärkare.


Figur 2. Schema för beräkning av exponenten

Om en diod med en kvadratisk ström-spänningskarakteristik används i denna krets, kommer kretsen att beräkna kvadraten på inspänningen och kan användas som en krets för att bestämma insignalens effekt.

Genom att använda dessa kretsar för att beräkna matematiska funktioner kan du beräkna produkten av två analoga signaler. Detta använder den välkända egenskapen hos logaritmer för att ersätta produkten av variabler med summan av logaritmerna för dessa variabler. För den inversa konverteringen används exponentberäkningsfunktionen. I det här fallet är basen för logaritmen helt oviktig.

(2),

Multiplikatorkretsen som implementerar formel (1) på operationsförstärkare visas i figur 3.



Figur 3. Operationsförstärkarens multiplikatorkrets

Trots enkelheten i implementeringen används ett sådant schema ganska sällan, eftersom Multiplikation är endast möjlig för positiva ingångsvärden. Därför används vanligtvis multiplikatorkretsar byggda på basen.

För att beräkna funktioner är det inte alltid möjligt att välja ett olinjärt element med en given ström-spänningskarakteristik. I detta fall kan du använda bitvis linjär approximation av funktionen. Det är lätt att implementera vilken förstärkning som helst på en operationsförstärkare helt enkelt genom att ändra värdet på motståndet i återkopplingskretsen och därigenom ställa in lutningen på funktionen. Omkopplingsmotstånd när ingångsspänningen ändras görs enklast med hjälp av diodbrytare, som levereras med den avstängningsspänning vi ställer in. Ett liknande diagram visas i figur 4.


Figur 4. Funktionsförstärkarkrets

Transistorbaserade multiplikatorer används ofta för att beräkna mer komplexa funktioner. I det enklaste fallet kan X- och Y-ingångarna kombineras för att erhålla en krets för att beräkna kvadraten på insignalen ( Y=X 2).

De kan användas som elektroniska spänningsregulatorer. Genom att lägga på en konstant spänning till en av ingångarna kan du reglera nivån på växelspänningen som tillförs utgången vid utgången.

Litteratur:

Tillsammans med artikeln "Schema för beräkning av matematiska funktioner" läser:

sammanfattning av andra presentationer

"Grundläggande algoritmiska strukturer" - Utförande av "loop body"-kommandon. Blockschema över den algoritmiska strukturen "förgrening". Låt n=5; i=4. Blockschema över den cykliska algoritmen. Avsluta. Algoritmisk struktur "val". Låt n=5; i=5. Start. Förgreningsstruktur. Låt n=5; i=6. Grundläggande typer av algoritmiska strukturer. Algoritmisk struktur "cykel". Positivt tal. Flödesschema över den algoritmiska "val"-strukturen. Linjär algoritm blockschema.

"Typer av algoritmer" - Lägenhetsstädning. Öppna påsen. Lektionsmotto. Torn i Hanoi. Namn på figuren. Titta på den tecknade filmen. Skörda skörden. Introduktion till algoritmen. Närma dig korsningen. Cykliska algoritmer. Gå in i trädgården. Palms. Algoritm för mänskliga handlingar. Grafisk diktering. Inspelningsalgoritmer. Algoritm.

Registrering av en cykel i en procedur. Rättelse av proceduren. Primärfärger. Låt oss rita en vägg. Vad är en algoritm? Team. Interaktiv handledning. Låt oss rita taket. Låt oss rita ett hus. Låt oss rita. Vi ritar fönster. Huset är klart. Cykel. Kunskap. Byt färg på pennan.

"Linjära algoritmproblem" - X = 0 Det finns inga lösningar. Y = 2. X = 3 Y = 1/48. Koordinaterna för triangel ABC:s hörn anges. Beräkna värdet på Y-funktionen vid X=2 med hjälp av algoritmflödesschemat. Konvertera A till större informationsenheter. Algoritmisering är processen att utveckla en algoritm (handlingsplan) för att lösa ett problem. X = -1 Det finns inga lösningar. Exempel på problemlösning. Längden på sidorna av triangeln A, B, C är givna. Hitta arean av triangeln S. Gör ett blockdiagram av algoritmen för att lösa problemet.

"Algoritmiska konstruktioner" - En metod för att representera algoritmer i form av en graf. Förgrening. Presentation av algoritmer i form av en beskrivning av en sekvens av åtgärder. Former för presentation av algoritmer. Flödesschema för "Wallpapering"-algoritmen. Algoritmiska mönster. Algoritm för att lösa problemet. Blockdiagram. Grafiskt sätt att presentera algoritmer. Metoder för att presentera algoritmer. Algoritm. Komplex algoritm. Blockdiagram över grundläggande strukturer.

"Huvudtyper av algoritmiska strukturer" - Skriv algoritmer i verbal form. Arbeta i grupper. Strukturera. Stavning av prefix. Grundläggande typer av algoritmiska strukturer. Kontrollerar självständigt arbete. Fysisk träning. Uppgifter för att konsolidera kunskap. Algoritm. Grundläggande struktur. Ställa in initiala parametrar. Recept för att göra te. Förgrening. Hitta roten. Slinga med postcondition. Cykel. Blockera tecken. Slutet på algoritmen. Huvudtyper av agrorytmiska strukturer.

Allmänna instruktioner
Att syntetisera kretsarna i Sect. 5.1 beskriver följande steg:
1. Beskrivning av den önskade kretsens funktion.
2. Tilldelning av in- och utvariabler och tilldelning av värden 0 och 1.
3. Rita upp en sanningstabell.
4. Fastställande av nödvändiga logiska operationer.
5. Förenkling och vid behov transformation av kretsen.
Om sanningstabellen är känd, är det nu tillrådligt att börja det fjärde steget med sammanställningen av den normala formen av OR. Det kommer att förenklas så mycket som möjligt med hjälp av ett Carnot-diagram. I slutet av steg 4 erhålls en förenklad logisk funktion, som kan användas för att montera en logisk digital krets.
Steg 5 kontrollerar om ytterligare förenkling av funktionen som hittas med hjälp av logisk algebra är möjlig och rationell. Om ja, måste förenklingar genomföras.
Nu måste vi ta reda på vilka logiska element som finns tillgängliga. Den logiska funktionen måste transformeras så att den endast innehåller de tillgängliga logiska elementen. Sedan kan du montera kretsen.

Digital på/av-krets från flera platser

Med hjälp av logiska grindar måste du syntetisera en krets som fungerar som en på/av-krets från flera platser. Utgångstillståndet bör endast ändras om tillståndet för en av ingångarna ändras. Om båda ingångarna ändrar tillstånd, bör utgångstillståndet inte ändras. Kretsen måste byggas på OR-NOT-element.
Den önskade kretsen har två ingångar och en utgång. Ingångsvariablerna kallas A och B. Utgångsvariablerna kallas Z (Figur 5.47).
Sanningstabellen för en krets med två ingångsvariabler har 4 alternativ (Fig. 5.48). Starttillståndet Z för det första alternativet kan ställas in på vilket sätt som helst. Valt Z = 0.
När du går från alternativ 1 till alternativ 2 ändrar variabel A sitt tillstånd. Variabel B ändrar inte tillståndet. Om endast en av ingångarna ändrar tillstånd, måste utgång Z enligt den givna uppgiften ändra tillstånd. Z måste vara lika med 1.
När du går från alternativ 2 till alternativ 3 ändrar variablerna A och B sina tillstånd. Z bör inte ändras. När man går från alternativ 3 till alternativ 4 ändrar variabel A sitt tillstånd från 0 till 1. B förblir lika med 1. Således måste Z ändra tillstånd från 1 till 0. Sanningstabellen är klar. Det kan se annorlunda ut om vi hade valt Z= 1 i alternativ 1.
För sanningstabellen (Fig. 5.48) måste du skriva ner normalformen ELLER. Det ser ut så här:
Z = (AaB)w(AaB).
Om du anger normalformen ELLER i Carnot-diagrammet kan du se att ytterligare förenkling är omöjlig (Fig. 5.49).
Eftersom kretsen måste byggas på OR-HE-element är det nödvändigt att transformera ekvationerna:
Z = (AaB)w(AaB)-,
Z = (AaB)v(AaB),
Z = AaBaAaB.

Ris. 5.50 Digital krets

Kretsen konstruerad enligt den transformerade ekvationen visas i fig. 5,50.

Två av tre byter

System förknippade med ökad risk, till exempel ett kärnkraftverk, måste omedelbart stängas av vid en olycka. Avstängning sker automatiskt med hjälp av en digital krets. Falskt larm kan uppstå i nödsensorer som ansvarar för avstängningar. Därför installeras tre identiska nödsensorer på varje kritisk plats (Fig. 5.51).
Avstängning bör endast ske när minst två av de tre larmsensorerna utlöses. Detta tillvägagångssätt förhindrar onödiga systemavstängningar som orsakar ekonomiska förluster. När de utlöses har nödsensorer tillstånd 1. Systemet bör stängas av om tillstånd 1 är aktivt vid kretsens utgång.
Så, vad som krävs är en krets vars utgång är i tillstånd 1 när minst 2 av de 3 ingångarna är i tillstånd 1. Denna krets kallas en två-av-tre-omkopplare.
Ingångsvariablerna heter A, B och C. Utgångsvariabeln är Z. Låt oss skapa en sanningstabell med hjälp av en verbal beskrivning av kretsens funktionsprincip. Närhelst två indatavariabler är lika med 1, är Z = 1. Om alla tre invariabler är lika med 1, måste Z också vara lika med 1. En sådan sanningstabell visas i fig. 5,52.
Därefter, enligt den sammanställda sanningstabellen, skrivs normalformen OR:

Ris. 5,51.

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

Den normala formen av OR förenklas med hjälp av ett Carnot-diagram (Fig. 5.53). Tre dubbelgrupper kan bildas. Den förenklade ekvationen är:
Z = (AaB)w(BaC)w(AaC).
Med hjälp av denna ekvation kan du bygga ett diagram (fig. 5.54).
Ofta finns bara OR-HE-element till hands. För att bygga en krets som endast använder OR-HE-element, omvandlar vi ekvationen: till °-
Z = (AaB)v(BaC)v(AaC);
======= S O.
Z = (AlB)v(BaC)v(AlC);
—=====—= Fig. 5,55. Brytkrets "två"
Z = AlVlVlSlAlS. av tre" på Sh1I-NE-element.
Motsvarande diagram visas i fig. 5,55.

Paritetskrets

För att upptäcka fel i koder (se avsnitt 8.7 och 8.8), samt för kontroll- och övervakningsuppgifter, krävs ofta en krets där utgången är 1 när ett jämnt antal ingångar är 1.
Denna krets kallas en paritetskrets.
Det krävs att syntetisera en krets med fyra ingångar. Ingångsvariablerna är A, B, C och D. Utgångsvariabeln är Y.
Först måste du skapa en sanningstabell. Y kommer alltid att vara lika med 1 om 0, 2 eller 4 indatavariabler är lika med 1 (Figur 5.56).
Från sanningstabellen får vi den normala ELLER-formen:
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).

Enskilda fullständiga konjunktioner är numrerade. Låt oss försöka förenkla den normala formen av ELLER med hjälp av en Karnaugh-karta (Fig. 5.57). Här står vi inför ett sällsynt fall där det är omöjligt att bilda grupper. Detta betyder att denna normala form av OR inte kan förenklas, och dess diagram visas i fig. 5,58.

En tröskellogikkrets är en krets där ett visst minsta antal indatavariabler måste ha ett tillstånd på 1 för att en logisk 1:a ska visas vid utgången.
Till exempel måste du beräkna en krets med fem ingångsvariabler. Utgången bör endast vara 1 när minst 4 ingångar är 1.
Indatavariablerna heter A, B, C, D och E. Utdatavariabeln är Z. Först måste vi definiera sanningstabellen. Med fem variabler är 32 alternativ möjliga (bild 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).
Normalform ELLER består av sex fullständiga konjunktioner.
Den normala formen av OR förenklas med hjälp av ett Carnot-diagram (Fig. 5.60). Du kan bilda 5 dubbelgrupper. Detta resulterar i följande förenklade logiska funktion:
Z = (A aBaCaE)v (A aBaDaE)v (A aBaCaD)v v(A aC a D a E)v (B aC a D a E).

Diagrammet för den förenklade funktionen visas i fig. 5,61. Denna ekvation kan ytterligare förenklas med hjälp av logikens algebra. För de tre första fullständiga konjunktionerna kan vi lägga ut inom parentes (AaB), för de två sista - (C l D). Den resulterande funktionen är:
Z = [(A A B) A ((CA E) V (D A E) A C A X>))] V [(CA D) A ((A A E) V (B A Z))] . Ändå var det inte möjligt att uppnå någon betydande förenkling.

Jämförelsekrets (komparator)

Inom digital teknik behöver man ofta jämföra digital data med varandra. Den enklaste jämförelsekretsen, den så kallade komparatorn, jämför tillståndet för två variabler med varandra.
Låt variablerna betecknas A och B. A och B kan vara lika. A kan vara större än B och vice versa. Komparatorn har tre utgångar för dessa tre möjliga alternativ. De betecknas X, Y och Z och deras tillstånd tilldelas enligt följande:
A = Z => X = 1;
A > B^> Y= 1;
A< В =>Z = 1.
Så det är nödvändigt att syntetisera en krets med två ingångsvariabler A och B och utgångsvariabler X, Y och Z.
När du bildar en sanningstabell bör du följa reglerna: A är större än B om A = 1 och B = 0. Följaktligen är B större än A om B = 1 och A = 0. Sanningstabellen visas i fig. 5,62.
Logiska funktioner erhålls från sanningstabellen:
X = (AaB)v(AaB);
Y = A a B;
Z = A a B.
Dessa ekvationer är inte förenklade ytterligare. Det önskade schemat visas i fig. 5,63.

Ris. 5,62.

Ris. 5,63.

Innan de lämnar fabriken kontrolleras transistorerna för att säkerställa att fyra viktiga parametrar A, B, C och D ligger inom det acceptabla området. Fyra digitala sensorer används för mätning. Givaren matar 1 om det uppmätta värdet ligger inom intervallet för acceptabla värden. Om det uppmätta värdet ligger utanför intervallet för acceptabla värden, matar sensorn 0.
Transistorer sorteras med hjälp av en digital krets. Om alla fyra värdena ligger inom intervallet för acceptabla värden, blir utgångsvariabeln M 1. Om endast B är utanför intervallet för acceptabla värden, blir utgångsvariabeln N 1. Om endast B och D är utanför intervallet för acceptabla värden acceptabla värden, då får utgångsvariabeln U tillstånd 1. I alla andra fall är utgången Z 1, vilket betyder att transistorn är defekt.
Det krävs att man beräknar kretsen och bygger den endast på NAND-element (även kallad "i NAND-basen").
Ingångarna är fyra variabler A, B, C och D. Utgångsvariablerna är M, N, U och Z. M blir 1 om A = 1, 5 = 1, C = 1 och D = 1. Detta är alternativ 16 i sanningstabell (fig.
5,64). blir 1 om A = \, 5 = 0, C = 1 och D = 1 (alternativ 14). U kommer att vara lika med 1 om A är 1, 5 = 0,
C = 1 och D = 0 (alternativ 6). I alla andra fall, utom 6, 14 och 16, Z— 1.

Ris. 5,64. Sanningstabell för transistorsorteringskrets. För större tydlighet skrivs inte nollor för utdatavariabeln

Resultatet är följande logiska funktioner:
M = AaBaCaD;
N = A a B a C a D; U = A a B aC a D. Funktion Z innehåller 13 kompletta konjunktioner. Z är då alltid 1 om varken M, N eller U är lika med 1. Det är bättre att skriva den normala ELLER-formen för Z (se Fig. 5.64):
Z = (^4a5aCaD)v^a5aCaD^v^aBaCaZ));
Z = M v N vU. Sedan för det direkta värdet av Z:
Z = M v N vU.

Ris. 5,65.

Funktionerna för M, Nn U kan inte förenklas. De måste räknas om tillsammans med ekvationen för Z till NAND-basen:
M = AaBaCaD\
N = AaBaClD;
U = AlVlSlO",
Z = M v N v U = M a N aU;
Z = M a N a U.
Från dessa ekvationer erhålls diagrammet som visas i Fig. 5,65. Genom utgångarna M, N, U och Z kan en mekanisk anordning styras som fördelar transistorerna i 4 olika behållare.

2.1 Utveckling av algoritmen.

Algoritm- Det här

a. beskrivning av sekvensen av åtgärder för att lösa ett problem eller uppnå ett mål;

b. regler för att utföra grundläggande databehandlingsoperationer;

c. beskrivning av beräkningar med matematiska formler.

Innan man börjar utveckla en algoritm är det nödvändigt att tydligt förstå uppgiften: vad som krävs för att erhållas som ett resultat, vilka initiala data behövs och vad som är tillgängligt, vilka begränsningar finns för dessa data. Därefter måste du skriva ner vilka åtgärder som måste vidtas för att erhålla det önskade resultatet från de initiala uppgifterna.

I praktiken är de vanligaste formerna för att presentera algoritmer:

Verbal (inspelningar i naturligt språk);

Grafik (bilder från grafiska symboler);

Pseudokoder (semi-formaliserade beskrivningar av algoritmer i ett villkorligt algoritmiskt språk, inklusive både delar av ett programmeringsspråk och naturliga språkfraser, allmänt accepterade matematiska notationer, etc.);

Programmering (texter på programmeringsspråk).

Det verbala sättet att skriva algoritmer är en beskrivning av de successiva stegen i databehandlingen. Algoritmen specificeras i fri form i naturligt språk.

Exempel. Skriv ner en algoritm för att hitta den största gemensamma divisorn (GCD) av två naturliga tal.

Algoritmen kan vara följande:

1. ställ in två nummer;

2. om siffrorna är lika, ta något av dem som svaret och sluta, annars fortsätt exekvera algoritmen;

3. bestämma det största av talen;

4. ersätt det större talet med skillnaden mellan det större och mindre numret;

5. upprepa algoritmen från steg 2.

Den beskrivna algoritmen är tillämplig på alla naturliga tal och bör leda till en lösning på problemet. Övertyga dig själv om detta genom att använda denna algoritm för att bestämma den största gemensamma delaren av talen 125 och 75.

Den verbala metoden är inte utbredd av följande skäl:

Sådana beskrivningar är inte strikt formaliserbara;

Lider av ordighet i anteckningar;

Det finns utrymme för oklarheter i tolkningen av enskilda föreskrifter.

Det grafiska sättet att presentera algoritmer är mer kompakt och visuellt jämfört med det verbala.

När den presenteras grafiskt avbildas algoritmen som en sekvens av sammankopplade funktionsblock, som vart och ett motsvarar exekveringen av en eller flera åtgärder.

Denna grafiska representation kallas ett flödesschema eller flödesschema.

Pseudokod är ett system av notationer och regler utformade för att enhetligt skriva algoritmer.

Det upptar en mellanplats mellan naturliga och formella språk.

Å ena sidan ligger det nära vanligt naturligt språk, så algoritmer kan skrivas och läsas i det som vanlig text. Å andra sidan använder pseudokod vissa formella konstruktioner och matematisk symbolik, vilket för algoritmnotationen närmare den allmänt accepterade matematiska notationen.

I pseudokod antas inte strikta syntaktiska regler för att skriva kommandon som är inneboende i formella språk, vilket gör det lättare att skriva algoritmen på designstadiet och gör det möjligt att använda en bredare uppsättning kommandon designade för en abstrakt executor. Pseudokod innehåller dock vanligtvis några konstruktioner som är inneboende i formella språk, vilket gör det lättare att gå från att skriva i pseudokod till att skriva en algoritm på ett formellt språk. I synnerhet i pseudokod, såväl som i formella språk, finns det funktionsord, vars betydelse bestäms en gång för alla. Det finns ingen enskild eller formell definition av pseudokod, så olika pseudokoder är möjliga, som skiljer sig åt i uppsättningen av funktionsord och grundläggande (grundläggande) konstruktioner.

2.2 Blockschema.

Ett flödesschema är en grafisk representation av en algoritm där den avbildas som en sekvens av sammankopplade funktionsblock, som vart och ett motsvarar exekveringen av en eller flera åtgärder.

I flödesschemat motsvarar varje typ av åtgärd (inmatning av initiala data, beräkning av värden för uttryck, kontroll av villkor, kontroll av upprepning av åtgärder, slutförande av bearbetning, etc.) en geometrisk figur representerad som en blocksymbol. Blocksymboler är förbundna med övergångslinjer som bestämmer i vilken ordning åtgärder utförs.

Här är de mest använda symbolerna.

Symbolnamn Beteckning och exempel på fyllning Förklaring
Behandla Beräkningsåtgärd eller sekvens av åtgärder
Lösning Kontrollera förhållanden
Modifiering Start av cykeln
Fördefinierad process Beräkningar efter subrutin, standardsubrutin
I/O I/O i allmänhet
Start-stopp Början, slutet av algoritmen, ingång och utgång till subrutinen
Dokumentera Utskriftsresultat

"Process"-blocket används för att beteckna en handling eller sekvens av åtgärder som ändrar betydelsen, formen av presentation eller placering av data. För att förbättra diagrammets tydlighet kan flera enskilda bearbetningsblock kombineras till ett block. Presentationen av enskilda operationer är ganska gratis.

Blocket "beslut" används för att indikera villkorliga kontrollövergångar. Varje "lösnings"-block måste identifiera frågan, villkoret eller jämförelsen som det definierar.

Blocket "modifiering" används för att organisera cykliska strukturer. (Ordet modifikation betyder modifikation, förvandling). En cykelparameter skrivs inuti blocket, för vilken dess initiala värde, gränsvillkor och steg att ändra parametervärdet indikeras för varje upprepning.

Blocket "fördefinierad process" används för att indikera anrop till hjälpalgoritmer som existerar autonomt i form av några oberoende moduler, och för anrop till biblioteksrutiner.

Exempel. Rita ett blockschema över en algoritm för att bestämma höjderna ha, hb, hc för en triangel med sidorna a, b, c, om



Där p = (a + b + c) / 2.
Lösning. Låt oss presentera notationen sedan h a = t/a, h b = t/b, h c = t/c. Flödesschemat måste innehålla start, ingång a, b, c, beräkning p, t, h a, h b, h c , mata ut resultaten och stoppa.

2.3 Algoritmstrukturer.

Algoritmer kan ses som vissa strukturer som består av individuella grundläggande (dvs grundläggande) element. Naturligtvis, med denna inställning till algoritmer, bör studiet av de grundläggande principerna för deras design börja med studiet av dessa grundläggande element

Den logiska strukturen för vilken algoritm som helst kan representeras av en kombination av tre grundläggande strukturer: följande, förgrening och looping.

En karakteristisk egenskap hos grundläggande strukturer är närvaron av en ingång och en utgång.

1. Grundläggande struktur följer. Bildas av en sekvens av åtgärder som följer efter varandra:

2. Grundläggande förgreningsstruktur. Ger, beroende på resultatet av att kontrollera villkoret (ja eller nej), valet av ett av de alternativa sätten att använda algoritmen. Varje väg leder till en gemensam utgång, så algoritmen kommer att fortsätta att köras oavsett vilken väg som väljs.

Strukturera förgrening finns i fyra huvudvarianter:

Om-då-annan;

Valet är annorlunda.

1) om-om-villkor sedan åtgärd slut om 2) om-annat om tillstånd sedan åtgärder 1 annars slutar åtgärder 2 if 3) val val med villkor 1: åtgärder 1 med villkor 2: åtgärder 2. . . . . . . . . . . . under villkor N: åtgärder N valslut

4) val - annars val under villkor 1: åtgärd 1 under villkor 2: åtgärd 2. . . . . . . . . . . .

Grundstrukturen är en cykel. Ger upprepad exekvering av en viss uppsättning åtgärder, som kallas loopens kropp.

Cykelstrukturen finns i tre huvudversioner:

Slingtyp För.

Instruerar att exekvera loopkroppen för alla värden för en viss variabel (loopparameter) i ett givet intervall.

Slingtyp Hejdå.

Beordrar att slingans brödtext ska exekveras så länge som villkoret som skrivits efter ordet while är uppfyllt.

Slingtyp gör - för nu.

Beordrar att slingans brödtext ska exekveras så länge som villkoret som skrivits efter ordet while är uppfyllt. Villkoret kontrolleras efter att loopkroppen exekveras.

Observera att loopar för och medan också kallas loopar med förkontroll av villkoret, och loopar för att göra - medan - loopar med efterkontroll av villkoret. Med andra ord, kropparna för for- och while-slingorna kanske inte exekveras ens en gång om slingslutvillkoret från början inte är sant. Gör slingans brödtext tills den exekveras minst en gång, även om villkoret för att avsluta slingan från början inte är sant.

Cykla för i från i1 till i2 steg i3 cykelkropp (sekvens av åtgärder) slutet av cykeln loop while condition loop body (sekvens av åtgärder) slutet av loopen cycle do loop body (sekvens av åtgärder) tills villkoret slutar på loopen

med en given noggrannhet (för en given växeleffektserie kommer den erforderliga noggrannheten att uppnås när nästa term blir mindre i absolut värde).

Att beräkna summor är en typisk cyklisk uppgift. Det speciella med vårt specifika problem är att antalet termer (och följaktligen antalet repetitioner av loopkroppen) är okänt i förväg. Därför måste slingan avslutas när den erforderliga noggrannheten har uppnåtts.

När du sammanställer en algoritm måste du ta hänsyn till att tecknen på termerna växlar och styrkan av talet x i termernas täljare ökar.

Lös detta problem direkt genom att beräkna delsumman vid varje i:te steg

S:=S+(-1)**(i-1)*x**i/i ,

vi kommer att sluta med en mycket ineffektiv algoritm som kräver ett stort antal operationer. Det är mycket bättre att organisera beräkningarna enligt följande: om du anger täljaren för en term med bokstaven p, kommer täljaren för nästa term att vara lika med -р*х (minustecknet säkerställer växlingen av tecknen på termerna), och själva termen kommer att vara m

kommer att vara lika med p/i, där i är talet på termen.

En algoritm som inkluderar en iterativ loop kallas en iterativ algoritm. Iterativa algoritmer används vid implementering av iterativa numeriska metoder. I iterativa algoritmer är det nödvändigt att säkerställa att villkoret för att lämna cykeln uppnås (konvergens av den iterativa processen). Annars kommer algoritmen att loopa, d.v.s. algoritmens huvudegenskap - effektivitet - kommer inte att uppfyllas.

Kapslade slingor.

Det kan finnas fall då det är nödvändigt att upprepa en viss sekvens av uttalanden inuti kroppen av en loop, det vill säga att organisera en inre loop. Denna struktur kallas en loop inom en loop eller kapslade loopar. Kapningsdjupet för slingor (det vill säga antalet slingor kapslade inuti varandra) kan vara olika.

När du använder en sådan struktur, för att spara datortid, är det nödvändigt att flytta alla uttalanden som inte beror på parametern för den inre slingan från den inre slingan till den yttre.

Exempel kapslade slingor för. Beräkna summan av elementen i den givna matrisen A(5,3).

Exempel kapslade slingor för nu. Beräkna produkten av de element i den givna matrisen A(10,10) som är belägna i skärningspunkten mellan jämna rader och jämna kolumner.

Varje persons dagliga liv innebär att lösa ett stort antal uppgifter av varierande komplexitet på jobbet eller under studierna. Vissa uppgifter är så enkla att när vi utför dem gör vi vissa åtgärder automatiskt, utan att ens tänka. Lösningen på alla problem, även det enklaste, utförs vanligtvis sekventiellt i flera steg. Denna typ av sekvens när man löser problem kallas en algoritm. Idag ska vi titta på vad linjära algoritmer är, hur deras struktur avbildas, hur de löses och programmeras.

Algoritmiskt språk

Detta koncept är en exakt instruktion för utföraren att utföra en viss sekvens av åtgärder, som syftar till att lösa uppgiften.

Detta språk är ett sätt att beskriva algoritmer som vanligtvis är användarorienterade.

  • Algoritm start-slut block. På blocket finns en inskription "början" eller "slut".
  • Data input/output block. Detta block är avbildat som ett parallellogram. Följande inskriptioner placeras på den: "input", "output", "print". De åtföljs också av en lista med in- eller utdatavariabler.
  • Aritmetiskt block, eller beslutsblock. Det motsvarar en rektangel. Blocket ska ha inskriptionen: "operation", "grupp av operationer".

Med hjälp av sådana blockdiagram avbildas lösningen av linjära algoritmer. Låt oss sedan prata om funktionerna för att tilldela värden.

Linjära beräkningsalgoritmer

Den huvudsakliga elementära åtgärden i en beräkningsalgoritm är att tilldela ett visst värde till en variabel. I det fall då värdet på en konstant bestäms av typen av dess notation, kommer variabelvärdet att få ett specifikt värde enbart som ett resultat av tilldelning. Detta kan göras på två sätt: med hjälp av kommandot tilldelning; med inmatningskommandot.

Ett exempel på en linjär algoritmlösning

Låt oss ge ett exempel på en beskrivning av reglerna för att dividera vanliga bråk med hjälp av en linjär algoritm, som i skolböcker har följande innehåll:

  • täljaren för bråk 1 måste multipliceras med nämnaren för bråk 2;
  • nämnaren för bråk 1 måste multipliceras med täljaren för bråk 2;
  • du måste skriva ner ett bråktal där täljaren är resultatet av att ha slutfört steg 1 och nämnaren är resultatet av att ha slutfört steg 2. Den algebraiska formen av denna regel är följande:

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

Så, låt oss bygga en algoritm för att dividera bråk för en dator. För att undvika förvirring kommer vi att använda samma notation för variabler som i formeln ovan. a, b, c, d - källdata i form av heltalsvariabler. Resultatet blir också heltalsvärden. Lösningen i algoritmiskt språk kommer att vara följande:

alg Division av bråk

intakt a, b, c, d, m, n

mata in a, b, c, d

lura

Grafisk form av lösningen

Diagrammet för den linjära algoritmen som beskrivs ovan ser ut så här:

Kommandot värdetilldelning har följande format:

Variabel:=uttryck.

Tecknet “:=” läses som tilldelning.

Tilldelning är ett kommando som är nödvändigt för att datorn ska kunna utföra följande åtgärder:

  • uttrycksberäkningar;
  • tilldela det resulterande värdet till en variabel.

Ovanstående algoritm innehåller två kommandon som tilldelning. I ett blockschema måste tilldelningsinstruktionen skrivas i en rektangel som kallas ett beräkningsblock.

När man beskriver linjära algoritmer finns det inget särskilt behov av att strikt följa strikta regler när man skriver uttryck. Du kan skriva dem med den vanliga matematiska formen. Detta är trots allt inte den strikta syntaxen för ett programmeringsspråk.

I det givna exemplet på algoritmen finns det också ett inmatningskommando:

Ange a, b, c, d.

Ingångskommandot i ett blockschema skrivs i ett parallellogram, det vill säga i ett input-output block. Genom att utföra detta kommando avbryter processorn driften tills användaren utför vissa åtgärder. Nämligen: användaren måste skriva in indatavariablerna (deras värden) på (tangentbordet) och trycka på Enter, som fungerar som Enter-tangenten. Det är viktigt att värdena skrivs in i samma ordning som motsvarande variabler i inmatningslistan.

Linjär algoritm. Dess programmering

Som nämnts i början av artikeln kan linjära program innehålla följande påståenden:

  • uppdrag;
  • input;
  • slutsats.

Det vill säga, med hjälp av de listade operatörerna implementeras algoritmer.

Så i programspråk skrivs det så här:

LÅT A = B, där A är en variabel, B är ett uttryck. Till exempel, A = Y + 20.

Inmatningssatsen ser ut så här:

INPUT, till exempel: INPUT C

Operatören för att mata ut data, värden, skrivs i följande form:

SKRIVA UT. Till exempel PRINT S.

Låt oss ge ett enkelt exempel. Vi måste skriva ett program som kommer att hitta summan av siffrorna A och B som matas in från tangentbordet.

I ett programmeringsspråk kommer vi att få ett program vars text visas nedan.

In- och utdataoperatorer i programmeringsspråket Pascal

Pascal tillhandahåller inga speciella operatorer för att indikera de in- eller utdataoperationer som linjära algoritmer använder. I program utbyts information med hjälp av inbyggda procedurer. Eftersom det inte finns något behov av en preliminär beskrivning av standardproceduren är den tillgänglig för alla program som innehåller ett anrop till det. Namnet på proceduren som nämns är inte heller något reserverat ord.

Vid inmatning av data används sådana operatörer för att hänvisa till en standardprocedure för datainmatning som redan är inbyggd i programmet.

Läs (A, B, C), där A, B, C är variabler som måste matas in i RAM för memorering.

Readlnn (x1, y, x2) - efter att ha avslutat inmatningen, flyttar markören till början av en ny rad.

Läslnn; - indikerar att du väntar på att trycka på "Enter". Vanligtvis infogas detta uttalande i texten före det sista "Slutet" för att spara resultaten av programkörningen på innehållsskärmen.

Data visas på skärmen med hjälp av följande operatorer:

Skriv (A, B, C) - genom att ange värdena A, B, C på en rad lämnar inte markören den aktuella raden.

Writeln (z, y, z2) - efter att ha avslutat utmatningen av värden kommer markören vid denna position att flyttas till en ny rad.

Skrivln; - indikerar att hoppa över en rad och flytta till början av en ny.

Det är med hjälp av så enkla operatorer som data matas in och ut på Pascal-språket.



Om du upptäcker ett fel markerar du ett textstycke och trycker på Ctrl+Enter
DELA: