Pentru buclă
Bucla for este o structură de control în programare în care numărul maxim de iterații poate fi indicat în prealabil.
Elemente bucle
- Variabila de control : practic un mandat impus de uzul comun este de a folosi litera i Iterator ca variabilă de control, sau succesorii acesteia în cazul buclelor imbricate. Utilizarea acestei litere criptice, poate la prima vedere, este, totuși, o modalitate excelentă de a adăuga lizibilitatea codului datorită utilizării sale extinse. Deoarece buclele imbricate depășesc rar trei dimensiuni (pentru o simplă chestiune de explozie exponențială), literele i, j și k sunt de obicei singurele implicate în această utilizare. În C este definit în primul parametru al instrucțiunii împreună cu inițializarea (opțional).
- Inițializarea variabilei de control : în pseudolimbaj se solicită explicitarea (este secțiunea := InitialValue ), cu toate acestea, alte limbaje mai permisive precum C nu o solicită în mod obligatoriu. Cu toate acestea, practica utilizării variabilelor de control care nu sunt inițializate în buclă nu este recomandată pentru citirea codului. În C este definit în primul parametru al buclei împreună cu variabila de control.
- Condiție de control : în pseudolimbaj este reprezentată de valoarea finală pe care o poate lua variabila de control (secțiunea A FinalValue ). În C este al doilea parametru și poate fi orice condiție (variabila de control nici măcar nu este necesară, deși din nou, acest lucru nu este considerat o bună practică).
- Incrementare : în pseudolimbaj, valoarea 1 este luată implicit, deși poate fi făcută explicită prin intermediul propoziției PASO = ValorPaso orice întreg (se citește bine întreg, adică tehnic putem decrementa). În C este ultimul parametru.
- Corp : este ceea ce se va face în fiecare iterație, poate fi una sau mai multe instrucțiuni. În pseudolimbaj există restricția de a nu putea modifica valoarea variabilei de control; acest lucru nu este necesar în C, dar nu este considerat o bună practică.
Utilizări
Utilizarea sa principală este orientată către vectori , putând modifica, adăuga, șterge sau consulta datele găsite conform indexului. Pentru acesta din urmă, o condiție minimă a vectorului este ca acesta să fie ordonat, deoarece dacă se încearcă citirea datelor inexistente, aceasta generează o eroare de programare .
În pseudolimbaj
Principala diferență dintre o buclă FOR și buclele WHILE AND REPEAT este că se poate determina la începutul buclei de câte ori se va repeta bucla, ceea ce poate duce adesea la optimizarea codului de către compilatori. Condiționalele, împreună cu buclele, constituie pilonii programării structurate , iar utilizarea lor este o evoluție a unei instrucțiuni în limbaj de asamblare care a executat sau nu următoarea linie în funcție de valoarea unei condiții.
Bucla FOR a devenit cea mai utilizată buclă în programare, deoarece odată cu evoluția limbajelor, cele mai multe condiții finale
Este la fel să spui:
FOR i=0 la NumberRecords(tabel) - 1, PAS = 1 NextRecord(tabel) Faceți ceva(CurrentItem(tabel)) SFÂRȘIT PENTRU
O altă utilizare comună este utilizarea buclelor FOR pentru a traversa vectori de două sau mai multe dimensiuni, caz în care aceste iterații sunt imbricate.
PSEUDO LIMBAJ
Vector a[3][4][2]. // Indicăm un vector de 3 dimensiuni și 24 de elemente în total.
PENTRU i:= 0 LA 2 DO
PENTRU j:= 0 LA 3 DO
PENTRU k:= 0 LA 1 DO
Fă ceva (a[i][j][k])
SFÂRȘIT PENTRU
SFÂRȘIT PENTRU
SFÂRȘIT PENTRU
Exemplu de pseudocod
Pentru ControlVariable := StartValue TO EndValue, STEP = Increment
Instrucțiuni SFÂRȘIT Pentru
unde ControlVariable , StartValue , EndValue și Step sunt numere întregi. Declarația (instrucțiunile) din corp vor fi executate (EndValue - InitialValue + 1) ori, adică trec de la InitialValue la EndValue inclusiv.
Exemplu în C++
#include <iostream>
#include <con.h>
folosind namespace std;
intmain(){
vector int[10];
for(int i=0; i<10; i++){
vector[i] = i;
cout<<i<<endl;
}
sistem(„PAUZĂ”);
întoarce 0;
}
În definiția for , avem că variabila de control i este inițializată la o valoare de 0, apoi este dată condiția de control care trebuie să fie falsă în timpul execuției sale, pentru a finaliza bucla; și, în final, avem incrementatorul într-o unitate.
Dacă, de exemplu, în condiția punem i < 11, atunci se va executa bucla for din [0...10], care, la încercarea de a accesa vectorul element[10], va genera o eroare, deoarece vectorul (prin definiție) pleacă de la [0..(n-1)].
Oricare dintre componentele din paranteze poate fi omisă, dar separatorii punct și virgulă trebuie să apară întotdeauna. Rezultatul este o buclă infinită.
Exemplu de mai sus scris în lexicon
sarcină
{
vector[10] obiecte, i sunt mărimi
variind i de la 0 la 9 do
copiați i în vector[i]
}
Pentru fiecare buclă
Această buclă este o evoluție a conceptului de buclă For în unele limbi. Este folosit pentru a traversa structuri de date repetitive într-un mod mai simplu și mai agil. Bucla For Each poate fi descrisă generic (în pseudolimbaj) după cum urmează:
PENTRU FIECARE element DE tip IN set DO Corp SFÂRȘIT PENTRU FIECARE
- Element : este numele variabilei sau obiectului care preia elementul iterat în corpul buclei.
- Tip de date : este tipul de variabilă sau clasa căreia îi aparține obiectul care urmează să fie iterat.
- Set : este structura de date pe care doriți să o iterați. Cea mai tipică utilizare este cu vectori sau -în programarea orientată pe obiecte- clase de tip Collection.
- Corp : este ceea ce se va face în fiecare iterație, poate fi una sau mai multe instrucțiuni. Deși nu se impune nicio obligație în acest sens, cel mai frecvent este ca în acest Organism să existe o oarecare operațiune asupra elementului iterat.
Una dintre caracteristicile importante ale calculatoarelor care pot fi exploatate este tocmai capacitatea lor de a repeta execuția secvențelor de instrucțiuni la viteză mare și cu un grad ridicat de fiabilitate. În aceste scopuri, structurile de control iterativ sunt definite cu precizie în limbaje de programare. Obiectivul acestor structuri este de a permite exprimarea repetarii unei secvente de instructiuni, aceste structuri fiind numite ciclu, bucla sau bucla.
Rezumat 1 Structuri iterative de control 2 Instrucțiunea while 3 Instrucțiunea do/while 4 Structura de control for 5 Studiu de caz 5.1 GCF() 5.2 QtyDigits() 5.3 Factorial() 6 Bucle imbricate 7 Surse Structuri iterative de control în viață Zilnic, există situații care sunt rezolvate frecvent prin efectuarea unei anumite secvențe de pași care pot fi repetate de mai multe ori, de exemplu:
Procesul pe care îl urmăm pentru a mânca, în timp ce mâncarea nu este terminată. Procesul de introducere a monedelor, până când se achită suma necesară. Operațiunile pe care le efectuăm pentru a apela telefonic, în timp ce comunicarea nu se realizează. După cum se vede, aceștia sunt algoritmi care se fac zilnic, dar au particularitatea că execuția unora dintre pașii lor se poate repeta de multe ori, atâta timp cât obiectivul stabilit nu este atins. Acest tip de algoritm este cunoscut ca algoritmi iterativi sau repetitivi. În C#, instrucțiunile while, do/while și for vă permit să executați iterații, bucle sau cicluri. În fiecare caz, un bloc de instrucțiuni este executat în timp ce condiția evaluată este adevărată. Se evidențiază că oricare dintre cele 3 instrucțiuni îndeplinește același obiectiv, care este să execute o succesiune de pași, de mai multe ori.
Instrucțiunea while Instrucțiunea while are următoarea sintaxă:
WhileStatement.JPG
Semantica enunțului este următoarea:
<condiție>. Este reprezentat de o expresie booleană și atâta timp cât este îndeplinită, ciclul va fi executat. [Blocul de instrucțiuni] Blocul de instrucțiuni poate fi alcătuit din una sau mai multe instrucțiuni și este setul de pași care vor fi executați în fiecare iterație a ciclului. Pentru o mai bună înțelegere, reprezentarea acestuia este prezentată într-o diagramă de activitate.
DiagramWhile.JPG
Această structură de control permite repetarea sau repetarea [Blocul de instrucțiuni] în timp ce condiția este adevărată sau, cu alte cuvinte, aceste iterații se vor termina când condiția este falsă și apoi următoarea instrucțiune după while poate fi executată.
Este valabil de subliniat că în această instrucțiune condiția este evaluată la începutul ciclului, deci dacă prima dată când condiția este evaluată este falsă, ciclul nu va fi efectuat.
Instrucțiunea do/while Structura de control do/while este o altă instrucțiune de iterație în care condiția este evaluată pentru prima dată după ce [Statement Block] a fost executat și are următoarea sintaxă:
DoWhileStatement.JPG
Semantica sa este aceeași cu cea a instrucțiunii while și reprezentarea sa într-o diagramă de activități este următoarea:
DiagramDoWhile.JPG
În această structură repetitivă, blocul de instrucțiuni este întotdeauna executat cel puțin o dată, deoarece condiția este evaluată ultima. Odată efectuată evaluarea, dacă rezultatul este adevărat, [Blocul de instrucțiuni] este executat din nou, în caz contrar sunt executate următoarele instrucțiuni, ieșind din ciclu. Funcționalitatea acestei metode va fi aceeași ca în exemplul while. Singura diferență este modul în care este controlată bucla. În practică, veți descoperi că declarația while este folosită mai des decât declarația do – while. Alegerea unei instrucțiuni în detrimentul celeilalte este o alegere personală. Un aspect foarte important de avut în vedere în buclele condiționate este necesitatea de a contempla cel puțin un bloc de instrucțiuni în cadrul blocului de instrucțiuni, care într-un fel modifică – la un moment dat – rezultatul expresiei booleene. Explicația este dată pur și simplu de faptul că, dacă această instrucțiune nu ar exista o dată cu intrarea în buclă, nu s-ar termina niciodată, deci ar cădea într-o buclă infinită.
Structura de control pentru Procesele iterative pe care le-am văzut până acum se termină cu o condiție. În multe situații iterațiile sunt efectuate de un anumit număr de ori, mulți autori le numesc cicluri prin numărare deoarece se știe dinainte de câte ori se va face procesul care se repetă. În acest tip de iterație, o variabilă este întotdeauna necesară pentru a ține evidența de câte ori se repetă procesul, motiv pentru care sunt cunoscute și ca cicluri cu o variabilă de control. Unul dintre cele mai cunoscute și mai utilizate cicluri în majoritatea limbajelor de programare este instrucțiunea for, care este de obicei controlată de un numărător sau variabilă de control și are următoarea sintaxă:
InstructionFor.JPG
Semantica enunțului este următoarea:
<instrucțiuni 1>. Va fi executat o singură dată la începutul ciclului, inițializările și declarațiile de variabile sunt de obicei efectuate, deoarece, după cum sa menționat anterior, este executată o singură dată. Dacă doriți să executați sau să executați mai multe instrucțiuni în acest moment, aceste instrucțiuni trebuie separate prin virgule ("."). <expresie>. Este evaluat la fiecare iterație și în funcție de valoarea pe care o returnează, va depinde dacă ciclul continuă să se execute (valoarea expresiei adevărată) sau nu (fals). Rețineți că, dacă nu este plasat nimic în această parte, ciclul va lua valoarea expresiei drept adevărată, deci, în principiu, ciclul se poate repeta la infinit. <instrucțiuni 2>. Este întotdeauna executat în fiecare ciclu la sfârșitul executării tuturor instrucțiunilor care aparțin buclei for în cauză. De obicei, poate conține o actualizare pentru variabilele de control. În mod analog cu <instrucțiunile 1>, dacă doriți să executați mai multe instrucțiuni în acest moment, acestea trebuie separate prin virgulă. Rețineți că este obligatoriu să separați fiecare termen care alcătuiește instrucțiunea for folosind un punct și virgulă (;), altfel compilatorul va afișa o eroare de tip semantic. Repetați că <instrucțiunea 1> se execută o singură dată la început, că <instrucțiunea 2> este cea care este, în general, utilizată pentru modificarea variabilei de control, deși poate fi modificată și în buclă și că <expresia> este cea care garantează finitudinea ciclului, for va fi executat atâta timp cât <expresia> este evaluată și ia valoarea true.
Vezi și
- Vectori
- C
- Limbaj de programare
- structuri de control
- Buclă (programare)
- buclă while
- repetă bucla
- ciclu infinit
- Teorema programului structurat
- Programare structurată