Teorie: Instrucțiunea DO-WHILE
Structura repetitivă cu test final. Execută codul cel puțin o dată. Comparație cu instrucțiunea while.
Instrucțiunea repetitivă DO WHILE
Instrucțiunea do-while este o structură repetitivă cu test final. Spre deosebire de while sau for (care verifică condiția înainte de a executa ceva), instrucțiunea do-while garantează că blocul de cod se va executa cel puțin o dată, deoarece condiția este evaluată la finalul repetiției.
1. Sintaxa de bază
do {
// instrucțiuni care se execută cel puțin o dată
} while (condiție); // Nu uitați punctul și virgula la final!Cea mai comună utilizare a acestei structuri este citirea cu validare. De exemplu, când vrei să ceri utilizatorului să introducă un număr pozitiv și repeți întrebarea până când dă o valoare corectă.
int n;
do {
cout << "Introduceți un număr pozitiv: ";
cin >> n;
} while (n <= 0); // Repetăm CÂT TIMP numărul este greșit (<= 0)
cout << "Ați introdus numărul corect: " << n;2. Comparație: WHILE vs DO-WHILE
Diferența majoră se observă atunci când condiția este falsă chiar de la început.
Cu WHILE
int x = 10;
while (x < 5) {
cout << "Hello!";
}Rezultat: Nu afișează absolut nimic, pentru că 10 nu este mai mic decât 5.
Cu DO-WHILE
int x = 10;
do {
cout << "Hello!";
} while (x < 5);Rezultat: Afișează "Hello!" o singură dată, după care verifică condiția (10 < 5 este Fals) și se oprește.
Capcană la Bacalaureat
- Punct și virgulă obligatoriu: Mulți elevi uită să pună
;dupăwhile(condiție)în structurado-while. Este o eroare de sintaxă (compilatorul va da eroare). - Cazul lui zero: În lecția precedentă am văzut că algoritmul de numărare a cifrelor cu
while(n > 0)dă greș dacă numărul e chiar 0 (va zice că are 0 cifre, ceea ce e fals, 0 are o cifră). Acesta este cazul ideal în care rescriem cudo-while, astfel încât să extragă și să numere cifra "0" cel puțin o dată, abia apoi să verifice dacă mai sunt cifre.