O structură repetitivă cu test final în C++ este implementată folosind bucla do-while. Aceasta execută cel puțin o dată blocul de cod și apoi verifică condiția la final. Dacă condiția este adevărată, bucla se repetă.
Pentru a înțelege diferența dintre cele două structuri repetitive: cu test inițial și cu test final priviți imaginea cu Road Runner și Coyote.
Wile E. Coyote și Road Runner sunt un duo de personaje din seria de desene animate Looney Tunes și Merrie Melodies, apărute pentru prima dată în 1949 în scurtmetrajul de teatru Fast and Furry-ous. În fiecare film, coiotul viclean, și în mod constant înfometat încearcă în mod repetat să prindă și să-l mănânce pe Road Runner, dar nu reușește.

În imagine vedem cum:
- Cât timp nu a ajuns la margine Road Runner aleargă.
- Coiotul aleargă cât timp nu a ajuns la margine.
În concluzie coiotul cade în prăpastie deoarece pune alergarea înainte verificarea dacă a ajuns la margine.
Acesta este motivul pentru care instrucțiunea do-while se folosește de obicei la validarea datelor de intrare ca în exemplele de mai jos:
Exemplul 1: Citirea unui număr până când utilizatorul introduce un număr pozitiv
#include <iostream>
using namespace std;
int main() {
int numar;
do {
cout << "Introdu un numar pozitiv: ";
cin >> numar;
} while (numar <= 0); // Testul final
cout << "Ai introdus un numar valid: " << numar << endl;
return 0;
}
Explicație
- Programul cere utilizatorului să introducă un număr.
- Se execută minim o dată blocul de cod.
- Se verifică dacă numărul introdus este pozitiv.
- Dacă nu este, utilizatorul este rugat să introducă alt număr.
Exemplul 2: Repetarea unui meniu până când utilizatorul alege să iasă
#include <iostream>
using namespace std;
int main() {
int optiune;
do {
cout << "\nMENIU:\n";
cout << "1. Afiseaza mesaj\n";
cout << "2. Afiseaza suma a doua numere\n";
cout << "3. Iesire\n";
cout << "Alege o optiune: ";
cin >> optiune;
switch(optiune) {
case 1:
cout << "Salut! Acesta este un mesaj!\n";
break;
case 2: {
int a, b;
cout << "Introdu doua numere: ";
cin >> a >> b;
cout << "Suma este: " << a + b << endl;
break;
}
case 3:
cout << "Iesire din program...\n";
break;
default:
cout << "Optiune invalida! Incearca din nou.\n";
}
} while (optiune != 3); // Test final
return 0;
}
Explicație
- Programul afișează un meniu și permite utilizatorului să selecteze o opțiune.
- În funcție de alegerea utilizatorului, se execută un anumit bloc de cod.
- Dacă utilizatorul alege
3, bucla se oprește și programul se încheie.
Teme:
- Să se scrie un program care cere utilizatorului să introducă o parolă până când este corectă.
- Să se scrie un program care calculează suma numerelor introduse până când se introduce
0. - Să se scrie un program care afișează tabla înmulțirii pentru un număr ales de utilizator.
- Să se scrie un program în care utilizatorul trebuie să ghicească un număr ales (ex. 7).
