1. De ce avem nevoie de instrucțiunea `if`?

În viața de zi cu zi, luăm decizii constant pe baza unor condiții. Gândește-te la un semafor: dacă este verde, traversezi; altfel, aștepți. Gândește-te la un bancomat: dacă PIN-ul este corect, poți retrage bani; altfel, tranzacția este respinsă.

Calculatoarele au nevoie de aceeași capacitate de a lua decizii. Fără logică condițională, un program ar rula exact aceleași instrucțiuni de fiecare dată, de sus în jos. Instrucțiunea if permite programelor noastre să "gândească" și să se adapteze la datele introduse.

Plouă?
DA: Iau umbrela
NU: Iau ochelarii de soare

2. Sintaxa și formele instrucțiunii if

IF simplu

Se execută codul doar dacă condiția este adevărată (diferită de 0).

if (conditie) {
    // Se execută dacă condiția este ADEVĂRATĂ
}

IF - ELSE

Oferă o alternativă când condiția este falsă.

if (varsta >= 18) {
    cout << "Major";
} else {
    cout << "Minor";
}

IF - ELSE IF - ELSE IF - ... - ELSE (Înlănțuit)

Pentru a testa mai multe condiții exclusive.

if (nota >= 9) {
    cout << "Excelent";
} else if (nota >= 5) {
    cout << "Promovat";
} else {
    cout << "Picat";
}

Operatorul Ternar ( ? : )

O formă compactă pentru atribuiri simple bazate pe o condiție.

int max = (a > b) ? a : b;
// Echivalent cu: dacă a > b, max = a; altfel max = b;

Erori Comune ⚠️

3. Exemple rezolvate

Exemplul 1: Paritate

Verificăm dacă un număr este par sau impar folosind restul împărțirii (modulo %).

int n = 14;
if (n % 2 == 0) {
    // Dacă restul împărțirii la 2 e 0, numărul e par
    cout << "Par";
} else {
    // Altfel e impar
    cout << "Impar";
}

Exemplul 2: An Bisect

Un an este bisect dacă e divizibil cu 4, dar nu și cu 100, CU EXCEPȚIA cazului în care este divizibil cu 400.

int an = 2024;
if ((an % 4 == 0 && an % 100 != 0) || (an % 400 == 0)) {
    cout << "An bisect";
} else {
    cout << "An normal";
}

Exemplul 3: Validare PIN (IF Imbricat/Nested)

Verificăm întâi dacă s-a introdus un card valid. Doar dacă e corect, verificăm și PIN-ul (tip numeric).

int card_inserat = 1; // 1=DA, 0=NU
int pin_introdus = 1234;
int pin_corect = 1234;

if (card_inserat == 1) {
    if (pin_introdus == pin_corect) {
        cout << "Acces permis!";
    } else {
        cout << "PIN incorect!";
    }
} else {
    cout << "Introduceți cardul mai întâi!";
}

4. Quiz

Testează-ți rapid cunoștințele înainte de a trece la exerciții mai complexe!

5. Exerciții practice

5a. Răspuns scurt

1. Ce cuvânt cheie urmează după if pentru a trata cazul în care condiția este falsă?

2. Ce operator folosim pentru ȘI logic (AND) în C++?

3. Ce operator folosim pentru verificarea egalității între două numere?

5b. Alegere multiplă

5c. Completează secvența

Completează căsuțele direct în cod (scrie exact operatorul sau valoarea cerută):

1. Verifică dacă nota este de trecere (minim 5):

if ( nota  5 ) { 
    cout << "Promovat"; 
}

2. Verifică dacă un număr a NU este egal cu b:

if ( a  b ) { 
    cout << "Diferite";
}

5d. Completează programul

Completează spațiile pentru a clasifica un număr ca pozitiv, negativ sau zero.

#include <iostream>
using namespace std;

int main() {
    int nr; 
    cin >> nr;
    
    if (nr  0) {
        cout << "Pozitiv";
    } else  (nr < 0) {
        cout << "Negativ";
    }  {
        cout << "Zero";
    }
    return 0;
}

5e. Transformă operatorul ternar

Transformă următoarea secvență if-else într-o instrucțiune folosind operatorul ternar:

if (a > 10) { 
    res = 1; 
} else { 
    res = 0; 
}

6. Evaluare Finală

Aceasta este o evaluare completă ce conține 50 de itemi, inclusiv urmărirea de secvențe de cod C/C++ și programe complete de tip fill-in-the-blank

Timp Rămas: 60:00