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

Ora 10: Evaluare finală - test sumativ

Ce vei învăța astăzi: Recapitularea integrală a materiei clasei a IX-a și susținerea testului final sumativ

Rezultat practic: Rezolvi independent probleme integrate care combină funcții, liste, prelucrări numerice și fișiere (Competențele 6.1-6.5).

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

Înainte de a începe

De ce contează? Testul verifică exact ce ai exersat: probleme integrate cu funcții, liste, cifre și fișiere; știi deja fiecare piesă, testul doar le cere împreună.

Ce știi deja?

Recapitularea a arătat ordinea rezolvării unei probleme integrate. În ce ordine ai verifica un program scris la test, înainte de a-l preda?

Ideea-cheie: La o problemă de test, punctajul se ia pe componente: citire corectă, funcție corectă, parcurgere corectă și afișare corectă.
SINTEZĂ TEORETICĂ ȘI EXEMPLE GHIDATE

Ce vei învăța astăzi?

Aceasta este lecția de evaluare finală: recapitulăm integral materia clasei a IX-a și susținem testul sumativ (testul final care verifică tot ce s-a învățat în clasa a IX-a). Rezolvi independent probleme integrate care combină funcții, liste, prelucrări numerice și fișiere.

Recapitularea materiei pe module
Structura testului și criteriile de evaluare
Probleme integrate: funcții, liste, cifre, fișiere
Sustinerea testului final sumativ

Recapitulare pe module

ModulTeme principaleExemple
Modulul 1Gândirea computațională, algoritmi, pseudocodorganigrame, secvențe de calcul
Modulul 2Elemente de bază Python: variabile, operatori, input, printcitirea și afișarea datelor
Modulul 3Structuri de decizie și structuri repetitiveif/elif/else, for, while
Modulul 4Liste: creare, parcurgere, sortaremin, max, sum, metoda bulelor
Modulul 5Subprograme, fișiere text, aplicații modularedef, return, open, write, read, close

Reține: testul sumativ verifică integrarea tuturor modulelor: trebuie să scrii programe complete, de la citirea datelor până la afișarea sau salvarea rezultatului.

Structura testului și criterii de evaluare

Cerințe: testul conține probleme care combină funcții proprii (def, return), liste și parcurgeri, prelucrări numerice (divizori, cifre, numere prime) și fișiere text (open, write, read, close).

Barem (grija de notare, adică punctele acordate pe fiecare componentă a programului): funcția corectă și completă valorează cea mai mare parte a punctajului; urmează citirea datelor, parcurgerea listei și afișarea rezultatului. Un program modular, cu funcții clare, primește punctaj suplimentar.

Sfaturi: citește enunțul integral, notează datele de intrare și ieșire, scrie întâi funcțiile și apoi programul principal, testează pe exemplul dat și verifică fișierele deschise să fie închise cu close().

Algoritm Verificarea numerelor palindrom Functie palindrom(n) oglindit <- 0 copie <- n cat timp n > 0 executa oglindit <- oglindit * 10 + n % 10 n <- n div 10 sfarsit cat timp returneaza copie = oglindit Sfarsit functie Start program v <- [121, 123, 454, 55, 12] pentru fiecare x din v executa daca palindrom(x) atunci scrie x, "este palindrom" altfel scrie x, "nu este palindrom" sfarsit daca sfarsit pentru Stop program
Exemplu complet - problemă recapitulativă: numere palindrom
def palindrom(n):
    oglindit = 0
    copie = n
    while n > 0:
        oglindit = oglindit * 10 + n % 10
        n = n // 10
    return copie == oglindit


v = [121, 123, 454, 55, 12]

for x in v:
    if palindrom(x):
        print(x, "este palindrom")
    else:
        print(x, "nu este palindrom")

Observă: funcția palindrom() (verifică dacă un număr se citește la fel în ambele sensuri) descompune numărul în cifre cu while și % //, apoi compară oglinditul (numărul cu cifrele în ordine inversă) cu copia. Aplicația pe listă numără și afișează rezultatul pentru fiecare element.

Exercițiu de completare

Completează enunțul cu cuvintele potrivite:

Testul sumativ evaluează competențele dobândite. O funcție care trimite o valoare înapoi folosește instrucțiunea ______. O colecție ordonată de elemente se numește ______. Pentru a scrie rezultatul într-un fișier text folosim metoda ______(), iar un număr prim se verifică cu o ______ proprie.

Bancă de cuvinte:
return list write functie

Exercițiu de completare

Completează enunțul cu cuvintele potrivite:

În programarea modulară, fiecare ______ are un rol clar. Datele de intrare se citesc cu ______(). Metoda bulelor compară elementele ______ și le interschimbă. Un număr se descompune în cifre cu o buclă ______ și operatorul %.

Bancă de cuvinte:
modul input vecine while

Test de înțelegere

Test rapid de recapitulare finală:

1. Care este rezultatul expresiei print(round(2.7))?

2. Cu ce instrucțiune deschidem un fișier pentru citire?

3. Ce afișează programul def f(x): return x * 2; print(f(4))?

4. Un număr natural care are exact 2 divizori se numește:

Ai grijă la: În graba de la test se uită cel mai des int(input()), contoarele neinițializate și fișierele lăsate neînchise cu close().

Aprofundare

Tabelul de urmărire (tracing): pentru a verifica o funcție cu descompunere în cifre, notăm într-un tabel valorile pas cu pas: pentru n = 123, oglinditul devine 3, apoi 32, apoi 321. Tabelul dezvăluie imediat orice eroare de logică.

  • Cazuri limită obligatorii: n = 0 (bucla nu se execută - oglinditul rămâne 0, iar 0 este palindrom), n = 1 (palindrom), numere cu zerouri în interior: 1001 este palindrom, 1230 nu este.
  • Integrarea conceptelor: o problemă de test poate combina funcții (palindrom, prim), liste (parcurgere, filtrare) și fișiere (salvarea rezultatelor). Toate se rezolvă modular.
  • Baremul testului: punctajul se acordă pe componente: funcția corectă, citirea datelor, parcurgerea, afișarea sau salvarea; un program complet modular primește punctajul maxim.
  • Depanarea eficientă: rulează programul pe exemple din enunț, apoi pe valori extreme; dacă rezultatul diferă, verifică întâi conversiile (int) și operațiile cu rest (%).
  • Greșelile frecvente recapitulate: uitarea lui int la input, print în loc de return, modul greșit la open, uitarea lui close, inițializarea sumei cu 1 sau a produsului cu 0.
APLICARE ȘI REZOLVARE DE PROBLEME

PbInfo - Câte numere prime are lista

Enunț:

Cerință: Se citește o listă de numere. Folosind funcția prim(n), definită cu def și return, 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) care întoarce True dacă n este prim
  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 al listei, iar rezultatele se adună într-un contor.

PbInfo - Suma cifrelor pare ale numerelor din listă

Enunț:

Cerință: Se citește o listă de numere. Folosind funcția suma_cifrelor(n), aplicată pe fiecare element, să se afișeze suma cifrelor pare ale tuturor numerelor din listă.

Date de intrare:

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

Date de ieșire:

Programul va afișa suma cifrelor pare ale tuturor numerelor 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:

123 456 78

Ieșire:

20
Cum gândim soluția:
  1. Definim funcția suma_cifrelor(n) care descompune numărul cu while și adună doar cifrele pare
  2. Citim lista de numere
  3. Adunăm suma_cifrelor(x) pentru fiecare element
  4. Afișăm totalul
Scrie soluția în Python:
Soluție corectă:
Soluția completă
def suma_cifrelor(n):
    s = 0
    while n > 0:
        cifra = n % 10
        if cifra % 2 == 0:
            s = s + cifra
        n = n // 10
    return s


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

total = 0
for x in v:
    total = total + suma_cifrelor(x)

print(total)

Ce învățăm: o funcție de prelucrare a cifrelor se aplică pe fiecare element al listei, iar rezultatele se însumează în programul principal.

EXERCIȚII PRACTICE

Exercițiul Practic: Testul sumativ

Sarcini de lucru

Rezolvă cele două părți ale testului sumativ, folosind funcții, liste, prelucrări numerice și fișiere

Sarcina 1 (TEST - partea 1): Numărul de divizori

Cerință: Scrie o funcție numar_divizori(n) care returnează numărul de divizori ai lui n. Apoi scrie un program care citește o listă de numere și afișează câte dintre ele au exact 2 divizori (deci sunt 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 = [int(x) for x in input().split()]

cate = 0
for x in v:
    if numar_divizori(x) == 2:
        cate = cate + 1

print(cate)

Verifică: funcția numără divizorii cu o buclă de la 1 la n, iar programul contorizează elementele cu exact 2 divizori.

Sarcina 2 (TEST - partea 2): Sortare cu metoda bulelor și fișier

Cerință: Scrie un program complet care citește n și n numere, le sortează cu metoda bulelor și scrie rezultatul într-un fișier "rezultat.txt".

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("rezultat.txt", "w")
for x in v:
    f.write(str(x) + " ")
f.close()

print("Lista sortata a fost scrisa in rezultat.txt")

Verifică: metoda bulelor compară elementele vecine și le interschimbă, iar rezultatul se salvează în fișier cu open, write și close.

Scrie pe caiet - De reținut

Titlul lecției

Evaluare finală - test sumativ.

Definiția lecției

Testul sumativ încheie clasa a IX-a și verifică toate competențele dobândite: funcții proprii, liste, prelucrări numerice și fișiere text. Punctajul se ia pe componente: funcția corectă, citirea datelor, parcurgerea listei și afișarea sau salvarea rezultatului. Un număr palindrom se citește la fel de la stânga la dreapta și invers, de exemplu 121 sau 1001. Pentru verificare, construim oglinditul cifră cu cifră, cu bucla while, operatorul % pentru ultima cifră și // pentru eliminarea ei. La final comparăm oglinditul cu copia valorii inițiale, pentru că bucla distruge numărul original.

Definiții esențiale

Algoritmul cheie - pseudocod

Functie palindrom(n) oglindit <- 0 copie <- n cat timp n > 0 executa oglindit <- oglindit * 10 + n % 10 n <- n div 10 sfarsit cat timp returneaza copie = oglindit Sfarsit functie Start program v <- [121, 123, 454, 55, 12] pentru fiecare x din v executa daca palindrom(x) atunci scrie x, "este palindrom" altfel scrie x, "nu este palindrom" sfarsit daca sfarsit pentru Stop program

Algoritmul cheie - cod Python

def palindrom(n):
    oglindit = 0
    copie = n
    while n > 0:
        oglindit = oglindit * 10 + n % 10
        n = n // 10
    return copie == oglindit


v = [121, 123, 454, 55, 12]

for x in v:
    if palindrom(x):
        print(x, "este palindrom")
    else:
        print(x, "nu este palindrom")

Greșeli comune de evitat

Exemplu practic

La test apare o problemă de tipul: câte numere palindrom conține lista? Funcția palindrom() se scrie o dată și se aplică pe fiecare element:

def palindrom(n):
    oglindit = 0
    copie = n
    while n > 0:
        oglindit = oglindit * 10 + n % 10
        n = n // 10
    return copie == oglindit


v = [121, 123, 454, 55, 12]
print(sum(1 for x in v if palindrom(x)))   # afiseaza 3

Sfaturi practice și trucuri