Invatare Atomica

Structura alternativa (if/else)

Progres lectie:
0%
🎯

Obiectivul lectiei

Dupa aceasta lectie, vei putea face programul sa ia decizii in functie de conditii.

Dupa aceasta lectie vei putea:

  • Sa explici ideea de baza
  • Sa explici sintaxa if/else
  • Sa compari operatori de comparatie
  • Sa aplici operatori logici
  • Sa aplici exemplu: verificare varsta

Incearca singur!

🎯 INCEARCA

Verifica daca un numar e pozitiv!

#include <iostream> using namespace std; int main() { int numar; cout << "Introdu un numar: "; cin >> numar; if (numar > 0) { cout << "Numarul este POZITIV" << endl; } else if (numar < 0) { cout << "Numarul este NEGATIV" << endl; } else { cout << "Numarul este ZERO" << endl; } return 0; }
🚀 Ruleaza pe OnlineGDB

Testeaza cu: 5, -3, 0. Ce observi?

1

Ideea de baza

Ideea de baza
Analogie din viata reala: Dimineata te uiti pe fereastra. Daca afara ploua, iei umbrela si pleci. Altfel (nu ploua), pleci fara umbrela. Programul face exact acelasi lucru: verifica o conditie si alege una dintre doua cai.
Structura alternativa permite programului sa aleaga intre doua cai diferite, in functie de o conditie.
Conditie?
DA (true)
Bloc 1
NU (false)
Bloc 2
2

Sintaxa if/else

Sintaxa if/else
// Forma simpla if (conditie) { // se executa daca conditia e adevarata } // Cu alternativa if (conditie) { // daca DA } else { // daca NU } // Cu mai multe variante if (conditie1) { // prima varianta } else if (conditie2) { // a doua varianta } else { // daca niciuna nu e adevarata }
3

Operatori de comparatie

Operatori de comparatie
OperatorSemnificatieExemplu
==egal cux == 5
!=diferit dex != 0
<mai micx < 10
>mai marex > 0
<=mai mic sau egalx <= 100
>=mai mare sau egalx >= 18
4

Operatori logici

Operatori logici
OperatorSemnificatieExemplu
&&SI (ambele adevarate)x > 0 && x < 10
||SAU (cel putin una adevarata)x == 0 || x == 1
!NU (negatia)!(x == 5)
5

Exemplu: Verificare varsta

Exemplu: Verificare varsta
int varsta; cout << "Varsta ta: "; cin >> varsta; if (varsta >= 18) { cout << "Esti major!" << endl; } else { cout << "Esti minor." << endl; cout << "Mai ai " << (18 - varsta) << " ani." << endl; }

Exercitii practice

Exercitiul 1 (Nivel minim) - Programare

Cerinta: Citeste un numar intreg n si afiseaza "PAR" daca e par sau "IMPAR" daca e impar.

Vezi rezolvarea

Testam restul impartirii la 2 cu operatorul %: daca restul e 0, numarul e par.

  1. int n; cin >> n;
  2. if (n % 2 == 0) cout << "PAR";
  3. else cout << "IMPAR";

Cod complet: int n; cin >> n; if (n % 2 == 0) cout << "PAR"; else cout << "IMPAR";

Exemplu: pentru n=7, 7%2=1 (diferit de 0), deci se afiseaza IMPAR.

Exercitiul 2 (Nivel standard) - Programare

Cerinta: Citeste doua numere a si b si afiseaza care este mai mare.

Vezi rezolvarea

Folosim structura alternativa cu operatorii de comparatie > si == din lectie.

  1. int a, b; cin >> a >> b;
  2. if (a > b) cout << "a este mai mare";
  3. else if (b > a) cout << "b este mai mare";
  4. else cout << "a si b sunt egale";

Cazul de egalitate nu e cerut explicit in enunt, dar il tratam pentru un program corect, folosind forma if / else if / else predata la Atomul 2.

Exercitiul 3 (Nivel performanta) - Programare

Cerinta: Citeste o nota (1-10) si afiseaza calificativul: "Excelent" (9-10), "Bine" (7-8), "Suficient" (5-6), "Insuficient" (1-4).

Vezi rezolvarea

Schita: cascada de if / else if, verificate de la cea mai mare limita spre cea mai mica, folosind operatorii >= din tabelul de comparatie.

  1. Citeste nota (int).
  2. if (nota >= 9) "Excelent"
  3. else if (nota >= 7) "Bine"
  4. else if (nota >= 5) "Suficient"
  5. else "Insuficient"

Capcana: ordinea conditiilor conteaza - daca ai verifica intai nota >= 1, toate cazurile ar cadea in prima ramura. Se puncteaza: ordinea corecta a ramurilor, acoperirea 1-10, un singur mesaj afisat.

Exercitiul 4 (Nivel performanta) - Programare

Cerinta: Citeste un an si verifica daca este bisect. Un an e bisect daca: e divizibil cu 4 SI (nu e divizibil cu 100 SAU e divizibil cu 400).

Vezi rezolvarea

Schita: conditia de bisect se scrie exact cum apare in enunt, folosind operatorii logici && si || din Atomul 4 si % pentru divizibilitate.

  1. Citeste anul (int).
  2. Divizibil cu 4: an % 4 == 0
  3. Nu e divizibil cu 100 SAU e divizibil cu 400: (an % 100 != 0) || (an % 400 == 0)
  4. Combina cu &&: if (an % 4 == 0 && (an % 100 != 0 || an % 400 == 0)) cout << "bisect"; else cout << "nu e bisect";

Capcana: fara paranteza in jurul lui ||, prioritatea operatorilor schimba rezultatul. Se puncteaza: conditia scrisa corect intr-o singura linie, testare pe 2026 (nu), 2000 (da), 1900 (nu).

Exercitiul 5 (Nivel performanta) - Programare

Cerinta: Creeaza un program care calculeaza impozitul pe venit. Urmeaza pasii:

  1. Citeste venitul lunar (numar intreg, in lei).
  2. Daca venitul este mai mic sau egal cu 3000 lei, impozitul este 0% (scutit).
  3. Daca venitul este intre 3001 si 5000 lei, impozitul este 10% din venit.
  4. Daca venitul depaseste 5000 lei, impozitul este 16% din venit.
  5. Calculeaza valoarea impozitului si afiseaza: venitul, procentul aplicat si suma de plata.
Vezi rezolvarea

Schita: cascada if/else if pe intervale de venit, ca la exercitiul cu note, plus calcul si afisare.

  1. Citeste venitul (int).
  2. if (venit <= 3000) procent = 0
  3. else if (venit <= 5000) procent = 10
  4. else procent = 16
  5. Calculeaza impozitul: impozit = venit * procent / 100.0;
  6. Afiseaza venitul, procentul si impozitul.

Capcana: al doilea interval e "intre 3001 si 5000", dar folosind else if dupa ce am eliminat deja <= 3000, testul <= 5000 acopera corect intervalul ramas. Se puncteaza: cele 3 praguri corecte, formula de calcul, cele 3 valori afisate clar.

Ce ai invatat astazi

  • Ai invatat ideea de baza
  • Acum stii sintaxa if/else
  • Ai descoperit operatori de comparatie
  • Ai explorat operatori logici
  • Ai inteles exemplu: verificare varsta

Vrei mai mult?

Ai calificativele Excelent/Bine/Suficient/Insuficient. Testeaza-le la limita.

  • Provocare: Modifica programul de calificative sa accepte note cu zecimale (float), nu doar intregi. Testeaza EXACT cazurile de granita: 8.9, 9.0, 6.9, 7.0. Daca vreun rezultat nu se potriveste cu ce ar parea corect, verifica ordinea conditiilor din cascada de if.
  • De ce? De ce intr-o cascada if / else if trebuie verificate conditiile de la cea mai mare limita spre cea mai mica (intai >= 9, apoi >= 7) si nu invers? Ce s-ar strica daca ai incepe cu >= 5?
  • Mai departe: Sistemul de impozitare pe transe (ca la exercitiul cu impozitul pe venit) foloseste exact aceeasi logica in cascada: fiecare transa de venit e platita cu o cota diferita, verificata in ordine.

Urmatoarea lectie

Continua cu lectia urmatoare pentru a aprofunda cunostintele.

Continua →