Sunteți pe pagina 1din 5

INSTRUCTIUNI REPETITIVE

Instructiunile repetitive execută o instrucțiune de mai multe ori. Se mai numesc


și bucle sau cicluri.

Instructiunile 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.
Instructiunile 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ă, care conține alte instrucțiuni.

În C/C++, instrucțiunile repetitive sunt:

 while – reprezintă o instructiune repetitivă cu număr necunoscut de pași și test


inițial;
 do...while – reprezintă o structură repetitivă cu număr necunoscut de pași și test
final;
 for – reprezintă de o structură repetitivă cu număr necunoscut de pași și test inițial;
se folosește frecvent când se cunoaște numărul de pași.
Există de asemenea două instrucțiuni care controlează execuția instrucțiunilor
repetitive:
 break – întrerupe execuția instrucțiunii repetitive curente;
 continue – la întâlnirea ei execuția programului trece la expresiile care
controlează structura repetitivă curentă, ignorând instrucțiunile care îi urmează în
corpul ciclului.
Instrucțiunea while este o structură repetitivă cu număr necunoscut de pași și test inițial.

Sintaxa
while (Expresie)
Instructiune

Mod de execuție
1. Se evaluează Expresie
2. Dacă rezultatul este adevarat
o Se execută Instructiune
o Se reia pasul 1.
3. Dacă rezultatul este fals, se trece la instrucțiunea de după while.
Observații
1. Instructiune se execută cât timp Expresie este o condiție adevărată.
2. Dacă Expresie este de început fals, Instructiune nu se execută deloc.
3. Instructiune poate fi orice fel de instrucțiune, dar una singură. Dacă sunt
necesare mai multe instrucțiuni, se va folosi instrucțiunea compusă (se pun
instructiunile intre acolade).
4. 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ă/ciclare infinita

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, S = 0,i=1 ;
cin >> n;
while(i <= n)
{
S += i;//sau S=S+i
i ++;//sau i=i+1
}
cout << S << endl;
return 0;
}

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

sintaxa
for (Expresie_de_Initializare ; Expresie_de_Testare ; Expresie_de_Continuare)
Instructiune

Mod de execuție
1. Se evaluează Expresie_de_Initializare
2. Se evaluează Expresie_de_Testare.
3. Dacă rezultatul este adevarat:
o Se execută Instructiune.
o Se evaluează Expresie_de_Continuare.
o Se revine la pasul 2.
4. Dacă rezultatul este fals, 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 la î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, i, S=0;
cin >> n;
for( i = 1; i <= n ; i ++)
S += i;//S=S+i
cout << S << endl;
return 0;
}

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

Sintaxa
do
{
Instructiune
} while ( Expresie );

Mod de execuție
1. Se execută Instructiune
2. Se evaluează Expresie.
3. Dacă rezultatul este adevarat, se reia pasul 1.
4. Dacă rezultatul este false, se trece la instrucțiunea de după do ... while.

Observații
 Instructiune se execută cât timp Expresie este adevarat – condiție adevărată.
 Dacă Expresie este de început fals, 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, i, S;
cout<<"n=";
cin >> n;
S = 0;
i = 1;
do
{
S += i;//S=S+i;
i ++;//i=i+1;
}
while(i <= n);
cout << S << endl;
return 0;
}

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