Instrucțiunea do - while

Instrucțiunea do - while este o structură repetitivă cu test final: execută mai întâi instrucțiunile și abia apoi verifică condiția, repetând cât timp aceasta este adevărată.

Diferența esențială față de while este că instrucțiunile se execută cel puțin o dată, indiferent de condiție, pentru că verificarea se face la sfârșit. Este echivalentul în C++ al structurii repetă - până când din pseudocod, totuși cu o mică diferență: valoarea de adevăr pe care trebuie să o aibă condiția (de oprire) diferă între cele două.

Schema logică a instrucțiunii do - while
Schema logică a instrucțiunii do - while

Sintaxă

do {
    // instructiuni
} while (conditie);

Spre deosebire de celelalte structuri, după while (conditie) de la final se pune obligatoriu ;.

Efect

  1. se execută instrucțiunile din interior;
  2. se evaluează condiția: dacă este adevărată, se revine la punctul 1;
  3. când condiția devine falsă, se trece mai departe în program.

Publicitate

Exemplu: numărul de cifre

Enunț. Se citește un număr natural din intervalul [0,109][0, 10^9]. Să se afișeze câte cifre are.

int n, c = 0;
cin >> n;
do {
    c++;
    n /= 10;
} while (n);
cout << c;
> 5431561
7
> 0
1

La fiecare pas creștem contorul c și eliminăm ultima cifră. Aici do - while este alegerea potrivită: dacă numărul citit este chiar 0, el are totuși o cifră, iar structura cu test final garantează că instrucțiunile se execută o dată, numărând corect acea cifră. Un while obișnuit ar fi sărit complet peste numărul 0.

Exemplu: prelucrarea cifrelor

Enunț. Se citește o cifră k, apoi numere naturale până la întâlnirea unei valori negative. Să se afișeze de câte ori apare cifra k în total.

int k, n, c = 0;
cin >> k >> n;
while (n >= 0) {
    do {
        if (n % 10 == k) c++;
        n /= 10;
    } while (n);
    cin >> n;
}
cout << c;
> 5
> 1254
> 324
> 5
> 980
> 5251
> -1
4

Pentru fiecare număr citit, parcurgem cifrele cu un do - while și numărăm aparițiile cifrei k. Structura cu test final asigură că și numărul 0 este tratat corect (are o cifră, cifra 0).

Concluzii

Instrucțiunea do - while se folosește atunci când vrem ca instrucțiunile să se execute măcar o dată înainte de prima verificare a condiției. În rest, principiul este același ca la while: bucla continuă cât timp condiția rămâne adevărată.