1. Recapitulare: doua ramuri cu if-else
else. In Python, blocul unei ramuri este delimitat prin indentare (4 spatii), nu prin acolade.
# nota = 7 if nota >= 5: print("Promovat") else: print("Corigent")
Promovat
2. Decizii multiple cu if-elif-else
elif (prescurtare de la "else if"). Programul verifica conditiile de sus in jos: prima conditie adevarata castiga, blocul ei se executa, iar restul cascadei este sarit complet. Ramura else (optionala) prinde toate cazurile ramase.
# nota = 8 if nota < 5: print("Insuficient") elif nota < 7: print("Suficient") elif nota < 9: print("Bine") else: print("Foarte bine")
Bine
8 < 5 este fals, 8 < 7 este fals, 8 < 9 este adevarat → afiseaza Bine si se opreste. Nu mai trebuie sa scriem elif 7 <= nota < 9: faptul ca am ajuns la a treia ramura garanteaza deja ca nota e cel putin 7.
3. Operatorii logici: and, or, not
and(SI) - adevarat doar daca ambele parti sunt adevarateor(SAU) - adevarat daca cel putin una dintre parti este adevaratanot(NU) - inverseaza valoarea de adevar
varsta = 20 are_permis = True if varsta >= 18 and are_permis: print("Poate conduce") else: print("Nu poate conduce") temp = 35 if temp < 0 or temp > 30: print("Vreme extrema") else: print("Vreme normala") ploua = False if not ploua: print("Iesim afara")
Poate conduce Vreme extrema Iesim afara
True and False = False; True or False = True; not False = True. Cu acesti trei operatori poti exprima orice conditie compusa.
4. Structuri if imbricate (nested)
if in interiorul altui if - se numeste structura imbricata. Indentarea suplimentara arata pe ce nivel se afla fiecare decizie. Exemplu: determinarea cadranului unui punct dupa semnele coordonatelor x si y.
x = 10 y = -3 if x > 0: if y > 0: print("Cadranul I") else: print("Cadranul IV") else: if y > 0: print("Cadranul II") else: print("Cadranul III")
Cadranul IV
elif cand cazurile sunt "in serie" (un singur criteriu, mai multe intervale - ca la note). Foloseste imbricarea cand a doua intrebare are sens doar dupa raspunsul la prima (aici intrebam de y separat in fiecare ramura a lui x).
5. EXCLUSIV INTENSIV (C++) else if si switch
{ } (sau o singura instructiune fara acolade), iar cascada se scrie else if (doua cuvinte). Conditia se pune obligatoriu in paranteze.
#include <iostream> using namespace std; int main() { int nota = 8; if (nota < 5) cout << "Insuficient" << endl; else if (nota < 7) cout << "Suficient" << endl; else if (nota < 9) cout << "Bine" << endl; else cout << "Foarte bine" << endl; return 0; }
Bine
switch. Fiecare case are nevoie de break, altfel executia "curge" in case-ul urmator (fall-through). Doua case consecutive fara cod intre ele grupeaza valori (aici 6 si 7 = weekend).
#include <iostream> using namespace std; int main() { int zi = 3; switch (zi) { case 1: cout << "Luni" << endl; break; case 6: case 7: cout << "Weekend" << endl; break; default: cout << "Zi lucratoare" << endl; } return 0; }
Zi lucratoare
6. EXTINDERE INTENSIV match-case si operatorul ternar
match-case. Spre deosebire de switch din C++, nu are nevoie de break: dupa un case potrivit, executia iese automat. case _ este cazul implicit (orice altceva), iar | grupeaza valori.
zi = 3 match zi: case 1: print("Luni") case 6 | 7: print("Weekend") case _: print("Zi lucratoare") # operator ternar: o decizie scrisa pe o singura linie nota = 4 rezultat = "Promovat" if nota >= 5 else "Picat" print(rezultat)
Zi lucratoare Picat
valoare_daca_adevarat if conditie else valoare_daca_fals condenseaza un if-else simplu intr-o singura expresie - util cand vrei doar sa atribui o valoare in functie de o conditie.