Instrucțiunea
while - repetarea instrucțiunilor în C++ cu
test inițial
După ce am învățat cum să luăm decizii folosind
if, următorul pas important este să învățăm
cum repetăm aceleași instrucțiuni.
În viața de zi cu zi, repetăm lucruri foarte des:
- mergem la școală în fiecare zi;
- numărăm pașii până ajungem acasă;
- citim pagini dintr-o carte până o terminăm.
În programare, calculatorul poate face același lucru folosind
instrucțiunea while.
Ce înseamnă while?
Cuvântul while se traduce prin „cât
timp”.
Ideea de bază este următoarea:
Cât timp o condiție este adevărată, calculatorul repetă anumite instrucțiuni.
Când condiția devine falsă, repetarea se oprește.
Forma generală a
instrucțiunii while
while (conditie) {
instructiuni;
}Unde:
conditieeste o expresie care poate fitruesaufalse;- instrucțiunile dintre
{ }se execută de mai multe ori, atât timp cât condiția este adevărată.
Cum funcționează
while, pas cu pas
- calculatorul verifică condiția;
- dacă este adevărată, execută instrucțiunile din interior;
- după aceea, se întoarce din nou la condiție;
- acest proces se repetă până când condiția devine falsă.
Primul exemplu simplu
int x = 1;
while (x <= 5) {
cout << x << " ";
x = x + 1;
}Output:
1 2 3 4 5 Ce se întâmplă:
- la început,
xeste 1; - condiția
x <= 5este adevărată; - se afișează valoarea lui
x; xcrește cu 1;- procesul se repetă până când
xajunge la 6.
Când x este 6, condiția nu mai este adevărată și
bucla se oprește.
De ce este important să modificăm variabila
În interiorul lui while, trebuie să
existe ceva care schimbă condiția.
Dacă nu modificăm nimic, condiția va rămâne mereu adevărată, iar programul va rula la infinit.
Buclă infinită
int x = 1;
while (x <= 5) {
cout << x;
}Output:
11111111111111111111111111111111111...În acest caz:
xnu se modifică;- condiția rămâne mereu adevărată;
- programul nu se mai oprește;
Exemple practice
Afișarea numerelor de la 1 la n
int n;
cin >> n;
int i = 1;
while (i <= n) {
cout << i << " ";
i++;
}Input:
10Output:
1 2 3 4 5 6 7 8 9 10Numărarea inversă
int x = 5;
while (x > 0) {
cout << x << " ";
x--;
}Output:
5 4 3 2 1 while versus
if
ifexecută instrucțiuni o singură dată, dacă o condiție este adevărată;whileexecută instrucțiuni de mai multe ori, cât timp condiția este adevărată.
Greșeli frecvente
1. Uităm să modificăm condiția
Aceasta duce la o buclă infinită.
2. Condiția este falsă de la început
Dacă condiția este falsă încă de la început, instrucțiunile
din while nu se execută deloc.
Instrucțiunea
do-while - repetarea instrucțiunilor cu test
final
Până acum am văzut instrucțiunea while, unde
condiția este verificată înainte de a executa
instrucțiunile.
Există însă situații în care vrem ca instrucțiunile să se execute cel puțin o dată, chiar dacă condiția nu este adevărată de la început.
Pentru aceste cazuri folosim instrucțiunea
do-while.
Diferența esențială
față de while
Diferența este una foarte importantă:
- la
while, condiția este verificată la început; - la
do-while, condiția este verificată la final.
Cu alte cuvinte:
do-whileexecută instrucțiunile cel puțin o dată.
Forma generală
a instrucțiunii do-while
do {
instructiuni;
} while (conditie);Observă cu atenție:
- instrucțiunile sunt scrise între
{ }; - condiția este scrisă la final;
după
while (conditie)apare obligatoriu;.
Cum funcționează
do-while, pas cu pas
- calculatorul execută instrucțiunile din interior;
- apoi verifică condiția;
- dacă este adevărată, repetă instrucțiunile;
- dacă este falsă, bucla se oprește.
Chiar dacă condiția este falsă de la început, instrucțiunile se execută o singură dată.
Compararea
while - do-while
while→ verifică condiția înainte de prima execuție;do-while→ verifică condiția după prima execuție.
Exemplu din viața reală
Gândește-te la un joc:
- intri într-un nivel;
- joci cel puțin o dată;
- apoi jocul verifică dacă mai poți continua.
Exact așa funcționează instrucțiunea
do-while.
Greșeală frecventă
Instrucțiunea do-while se termină
întotdeauna cu ;.
Dacă uiți acest ;, programul nu va funcționa
corect.
Ce să reții
whileeste folosit pentru repetare;- condiția este verificată înainte de fiecare repetare;
do-whileverifică condiția la final - se execută cel puțin o dată;- instrucțiunile se execută cât timp condiția este adevărată;
- trebuie să avem grijă să modificăm condiția.