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.
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 ⚠️
- Folosirea
=(atribuire) în loc de==(comparare):if (x = 5)va fi mereu adevărat (atribuie 5 lui x, rezultatul expresiei e 5, care e diferit de 0). - Uitarea acoladelor
{}: dacă nu le pui, doar prima instrucțiune de subifaparține acestuia!
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