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

Ora 8: Recapitulare generală și test final

Ce vei învăța astăzi: Recapitularea materiei clasei a IX-a și testul final

Rezultat practic: Recapitulezi întreaga materie a clasei a IX-a și rezolvi integral testul final (Competența 5.5).

Competența 5.5 Săptămâna 27

Înainte de a începe

De ce contează? Recapitularea leagă cinci module într-o singură imagine: algoritmi, Python de bază, liste, funcții și fișiere, iar la test toate apar simultan într-o problemă integrată.

Ce știi deja?

Din lecția cu fișiere text, ce se întâmplă cu un fișier existent când îl deschizi pentru scriere cu modulul "w"?

Ideea-cheie: O problemă integrată se rezolvă mereu în aceeași ordine: citirea datelor, prelucrarea cu funcții și liste, apoi afișarea sau salvarea rezultatului.
SINTEZĂ TEORETICĂ ȘI EXEMPLE GHIDATE

Ce vei învăța astăzi?

Aceasta este lecția de recapitulare generală și de pregătire pentru testul final. Vom relua toate temele parcurse în clasa a IX-a și le vom aplica într-o problemă integrată (problemă care combină mai multe teme: funcții, liste și fișiere).

Recapitularea materiei clasei a IX-a, modul cu modul
Tabel rezumativ cu temele parcurse
Algoritmi, Python de bază, liste, prelucrări numerice
Sortări, subprograme, fișiere, Tkinter și OOP
Probleme integrate cu funcții și liste

Recapitularea materiei pe module

ModulTeme principale
Modulul 1Gândirea computațională, algoritmi, pseudocod, organigrame
Modulul 2Elemente de bază Python: variabile, operatori, input, print
Modulul 3Structuri de decizie (if/elif/else) și structuri repetitive (for, while)
Modulul 4Liste: creare, parcurgere, sortare, min/max, sum
Modulul 5Subprograme, funcții predefinite, fișiere text, Tkinter, OOP

Reține: pentru testul final trebuie să știi să scrii programe complete și corecte, de la citirea datelor până la afișarea rezultatului.

Problemă integrată: numere prime

O problemă integrată combină funcții cu liste. De exemplu, definim o funcție care verifică dacă un număr este prim (număr natural mai mare decât 1, cu exact doi divizori: 1 și el însuși) și o aplicăm pe elementele unei liste.

Algoritm Verificarea numerelor prime dintr-o lista Functie prim(n) daca n < 2 atunci returneaza fals sfarsit daca pentru i <- 2, n - 1 executa daca n % i = 0 atunci returneaza fals sfarsit daca sfarsit pentru returneaza adevarat Sfarsit functie Start program v <- [11, 12, 13, 14, 15] pentru fiecare x din v executa scrie x, prim(x) sfarsit pentru Stop program
Exemplu complet - funcție + aplicație pe listă
def prim(n):
    if n < 2:
        return False
    for i in range(2, n):
        if n % i == 0:
            return False
    return True


v = [11, 12, 13, 14, 15]

for x in v:
    print(x, prim(x))

Observă: funcția prim() întoarce True sau False, iar programul principal o folosește pentru fiecare element din listă. Asta înseamnă programare modulară (scrierea programului ca un ansamblu de funcții cu roluri clare): funcția se poate refolosi oriunde.

Exercițiu de completare

Completează enunțul cu cuvintele potrivite:

O funcție se definește cu cuvântul cheie ______. Pentru a întoarce o valoare folosim ______. O colecție ordonată de elemente se numește ______, iar adunarea elementelor ei se face cu ______().

Bancă de cuvinte:
def return list sum

Test de înțelegere

Test rapid de recapitulare:

1. Ce afișează programul print(len([1, 2, 3, 4]))?

2. Care este rezultatul expresiei round(4.5)?

3. Cu ce funcție deschidem un fișier pentru citire?

4. O variabilă definită în interiorul unei funcții este:

Test suplimentar

Test suplimentar - recapitulare:

1. Ce afișează programul print(len("abc"))?

2. Care este rezultatul expresiei round(2.7)?

3. Pentru a sorta crescător lista v folosim:

Ai grijă la: Lipsa int(input()) lasă datele ca șiruri de caractere, iar orice operație matematică va da TypeError sau rezultate greșite.

Aprofundare

Optimizarea verificării numărului prim: nu este nevoie să parcurgem toți divizorii până la n. Dacă n are un divizor mai mare decât radicalul lui n, atunci are și unul mai mic. Este suficient să testăm până la int(n ** 0.5) sau cu i * i <= n.

  • Ieșirea timpurie: dacă găsim primul divizor, return False oprește imediat funcția; pentru numere compuse mari economisim mult timp.
  • Recapitulare critică: la test, cele mai frecvente erori sunt lipsa int(input()), confuzia return cu print și parcurgerea greșită a listelor cu range.
  • Strategia de rezolvare a unei probleme: (1) citește enunțul și subliniază datele de intrare și de ieșire; (2) scrie pseudocodul; (3) implementează în Python; (4) testează pe exemplul dat.
  • Tipuri de probleme de recapitulat: prelucrări de cifre (%, //), numere prime și divizori, parcurgeri de liste, fișiere text.
  • Caz particular: numărul 2 este singurul număr prim par; 0 și 1 nu sunt prime.
APLICARE ȘI REZOLVARE DE PROBLEME

PbInfo - Funcție - număr prim

Enunț:

Cerință: Se definește funcția prim(n) care întoarce True dacă n este număr prim și False în caz contrar. Să se afișeze primele n numere prime, folosind această funcție.

Date de intrare:

Programul citește de la tastatură un număr natural n.

Date de ieșire:

Programul va afișa primele n numere prime, separate prin spațiu.

Restricții și precizări:

Valorile citite sunt numere întregi, iar n este un număr natural, cu 1 <= n <= 1000.

Exemplu:

Intrare:

5

Ieșire:

2 3 5 7 11
Cum gândim soluția:
  1. Definim funcția prim(n) care testează dacă n e prim
  2. Citim n
  3. Căutăm numere prime începând de la 2, folosind funcția
  4. Ne oprim când am găsit n numere prime
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


n = int(input())

nr = 0
x = 2
while nr < n:
    if prim(x):
        print(x, end=" ")
        nr = nr + 1
    x = x + 1

Ce învățăm: o funcție bine scrisă se reutilizează într-o buclă pentru a rezolva o problemă mai mare.

PbInfo - Câte numere prime are o listă

Enunț:

Cerință: Se citește o listă de numere. Folosind funcția prim(n), să se afișeze câte numere din listă sunt prime.

Date de intrare:

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

Date de ieșire:

Programul va afișa numărul de elemente prime din listă.

Restricții și precizări:

Valorile citite sunt numere întregi, iar n este un număr natural, cu 1 <= n <= 1000.

Exemplu:

Intrare:

2 4 6 7 9 11

Ieșire:

3
Cum gândim soluția:
  1. Definim funcția prim(n)
  2. Citim lista de numere
  3. Parcurgem lista și numărăm valorile pentru care prim(x) este True
  4. Afișăm contorul
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 = [int(x) for x in input().split()]

contor = 0
for x in v:
    if prim(x):
        contor = contor + 1

print(contor)

Ce învățăm: funcția prim este apelată o dată pentru fiecare element, iar rezultatele se adună într-un contor.

EXERCIȚII PRACTICE

Exercițiul Practic: Testul final

Sarcini de lucru

Rezolvă cele două părți ale testului final, folosind funcții și liste

Sarcina 1 (TEST FINAL - partea 1): Suma cifrelor

Cerință: Scrie o funcție suma_cifre(n) care calculează suma cifrelor unui număr. Apoi scrie un program care citește o listă de numere și afișează câte dintre ele au suma cifrelor pară.

Soluție:
def suma_cifre(n):
    s = 0
    while n > 0:
        s = s + n % 10
        n = n // 10
    return s


v = [int(x) for x in input().split()]

contor = 0
for x in v:
    if suma_cifre(x) % 2 == 0:
        contor = contor + 1

print(contor)

Verifică: funcția descompune numărul cu while și n % 10, iar programul verifică paritatea sumei pentru fiecare element.

Sarcina 2 (TEST FINAL - partea 2): Program modular complet

Cerință: Scrie un program complet, modular, cu funcții: citeste() care citește n și n numere, sorteaza(v) care sortează lista prin metoda bulelor și media_pare(v) care întoarce media elementelor pare. Afișează lista sortată și media elementelor pare.

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


def sorteaza(v):
    n = len(v)
    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]


def media_pare(v):
    s = 0
    nr = 0
    for x in v:
        if x % 2 == 0:
            s = s + x
            nr = nr + 1
    return s / nr


v = citeste()
sorteaza(v)
print(v)
print(media_pare(v))

Verifică: programul este modular: fiecare funcție are un rol clar, iar programul principal le apelează în ordine.

Scrie pe caiet - De reținut

Titlul lecției

Recapitulare generală și test final.

Definiția lecției

Lecția recapitulativă leagă toate modulele clasei a IX-a într-o singură imagine: algoritmi și pseudocod, elemente de bază Python, structuri de decizie și repetitive, liste și subprograme. O problemă integrată combină aceste teme: citim datele, le prelucrăm cu funcții și liste și afișăm sau salvăm rezultatul. Numărul prim este un număr natural mai mare decât 1 care are exact doi divizori: 1 și el însuși. Programarea modulară înseamnă scrierea programului ca un ansamblu de funcții cu roluri clare, fiecare testată separat. De exemplu, funcția prim(n) verifică un număr, iar programul principal o aplică pe fiecare element dintr-o listă.

Definiții esențiale

Algoritmul cheie - pseudocod

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 Start program v <- [11, 12, 13, 14, 15] pentru fiecare x din v executa scrie x, prim(x) sfarsit pentru Stop program

Algoritmul cheie - cod Python

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


v = [11, 12, 13, 14, 15]

for x in v:
    print(x, prim(x))

Greșeli comune de evitat

Exemplu practic

Un catalog online afișează elevii care au media peste 8: funcția verifica_media() decide, iar bucla for parcurge lista de medii:

def verifica_media(media):
    return media > 8


medii = [7.5, 9.2, 8.8, 6.0]
for m in medii:
    if verifica_media(m):
        print("Peste 8:", m)

Sfaturi practice și trucuri