Sari la conținut

Capitolul 6 · Lecția 6.1 din 2

Structurile if/else și while

Decizii și repetiții: cum gândim condițiile și cum urmărim execuția pas cu pas.

Capitolul 6: Structuri de controlConținut verificat

Pe scurt pentru BAC · 4 idei

  • Condiția din if se evaluează la adevărat sau fals, iar pentru mai multe instrucțiuni pe o ramură folosești acolade.
  • Egalitatea se testează cu ==, deoarece = singur e atribuire și strică logica.
  • Bucla while (i <= 4) care adună i la s face ca s să ia pe rând valorile 1, 3, 6, 10, iar la i = 5 se oprește.
  • Produsul p = p * n cu n coborând de la 3 până la 1 calculează 3!, deci se afișează 6.
Pe această pagină5 secțiuni

Structura alternativă if/else

Structura alternativa if/else

#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n;
    if (n % 2 == 0)
        cout << "par";
    else
        cout << "impar";
    return 0;
}

Atenție: In Pascal nu se pune punct si virgula inaintea lui else. Ar inchide instructiunea if si compilatorul nu ar mai sti de cine tine else.

se trimit programului la citire

Condiția din paranteze se evaluează la adevărat sau fals. Pentru mai multe instrucțiuni pe ramură, folosește acolade.

Atenție: egalitatea se testează cu ==; = singur e atribuire și strică logica.

Structura repetitivă while

Structura repetitiva while

#include <iostream>
using namespace std;

int main() {
    int i = 1, s = 0;
    while (i <= 4) {
        s = s + i;
        i = i + 1;
    }
    cout << s;
    return 0;
}

Atenție: Contorul trebuie crescut in interiorul buclei. Daca se uita, conditia ramane mereu adevarata si programul nu se mai opreste.

se trimit programului la citire

Urmărim execuția: s devine 1, apoi 3, apoi 6, apoi 10; la i = 5 condiția pică. Se afișează 10.

for: aceeași idee, compactă

Aceeasi suma, cu for

#include <iostream>
using namespace std;

int main() {
    int s = 0;
    for (int i = 1; i <= 4; i++)
        s += i;
    cout << s;
    return 0;
}

Atenție: Aceeasi suma ca la while, dar for aduna initializarea, conditia si pasul intr-un singur rand. In Python, range(1, 5) merge de la 1 la 4, capatul din dreapta nefiind inclus.

se trimit programului la citire

Echivalent cu while-ul de mai sus: inițializare; condiție; pas.

Exemplu rezolvat

Ce afișează?

Factorialul, iterativ

#include <iostream>
using namespace std;

int main() {
    int n = 3, p = 1;
    while (n > 0) {
        p = p * n;
        n--;
    }
    cout << p;
    return 0;
}

Atenție: Produsul porneste de la 1, nu de la 0. Cu 0 rezultatul ar ramane 0 oricate inmultiri s-ar face.

se trimit programului la citire

Urmărim: pentru n=3, p devine 3; pentru n=2, p devine 6; pentru n=1, p rămâne 6; la n=0 bucla se oprește. Se afișează 6 (adică 3!).

Reține

if alege o ramură, while repetă cât timp condiția e adevărată, iar for (inițializare; condiție; pas) este un while scris compact. Urmărește variabilele pas cu pas: cu i pornind de la 1, i < 4 face 3 pași, iar i <= 4 face 4.

Greșeli frecvente

  1. while (i = 5) în loc de ==: atribuirea face condiția mereu adevărată (5 e nenul), buclă infinită.
  2. Uitarea pasului (i++) în while: buclă infinită.
  3. Off-by-one: i < 4 face 3 pași, i <= 4 face 4; numără-i pe hârtie.

Bifează când ai terminat, ca s-o vezi citită pe toate dispozitivele.

Testează-te pe capitolul 6

Lecția în clipuri

Clipuri scurte, cu voce și subtitrări.

Folosim cookie-uri esențiale, fără de care site-ul nu merge, și cookie-uri de analiză anonimizate, ca să vedem ce pagini ajută. Detalii în politica de confidențialitate