În lucru: lecțiile se refac de la capăt. Lecțiile noi ale clasei: lecțiile noi ale clasei a VII-a →
Proiect Final

Proiect: Catalog note

Aplica tot ce ai invatat intr-un proiect practic cu structuri repetitive!

Progres lectie:
0%
🎯

Obiectivul proiectului

"Vei crea un algoritm complet care prelucreaza note citite pe rand si afiseaza statistici utile: suma, media, nota maxima, nota minima si daca elevul este promovat!"

Dupa aceasta lectie vei putea:

  • Sa explici proiectul: catalog de note
  • Sa explici pasul 1: citirea notelor cu structura PENTRU
  • Sa utilizezi pasul 2: calculul sumei, maximului si minimului intr-o singura parcurgere
  • Sa aplici pasul 3: calculul mediei si numararea notelor peste medie
  • Sa aplici pasul 4: afisarea rezultatelor finale
📚
Conformitate cu programa cls. VII (OMEN 3393/2017)

Acest proiect foloseste exclusiv structuri prevazute la clasa a VII-a: structura liniara, structura alternativa (DACA-ATUNCI-ALTFEL) si structura repetitiva cu contor (PENTRU…EXECUTA), aplicate pe variabile scalare. Notele sunt citite si prelucrate pe rand, fara a fi memorate intr-un sir (sirurile de valori sunt materie de clasa a VIII-a).

1

Proiectul: Catalog de note

Vom crea un program care analizeaza notele unui elev la o materie si calculeaza statistici. Notele sunt citite una cate una, in bucla PENTRU, fara a fi memorate — calculele se fac pe loc, folosind variabile acumulatoare.

📊 Cerinte proiect:
  • Citeste n note ale elevului, una cate una
  • Calculeaza suma notelor (acumulator)
  • Calculeaza media aritmetica
  • Gaseste nota maxima si minima (comparare pe rand)
  • Numara cate note sunt peste medie
  • Afiseaza daca elevul este promovat (media ≥ 5)
Ce facem prima data intr-un algoritm cu structura repetitiva?
A Calculam media
B Citim dimensiunea (n) si initializam variabilele acumulatoare
C Afisam rezultatele
2

Pasul 1: Citirea datelor si initializarea

Incepem prin a citi cate note are elevul, initializam variabilele acumulatoare cu prima nota, apoi citim restul in bucla:

SCRIE ("Cate note are elevul? ")
CITESTE n

// Citim prima nota si initializam maximul si minimul
SCRIE ("Nota 1: ")
CITESTE nota
suma = nota
maxim = nota
minim = nota

// Citim restul notelor, de la 2 la n
PENTRU i = 2 , n EXECUTA
SCRIE ("Nota ", i , ": ")
CITESTE nota
suma = suma + nota
DACA nota > maxim ATUNCI
maxim = nota
SFARSIT_DACA
DACA nota < minim ATUNCI
minim = nota
SFARSIT_DACA
SFARSIT_PENTRU

De ce citim prima nota separat?

Deoarece maximul si minimul trebuie initializate cu o valoare reala, nu cu 0 sau 999. Prima nota este cea mai buna alegere: garanteaza ca maximul si minimul sunt valori reale din datele de intrare.

Cand citim notele una cate una, ce structura folosim?
A DACA-ATUNCI
B PENTRU (bucla cu contor)
C Nu folosim nimic special
3

Pasul 2: Suma, maximul si minimul — intr-o singura parcurgere

In codul de mai sus, am calculat deja suma, maximul si minimul in aceeasi bucla: citim nota → o adaugam la suma → comparam cu maximul → comparam cu minimul. O singura parcurgere, trei calcule.

Exemplu: n = 5 note: 8, 6, 9, 7, 10

Initializare (prima nota = 8): suma = 8, maxim = 8, minim = 8

i=2, nota=6: suma = 14, minim = 6 (6 < 8)

i=3, nota=9: suma = 23, maxim = 9 (9 > 8)

i=4, nota=7: suma = 30 (nimic nu se schimba la max/min)

i=5, nota=10: suma = 40, maxim = 10 (10 > 9)

Final: suma = 40, maxim = 10, minim = 6

Putem calcula suma, maxim si minim in aceeasi parcurgere?
A Nu, trebuie parcurgeri separate
B Da, le calculam pe toate deodata
C Doar suma si media impreuna
4

Pasul 3: Media si numararea notelor peste medie

Dupa prima bucla avem suma, deci putem calcula media. Dar pentru a numara notele peste medie avem o constrangere: notele nu sunt memorate (sirurile de valori sunt materie de clasa a VIII-a). Solutia: efectuam o a doua citire, in care utilizatorul introduce notele inca o data si le comparam cu media calculata.

// Calculam media dupa prima bucla
media = suma / n

// A doua bucla: numaram notele peste medie
SCRIE ("Reintrodu notele pentru analiza:")
peste_medie = 0
PENTRU i = 1 , n EXECUTA
SCRIE ("Nota ", i , ": ")
CITESTE nota
DACA nota > media ATUNCI
peste_medie = peste_medie + 1
SFARSIT_DACA
SFARSIT_PENTRU

Exemplu: note = 8, 6, 9, 7, 10; media = 8

Note peste medie (nota > 8): 9 si 10 → 2 note

De ce nu putem numara notele peste medie in prima bucla?
A Nu stim media inainte de a citi toate notele
B Nu avem destule variabile
C Structura PENTRU nu permite asta
5

Pasul 4: Rezultatul final

Afisam toate rezultatele si verificam promovarea cu structura alternativa DACA-ATUNCI-ALTFEL:

SCRIE ("===== REZULTATE =====")
SCRIE ("Suma notelor: ", suma )
SCRIE ("Media: ", media )
SCRIE ("Nota maxima: ", maxim )
SCRIE ("Nota minima: ", minim )
SCRIE ("Note peste medie: ", peste_medie )

DACA media >= 5 ATUNCI
SCRIE ("Elevul este PROMOVAT!")
ALTFEL
SCRIE ("Elevul este NEPROMOVAT.")
SFARSIT_DACA
Ce conditie verifica daca elevul este promovat?
A media > 10
B media >= 5
C media = 5
6

Exemplu complet

Sa vedem rezultatele pentru cinci note: 8, 6, 9, 7, 10.

Urmarire variabile pas cu pas:

Initializare (nota = 8): suma=8, maxim=8, minim=8

i=2 (nota=6): suma=14, minim=6

i=3 (nota=9): suma=23, maxim=9

i=4 (nota=7): suma=30

i=5 (nota=10): suma=40, maxim=10

media = 40 / 5 = 8.0

Note peste 8: 9, 10 → peste_medie = 2

Suma: 40

Media: 8.0

Nota maxima: 10

Nota minima: 6

Note peste medie: 2 (nota 9 si 10)

✓ PROMOVAT

Ce afiseaza programul pentru note = 8, 6, 9, 7, 10?
A Suma=40, Media=8, Max=10, Min=6
B Suma=35, Media=7, Max=9, Min=6
C Suma=40, Media=10, Max=10, Min=8
7

Validarea datelor — verificare cu DACA

Un program corect verifica daca datele introduse sunt valide. In sistemul romanesc, notele sunt numere intregi intre 1 si 10. Putem verifica asta cu structura alternativa DACA-ATUNCI si sa afisam un mesaj de avertizare daca nota este in afara intervalului:

CITESTE nota
DACA nota < 1 SAU nota > 10 ATUNCI
SCRIE ("ATENTIE: Nota invalida! (interval valid: 1-10)")
SFARSIT_DACA

Nota: Repetarea automata a citirii (pana cand utilizatorul introduce o valoare valida) necesita o structura conditionata posterior — prezentata la clasa a VIII-a. La clasa a VII-a, afisam un mesaj de avertizare cu DACA si continuam.

Care este limita de promovare in sistemul romanesc de notare?
A Media >= 4
B Media >= 5
C Media >= 6
8

Algoritmul complet — vedere de ansamblu

Sa vedem intregul algoritm adunat la un loc, cu cele doua bucle si calculele finale:

// ===== CATALOG NOTE cls. VII =====
SCRIE ("Cate note? ")
CITESTE n

// Prima nota + initializare acumulatoare
SCRIE ("Nota 1: ")
CITESTE nota
suma = nota
maxim = nota
minim = nota

// Bucla 1: citire si calcule
PENTRU i = 2 , n EXECUTA
SCRIE ("Nota ", i , ": ")
CITESTE nota
suma = suma + nota
DACA nota > maxim ATUNCI maxim = nota SFARSIT_DACA
DACA nota < minim ATUNCI minim = nota SFARSIT_DACA
SFARSIT_PENTRU

// Calculam media
media = suma / n

// Bucla 2: numaram notele peste medie
SCRIE ("Reintrodu notele:")
peste_medie = 0
PENTRU i = 1 , n EXECUTA
SCRIE ("Nota ", i , ": ")
CITESTE nota
DACA nota > media ATUNCI
peste_medie = peste_medie + 1
SFARSIT_DACA
SFARSIT_PENTRU

// Afisare rezultate
SCRIE ("Suma: ", suma )
SCRIE ("Media: ", media )
SCRIE ("Maxim: ", maxim )
SCRIE ("Minim: ", minim )
SCRIE ("Peste medie: ", peste_medie )
DACA media >= 5 ATUNCI
SCRIE ("PROMOVAT")
ALTFEL
SCRIE ("NEPROMOVAT")
SFARSIT_DACA
Dupa ce am citit toate notele si calculat suma, ce urmeaza?
A Iesim din program
B Calculam media ca suma/n
C Introducem notele inca o data imediat
9

Contorul si acumulatorul — instrumentele esentiale

In algoritmul nostru am folosit doua tipare fundamentale cu structuri repetitive:

Tiparul acumulatorului (suma):

1. Initializare: suma = 0 (sau prima valoare)

2. In bucla: suma = suma + valoare

3. Dupa bucla: afisam suma sau calculam media

Tiparul contorului (numarare):

1. Initializare: contor = 0

2. In bucla: DACA conditie ATUNCI contor = contor + 1

3. Dupa bucla: afisam valoarea contorului

Diferenta: acumulatorul creste cu valoarea elementului; contorul creste mereu cu 1.

Ce variabila folosim pentru a numara notele peste medie?
A suma
B maxim
C peste_medie (contor)
10

Recapitulare modul

Ce ai invatat in acest modul:

  • ✓ Structura PENTRU — repetitie cu contor
  • ✓ Citirea mai multor valori in bucla
  • ✓ Variabila acumulator (suma)
  • ✓ Variabila contor (numarare)
  • ✓ Gasirea maximului si minimului
  • ✓ Calculul mediei aritmetice
  • ✓ Combinarea structurii repetitive cu cea alternativa
  • ✓ Verificarea promovarii cu DACA-ATUNCI-ALTFEL
  • ✓ Integrarea algoritmilor intr-un proiect practic

🎉 Felicitari!

Acum poti crea programe complete care prelucreaza date folosind structuri repetitive si alternative!

La clasa a VIII-a vei invata sirurile de valori (arrays) — care permit memorarea tuturor elementelor si rezolvarea problemelor intr-o singura bucla.

Ce ai invatat in acest modul despre structuri repetitive?
A Doar cum sa scriem bucla PENTRU
B Structura PENTRU, citire date, suma, media, maxim, minim, numarare
C Doar calcule simple cu variabile

Exercitii practice

Exercitiul 1 (Nivel minim) — Analiza pas cu pas

Cerinta: Pentru sirul de 5 numere v = 15, 22, 8, 30, 12, executa manual algoritmul de mai sus si raspunde la intrebarile de mai jos. Arata fiecare pas al calculului, nu doar rezultatul final.

  1. Scrie initializarea: care este valoarea initiala a lui suma, maxim si minim dupa citirea primului element (15)?
  2. Urmareste bucla PENTRU (i de la 2 la 5): ce valori au suma, maxim si minim la sfarsitul fiecarui pas?
  3. Calculeaza media aritmetica. Rotunjeste la doua zecimale.
  4. Daca ai reintroduce valorile (a doua bucla), cate valori sunt mai mari decat media? Care sunt ele?

Raspunde numerotat: 1. ... 2. ... 3. ... 4. ...

Indicii:

  • Suma = 15+22+8+30+12 = ?
  • Sirul are 5 elemente, deci media = suma / 5
  • La fiecare pas compari nota curenta cu maximul si minimul curent
Vezi rezolvarea

1. Initializare (dupa citirea primului element, 15): suma = 15, maxim = 15, minim = 15.

2. Traseul buclei PENTRU (i = 2..5):

  1. i=2, nota=22: suma = 15+22 = 37; 22 > 15 -> maxim = 22; minim ramane 15
  2. i=3, nota=8: suma = 37+8 = 45; 8 > 22? nu; 8 < 15? da -> minim = 8
  3. i=4, nota=30: suma = 45+30 = 75; 30 > 22? da -> maxim = 30; minim ramane 8
  4. i=5, nota=12: suma = 75+12 = 87; 12 > 30? nu; 12 < 8? nu -> nimic nu se schimba

3. Media = suma / n = 87 / 5 = 17.40.

4. Valori peste medie (17.40): comparam fiecare element cu media: 15 nu, 22 da, 8 nu, 30 da, 12 nu. Raspuns: 2 valori, si anume 22 si 30.

Exercitiul 2 (Nivel standard) — Mini-proiect: Temperaturile saptamanii

Adapteaza algoritmul "Catalog note" pentru a analiza temperaturile unei saptamani. Programul trebuie sa citeasca 7 temperaturi (una pentru fiecare zi) si sa ofere o analiza completa.

Cerinte obligatorii:

⭐ Bonus (pentru nota maxima):

  • Calculeaza amplitudinea termica (max - min)
  • Afiseaza in ce zi a fost cel mai cald si cel mai frig (Luni/Marti/.../Duminica)

Criterii de evaluare:

  • Suficient (5-6): Citeste temperaturi, calculeaza media, gaseste max si min
  • Bine (7-8): Toate cerintele obligatorii implementate corect
  • Foarte bine (9-10): Include cel putin 2 bonusuri, verificare date, cod comentat
Vezi rezolvarea

Adaptare directa a algoritmului "Catalog note": n=7 (fix), acumulatori suma/maxim/minim initializati cu prima temperatura, plus doi contoare noi.

  1. Citim 7 temperaturi; la fiecare citire verificam cu DACA temp < -30 SAU temp > 50 ATUNCI cerem repetarea (interval valid: -30..50).
  2. Prima temperatura initializeaza suma, maxim, minim; urmatoarele 6 intra intr-un PENTRU (i=2,7) care actualizeaza suma (acumulator) si compara pentru maxim/minim (ca la lectia 5).
  3. In aceeasi bucla, doua contoare: DACA temp > 20 ATUNCI calduroase = calduroase + 1 si DACA temp < 0 ATUNCI inghet = inghet + 1.
  4. Dupa bucla: media = suma / 7. Clasificare cu DACA-ATUNCI-ALTFEL in cascada: media > 15 -> calda; media >= 5 -> normala; altfel -> rece.
  5. Bonus: amplitudine = maxim - minim; pentru ziua cea mai calda/friguroasa retinem poz_max si poz_min (ca la lectia 5, initializate cu 1) si le traducem cu un tablou de nume {Luni, Marti, ..., Duminica} sau un DACA-ELSEIF pe valoarea pozitiei.

Capcana: verificarea intervalului (-30..50) nu a fost predata explicit ca structura repetitiva de validare - se trateaza simplu, cu un DACA dupa fiecare CITESTE, fara buclă de re-citire daca nu s-a facut REPEAT/WHILE in lectie.

Exercitiul 3 (Nivel performanta) — Compunere

Cerinta: Scrie un text de 10-15 randuri cu titlul "Algoritmii cu structuri repetitive in viata de zi cu zi". Explica ce sunt algoritmii cu repetitie, de ce sunt importanti si da cel putin 3 exemple concrete din viata reala (note scolare, temperaturi meteo, preturi produse, scoruri sportive etc.).

Indicii pentru structurarea raspunsului:

  • Incepe prin a defini structura repetitiva si cazurile cand o folosim
  • Explica tiparul: acumulator (suma), contor, maxim/minim
  • Da 3 exemple concrete: catalog note, meteo, preturi magazine
  • Incheie cu o concluzie despre importanta algoritmilor repetitivi

Cuvinte cheie de folosit: structura repetitiva, bucla, contor, acumulator, suma, media, maxim, minim, parcurgere, eficient

Format: Scrie raspunsul pe foaie sau intr-un document Word, folosind paragrafe coerente (nu liste). Minim 10 randuri.

Vezi rezolvarea

Schita de rezolvare (nu un text gata scris - completeaza tu paragrafele):

  1. Paragraful 1: defineste structura repetitiva - o secventa de instructiuni care se executa de mai multe ori, cu un contor (ca bucla PENTRU); explica de ce e nevoie de ea (date multe, calcul manual imposibil).
  2. Paragraful 2: descrie cele doua tipare invatate - acumulatorul (suma = suma + valoare, pornind de la prima valoare) si contorul (variabila care creste cu 1 la o conditie indeplinita), plus maxim/minim (comparare pas cu pas).
  3. Paragraful 3: minim 3 exemple concrete, fiecare cu ce se acumuleaza si ce se numara: catalogul de note (suma duce la media, contorul numara notele peste medie), temperaturile saptamanii (maxim/minim arata ziua cea mai calda/rece), preturile dintr-un magazin (suma da totalul cosului, maximul arata cel mai scump produs).
  4. Concluzie: de ce aceste tipare (acumulator, contor, maxim/minim) se regasesc identic in orice program care proceseaza date repetitive.

Criterii de evaluare: foloseste corect toate cele 10 cuvinte cheie cerute; minim 10 randuri, paragrafe (nu liste); cele 3 exemple sunt distincte si explica CE se acumuleaza/numara, nu doar ca "exista o bucla"; concluzia leaga exemplele intre ele, nu doar le repeta.

Ce ai invatat astazi

  • Proiectul: Catalog de note (cls. VII — variabile scalare)
  • Pasul 1: Citirea datelor cu PENTRU si initializarea acumulatoarelor
  • Pasul 2: Suma, maximul si minimul intr-o singura bucla
  • Pasul 3: Media si numararea notelor peste medie (a doua bucla)
  • Pasul 4: Afisarea rezultatelor si verificarea promovarii
  • Exemplu complet cu urmarire variabile pas cu pas
  • Validarea datelor cu structura alternativa DACA-ATUNCI
  • Contorul vs acumulatorul — diferenta si utilizare
  • Algoritmul complet — vedere de ansamblu
  • Recapitulare modul

Vrei mai mult?

  • Provocare: Extinde proiectul Catalog note: adauga in bucla 2 un al doilea contor, sub_medie, care numara notele STRICT sub medie (fara sa mai citesti notele o a treia oara). Testeaza cu notele 8, 6, 9, 7, 10 (media 8) si verifica manual rezultatul.
  • De gandit: Proiectul citeste notele de doua ori, pentru ca la clasa a VII-a inca nu ai siruri care sa memoreze toate notele deodata. La clasa a VIII-a, cu siruri, de cate ori ar trebui sa citesti datele pentru acelasi rezultat? De ce conteaza diferenta cand ai mii de note de procesat?
  • Deschidere: Un catalog electronic real face exact acest tip de calcul, dar pentru sute de elevi si mii de note deodata. Aceeasi structura - citire, acumulare, comparare, afisare - sta la baza oricarui program care proceseaza date statistice, de la vanzarile lunare ale unui magazin pana la temperaturile unui an intreg.

Modulul urmator

Ai terminat modulul 4! La clasa a VIII-a vei aprofunda sirurile de valori (arrays) — structura care memoreaza toate elementele si permite algoritmi mai puternici.

↑ Inapoi la modul