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

Ora 13: Recapitulare generală a clasei a IX-a

Ce vei învăța astăzi: Recapitularea integrală a materiei clasei a IX-a, modul cu modul

Rezultat practic: Rezolvi o problemă integrată care combină funcții proprii, liste și fișiere text, unind toate competențele dobândite (Competența 6.5).

Competența 6.5 Săptămâna 30

Înainte de a începe

De ce contează? Aceasta este ultima șansă de a lega toate modulele: orice lacună rămasă acum apare la testul final sub forma unei probleme integrate nerezolvate.

Ce știi deja?

Din tabelul rezumativ, care modul crezi că ți-a fost cel mai greu? Recitește-ți notele de la lecția respectivă înainte de evaluarea finală.

Ideea-cheie: Toată clasa a IX-a se reduce la un model: citire, prelucrare cu funcții și liste, apoi afișare sau salvare; restul sunt variante ale acestui model.
SINTEZĂ TEORETICĂ ȘI EXEMPLE GHIDATE

Ce vei învăța astăzi?

Aceasta este lecția de recapitulare generală: parcurgem toată materia clasei a IX-a, modul cu modul, printr-un tabel rezumativ, și rezolvăm o problemă integrată (problemă care combină mai multe module) care unește funcții proprii, liste și fișiere text.

Recapitularea celor cinci module ale clasei a IX-a
Tabelul rezumativ cu temele și exemplele cheie
Recapitularea subprogramelor și a funcțiilor predefinite
Problema integrată: funcții + liste + fișiere text

Tabelul rezumativ al clasei a IX-a

ModulTeme principaleElemente cheie
Modulul 1Gândirea computaționalăalgoritmi, pseudocod, organigrame, date de intrare/ieșire
Modulul 2Elemente de bază Pythonvariabile, tipuri de date, operatori, input(), print()
Modulul 3Structuri de decizie și repetitiveif/elif/else, for, while, contoare (variabile care numără) și acumulatori (variabile care adună valori)
Modulul 4Listecreare, parcurgere, sortare, min/max/sum, metode
Modulul 5Subprograme și aplicații modularedef, return, parametri, fișiere text, Tkinter, OOP

Reține: evaluarea finală verifică integrarea acestor module: un program complet pleacă de la citirea datelor, prelucrează cu structuri de decizie, bucle și funcții, și termină cu afișarea sau salvarea rezultatelor.

Recapitularea subprogramelor și a funcțiilor predefinite

Un subprogram (funcție, bloc de cod cu un nume, rulat de mai multe ori) se definește cu def, primește date prin parametri, întoarce rezultatul cu return și folosește variabile locale (în interior) sau globale (în afara funcțiilor).

FuncțieRolExempluRezultat
abs(x)Valoarea absolutăabs(-7)7
int(x)Taie partea zecimală / converteșteint(3.9)3
round(x)Rotunjește la cel mai apropiat întreground(3.6)4
sqrt(x)Rădăcina pătrată (din math)math.sqrt(16)4.0
len(v)Numărul de elementelen([2, 4, 6])3
min(v) / max(v)Extremele unei colecțiimax([3, 9, 5])9
sum(v)Suma elementelorsum([1, 2, 3])6

Analogia din viața reală:

Un program modular este ca o echipă de muncitori: fiecare membru (funcție) are o sarcină clară (citire, verificare, calcul, raport) și predă rezultatul mai departe. Echipa întreagă produce aplicația, dar fiecare piesa poate fi verificată separat.

Problema integrată - funcții, liste și fișiere

O problemă integrată combină toate modulele: citim o listă (Modulul 4), verificăm numerele prime cu o funcție proprie (Modulul 5), numărăm și calculăm statistici, apoi salvăm raportul în fișier text (Modulul 5).

Algoritm Prelucrarea unei liste cu salvare in fisier Functie citeste_lista() citeste n citeste v (n numere) returneaza v Sfarsit functie Functie prim(n) daca n < 2 atunci returneaza fals pentru i <- 2, n - 1 executa daca n % i = 0 atunci returneaza fals sfarsit pentru returneaza adevarat Sfarsit functie Functie prelucreaza(v) contor_prime <- 0 pentru fiecare x din v executa daca prim(x) atunci contor_prime <- contor_prime + 1 sfarsit pentru deschide "rezultat.txt" pentru scriere scrie numarul de elemente, suma, media si numarul de prime inchide fisierul Sfarsit functie Start program v <- citeste_lista() prelucreaza(v) Stop program
Exemplu complet - problemă integrată de recapitulare
def citeste_lista():
    n = int(input())
    v = list(map(int, input().split()))
    return v


def prim(n):
    if n < 2:
        return False
    for i in range(2, n):
        if n % i == 0:
            return False
    return True


def prelucreaza(v):
    contor_prime = 0
    for x in v:
        if prim(x):
            contor_prime = contor_prime + 1

    f = open("rezultat.txt", "w")
    f.write("Numar de elemente: " + str(len(v)) + "\n")
    f.write("Suma: " + str(sum(v)) + "\n")
    f.write("Media: " + str(round(sum(v) / len(v), 2)) + "\n")
    f.write("Numere prime: " + str(contor_prime) + "\n")
    f.close()


v = citeste_lista()
prelucreaza(v)
print("Raportul a fost salvat in rezultat.txt")

Observă: programul principal are doar două linii. Toată logica este în funcții refolosibile, iar rezultatul final rămâne salvat în fișier pentru raportare. Aceasta este arhitectura cerută la evaluarea finală.

Ai grijă la: Confuzia dintre return și print rămâne cea mai costisitoare greșeală: return trimite valoarea în program, print doar o afișează.

Aprofundare

Optimizarea verificării numerelor prime: pentru valori mari, parcurgerea tuturor divizorilor până la n este lentă. Este suficient să verificăm până la int(n ** 0.5) (radicalul lui n): dacă n are un divizor mai mare decât radicalul, are și unul mai mic.

  • Tehnica tabelului de urmărire: la recapitulare, rulează manual programele pe valori mici și notează valorile pas cu pas într-un tabel; vei descoperi singur orice eroare de logică.
  • Cazuri limită de verificat: n = 0, n = 1 (nu sunt prime), listă goală (len = 0, media nu există), numere egale, valori negative.
  • Fișiere cu diacritice: dacă raportul conține caractere românești, deschidem cu encoding="utf-8" pentru a le salva corect.
  • Tipuri de probleme frecvente: prelucrări de cifre (oglindit, palindrom, suma cifrelor), divizori și numere prime, extreme și medii pe liste, salvarea rezultatelor în fișiere.
  • Caz particular: media se calculează doar dacă lista nu este goală; altfel raportul ar conține împărțire la zero.

Exercițiu de completare

Completează enunțul cu cuvintele potrivite:

O funcție se definește cu cuvântul cheie ______. Datele de intrare ale funcției se numesc ______, iar rezultatul se trimite înapoi cu ______. O variabilă definită în interiorul funcției este variabilă ______.

Bancă de cuvinte:
def parametri return locală

Exercițiu de completare

Completează enunțul cu cuvintele potrivite:

Un fișier se deschide cu funcția ______(); pentru citire folosim modul ______. Într-o aplicație grafică, fereastra principală se creează cu ______(), iar o casetă de text este un obiect ______. Un obiect este o instanță a unei ______.

Bancă de cuvinte:
open r Tk Entry clase

Test de înțelegere

Test rapid de recapitulare finală:

1. Ce afișează print(round(4.5))?

2. Cu ce mod deschidem un fișier pentru a adăuga la sfârșit?

3. Ce este un obiect în programarea orientată pe obiecte?

4. Ce întoarce len([10, 20, 30])?

APLICARE ȘI REZOLVARE DE PROBLEME

PbInfo - Recapitulare: media elementelor pare

Enunț:

Cerință: Se citește o listă de numere. Să se scrie funcția media_pare(v) care întoarce media aritmetică a elementelor pare din listă și să se afișeze rezultatul cu două zecimale.

Date de intrare:

Programul citește de la tastatură elementele listei, pe o singură linie.

Date de ieșire:

Programul va afișa media aritmetică a elementelor pare, rotunjită la două zecimale.

Restricții și precizări:

Lista conține cel puțin un element par, iar valorile sunt numere naturale cu cel mult 4 cifre.

Exemplu:

Intrare:

4 7 8 10 3

Ieșire:

7.33
Cum gândim soluția:
  1. Definim funcția media_pare(v) care adună doar elementele pare
  2. Numărăm câte elemente pare există
  3. Întoarcem raportul sumă / număr de elemente pare
  4. Afișăm rezultatul cu round(media, 2)
Scrie soluția în Python:
Soluție corectă:
Soluția completă
def media_pare(v):
    suma = 0
    contor = 0
    for x in v:
        if x % 2 == 0:
            suma = suma + x
            contor = contor + 1
    return suma / contor


v = list(map(int, input().split()))
print(round(media_pare(v), 2))

Ce învățăm: o funcție cu filtru (doar elementele pare) și contor întoarce media cerută, iar programul principal doar citește și afișează.

PbInfo - Recapitulare: numerele prime în fișier

Enunț:

Cerință: Se citește o listă de numere. Folosind o funcție prim(n), să se scrie în fișierul text "prime.txt" numerele prime din listă, câte unul pe linie, și să se afișeze câte au fost scrise.

Date de intrare:

Programul citește de la tastatură elementele listei, pe o singură linie.

Date de ieșire:

Programul va crea fișierul "prime.txt" cu numerele prime și va afișa pe ecran numărul lor.

Restricții și precizări:

Valorile citite sunt numere naturale cu cel mult 4 cifre, iar lista are cel puțin un element.

Exemplu:

Intrare:

2 4 7 9 11

Ieșire:

3
Cum gândim soluția:
  1. Definim funcția prim(n) cu return True/False
  2. Parcurgem lista și pentru fiecare valoare verificăm primalitatea
  3. Scriem valorile prime în fișier cu write
  4. Afișăm contorul de valori scrise
Scrie soluția în Python:
Soluție corectă:
Soluția completă
def prim(n):
    if n < 2:
        return False
    for i in range(2, n):
        if n % i == 0:
            return False
    return True


v = list(map(int, input().split()))

f = open("prime.txt", "w")
contor = 0
for x in v:
    if prim(x):
        f.write(str(x) + "\n")
        contor = contor + 1
f.close()

print(contor)

Ce învățăm: combinația funcție proprie + listă + fișier este exact modelul cerut la evaluarea finală.

EXERCIȚII PRACTICE

Exercițiul Practic: Recapitulare integrată

Sarcini de lucru

Rezolvă cele două sarcini de recapitulare, folosind funcții, liste și fișiere text

Sarcina 1: Numerele cu exact trei divizori

Cerință: Scrie o funcție numar_divizori(n) care întoarce numărul de divizori ai lui n, apoi un program care citește o listă și afișează câte elemente au exact 3 divizori (pătratele perfecte ale numerelor prime).

Soluție:
def numar_divizori(n):
    contor = 0
    for d in range(1, n + 1):
        if n % d == 0:
            contor = contor + 1
    return contor


v = list(map(int, input().split()))

rezultat = 0
for x in v:
    if numar_divizori(x) == 3:
        rezultat = rezultat + 1

print(rezultat)

Verifică: funcția numără divizorii cu o buclă și un rest zero, iar programul contorizează valorile cu exact trei divizori.

Sarcina 2: Sortare cu metoda bulelor și salvare

Cerință: Scrie un program care citește n și n numere, le sortează crescător cu metoda bulelor și scrie lista sortată în fișierul "sortate.txt", câte un număr pe linie.

Soluție:
n = int(input())
v = list(map(int, input().split()))

for i in range(n - 1):
    for j in range(0, n - i - 1):
        if v[j] > v[j + 1]:
            v[j], v[j + 1] = v[j + 1], v[j]

f = open("sortate.txt", "w")
for x in v:
    f.write(str(x) + "\n")
f.close()

print("Lista sortata a fost salvata")

Verifică: metoda bulelor compară elementele vecine și le interschimbă cu o atribuire simultană, apoi rezultatul se salvează în fișier.

Scrie pe caiet - De reținut

Titlul lecției

Recapitulare generală a clasei a IX-a.

Definiția lecției

Recapitularea parcurge materia clasei a IX-a modul cu modul: gândirea computațională, elemente de bază Python, structuri de decizie și repetitive, liste, subprograme și aplicații modulare. Modelul comun al tuturor programelor este același: citirea datelor, prelucrarea cu funcții și liste, apoi afișarea sau salvarea rezultatului. Un subprogram se definește cu def, primește date prin parametri, întoarce rezultatul cu return și folosește variabile locale sau globale. Contoarele numără aparițiile unei condiții, iar acumulatorii adună valori pas cu pas. Problema integrată le unește pe toate: citim o listă, verificăm numerele prime cu o funcție proprie și salvăm raportul într-un fișier text.

Definiții esențiale

Algoritmul cheie - pseudocod

Functie citeste_lista() citeste n citeste v (n numere) returneaza v Sfarsit functie Functie prim(n) daca n < 2 atunci returneaza fals pentru i <- 2, n - 1 executa daca n % i = 0 atunci returneaza fals sfarsit pentru returneaza adevarat Sfarsit functie Functie prelucreaza(v) pentru fiecare x din v executa daca prim(x) atunci contor_prime <- contor_prime + 1 sfarsit pentru deschide "rezultat.txt" pentru scriere scrie numarul de elemente, suma, media si numarul de prime inchide fisierul Sfarsit functie Start program v <- citeste_lista() prelucreaza(v) Stop program

Algoritmul cheie - cod Python

def citeste_lista():
    n = int(input())
    v = list(map(int, input().split()))
    return v


def prim(n):
    if n < 2:
        return False
    for i in range(2, n):
        if n % i == 0:
            return False
    return True


def prelucreaza(v):
    contor_prime = 0
    for x in v:
        if prim(x):
            contor_prime = contor_prime + 1
    f = open("rezultat.txt", "w")
    f.write("Numar de elemente: " + str(len(v)) + "\n")
    f.write("Suma: " + str(sum(v)) + "\n")
    f.write("Media: " + str(round(sum(v) / len(v), 2)) + "\n")
    f.write("Numere prime: " + str(contor_prime) + "\n")
    f.close()


v = citeste_lista()
prelucreaza(v)

Greșeli comune de evitat

Exemplu practic

Un profesor vrea raportul final al clasei: număr de elevi, sumă, medie și câte note sunt peste 8, totul salvat într-un fișier pentru părinți:

def raport(v):
    f = open("raport.txt", "w")
    f.write("Elevi: " + str(len(v)) + "\n")
    f.write("Media: " + str(round(sum(v) / len(v), 2)) + "\n")
    f.write("Peste 8: " + str(sum(1 for x in v if x > 8)) + "\n")
    f.close()


raport([7, 9, 8, 10, 6, 5])

Sfaturi practice și trucuri