Elementele principale utilizate în compilarea diagramelor bloc. Diagrama bloc online: cum să prezentați structural informațiile

Sistemeste o abstractizare a unui proces sau a unui sistem, afișând vizual cele mai semnificative părți. Schemele sunt utilizate pe scară largă din cele mai vechi timpuri până în prezent - desene ale piramidelor antice, hărți terestre, principale circuite electrice. Evident, navigatorii antici doreau să facă schimb de hărți și, prin urmare, au dezvoltat un sistem unificat de notație și reguli pentru implementarea lor. Acorduri similare au fost dezvoltate pentru reprezentarea algoritmilor și sunt stabilite de GOST și standardele internaționale.

În teritoriu Federația Rusă valabil un singur sistem documentația programului (ESPD), din care o parte este Standardul de stat - GOST 19.701-90 „Scheme de algoritmi pentru programe, date și sisteme”. În ciuda faptului că notația descrisă în standard poate fi utilizată pentru a descrie diagrame de resurse ale sistemului, diagrame de interacțiune cu programe etc., acest articol descrie doar dezvoltarea diagramelor algoritmilor de program.

GOSTul considerat corespunde aproape complet standard international ISO 5807:1985.

Elemente ale diagramelor de flux ale algoritmilor

Diagrama bloc este o colecție de simboluri corespunzătoare etapelor algoritmului și liniilor care le conectează. Linie punctata folosit pentru a conecta un personaj la un comentariu. linie solida reflectă dependențele de control dintre simboluri și poate fi prevăzut cu o săgeată. Săgeata poate fi omisă când arcul este direcționat de la stânga la dreapta și de sus în jos. Conform clauzei 4.2.4, liniile trebuie să se apropie de simbol din stânga sau de sus și să meargă de jos sau din dreapta.

Există și alte tipuri de linii utilizate, de exemplu, pentru a descrie diagramele de flux ale algoritmilor paraleli, dar acestea, ca și un număr de simboluri specifice, nu sunt luate în considerare în articolul actual. Sunt luate în considerare doar simbolurile principale, care sunt întotdeauna suficiente pentru elevi.

Terminator de început și de sfârșit al funcției

Orice funcție începe și se termină cu un terminator. Tipul valorii și argumentelor returnate ale funcției este de obicei specificat în comentariile blocului de terminare.

Operatii de intrare si iesire a datelor

GOST definește multe simboluri I/O, cum ar fi ieșirea pe benzi magnetice, afișaje și altele asemenea. Dacă sursa de date nu este critică, se folosește de obicei simbolul paralelogramului. Detaliile I/O pot fi specificate în comentarii.

Efectuarea de operațiuni pe date

Blocul de operațiuni conține de obicei una sau mai multe (GOST nu interzice) operațiuni de atribuire care nu necesită apel la funcții externe.

Bloc care ilustrează ramificarea algoritmului

Blocul sub forma unui romb are o intrare și mai multe ieșiri etichetate. Dacă blocul are 2 ieșiri (corespunde operatorului de sucursală), rezultatul comparației este abonat la acestea - „da / nu”. Dacă mai multe linii ies din bloc (operatorul de selecție), numele variabilei este scris în interiorul acestuia, iar valorile acestei variabile sunt scrise pe arcurile de ieșire.

Apelarea unei proceduri externe

Apelurile către proceduri și funcții externe sunt plasate într-un dreptunghi cu linii verticale suplimentare.

Începutul și sfârșitul ciclului

Simbolurile de început și de sfârșit ale buclei conțin un nume și o condiție. Condiția poate fi absentă într-unul dintre simbolurile perechii. Locația condiției determină tipul de declarație care corespunde simbolurilor într-un limbaj de nivel înalt - o declarație cu o precondiție (while) sau o postcondiție (do ... while).

Pregătirea datelor

Simbolul „pregătirea datelor” într-o formă arbitrară (nu există explicații sau exemple în GOST), setează valorile de intrare. De obicei, este folosit pentru a defini cicluri cu un contor.

Conector

Dacă diagrama de flux nu se potrivește pe o foaie, se folosește un simbol conector pentru a reprezenta fluxul de control între foi. Simbolul poate fi folosit și pe o singură foaie, dacă din anumite motive nu este convenabil să trasați o linie.

cometariu

Un comentariu poate fi conectat fie la un singur bloc, fie la un grup. Un grup de blocuri este evidențiat în diagramă printr-o linie punctată.

Exemple de diagrame de flux

Ca exemple, sunt construite diagrame ale unor algoritmi de sortare foarte simpli, cu accent pe diverse implementări de bucle, deoarece elevii fac cele mai multe greșeli în această parte.

Sortare prin inserare

Matrice în algoritm sortare de inserare este împărțit în părți sortate și neprelucrate încă. Inițial, partea sortată constă dintr-un element și crește treptat.

La fiecare pas al algoritmului, primul element al părții brute a matricei este selectat și inserat în cel sortat, astfel încât ordinea necesară a elementelor să fie păstrată în el. Inserarea poate fi efectuată atât la capătul matricei, cât și la mijloc. La introducerea în mijloc, este necesar să mutați toate elementele situate „în dreapta” poziției de inserare cu un element la dreapta. Algoritmul folosește două cicluri - în primul sunt selectate elementele piesei brute, iar în al doilea se realizează inserția.


Diagramă de sortare prin inserare

În diagrama de flux de mai sus, un simbol de ramură este folosit pentru a organiza bucla. În bucla principală (i< n) iterați peste elementele părții brute a matricei. Dacă toate elementele sunt procesate, algoritmul se termină, în caz contrar, o poziție este căutată pentru inserare i-a element. Poziția dorită va fi stocată în variabila j ca urmare a executării unei bucle interioare care deplasează elementele până când este găsit un element a cărui valoare este mai mică decât i-a.

Pe diagramă bloc arată cum poate fi utilizat simbolul de tranziție - poate fi folosit nu numai pentru a conecta părți ale circuitelor plasate pe foi diferite, ci și pentru a reduce numărul de linii. În unele cazuri, acest lucru evită intersecția liniilor și simplifică percepția algoritmului.

sortare cu bule

sortare cu bule, ca sortare de inserare, folosește două bucle. Într-o buclă imbricată, se realizează o comparație perechi a elementelor și, în caz de încălcare a ordinii secvenței lor, o permutare. Ca rezultat al unei iterații a buclei interioare, se garantează că elementul maxim va fi deplasat la sfârșitul matricei. Bucla exterioară rulează până când întreaga matrice a fost sortată.


Diagramă de sortare cu bule

Diagrama de flux arată utilizarea simbolurilor de început și de sfârșit a buclei. Condiția buclei exterioare (A) este verificată la sfârșit ( cu postcondiție), funcționează atâta timp cât variabila a Schimbat are sensul Adevărat. Bucla interioară folosește condiție prealabilă pentru a repeta peste perechi de elemente comparate. Dacă elementele sunt în ordinea greșită, ele sunt rearanjate prin apelare procedură externă (schimb). Pentru a clarifica scopul procedurii externe și ordinea argumentelor acesteia, este necesar să se scrie comentarii. În cazul în care funcția returnează o valoare, comentariul poate fi scris la caracterul de terminare.

Sortare selecție

LA sortare de selecție matricea este împărțită în părți sortate și brute. Inițial, partea sortată este goală, dar treptat crește. Algoritmul caută elementul minim al piesei neprocesate și îl schimbă cu primul element al aceleiași piese, după care se consideră că primul element a fost procesat (partea sortată este mărită).


Diagramă de sortare a selecției

Diagrama de flux prezintă un exemplu de utilizare a blocului „pregătire” și arată, de asemenea, că în unele cazuri este posibil să se descrie algoritmul mai „lărit” (fără a intra în detalii). Sortarea selecției nu are detalii de implementare găsiți indicele elementului minim al tabloului, astfel încât acestea pot fi descrise printr-un simbol de apel de procedură extern. Dacă nu există o organigramă a procedurii externe, nu strica să scrieți un comentariu la simbolul de apel, excepția pot fi funcții cu nume semnificative precum schimbă, sortează, … .

Elementele principale ale diagramei de flux. Tipuri de diagrame bloc.

Descrierea algoritmului folosind diagrame bloc se realizează prin desenarea unei secvențe de forme geometrice, fiecare dintre acestea implicând efectuarea unei anumite acțiuni a algoritmului. Ordinea în care sunt efectuate acțiunile este indicată prin săgeți. Scrierea algoritmilor folosind diagrame de flux este reglementată de GOST. Aspect principalele blocuri utilizate la scrierea diagramelor bloc sunt prezentate în figură.

Prezentarea algoritmului programului sub forma unei organigrame are două dezavantaje:

sugerează și el nivel scăzut detaliu, care ascunde adesea esența algoritmilor complecși

și vă permite să utilizați nestructurale modalități de a transfera controlul (goto) și adesea pe diagrama algoritmului par mai simple decât cele structurale echivalente.

În plus față de scheme, algoritmii pot fi descriși folosind pseudocoduri, forme de curgereși Diagramele Nassi-Schneiderman. Pe de o parte, toate aceste metode se bazează pe aceleași structuri de bază și, pe de altă parte, permit niveluri diferite de detaliu.

Fiecare simbol al Flow-form corespunde structurii de control și este afișat ca dreptunghi. Pentru a demonstra imbricarea structurilor, simbolul Flow-form se încadrează în zona corespunzătoare a dreptunghiului oricărui alt simbol. Simbolurile sub formă de flux corespunzătoare structurilor de control principale și suplimentare sunt prezentate în Figura A1.

<Действие>
A)
b)
în)
G)
e)

Figura A2 - Simboluri ale diagramelor Nassi-Schneiderman pentru structurile principale:

a - urmatoarea; b - ramificare; în - alegere; g - ciclu-pa; d - buclă la

Principala diferență dintre diagramele Nassi-Schneiderman și formele de curgere este că zona pentru desemnarea condițiilor și opțiunilor de ramificare este reprezentată ca triunghiuri (Figura A2). Această desemnare oferă o mai mare vizibilitate a reprezentării algoritmului.

Un dezavantaj comun al formelor de flux și al diagramelor Nassi-Schneiderman este complexitatea construirii imaginilor simbol, ceea ce complică aplicarea practică a acestor notații pentru a descrie algoritmi mari.

Spre deosebire de diagramele de flux, pseudocodurile nu limitează nivelul de detaliu al operațiunilor, dar, fiind negrafice, își afișează mai rău imbricarea.

Este imposibil să descrii un algoritm non-structural folosind pseudocoduri, forme de flux și diagrame Nassi-Schneiderman, deoarece nu există conventii. Utilizarea lor concentrează inițial proiectantul doar pe metode structurale de transfer al controlului și, prin urmare, necesită o analiză aprofundată a algoritmului.

În funcție de succesiunea acțiunilor din algoritm, algoritmii se disting:

liniar,

ramificat

și structura ciclică.

În algoritmii cu structură liniară, acțiunile sunt efectuate succesiv una după alta.

În algoritmii cu structură ramificată, în funcție de îndeplinirea sau neîndeplinirea oricărei condiții, se realizează diferite secvențe de acțiuni. Fiecare astfel de secvență de acțiuni este numită o ramură a algoritmului.

În algoritmii cu structură ciclică, în funcție de îndeplinirea sau neîndeplinirea oricărei condiții, se realizează o secvență repetată de acțiuni, care se numește corpul ciclului. O buclă imbricată este o buclă care se află în interiorul corpului altei bucle. Există cicluri cu precondiție și postcondiție:

O buclă iterativă este o buclă al cărei număr de repetări nu este specificat, dar este determinat în timpul execuției buclei. În acest caz, o iterație a buclei se numește iterație.

Deci: Cu toată varietatea de algoritmi pentru rezolvarea problemelor, trei tipuri principale pot fi distinse în ei procese de calcul:

· liniar,

· ramificat

· și ciclic,

pentru implementarea cărora programele utilizează structurile de control de bază corespunzătoare:

· ca urmare a,

· ramificare,

· ciclu-la revedere.

Pe lângă cele de bază, limbajele de programare procedurală de nivel înalt folosesc încă trei constructe (structuri) care sunt ușor de implementat prin cele de bază:

· alegere,

· ciclu sus,

· buclă cu un număr dat de repetări.

Aceste șase modele au stat la baza programare structurată. Cuvântul „structural” din nume subliniază faptul că doar construcțiile enumerate sunt folosite în programare. De aici și conceptul de „programare fără acces la”. Programele scrise folosind numai instrucțiuni de transfer de control structurat se numesc programe structurate. , pentru a sublinia diferența lor față de programele care foloseau metode de transfer de control de nivel scăzut.

Algoritmul dezvoltat este implementat sub formă de coduri de program ( programe) într-unul dintre limbajele de programare.

diagramă bloc vom numi o astfel de reprezentare grafică a algoritmului, atunci când acțiunile individuale (sau comenzile) sunt prezentate sub formă de forme geometrice - blocuri. În interiorul blocurilor sunt indicate informații despre acțiunile de efectuat. Legătura dintre blocuri este reprezentată folosind linii numite linii de comunicare, care denotă transferul controlului.

Există un standard de stat care definește regulile pentru crearea diagramelor de flux. Configurația blocurilor, precum și ordinea proiectării grafice a diagramelor bloc, sunt reglementate de GOST 19.701-90 „Scheme de algoritmi și programe”. În tabel. 2.1 prezintă denumirile unor elemente, care vor fi destul de suficiente pentru a descrie algoritmi atunci când efectuează munca elevului.

Reguli pentru întocmirea organigramelor:

    Fiecare diagramă bloc trebuie să aibă un bloc " start"si un bloc" Sfârşit».

    « start» trebuie conectat la blocul « Sfârşit» linii de curgere pentru fiecare dintre ramurile din schema bloc.

    Nu ar trebui să existe blocuri în diagrama bloc, cu excepția blocului " Sfârşit”, din care nu iese linia de curgere, precum și blocuri din care controlul este transferat „nicăieri”.

    Blocurile trebuie numerotate. Numerotare blocurile sunt așezate de sus în jos și de la stânga la dreapta, numărul blocului este plasat în stânga sus, în întreruperea conturului său.

    Blocurile sunt interconectate prin linii de flux care determină secvența execuției blocului. Liniile de curgere trebuie să fie paralele cu marginile foii. Dacă liniile mergde la dreapta la stânga saujos sus , atunci sunt necesare săgețile de la capătul liniei, altfel pot fi omise.

    În ceea ce privește blocurile, liniile pot fi sositși ieşind. Aceeași linie de flux este ieșită pentru un bloc și intrare pentru altul.

    De la bloc start» Spre deosebire de toate celelalte blocuri, linia de flux iese doar, deoarece acest bloc este primul din diagramă.

    Bloc " Sfârşit' are doar o intrare, deoarece este ultimul bloc din diagrama bloc.

    Pentru ușurința citirii, este de dorit ca linia de curgere să intre în blocul Process de sus și să iasă de jos.

    Pentru a nu aglomera diagrama bloc cu linii complexe care se intersectează, liniile de curgere pot fi întrerupte. În același timp, la locul golului, conectori, în interiorul căruia sunt indicate numerele de blocuri conectate. Nu ar trebui să existe întreruperi în diagrama bloc care nu sunt etichetate cu conectori.

    Pentru a nu aglomera blocul, puteți furniza informații despre date, denumiri variabile etc. loc in comentarii la bloc.

Nume bloc

Desemnarea blocului

Atribuire bloc

Terminator

Început/Sfârșit de program sau subprogram

Prelucrarea datelor (acțiune de calcul sau secvență de acțiuni de calcul)

Ramificare, selecție, verificarea stării. Blocul specifică o condiție sau o întrebare care determină direcția ulterioară a execuției algoritmului.

Instruire

Antetul ciclului de numărare

proces predefinit

Referindu-se la o procedură

Intrare/ieșire date


Tipuri de algoritmi

Tipul de algoritm este determinat de natura sarcinii care se rezolvă în conformitate cu comenzile sale. Există trei tipuri de algoritmi: liniari, ramificați, ciclici.

Algoritm liniar constă într-o secvență ordonată de acțiuni care nu depinde de valorile datelor inițiale, în timp ce fiecare comandă este executată o singură dată strict după comanda care o precede.

Acesta este, de exemplu, algoritmul de calcul pentru cele mai simple formule non-alternative, care nu are restricții cu privire la valorile variabilelor incluse în aceste formule. De regulă, procesele liniare sunt parte integrantă a unui algoritm mai complex.

ramificare Se numesc algoritmi în care, în funcție de valoarea unei expresii sau de îndeplinirea unei condiții logice, se pot efectua acțiuni ulterioare în una din mai multe direcții.

Fiecare dintre direcțiile posibile pentru acțiuni ulterioare numit ramură.

În diagramele bloc, ramificarea este implementată printr-un bloc special " Decizie". Acest bloc oferă posibilitatea a două ieșiri. În blocul „Decizie” în sine, este înregistrată o condiție logică, de îndeplinirea căreia depind acțiuni ulterioare.

Există mai multe tipuri de algoritmi de ramificare.

1. "Ocolire" - o astfel de ramură când una dintre ramuri nu conține niciun operator, adică. ocolește mai multe acțiuni ale unei alte ramuri.

2. "ramificare" - acest tip de ramificare, când fiecare dintre ramuri conține un anumit set de acțiuni.

3. „Alegeri multiple” - un tip special de ramificare, când fiecare dintre mai multe ramuri conține un anumit set de acțiuni. Alegerea direcției depinde de valoarea unei expresii.

Ciclic Algoritmii sunt utilizați în cazurile în care este necesar să se implementeze calcule repetate repetate de același tip. Ciclu este o secvență de acțiuni care pot fi efectuate în mod repetat, adică mai mult de o dată.

Distinge:

      bucle cu un număr cunoscut de repetări (sau cu un numărător);

      cicluri cu un număr necunoscut de repetări (cicluri cu precondiție și cicluri cu postcondiție).

În orice buclă, trebuie să existe o variabilă care controlează ieșirea din buclă, adică. determină numărul de iterații ale buclei.

Secvența de acțiuni care trebuie efectuate asupra fiecăruia pas de ciclu(adică la fiecare repetare a buclei), se numește corpul buclei sau partea de lucru a ciclului.

Vei avea nevoie

  • - sablon pentru desenarea diagramelor bloc;
  • - creion mecanic;
  • - radieră;
  • - hartie;
  • - un computer cu acces la internet.

Instruire

Începutul și sfârșitul algoritmului sunt indicate prin ovale. În interiorul acestora sunt plasate, respectiv, cuvintele „Început” și „Sfârșit”. De la oval, simbolizând începutul algoritmului, o săgeată coboară în jos, până la , simbolizând sfârșitul algoritmului, vine o săgeată de sus.

Pașii corespunzători acțiunilor non-I/O sunt indicați prin dreptunghiuri. Un exemplu de astfel de acțiune este calculul și atribuirea rezultatului uneia sau alteia variabile. Săgeata de la pasul precedent vine la dreptunghi de sus, iar săgeata de la pasul următor vine de sub acesta.

Paralelogramele sunt folosite pentru a desemna pașii corespunzători operațiilor I/O. Astfel de operațiuni sunt de două tipuri: atribuirea datelor primite de undeva unei variabile și ieșirea datelor din variabilă într-un fișier, port, imprimantă etc.

Ramurile sunt indicate prin diamante. O săgeată de la pasul anterior vine în colțul superior al diamantului, iar săgeți precum „Nu” și „Da” vin din colțurile sale laterale. Aceștia vin, respectiv, la demersurile efectuate privind nerespectarea și respectarea condiției. Colțul inferior al diamantului este lăsat liber. El însuși (de exemplu, egalitate, strictă sau non-strict) în interiorul unui diamant.

Dreptunghiul, ai cărui pereți laterali sunt dubli, reprezintă trecerea la subrutină. După ce instrucțiunea return este întâlnită în subrutină, execuția programului principal continuă. Numele subprogramului este indicat în interior. Diagramele tuturor subprogramelor sunt plasate sub diagrama programului principal sau pe pagini separate.

Dacă doriți să desenați diagrame de flux în format electronic, utilizați o aplicație numită Flowchart. Dacă doriți, puteți învăța și limbaje speciale de programare, în care procesul de programare în sine constă în întocmirea unei organigrame. Există două astfel de limbi: Dragon și HiAsm.

Surse:

  • cum să desenezi o diagramă bloc

O diagramă de flux este o variantă a unei înregistrări formalizate a unui algoritm sau proces. Fiecare pas al algoritmului din această reprezentare este reprezentat ca blocuri de diferite forme, care sunt interconectate prin linii. Într-o diagramă, puteți afișa toate etapele rezolvării oricărei probleme, începând cu introducerea datelor inițiale, prelucrarea de către operatori, executarea funcțiilor ciclice și condiționate și terminând cu operațiunile de ieșire a valorilor rezultate.

Instruire

De regulă, la începutul algoritmului, datele inițiale sunt introduse pentru a rezolva problema. Desenați un paralelogram sub linie, astfel încât să fie o prelungire continuă a diagramei. În paralelogram, scrieți acțiunea de efectuat, de obicei acestea sunt operațiuni de date de pe ecran (Read nInp) sau alte dispozitive. Este important ca variabilele pe care le introduceți în acest pas să fie folosite mai târziu în tot corpul diagramei.

Efectuarea uneia sau a unui grup de operații, orice prelucrare a datelor (schimbarea valorii sau a formei de reprezentare) este indicată ca dreptunghi. Desenați această cifră în locul potrivit în algoritm atunci când întocmiți diagrama de flux. În interiorul casetei, notați acțiunile întreprinse, de exemplu, operația de atribuire este scrisă după cum urmează: mOut = 10 * nInp b + 5. Apoi, trageți și o linie în jos pentru a continua diagrama.

O componentă importantă a oricărui algoritm și, în consecință, o diagramă bloc sunt operatorii condiționali și ciclici. Acești operatori au o intrare și două sau mai multe ieșiri alternative. După calcularea condiției specificate de operator, tranziția ulterioară se efectuează numai de-a lungul unei căi. Desenați intrarea în element ca o linie care intră în vârful superior al elementului.

Pentru a specifica un operator de condiție, desenați un romb din această linie. În interiorul figurii, indicați condiția în sine și trageți linii care indică tranziția ulterioară în funcție de îndeplinirea acesteia. Condiția este specificată în cazul general prin operații de comparare (>,<, =). Переход по линии вниз осуществляется при истинном условии, назад – при ложном. Укажите около выходных линий фигуры результаты условия (true, false). Невыполнение условия (false) возвращает к определенному шагу выше по телу алгоритма. Проведите линии под прямым углом от выхода с условия и до нужного оператора.

Enunțul ciclic este notat prin dreptunghiuri teșite. Mai mult decât atât, pentru a desena acest operator sunt folosite două figuri de chenar. Începutul ciclului este dat de o figură cu colțurile superioare teșite, sfârșitul ciclului este dat de o figură cu colțurile inferioare teșite. În figura începutului ciclului, specificați condiția de funcționare a ciclului și trageți operatorii ciclului între figurile limită.

La sfârșitul diagramei bloc, ar trebui să fie indicată ieșirea datelor rezultate pe media sau pe ecran. Instrucțiunea de ieșire este desenată în mod similar cu instrucțiunea de intrare. Desenați paralelogramul și operațiile de ieșire din cadrul acestuia folosind variabilele de ieșire.

O diagramă de flux este o formă universală a expresiei algoritmului, care poate fi apoi tradusă în orice limbaj de programare. Este creat într-o formă care poate fi citită de om. Acest lucru vă permite să verificați manual corectitudinea algoritmului.

Instruire

La sfârșitul fiecăreia dintre liniile care conectează elementele diagramei de flux între ele, aplicați . Acest lucru vă va permite să determinați mai precis ordinea în care sunt efectuate acțiunile, mai ales dacă algoritmul este ramificat.

Este extrem de important să folosiți limbajul diagramelor bloc atunci când dezvoltați un algoritm pentru rezolvarea unei probleme. Rezolvarea aceleiași probleme poate fi implementată folosind diverși algoritmi care diferă unul de celălalt atât în ​​timpul de calcul și cantitatea de calcule, cât și în complexitatea acestora. Înregistrarea acestor algoritmi folosind diagrame vă permite să le comparați, să alegeți cel mai bun algoritm, să simplificați, să găsiți și să eliminați erorile.

Respingerea limbajului de diagramă de flux în dezvoltarea algoritmului și dezvoltarea algoritmului imediat în limbajul de programare duce la pierderi semnificative de timp, la alegerea unui algoritm neoptimal. Prin urmare, este necesar să se dezvolte inițial un algoritm pentru rezolvarea problemei în limbajul diagramelor de flux, după care algoritmul ar trebui tradus într-un limbaj de programare.

Când se dezvoltă un algoritm pentru o problemă complexă, se folosește metoda de detaliere pas cu pas. La primul pas, structura generală a algoritmului este gândită fără un studiu detaliat al părților sale individuale. Blocurile care necesită rafinare sunt conturate cu o linie punctată și sunt gândite și detaliate la etapele ulterioare ale dezvoltării algoritmului.

În procesul de dezvoltare a unui algoritm pentru rezolvarea unei probleme, se pot distinge următoarele etape:

  • Etapa 1. Descrierea matematică a soluției problemei.
  • Etapa 2. Definiția datelor de intrare și de ieșire.
  • Etapa 3. Dezvoltarea unui algoritm pentru rezolvarea problemei.

Construcții algoritmice de bază

În teoria programării, se dovedește că pentru a scrie orice algoritm, arbitrar complex, este suficient trei structuri de bază:

  • urmărire (algoritm liniar);
  • ramificare (algoritm de ramificare);
  • cycle-bye (algoritm ciclic).

Algoritmi liniari

Algoritm liniar se formează dintr-o succesiune de acţiuni care se succed una după alta. De exemplu, pentru a determina aria unui dreptunghi, trebuie mai întâi să specificați lungimea primei laturi, apoi să specificați lungimea celei de-a doua laturi și abia apoi să calculați aria acestuia folosind formula.

Exemplu

SARCINĂ. Elaborați un algoritm pentru calcularea ipotenuzei unui triunghi dreptunghic din valorile cunoscute ale lungimii catetelor sale a și b.

Folosind exemplul acestei probleme, vom lua în considerare toate cele trei etape ale dezvoltării unui algoritm pentru rezolvarea problemei:

Rezolvarea matematică a problemei este formula binecunoscută:

,

unde c este lungimea ipotenuzei, a, b sunt lungimile catetelor.

Datele de intrare sunt valorile picioarelor a și b. Ieșirea este lungimea ipotenuzei - c.

Algoritmi de ramificare

conține o condiție, în funcție de care se realizează una sau alta secvență de acțiuni.

Exemplu

SARCINĂ. Elaborați un algoritm pentru calcularea celui mai mare număr din două numere x și y.

Etapa 1. Descrierea matematică a soluției problemei.

Din cursul de matematică se știe că dacă x > y, atunci cel mai mare număr x, dacă x< y, то наибольшее число y, если x = y, то число x равно числу y.

Etapa 2. Definirea datelor de intrare și de ieșire.

Datele de intrare sunt valorile numerelor x și y. Ieșirea este:

  • cel mai mare număr
  • oricare dintre numere, dacă numerele sunt egale

Pentru a rezolva problema, trebuie să cunoaștem valorile x și y.

Etapa 3. Elaborarea unui algoritm de rezolvare a problemei.

În schema algoritmului de rezolvare a problemei, numerele indică numerele elementelor algoritmului, care corespund numerelor pașilor descrierii verbale a algoritmului

În algoritmul luat în considerare (Fig. 3), există trei ramuri de rezolvare a problemei:

  • primul: acestea sunt elementele 1, 2, 3, 4, 8.
  • al doilea: acestea sunt elementele 1, 2, 3, 5, 6, 8
  • al treilea: acestea sunt elementele 1, 2, 3, 5, 7, 8.

Alegerea ramurilor este determinată de valorile x și y din elementele 3 și 5, care sunt condițiile care determină ordinea în care sunt executate elementele algoritmului. Dacă condiția (egalitatea) scrisă în simbolul „soluție” este satisfăcută cu valorile introduse x și y, atunci se execută în continuare elementele 4 și 8. Aceasta rezultă din faptul că sunt conectate printr-o linie etichetată „da” și direcția (secvența) calculelor este indicată cu săgeata.

Dacă condiția din elementul 3 nu este îndeplinită, atunci se execută apoi elementul 5. Acesta este conectat la elementul 3 printr-o linie etichetată „nu”. Dacă condiția scrisă în elementul 5 este adevărată, atunci elementele 6 și 8 sunt executate, în caz contrar elementele 7 și 8 sunt executate.

Algoritmi ciclici

determină repetarea unei părți a acțiunilor (operațiilor) până la încălcarea condiției, a cărei îndeplinire este verificată la începutul buclei. Setul de operații efectuate în mod repetat se numește corpul buclei.

Se numesc algoritmi în care acțiunile individuale sunt repetate de mai multe ori algoritmi ciclici, Se numește un set de acțiuni asociate cu repetări ciclu.

Când se dezvoltă un algoritm pentru o structură ciclică, se disting următoarele concepte:

  • parametru de ciclu - o valoare, cu o modificare a valorii căreia este asociată execuția repetată a ciclului;
  • valorile inițiale și finale ale parametrilor ciclului;
  • pas de ciclu - valoarea cu care parametrul ciclului se modifică la fiecare repetare.

Ciclul este organizat după anumite reguli. Algoritmul ciclic constă din pregătirea buclei, corpul buclei și condiția de continuare a buclei.

Pregătirea buclei include acțiuni legate de setarea valorilor inițiale pentru parametrii buclei:

  • valorile inițiale ale ciclului;
  • valori de final de ciclu;
  • pas de ciclu.

Corpul buclei include:

  • acțiuni repetitive pentru calcularea valorilor dorite;
  • pregătirea următoarei valori a parametrului ciclului;
  • pregătirea altor valori necesare executării repetate a acțiunilor în corpul buclei.

În condiția continuării ciclului, se determină admisibilitatea efectuării acțiunilor repetate. Dacă parametrul buclei este egal cu sau depășește valoarea finală a buclei, atunci bucla ar trebui să se termine.

Exemplu

SARCINĂ. Elaborați un algoritm pentru calcularea sumei numerelor naturale de la 1 la 100.

Etapa 1. Descrierea matematică a soluției problemei.

Notați cu S suma numerelor naturale. Atunci formula de calcul a sumei numerelor naturale de la 1 la 100 se poate scrie după cum urmează:

unde Xi este un număr natural X cu numărul i, care variază de la 1 la n, n=100 este numărul de numere naturale.

Etapa 2. Definirea datelor de intrare și de ieșire.

Datele de intrare sunt numere naturale: 1, 2, 3, 4, 5, …, 98, 99, 100.

Ieșire este valoarea sumei termenilor șirului numerelor naturale.

Parametrul ciclului o valoare care determină numărul de repetări ale buclei. În cazul nostru, i este numărul unui număr natural.

Pregătirea ciclului constă în setarea valorilor inițiale și finale ale parametrului buclei.

  • valoarea inițială a parametrului buclei este 1,
  • valoarea finală a parametrului buclei este n ,
  • pasul ciclului este 1.

Pentru o însumare corectă, trebuie mai întâi să setați valoarea inițială a sumei la 0.

Corpul buclei.În corpul buclei, valoarea sumei numerelor va fi acumulată, iar următoarea valoare a parametrului buclei va fi calculată folosind formulele:

Condiția de continuare a ciclului: ciclul trebuie repetat până când se adaugă ultimul membru al succesiunii de numere naturale, adică. atâta timp cât parametrul de buclă este mai mic sau egal cu valoarea finală a parametrului de buclă.

Etapa 3. Elaborarea unui algoritm de rezolvare a problemei.

Să introducem notația: S este suma șirului, i este valoarea unui număr natural.

Valoarea de început a ciclului i=1, valoarea finală a ciclului i=100, pasul 1 al ciclului.

Descrierea verbală a algoritmului Scrierea unui algoritm în limbajul diagramelor de flux
  1. Începutul algoritmului.
  2. Pregătirea ciclului: S:=0; i=1; n=100;
  3. Verificarea stării. Dacă eu<=n , то перейти к шагу 4, иначе к шагу 6.
  4. Suma acumulare: S:=S+i;
  5. Calculul valorii următoare a parametrului ciclului: i:=i+1;
  6. Ieșire de informații: suma numerelor naturale - S.
  7. Sfârșitul algoritmului.

În schema algoritmului de rezolvare a problemei, numerele indică numerele elementelor algoritmului. Numerele elementelor corespund numărului de pași din descrierea verbală a algoritmului.