Școala Româno-Britanică
Modulul 1 Clasa a IX-a | Python

Ora 7: Structuri de decizie în Python

Ce vei învăța astăzi: Instrucțiunea if, elif, else

Rezultat practic: Construiești decizii cu if, elif și else și operatori logici pentru probleme cu ramuri (Competența 3.4).

Competența 3.4 Săptămâna 4

Înainte de a începe

De ce contează? Decizia este modul în care programul se adaptează la date: verificarea unui număr par, a unui maxim sau a unei note trecătoare se face cu if, elif și else.

Ce știi deja?

În lecția anterioară („Elemente de bază în Python”) ai folosit operatorii de comparație. Cum verifici în Python dacă un număr este mai mare sau egal cu 5?

Ideea-cheie: Instrucțiunea if alege ce cod să execute în funcție de o condiție, iar condiția se scrie cu == pentru comparație și se termină cu două puncte.
SINTEZĂ TEORETICĂ ȘI EXEMPLE GHIDATE

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
if / else pentru două cazuri
if / elif / else pentru mai multe cazuri
Indentarea și blocurile de cod
Operatorii logici and, or, not

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.

Exemplu: if simplu
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

Program Python complet
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ă.

Exemplu: nota de la test
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.

Blocul if cu două instrucțiuni
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

Algoritmul MaximDouaNumere: citește a, b dacă a > b atunci scrie a altfel scrie b
Program Python complet (rulabil)
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:
0 par print elif

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ă...

Ai grijă la: Să scrii 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.

APLICARE ȘI REZOLVARE DE PROBLEME

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:
  1. Citim n cu int(input())
  2. Verificăm cu if dacă n % 2 == 0 (restul împărțirii la 2)
  3. Afișăm par sau impar cu print()
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:
  1. Citim a și b cu int(input())
  2. Dacă a > b, maximul este a; altfel, maximul este b
  3. 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ȚII PRACTICE

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 MaximDouaNumere: citește a, b dacă a > b atunci scrie a altfel scrie b

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 = 5 este greșit.
  • Uitarea celor două puncte : după if, elif, else.
  • Indentarea greșită a instrucțiunilor din interiorul deciziei.
  • Confuzia dintre and și or î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")