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

Ora 12: Evaluare finală a modulului

Ce vei învăța astăzi: Structura evaluării finale, exemple de probleme de examen și strategia de rezolvare sub presiunea timpului

Rezultat practic: Rezolvi o evaluare completă de modul, aplicând toate tehnicile învățate: generare, recurențe și sortare (Competența 5.2).

Competența 5.2 Săptămâna 23

Înainte de a începe

De ce contează? Aceasta este evaluarea care încheie modulul și se punctează la notă. Cunoscând structura (teorie și practică) și strategia de rezolvare, îți organizezi corect timpul și punctajul.

Ce știi deja?

Ai recapitulat întregul modul: generare, Fibonacci, cele trei metode de sortare și eficiența. Subiectul I cere teorie, Subiectul II probleme de generare și de sortare - ești pregătit pentru ambele?

Ideea-cheie: O problemă de examen se rezolvă în ordine: citești enunțul, identifici tipul (generare sau sortare), scrii algoritmul, apoi testezi pe exemplu și pe cazuri limită înainte de predare.
SINTEZĂ TEORETICĂ ȘI EXEMPLE GHIDATE

Ce vei învăța astăzi?

După această lecție vei cunoaște structura exactă a evaluării finale a modulului, vei rezolva exemple de probleme de examen și vei avea o strategie clară de lucru.

Structura evaluării: teorie și practică
Probleme model de examen, rezolvate complet
Strategia de rezolvare pas cu pas
Verificarea soluțiilor înainte de predare

Structura evaluării finale

Definiție: Evaluarea finală a modulului are două subiecte. Subiectul I verifică teoria: definiții, complexități, pseudocod - 5 întrebări, în total 30 de puncte. Subiectul II conține două probleme rezolvate în Python: una de generare a unui șir și una de sortare - în total 70 de puncte.

Se punctează: corectitudinea algoritmului, respectarea formatului de ieșire (modul exact de afișare cerut de enunț: pe o linie, separate prin spații), gestionarea cazurilor limită (situațiile extreme ale datelor: n = 1, valori egale, listă deja sortată) și claritatea codului.

Subiect Conținut Punctaj
Subiectul I 5 întrebări de teorie: definiții, metode de sortare, complexități, pseudocod 30 puncte
Subiectul II, problema 1 Generare de șiruri: pătrate perfecte, pare, șir recurent, Fibonacci 35 puncte
Subiectul II, problema 2 Sortare: selecția minimului, bulele sau lista de frecvențe 35 puncte
Total Teorie + practică 100 puncte

Reține: nota se acordă după baremul (sistemul de punctaj oficial al testului) afișat în test; pentru fiecare problemă, jumătate din punctaj se obține pentru algoritm corect, iar jumătate pentru implementare și formatul de afișare.

Exemplu de problemă de examen: generare

Problemele de generare cer să produci termenii unui șir după o regulă. Exemplu de enunț: „Se citește n. Să se afișeze primele n numere pare, în ordine crescătoare, separate prin spații."

Rezolvarea urmează mereu același tipar: citire, buclă cu regula, afișare în formatul cerut.

Rezolvare ghidată: primele n numere pare

citește n pentru i = 1, n execută scrie 2 * i
Python - problema model de generare
n = int(input())

for i in range(1, n + 1):
    print(2 * i, end=" ")

Observă: termenul general al numerelor pare este 2 * i, iar end=" " ține valorile pe aceeași linie, exact cum cere enunțul.

Exemplu de problemă de examen: sortare

Problemele de sortare cer ordonarea unei liste. Exemplu de enunț: „Se citesc n note (valori între 1 și 10). Să se afișeze notele în ordine crescătoare."

Deoarece valorile sunt într-un interval mic, cea mai eficientă metodă este lista de frecvențe.

Rezolvare ghidată: note sortate cu frecvențe

Python - problema model de sortare
n = int(input())
note = list(map(int, input().split()))
fr = [0] * 11

for x in note:
    fr[x] = fr[x] + 1

for i in range(1, 11):
    for _ in range(fr[i]):
        print(i, end=" ")

Observă: lista de frecvențe este alegerea corectă pentru note de la 1 la 10: rapidă, simplă și fără interschimbări.

Exercițiu de completare

Completează despre evaluarea finală:

Subiectul I conține ______ întrebări de teorie, în valoare de 30 de puncte. Subiectul II conține ______ probleme de Python. Prima problemă cere ______ de șiruri, iar a doua ______. Totalul evaluării este de 100 de puncte.

Bancă de cuvinte:
5 2 generare sortare

Exercițiu de completare

Completează strategia de examen:

Înainte de a scrie codul, ______ enunțul integral de două ori. Verifică ______ și formatul de ieșire. Testează programul pe exemplul dat, apoi pe un caz ______. La final, citește codul încă o dată înainte de predare.

Bancă de cuvinte:
citește restricțiile limită

Test de înțelegere

Test rapid - pregătirea pentru evaluare:

1. Subiectul I al evaluării conține:

2. Prima problemă a Subiectului II cere:

3. Înainte de a scrie codul la o problemă de examen:

Ai grijă la: nu sări peste cazurile limită: n = 1, lista deja sortată, valori egale, formatul exact de ieșire (spații și linii). Un spațiu în plus este acceptat, dar un răspuns greșit la un caz limită costă puncte.

Aprofundare

Verificarea programelor este o tehnică ce se învață ca orice algoritm. Un program „corect pe exemplu" poate eșua la date diferite; de aceea, testezi întotdeauna cazurile limită înainte de a considera problema rezolvată.

  • Valoarea minimă permisă: dacă restricțiile spun 1 <= n <= 1000, testează n = 1; buclele și listele trebuie să funcționeze fără erori la limita inferioară.
  • Lista cu un singur element: sortarea cu n = 1 nu trebuie să iasă din limite; buclele cu range(n-1) devin goale, ceea ce este corect.
  • Lista deja sortată: la bule, variabila schimbat permite oprirea devreme; la selecție, numărul de comparații rămâne același - ambele comportamente sunt corecte.
  • Valori egale: elementele duplicate trebuie păstrate (selecția și frecvențele le grupează corect; bulele nu le „pierde").
  • Formatul de ieșire: un spațiu în plus la final este acceptat în majoritatea verificărilor automate, dar o linie lipsă sau un \n în plus poate costa puncte - citește cerința.
  • Rezolvarea pe hârtie întâi: scrie pașii și rezultatul așteptat pentru exemplul dat; programul trebuie să producă exact acel rezultat.
APLICARE ȘI REZOLVARE DE PROBLEME

Model examen - Punctajele echipei

Enunț:

Cerință: Se citesc n punctaje obținute de echipa unei școli la concursuri (valori între 0 și 100). Să se afișeze punctajele în ordine descrescătoare, separate prin spații, folosind lista de frecvențe.

Date de intrare:

Programul citește de la tastatură numărul natural n, apoi n numere naturale, separate prin spații.

Date de ieșire:

Programul va afișa pe o singură linie punctajele în ordine descrescătoare, separate prin spații.

Restricții și precizări:

1 <= n <= 100, iar punctajele sunt numere naturale între 0 și 100.

Exemplu:

Intrare:

6
45 90 45 72 90 60

Ieșire:

90 90 72 60 45 45
Cum gândim soluția:
  1. Citim n și punctajele
  2. Construim lista de frecvențe cu 101 elemente
  3. Parcurgem pozițiile de la 100 în jos și afișăm fiecare valoare de câte ori apare
Scrie soluția în Python:
Soluție corectă:
Soluție Python
n = int(input())
punctaje = list(map(int, input().split()))
fr = [0] * 101

for x in punctaje:
    fr[x] = fr[x] + 1

for i in range(100, -1, -1):
    for _ in range(fr[i]):
        print(i, end=" ")

Ce învățăm: frecvențele parcurse în sens invers produc clasamentul direct; poziția 0 este inclusă pentru punctajul minim posibil.

Model examen - Șirul recurent a(n) = a(n-1) + n

Enunț:

Cerință: Se citește numărul natural n. Să se afișeze primii n termeni ai șirului definit prin a(1) = 1 și a(k) = a(k-1) + k, pentru k > 1.

Date de intrare:

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

Date de ieșire:

Programul va afișa pe o singură linie primii n termeni ai șirului, separați prin spații.

Restricții și precizări:

1 <= n <= 1000, iar termenii șirului sunt numere naturale.

Exemplu:

Intrare:

5

Ieșire:

1 3 6 10 15
Cum gândim soluția:
  1. Inițializăm termenul cu a = 1 și îl afișăm
  2. Pentru k de la 2 la n, actualizăm a = a + k și afișăm
  3. Afișăm cu end=" " pentru a rămâne pe aceeași linie
Scrie soluția în Python:
Soluție corectă:
Soluție Python
n = int(input())
a = 1
print(a, end=" ")

for k in range(2, n + 1):
    a = a + k
    print(a, end=" ")

Ce învățăm: o recurență de adunare se generează cu o singură variabilă actualizată în buclă - primul termen se afișează separat.

EXERCIȚII PRACTICE

Exercițiul Practic: Simulare de evaluare

Sarcini de lucru

Simulează condițiile de examen: rezolvă întrebările de teorie și problemele de programare fără a te uita la soluții.

Sarcina 1: Subiectul I - teorie

Cerință: Răspunde în scris la următoarele întrebări: 1) Ce este generarea sistematică a unei secvențe? 2) Care este regula șirului lui Fibonacci? 3) Ce complexitate are selecția minimului? 4) Când folosim lista de frecvențe? 5) Care este diferența dintre metoda bulelor și selecția minimului?

Răspunsuri model:
  • 1. Generarea sistematică înseamnă producerea termenilor unei secvențe unul câte unul, după o regulă clară, de obicei cu o buclă.
  • 2. F1 = 1, F2 = 1 și Fn = F(n-1) + F(n-2) pentru n > 2.
  • 3. O(n): aproximativ n(n-1)/2 comparații.
  • 4. Când valorile sunt numere întregi dintr-un interval mic (note, punctaje).
  • 5. Bulele compară vecini și face multe interschimbări; selecția caută minimul și face cel mult o interschimbare pe pas.
Sarcina 2: Subiectul II - problemă completă

Cerință: Scrie un program complet pentru următoarea problemă de examen: se citește n, apoi n note (1-10). Să se afișeze pe o linie notele sortate crescător, iar pe a doua linie media notelor cu o zecimală.

Soluție:
n = int(input())
note = list(map(int, input().split()))
fr = [0] * 11

for x in note:
    fr[x] = fr[x] + 1

for i in range(1, 11):
    for _ in range(fr[i]):
        print(i, end=" ")
print()

media = sum(note) / n
print(f"{media:.1f}")

Verifică: pentru notele 7 5 9 5 8 7 10 5, linia sortată este 5 5 5 7 7 8 9 10, iar media este 7.0.

Scrie pe caiet - De reținut

Titlul lecției

Evaluare finală a modulului

Definiția lecției

Evaluarea finală verifică întreg modulul în două subiecte: Subiectul I conține 5 întrebări de teorie (definiții, complexități, pseudocod) în valoare de 30 de puncte, iar Subiectul II cuprinde două probleme Python - una de generare și una de sortare - în valoare de 70 de puncte. Pentru fiecare problemă, jumătate din punctaj se acordă algoritmului corect, iar jumătate implementării și respectării formatului de ieșire. Strategia de lucru: citim integral enunțul, recunoaștem tipul problemei (generare sau sortare), alegem metoda după restricții și testăm pe exemplul dat plus cazurile limită. De exemplu, o problemă de generare cere primele n numere pare, rezolvată cu bucla for și regula 2 * i, iar una de sortare cu note de la 1 la 10 se rezolvă ideal cu lista de frecvențe.

Definiții esențiale

Algoritmul cheie - pseudocod

citește n pentru i = 1, n execută scrie 2 * i

Algoritmul cheie - cod Python

Python - problema model de generare
n = int(input())

for i in range(1, n + 1):
    print(2 * i, end=" ")

Greșeli comune de evitat

Sfaturi practice și trucuri

Exemplu practic

Problema model de sortare: se citesc n note (valori între 1 și 10) și se afișează în ordine crescătoare. Cum valorile sunt dintr-un interval mic, alegem lista de frecvențe:

Python - problema model de sortare
note = [7, 5, 9, 5, 8, 7, 10, 5]
fr = [0] * 11

for x in note:
    fr[x] = fr[x] + 1

for i in range(1, 11):
    for _ in range(fr[i]):
        print(i, end=" ")

Verifică: se afișează 5 5 5 7 7 8 9 10, exact în formatul cerut de enunț.