Structura DO-WHILE
Obiectivul lectiei
Dupa aceasta lectie, vei sti sa folosesti bucla care executa cel putin o data inainte de a verifica conditia.
Dupa aceasta lectie vei putea:
- Sa explici structura repetitiva conditionata posterior (DO-WHILE)
- Sa scrii sintaxa DO-WHILE corecta in C++ (inclusiv punct-virgula final)
- Sa deosebesti WHILE de DO-WHILE si sa alegi varianta potrivita
- Sa aplici DO-WHILE pentru validare input, meniuri interactive si jocuri
- Sa reprezinti algoritmul DO-WHILE in pseudocod (comp. VII-2.2)
Incearca singur!
Meniu cu validare!
Meniul se afiseaza cel putin o data, apoi repeta pana alegi 3!
Structura repetitiva conditionata posterior
Garanteaza cel putin o executie!
Sintaxa DO-WHILE
Diferenta WHILE vs DO-WHILE
| WHILE | DO-WHILE |
|---|---|
| Verifica inainte | Verifica dupa |
| Poate sa nu execute deloc | Executa cel putin o data |
| while (cond) { ... } | do { ... } while (cond); |
Exemplu: Citire cu validare
Exemplu: Joc "Ghiceste numarul"
Jocurile de tip "ghiceste numarul" sunt un exemplu clasic de DO-WHILE. Jucatorul trebuie sa faca cel putin o incercare inainte de a verifica daca a ghicit corect.
Observa ca jucatorul introduce cel putin o valoare inainte de a se verifica daca a ghicit. Daca am folosi WHILE, ar trebui sa initializam variabila ghicire cu o valoare "gresita" inainte de bucla, ceea ce ar fi mai putin elegant.
💡 Cand folosim DO-WHILE?
Regula de aur: foloseste DO-WHILE cand actiunea trebuie executata cel putin o data, indiferent de conditie. Iata situatiile cele mai frecvente:
- Meniuri interactive - meniul trebuie afisat cel putin o data ca utilizatorul sa poata alege
- Validare input - cere utilizatorului sa introduca date pana cand sunt corecte
- Jocuri "vrei sa mai joci?" - jocul trebuie jucat cel putin o runda
- Procesare cifre - numarul 0 are cel putin o cifra, deci trebuie procesata
- Orice situatie unde actiunea trebuie facuta cel putin o data inainte de verificare
Pseudocod — reprezentarea DO-WHILE (comp. VII-2.2)
Programa OMEN 3393/2017 (competenta VII-2.2) cere sa stii sa reprezinti algoritmii in pseudocod, nu doar in C++. Pseudocodul este o scriere intermediara, independenta de limbaj, care descrie logica algoritmului in cuvinte.
Structura DO-WHILE se scrie in pseudocod astfel:
Exemplu — meniu cu validare in pseudocod:
Compara cu codul C++ din sectiunea TRY — logica este identica, doar sintaxa difera. Invatand pseudocodul, poti descrie algoritmul inainte de a scrie cod in orice limbaj.
⚠ Greseala comuna
Cea mai frecventa greseala este uitarea punctului si virgulei dupa while(conditie). Spre deosebire de structura WHILE clasica, DO-WHILE se termina cu ; dupa paranteza conditiei:
Alta greseala frecventa: folosirea DO-WHILE cand conditia trebuie verificata inainte. De exemplu, daca vrei sa parcurgi o lista care poate fi goala, foloseste WHILE, nu DO-WHILE.
Exercitii practice
Exercitiul 1 (Nivel minim) - Programare
Cerinta: Cere utilizatorului sa introduca parola "secret123". Repeta cererea pana cand parola e corecta, apoi afiseaza "Acces permis!".
Exercitiul 2 (Nivel standard) - Programare
Cerinta: Creeaza un meniu cu optiuni: 1-Salut, 2-Ora, 3-Iesire. Afiseaza mesajul corespunzator si repeta meniul pana cand utilizatorul alege 3.
Exercitiul 3 (Nivel performanta) - Programare
Cerinta: Citeste un numar intreg pozitiv si calculeaza suma cifrelor sale folosind do-while.
Exercitiul 4 (Nivel performanta) - Programare
Cerinta: Citeste un numar intreg pozitiv si afiseaza numarul cu cifrele inversate.
Exercitiul 5 (Nivel performanta) - Programare
Cerinta: Creeaza un bancomat simplu cu meniu interactiv. Urmeaza pasii:
- Declara o variabila
soldcu valoarea initiala 1000 (lei). - Afiseaza un meniu cu 3 optiuni: 1 - Verifica sold, 2 - Retrage suma, 3 - Iesire.
- La optiunea 1, afiseaza soldul curent.
- La optiunea 2, cere suma de retras; daca suma <= sold, scade-o si afiseaza noul sold; altfel afiseaza "Fonduri insuficiente!".
- Repeta meniul cu do-while pana cand utilizatorul alege optiunea 3.
Ce ai invatat astazi
- Ai invatat structura repetitiva conditionata posterior (DO-WHILE)
- Acum stii sintaxa DO-WHILE in C++
- Ai descoperit diferenta WHILE vs DO-WHILE
- Ai explorat exemple practice: citire cu validare, joc "ghiceste numarul"
- Ai invatat cand folosim DO-WHILE (meniuri, validare input, jocuri)
- Ai descris algoritmul DO-WHILE in pseudocod (comp. VII-2.2)
- Acum stii greseala comuna: uitarea punct-virgulei dupa while(conditie)