Programare Competitivă

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:

  • conditie este o expresie care poate fi true sau false;
  • 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

  1. calculatorul verifică condiția;
  2. dacă este adevărată, execută instrucțiunile din interior;
  3. după aceea, se întoarce din nou la condiție;
  4. 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, x este 1;
  • condiția x <= 5 este adevărată;
  • se afișează valoarea lui x;
  • x crește cu 1;
  • procesul se repetă până când x ajunge 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:

  • x nu 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:
10
Output:
1 2 3 4 5 6 7 8 9 10

Numărarea inversă

int x = 5;

while (x > 0) {
    cout << x << " ";
    x--;
}
Output:
5 4 3 2 1 

while versus if

  • if execută instrucțiuni o singură dată, dacă o condiție este adevărată;
  • while execută 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-while execută 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

  1. calculatorul execută instrucțiunile din interior;
  2. apoi verifică condiția;
  3. dacă este adevărată, repetă instrucțiunile;
  4. 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

  • while este folosit pentru repetare;
  • condiția este verificată înainte de fiecare repetare;
  • do-while verifică 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.

Probleme

pbinfoAfisarenumerepare2

pbinfoAfisarenumereimpare1

pbinfoAfisareputeri