Sunteți pe pagina 1din 7

5.

Structurile repetitive

Structurile repetitive execută o instrucțiune de un anumit număr de ori, sau cât timp o condiție este
adevărată. Se mai numesc și bucle sau cicluri.

Structurile repetitive pot fi:

 cu număr cunoscut de pași (iterații) – se cunoaște de la început de câte ori se va execută


instrucțiunea

 cu număr necunoscut de pași (iterații). Instrucțiunea se execută cât timp o condiție este


adevărată. La fiecare pas se va evalua condiția, iar dacă aceasta este adevărată se va executa
instrucțiunea.

Structurile repetitive cu număr necunoscut de pași pot fi:

 cu test inițial: mai întâi se evaluează condiția; dacă este adevărată se execută instrucțiunea și
procesul se reia.

 cu test final: mai întâi se execută instrucțiunea, apoi se evaluează condiția; Dacă este adevărată,
procesul se reia.

Instrucțiunea care se execută în mod repetat poartă numele de corp al structurii repetitive, corp al
ciclului, corp al buclei și de foarte multe ori este o instrucțiune compusă.

Înainte de a parcurge materialul, citiți și acest articol.

Instrucțiunea while

Instrucțiunea while este o structură repetitivă cu număr necunoscut de pași și test inițial.

Sintaxa

Cat timp (Expresie) executa

Instructiune;

Mod de execuție

1. Se evaluează Expresie

2. Dacă Expresie este nenulă

o Se execută Instructiune;

o Se reia pasul 1.

3. Dacă Expresie este nulă, se trece la instrucțiunea de după while.

Observații

 Instructiune; se execută cât timp Expresie este nenulă – condiție adevărată.

 Dacă Expresie este de început vidă, Instructiune; nu se execută deloc.

 Instructiune; poate fi orice fel de instrucțiune, dar una singură. Dacă sunt necesare mai multe
instrucțiuni, se va folosi instrucțiunea compusă.
 Este necesar ca cel puțin o variabilă care apare în Expresie să-și modifice valoarea
în Instructiune;. Altfel se obține o buclă infinită.

Exemplu

Următorul program citește valoarea variabilei n și calculează suma primelor n numere naturale. Rulați-l
analizând rezultatul pentru diverse valori ale lui n, inclusiv 0.

#include <iostream>

using namespace std;

int main ()

int n;

cin >> n;

int S = 0;

int i = 1;

while(i <= n)

S += i;

i ++;

cout << S << endl;

return 0;

Instrucțiunea repeta ... pana cand( comditia devine adevarata)

Instrucțiunea do ... while este o structură repetitivă cu număr necunoscut de pași și test final.

Sintaxa

repeta

Instructiune;
pana cand( conditia devine adevarata)

Mod de execuție

1. Se execută Instructiune;

2. Se evaluează Expresie
3. Dacă Expresie este nenulă, se reia pasul 1.

4. Dacă Expresie este nulă, se trece la instrucțiunea de după do ... while.

Observații

 Instructiune; se execută cât timp Expresie este nenulă – condiție adevărată.

 Dacă Expresie este de început vidă, Instructiune; se execută exact o dată. În orice


situație, Instructiune se execută cel puțin o dată.

 Instructiune; poate fi orice fel de instrucțiune, dar una singură. Dacă sunt necesare mai multe
instrucțiuni, se va folosi instrucțiunea compusă.

 Este necesar ca cel puțin o variabilă care apare în Expresie să-și modifice valoarea
în Instructiune;. Altfel se obține o buclă infinită.

Exemplu

Următorul program citește valoarea variabilei n și calculează suma primelor n numere naturale. Rulați-l
analizând rezultatul pentru diverse valori ale lui n, inclusiv 0.

#include <iostream>

using namespace std;

int main ()

int n;

cin >> n;

int S = 0;

int i = 1;

repete

S += i;

i ++;

Pana cand (i <= n);

cout << S << endl;

return 0;

Instrucțiunea pentru
Instrucțiunea for este o structură repetitivă cu număr necunoscut de pași și test inițial, echivalentă
cu while.

Sintaxa

pentru i<-a,b,1 executa

Instructiune

Se executa de b-a+1 ori doar daca a<=b

Altfel niciodata

Pentrui<-b,a,-1 executa

Instructiune

Se executa de b-a+1 ori doar daca a<=b

Altfel niciodata

Mod de execuție

1. Se evaluează Expresie_de_Initializare

2. Se evaluează Expresie_de_Testare

3. Dacă Expresie_de_Testare este nenulă:

o Se execută Instructiune;.

o Se evaluează Expresie_de_Continuare.

o Se revine la pasul 2.

4. Dacă Expresie_de_Testare este nulă, se trece la instrucțiunea de după for.

Observații

 Instrucțiunea for este echivalentă cu instrucțiunea while. Sintaxa descrisă mai sus este


echivalentă cu:

Expresie_de_Initializare ;
while ( Expresie_de_Testare )
{ Instructiune; Expresie_de_Continuare ;
}

 Instructiune; se execută cât timp Expresie_de_Testare este nenulă – condiție adevărată.

 Dacă Expresie_de_Testare este de început vidă, Instructiune; nu se execută deloc,


iar Expresie_de_Continuare nu se mai evaluează.

 Instructiune; poate fi orice fel de instrucțiune, dar una singură. Dacă sunt necesare mai multe
instrucțiuni, se va folosi instrucțiunea compusă.
 Este necesar ca cel puțin o variabilă care apare în Expresie_de_Testare să-și modifice valoarea
în Instructiune; sau la evalurea Expresiei_de_Continuare. Altfel se obține o buclă infinită.

 Cele trei expresii, de_Initializare, _de_Testare și _de_Continuare sunt separate prin


caracterul ; – obligatoriu!

 Oricare dintre cele trei expresii, de_Initializare, _de_Testare și _de_Continuare, eventual toate,


poate să lipsească. În acest caz avem expresii vide. Dacă Expresie_de_Testare este vidă,
rezultatul său este nenul!

 Expresie_de_Initializare se execută o singură dată. Poate să conțină și declararea unor variabile.


În acest caz, variabilele vor exista numai în instrucțiunea for.

Exemplu

Următorul program citește valoarea variabilei n și calculează suma primelor n numere naturale. Rulați-l
analizând rezultatul pentru diverse valori ale lui n, inclusiv 0.

#include <iostream>

using namespace std;

int main ()

int n;

cin >> n;

int S = 0;

for(int i = 1; i <= n ; i ++)

S += i;

cout << S << endl;

return 0;

Instrucțiunea break

Instrucțiunea break are sens și poate fi folosită numai în instrucțiunile switch, while, do ... while și for.

Sintaxa:

break;

Mod de execuție

Am văzut semnificația instrucțiunii break atunci când apare în instrucțiunea switch.

Efectul instrucțiunii break când apare într-o instrucțiune repetitivă este întreruperea execuției acesteia și
trecerea la instrucțiunea care urmează celei repetitive.

Exemplu:
#include <iostream>

using namespace std;

int main ()

int n;

cin >> n;

int S = 0;

for(int i = 1; i <= n ; i ++)

S += i;

if(i == 5)

break;

cout << S << endl;

return 0;

 Dacă valoarea lui n este cel mult 5, se va afișa suma numerelor de la 1 la n.

 Dacă n >= 5 se va afișa întotdeauna 15, deoarece execuția lui for se întrerupe, datorită lui break,
când i este 5.

Instrucțiunea continue

Instrucțiunea continue are sens și poate fi folosită numai în instrucțiunile while, do ... while și for.

Sintaxa:

continue;

Mod de execuție

Efectul instrucțiunii continue este ignorarea instrucțiunilor care îi urmează în corpul ciclului și revenirea


la evaluarea Expresiei, în cazul lui while, do ... while, respectiv la evaluarea Expresiei_de_Continuare, în
cazul lui for.

Exemplu:

#include <iostream>

using namespace std;

int main ()
{

int n;

cin >> n;

int S = 0;

for(int i = 1; i <= n ; i ++)

if(i % 2 == 0)

continue;

S += i;

cout << S << endl;

return 0;

Repeta Instr
Instr Cat timp (cl=a) executa
Pana cand ( cl devine adev) instr

Ex

X<-3 X<-3
Repeta X<-x+6
X<-x+6 Cat timp x<3 executa
Pana cand x>=3 X<-x+6
Scrie x Scrie x
3
X=9 9

S-ar putea să vă placă și