Potopakhin Vitaly Valerevich
Limbajul algoritmilor
Cu toții înțelegem că pentru a scrie algoritmi avem nevoie de o limbă specială. Vom repeta pe scurt de ce ne gândim:
Cuvintele și propozițiile de limbă naturală pot avea mai multe sensuri.
Într-o limbă naturală, semnificația frazei și a frazei poate avea nuanțe și depinde de intonarea vorbitorului.
Este necesar să se ia în considerare posibilitățile interpretului Se poate întâmpla ca comanda algoritmului să nu intre în sistemul de comenzi și se va dovedi a fi un interpret obscur.
Prin urmare, acum vom crea o limbă specială și vom încerca să învățăm toate comentariile făcute. Acordați imediat cine va fi Antreprenorul nostru. În timp ce este o persoană care înțelege semnificația oricărei cuvinte și fraze rusești. Și ca bază pentru limba noastră vom folosi limba rusă.
Problema noastră principală este ambiguitatea cuvintelor și a propozițiilor. Pentru a rezolva aceasta, introducem câteva reguli simple pentru construirea propozițiilor algoritmice.
Norma 1: Propoziția limbii algoritmice trebuie să fie monosillabică.
Exemplul greșit
Regula 3: Nu puteți folosi alegorii. (La fel ca în apa de gâscă, pe capătul cel mai îndepărtat al pământului)
Notă importantă: puteți oferi în continuare exemple de astfel de reguli. Toate acestea dezvăluie un singur, dar cel mai important: sensul propunerii unei limbi algoritmice ar trebui să fie unic.
Norma 4: Propunerea unei limbi algoritmice ar trebui să fie o echipă de acțiune.
Exemplul rău: Un triunghi este o figură geometrică. Această teză ca algoritm nu conține niciun sens.
Regula 5: Dacă o propoziție a unei limbi algoritmice poate avea multe semnificații, atunci se alege cea care este folosită cel mai des (frecvent folosită). Această regulă pare să contrazică definiția algoritmului din care rezultă că poate exista doar un singur sens. Adevărul este că acum știm prea puțin pentru a furniza această proprietate a algoritmilor și va trebui să facem algoritmi rău pentru un timp.
Ce este comanda algoritmului: Comanda algoritmului este definită ca propoziția corect construită a limbajului algoritmic. Apoi, algoritmul poate fi definit ca o secvență de comenzi. Astfel de comenzi simple pot fi, de exemplu, următoarele: Mergeți înainte, luați, puneți, cumpărați.
Cu toate acestea, comenzile simple nu vor fi suficiente pentru noi. Luați în considerare problema:
Având o găleată de mere. Este necesar să se transfere toate merele la frigider.
Pentru a rezolva, aveți nevoie de două comenzi simple: luați mărul din găleată și puneți mărul în frigider. După ce ați finalizat această pereche de comenzi, vom aborda soluția problemei, dar nu o vom rezolva. Pentru o soluție completă, trebuie să executați această comandă de mai multe ori. Să știm acum că în găleată există 100 de mere. Apoi algoritmul nostru va consta din 200 de echipe. Aceasta este cu siguranță o mulțime. Pentru a simplifica sarcina, introducem o comanda complexa care va specifica de câte ori sa execute comenzi simple. Să scriem cu ajutorul lui algoritmul nostru pentru transferul merelor:
Luați mărul din găleată
Puneți mărul în frigider.
Sfârșitul
Să numim această comandă complexă un ciclu. Cuvintele noi "Început" și "Sfârșit" sunt necesare pentru a evidenția grupul de comenzi care intră în ciclu. Acest grup de comenzi se numește o comandă complexă.
Și acum vom complica situația. Să presupunem că nu știm câți în găleata de mere. Atunci comanda "face o sută de ori" nu funcționează. Acum trebuie să verificați dacă în găleată există mere. Algoritmul nostru poate fi scris ca:
În timp ce în găleată există mere de făcut
Luați mărul din găleată
Puneți mărul în frigider
Expresia subliniată este o condiție, un concept pentru noi este nou, deci o analizați mai detaliat.
Definiție: O condiție este o ipoteză care este fie adevărată, fie falsă:
Mai sus am arătat exemple de condiții simple, dar condițiile pot fi complicate, ca și cum ar fi mai multe simple. Iată câteva exemple de condiții complexe:
Mere și pere în frigider.
Cupa nu este goală.
În găleată sunt mere sau pere.
Condiția 1, deoarece constă în două condiții: "Toate merele din frigider" și "Toate perele din frigider". Aceste două condiții sunt combinate printr-o legătură logică "și". În acest caz, condiția complexă este adevărată atunci când ambele condiții simple sunt adevărate.
Starea 2 se obține din condiția "găleată goală" prin adăugarea prefixului "nu". Prefixul "nu" se numește negare. Condiția cu negarea este condiția opusă fără negare și, prin urmare, este adevărată atunci când condiția fără negare este falsă și invers.
Condiția 3 este aceeași, deoarece constă din două simple conectate printr-o buchet sau. Este adevărat atunci când cel puțin una dintre condițiile simple este adevărată. Starea noastră complexă va fi adevărată atunci când în găleată există fie mere, fie pere.
Cu ajutorul acestor trei pachete "și", "sau", "nu" (ele sunt numite și condiții complexe) și condiții simple, se compilează o varietate de condiții complexe.
Concluzie: Deci, avem nevoie de două tipuri de construcții de buclă. Primul tip de ciclu se numește ciclu cu un parametru aplicat atunci când se știe exact de câte ori este necesar să se repete acțiunile ciclice. Al doilea tip de ciclu se numește ciclu după condiție. Ea este executată atâta timp cât condiția este adevărată.
Și acum, pentru un exemplu, vom scrie un algoritm pentru adăugarea a 100 de numere consecutive utilizând atât primul tip al ciclului, cât și cel de-al doilea:
Ciclu după parametru
Buclă după condiție