Înapoi la blog
#c++#bucle#for#while

Bucle for și while explicate simplu

Înțelege buclele for, while și do-while în C++ cu exemple practice. Cum repeți acțiuni, eviți buclele infinite și alegi bucla potrivită pentru fiecare problemă.

Calculatoarele sunt extraordinare la un singur lucru: să repete acțiuni de milioane de ori fără să obosească. Instrumentul care face asta se numește buclă. Dacă vrei să afișezi numerele de la 1 la 100, nu scrii 100 de rânduri — scrii o buclă. Hai să vedem cum.

Bucla for: când știi de câte ori repeți

#include <iostream>

int main() {
    for (int i = 1; i <= 5; i++) {
        std::cout << i << " ";
    }
    std::cout << std::endl;
    return 0;
}

Afișează: 1 2 3 4 5. Bucla for are trei părți între paranteze, separate prin ;:

  1. Inițializare: int i = 1 — pornim contorul.
  2. Condiție: i <= 5 — cât timp e adevărată, buclă continuă.
  3. Pas: i++ — ce se întâmplă după fiecare repetare (aici, i crește cu 1).

Ordinea exactă: se inițializează o dată, apoi se verifică condiția, se execută corpul, se face pasul, și iar la condiție.

Bucla while: când repeți "cât timp"

Folosești while când nu știi dinainte de câte ori repeți, ci doar condiția de oprire:

#include <iostream>

int main() {
    int n;
    std::cout << "Introdu numere (0 ca sa opresti):" << std::endl;

    int suma = 0;
    std::cin >> n;
    while (n != 0) {
        suma += n;
        std::cin >> n;
    }

    std::cout << "Suma este: " << suma << std::endl;
    return 0;
}

Aici nu știm câte numere va introduce utilizatorul. Bucla rulează cât timp numărul citit nu e zero.

do-while: rulează măcar o dată

Diferența față de while: verifică condiția la final, deci corpul se execută cel puțin o dată.

#include <iostream>

int main() {
    int optiune;
    do {
        std::cout << "Alege 1-3 (0 = iesire): ";
        std::cin >> optiune;
    } while (optiune != 0);

    return 0;
}

Perfect pentru meniuri: vrei să afișezi meniul măcar o dată, înainte să verifici alegerea.

Capcana clasică: bucla infinită

Dacă uiți să modifici variabila din condiție, bucla nu se oprește niciodată:

// GREȘIT: i nu crește niciodată -> buclă infinită
int i = 1;
while (i <= 5) {
    std::cout << i;
    // am uitat i++;
}

Dacă programul tău "îngheață" sau scrie la nesfârșit, prima suspectă e o buclă fără pas. Verifică mereu că ceva din condiție se schimbă în interior.

break și continue

  • break iese imediat din buclă.
  • continue sare la următoarea iterație, ignorând restul corpului.
#include <iostream>

int main() {
    for (int i = 1; i <= 10; i++) {
        if (i % 2 == 0) continue;  // sari peste numerele pare
        if (i > 7) break;          // opreste la 7
        std::cout << i << " ";
    }
    std::cout << std::endl;        // afiseaza: 1 3 5 7
    return 0;
}

Ce buclă aleg?

SituațieBucla potrivită
Știi numărul de repetărifor
Repeți cât timp e adevărat cevawhile
Trebuie să rulezi măcar o datădo-while

În practică, for e regina când lucrezi cu vectori și numere, iar while strălucește la citiri necunoscute ca lungime.


Buclele sunt motorul oricărui algoritm serios. La ByteSchool te ajutăm să le folosești cu naturalețe pe probleme adevărate, cu mentori din Big Tech care îți arată exact unde greșesc majoritatea și cum eviți tu acele capcane. Hai să construim împreună reflexele care fac diferența.