Instrucțiunea for
este o structură repetitivă cu număr necunoscut 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
- Se evaluează
Expresie_de_Initializare
- Se evaluează
Expresie_de_Testare
. Rezultatul se convertește labool
. - Dacă rezultatul este
true
:- Se execută
Instructiune
. - Se evaluează
Expresie_de_Continuare
. - Se revine la pasul 2.
- Se execută
- Dacă rezultatul este
false
, se trece la instrucțiunea de dupăfor
.
Observații
- Instrucțiunea
for
este echivalentă cu instrucțiuneawhile
. Sintaxa descrisă mai sus este echivalentă cu:
Expresie_de_Initializare
;
while( Expresie_de_Testare
)
{
Instructiune
Expresie_de_Continuare
;
}
Instructiune
se execută cât timpExpresie_de_Testare
este nenulă – condiție adevărată.- Dacă
Expresie_de_Testare
este de început vidă,Instructiune
nu se execută deloc, iarExpresie_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 înInstructiune
sau la evalureaExpresiei_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țiuneafor
.
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; }