Video: Instrucțiunea while (structuri repetitive)

Instrucțiunea while (structuri repetitive)

Această lecție este despre instrucțiunea while: definiție, exemple și exerciții propuse.

De multe ori se întâmplă să avem nevoie să repetăm un set de instrucțiuni de un număr de ori. Iată câteva exemple:

  • Să calculăm valoarea a^b (a la puterea b): trebuie să îl înmulțim pe a în mod repetat, de b ori;
  • Să calculăm media a n numere.

Limbajul C++ ne oferă o varietate de modalități de a repeta un set de instrucțiuni. În această lecție vom vorbi despre structura repetitivă while, dar dacă vrei să vezi toate structurile repetitive în C++, poți intra pe această pagină.

Una dintre cele mai des utilizate structuri repetitive, instrucțiunea while funcționează ca și un if, doar că repetă instrucțiunile dintre acolade până când condiția este falsă.

Sintaxa structurii while

Iată sintaxa instrucțiunii. Este asemănătoare ca la cea de if.

while(condiție) {
    instrucțiune 1;
    instrucțiune 2;
    …
}

Observații

Dacă condiția este falsă de la început, atunci nu se vor executa instrucțiunile niciodată.

Dacă condiția este mereu adevărată, atunci se va crea o buclă infinită, iar codul nu se va opri niciodată.

Exemple

Să zicem că avem un număr n și vrem să afișăm în ordine numerele n, n - 1, …, 3, 2, 1. Putem să folosim structura while astfel:

//Pentru n = 5, se va afișa:
//5 4 3 2 1
int n;
cin >> n;
while(n != 0) {
    cout << n << " ";
    n--;
}

Să vedem pas cu pas ce se întâmplă. Urmărește animația de mai jos:

Variabilă Valoare
n 001122334455
Consolă: 5 4 3 2 1

Observăm că dacă condiția este mereu adevărată, atunci codul nu se va opri niciodată (spunem că formăm o buclă infinită). De aceea, este important să ne asigurăm că va exista un moment în care condiția să fie falsă. În următorul exemplu, este evident că nu va exista niciun moment în care condiția n == n să fie falsă, însă în exemplul de după poate fi mai dificil să găsim eroarea.

//Pentru n = 5, se va afișa:
//5 5 5 5 5 5 5 5 … (la infinit)
int n;
cin >> n;
while(n == n) {
    cout << n << " ";
}



//Pentru n = 6, se va afișa:
//6 4 2
//Pentru n = 5, se va afișa:
//5 3 1 -1 -3 -5 … (va continua la infinit, deoarece nu se atinge niciodată valoarea 0)
int n;
cin >> n;
while(n != 0) {
    cout << n << " ";
    n -= 2;
}

În următorul exemplu, codul nu va intra deloc în structura while:

int n = 0;
while(n != 0) {
    cout << n << " ";
}
cout << "Nu se va afișa niciun număr, pentru că n este 0 încă de la început, condiția fiind falsă.";

Problemă rezolvată

Pahare

Avem două pahare de capacitate n, respectim m mililitri (cu n > m). Știind că al doilea pahar are o sursă nelimitată de apă, de câte ori trebuie să turnăm apă din al doilea pahar în primul pentru a îl umple?

Exemplu: Pentru n = 3 și m = 2, rezultatul va fi 2.

Rezolvare: După citire, vom scădea repetat pe m din n, până când acesta este mai mic sau egal cu 0.

#include <iostream>

using namespace std;

int main()
{
    int n, m, nr = 0;
    cin >> n >> m;
    while(n > 0) {
        n -= m;
        nr++;
    }
    cout << nr;
}

Exercițiu propus

Completează următoarea secvență de cod:

Să se citească n și apoi n numere naturale:

int n;
cin >> n;
while(n != 0) {
    int nr;
    cin >> nr;
    ???--;
}

Bibliografie și alte resurse

DS

Autorul acestei lecții

Dominic Satnoianu

Această lecție a fost redactată de către Dominic Satnoianu.

© 2021 – 2025 Aspire Education Labs SRL. Toate drepturile rezervate.

Așa cum este specificat și în termeni și condiții, conținutul acestei pagini este protejat de legea drepturilor de autor și este interzisă copierea sau modificarea acestuia fără acordul scris al autorilor.

Încălcarea drepturilor de autor este o infracțiune și se pedepsește conform legii.

Comentarii 0

Autentifică-te pentru a putea comenta.

Autentifică-te