Ce vei învăța astăzi?
După această lecție vei putea scrie programe care iau decizii: vei folosi if, elif și else pentru a alege ce se execută în funcție de condiții.
Instrucțiunea if simplu
Definiție: Instrucțiunea if execută un bloc de cod (un grup de instrucțiuni care se execută împreună) numai dacă o condiție (o afirmație care poate fi adevărată sau falsă) este adevărată. Dacă condiția este falsă, blocul este sărit.
Analogie
Este ca o întrebare cu două răspunsuri: „Dacă plouă, ia umbrela". Dacă plouă, luăm umbrela; dacă nu plouă, nu facem nimic.
n = int(input())
if n > 0:
print("Numărul este pozitiv")
De reținut: după condiție punem două puncte (:), iar blocul se scrie indentat (cu 4 spații sau un Tab).
if / else
else înseamnă „altfel" și acoperă cazul în care condiția de la if este falsă. Astfel, întotdeauna se execută unul dintre cele două blocuri.
Exemplu: verificarea parității
n = int(input())
if n % 2 == 0:
print("par")
else:
print("impar")
Observă: restul împărțirii la 2 (n % 2) este 0 pentru numere pare și 1 pentru numere impare.
if / elif / else
Când avem mai multe cazuri de verificat, folosim elif (prescurtare de la „else if"). Condițiile se verifică în ordine, până când una devine adevărată.
nota = int(input())
if nota >= 9:
print("Foarte bine")
elif nota >= 7:
print("Bine")
elif nota >= 5:
print("Suficient")
else:
print("Insuficient")
De reținut: ordinea condițiilor este importantă! Se verifică prima condiție adevărată și restul sunt ignorate.
Indentarea - blocurile de cod
Indentarea (spațiile de la începutul liniei) arată în Python ce instrucțiuni aparțin unui bloc. Liniile cu aceeași indentare fac parte din același bloc.
n = int(input())
if n % 2 == 0:
print("Numărul este par")
print("Îl putem împărți la 2")
print("Sfârșitul programului")
Atenție: în Python indentarea nu este opțională! Fără ea, programul dă eroare de sintaxă. De obicei folosim 4 spații pentru fiecare nivel.
Operatorii logici: and, or, not
| Operator | Rol | Exemplu |
|---|---|---|
and |
Adevărat doar dacă ambele condiții sunt adevărate | x > 0 and x < 10 |
or |
Adevărat dacă cel puțin o condiție este adevărată | nota == 10 or nota == 9 |
not |
Inversează valoarea (true devine false) | not (x == 0) |
Condiții compuse în practică
x = int(input())
if x > 0 and x < 10:
print("x este între 1 și 9")
if x == 0 or x == 1:
print("x este 0 sau 1")
Exemplu complet: maximul a două numere
a = int(input())
b = int(input())
if a > b:
print(a)
else:
print(b)
Observă: dacă a este mai mare, afișăm a; altfel afișăm b. Programul funcționează pentru orice pereche de numere.
Exercițiu de completare
Completează programul de paritate cu cuvintele potrivite:
n = int(input())
if n % 2 == ______:
______("______")
______ n % 2 == 1:
print("impar")
Bancă de cuvinte:
Test de înțelegere
Test rapid - structuri de decizie:
1. Ce afișează următorul program?
if 5 > 3:
print("A")
else:
print("B")
2. Operatorul logic pentru „ȘI" în Python este...
3. Pentru a verifica dacă x este par folosim...
Test de verificare
Test rapid - decizii:
1. Ce verifică instrucțiunea if?
2. Operatorul logic „ȘI" în Python este...
3. Un număr x este par dacă...
if n = 5 în loc de if n == 5:: atribuirea (=) este o eroare de sintaxă în condiție, iar comparația are nevoie de două semne de egal (==).Aprofundare
Structuri decizionale înlănțuite (decizii legate unele de altele, care se verifică în ordine). Când avem mai multe cazuri de verificat, folosim if / elif / else. Un caz particular frecvent: ordinea condițiilor contează. De exemplu, pentru a clasifica o notă (10, 9-8, 7-6, 5), verificăm mai întâi cazul cel mai restrictiv. Dacă am pune prima condiția „nota > 5", toate notele peste 5 ar intra acolo și restul ramurilor nu s-ar mai atinge.
Condiții compuse și prioritatea operatorilor. Operatorii logici and, or și not combină mai multe condiții. Precizia este esențială: x > 0 and x < 10 este diferit de x > 0 or x < 10. O condiție compusă poate fi scrisă mai elegant în Python cu dubla comparație (verificarea a două inegalități într-o singură expresie) 0 < x < 10, echivalentă cu prima variantă.
Cazuri particulare ale deciziilor. Există decizii „fără altfel": dacă condiția este falsă, programul pur și simplu continuă. Există și decizii în interiorul altor decizii (îmbinări), folosite de exemplu la verificarea unui interval: if x > 0: if x < 10: .... În astfel de cazuri, indentarea corectă este singura care arată structura reală a programului.
PbInfo - Paritate
Enunț:
Cerință: Se citește un număr natural n. Să se afișeze mesajul par dacă numărul este par, sau impar în caz contrar.
Date de intrare:
Programul citește de la tastatură numărul n.
Date de ieșire:
Programul va afișa mesajul par sau impar.
Restricții și precizări:
Numerele citite sunt numere naturale, iar rezultatul este un număr întreg sau real.
Exemplu:
Intrare:
6
Ieșire:
par
Cum gândim soluția:
- Citim n cu
int(input()) - Verificăm cu
ifdacăn % 2 == 0(restul împărțirii la 2) - Afișăm
parsauimparcuprint()
Scrie soluția în Python:
Soluție corectă:
n = int(input())
if n % 2 == 0:
print("par")
else:
print("impar")
Ce învățăm: restul împărțirii la 2 ne spune dacă un număr este par (rest 0) sau impar (rest 1).
PbInfo - Maximul a două numere
Enunț:
Cerință: Se citesc două numere naturale a și b. Să se afișeze valoarea maximă dintre ele.
Date de intrare:
Programul citește de la tastatură numerele a și b.
Date de ieșire:
Programul va afișa valoarea maximă dintre cele două numere.
Restricții și precizări:
Numerele citite sunt numere naturale, iar rezultatul este un număr întreg sau real.
Exemplu:
Intrare:
12 7
Ieșire:
12
Cum gândim soluția:
- Citim a și b cu
int(input()) - Dacă
a > b, maximul este a; altfel, maximul este b - Afișăm maximul cu
print()
Scrie soluția în Python:
Soluție corectă:
a = int(input())
b = int(input())
if a > b:
print(a)
else:
print(b)
Ce învățăm: if și else acoperă ambele cazuri: ori afișăm a, ori afișăm b.
Exercițiul Practic: Decizii în Python
Sarcini de lucru
Scrie programe care iau decizii folosind if, elif și else
Sarcina 1: Programul „An bisect" (simplificat)
Cerință: Scrie un program care citește un număr n. Dacă n este divizibil cu 4 (adică n % 4 == 0), afișează bisect, altfel afișează nu.
Soluție pentru Sarcina 1:
n = int(input())
if n % 4 == 0:
print("bisect")
else:
print("nu")
Verifică: pentru n = 2024 afișează bisect (2024 % 4 = 0), iar pentru n = 2023 afișează nu.
Sarcina 2: Programul „Notă la test"
Cerință: Scrie un program care citește o notă (număr întreg). Dacă nota este mai mare sau egală cu 5, afișează promovat, altfel afișează respins.
Soluție pentru Sarcina 2:
nota = int(input())
if nota >= 5:
print("promovat")
else:
print("respins")
Verifică: pentru nota 6 afișează promovat, iar pentru nota 4 afișează respins.
Scrie pe caiet - De reținut
Titlul lecției
Ora 7: Structuri de decizie în Python
Definiția lecției
Structura de decizie permite programului să aleagă ce instrucțiuni execută, în funcție de o condiție care poate fi adevărată sau falsă. Instrucțiunea if execută un bloc de cod numai dacă condiția este adevărată, iar else acoperă cazul în care condiția este falsă, astfel încât întotdeauna se execută una dintre ramuri. Când avem mai multe cazuri de verificat, folosim elif, iar condițiile se verifică în ordine, până când una devine adevărată. În Python, blocurile de cod se marchează prin indentare, adică prin spațiile de la începutul liniei, iar fără ea programul dă eroare. Pentru condiții mai complexe folosim operatorii logici and, or și not. De exemplu, un program care primește o notă și afișează calificativul (Foarte bine, Bine, Suficient, Insuficient) folosește un lanț if/elif/else, exact ca deciziile pe care le luăm zilnic, precum alegerea hainei potrivite în funcție de vreme.
Definiții esențiale
- Structura de decizie - instrucțiunea care alege o cale de execuție în funcție de o condiție.
- if - execută instrucțiunile dacă condiția este adevărată; else - execută instrucțiunile dacă condiția este falsă.
- elif - verifică o condiție suplimentară, după un if sau alt elif.
- Operatori de comparație -
==,!=,<,>,<=,>=. - Operatori logici -
and(ambele),or(cel puțin una),not(negarea). - Un număr x este par dacă
x % 2 == 0.
Algoritmul cheie - pseudocod
Algoritmul cheie - cod Python
a = int(input())
b = int(input())
if a > b:
print(a)
else:
print(b)Greșeli comune de evitat
- Scrierea comparației cu
=în loc de==:if n = 5este greșit. - Uitarea celor două puncte
:dupăif,elif,else. - Indentarea greșită a instrucțiunilor din interiorul deciziei.
- Confuzia dintre
andșiorîn condițiile compuse.
Sfaturi practice și trucuri
- Verifică ordinea condițiilor în lanțul
if/elif: prima condiție adevărată câștigă. - Pentru un interval, poți scrie direct
if 0 < x < 10:. - Testează decizia cu valori din ambele ramuri: una care face condiția adevărată și una care o face falsă.
- Folosește paranteze pentru condițiile compuse complexe, ca să fie clare.
Exemplu practic
Un magazin online aplică reduceri în funcție de valoarea comenzii: sub 100 de lei nu se acordă reducere, între 100 și 200 de lei se acordă 5%, iar peste 200 de lei se acordă 10%. Exact astfel de decizii se scriu cu if/elif/else în Python:
comanda = int(input("Valoarea comenzii: "))
if comanda >= 200:
print("Reducere de 10%")
elif comanda >= 100:
print("Reducere de 5%")
else:
print("Fără reducere")