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.
- 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)
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:
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.
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
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.
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
Pasul 4: Rezultatul final
Afisam toate rezultatele si verificam promovarea cu structura alternativa DACA-ATUNCI-ALTFEL:
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
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
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:
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.
Algoritmul complet — vedere de ansamblu
Sa vedem intregul algoritm adunat la un loc, cu cele doua bucle si calculele finale:
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
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.
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.
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.
- Scrie initializarea: care este valoarea initiala a lui suma, maxim si minim dupa citirea primului element (15)?
- Urmareste bucla PENTRU (i de la 2 la 5): ce valori au suma, maxim si minim la sfarsitul fiecarui pas?
- Calculeaza media aritmetica. Rotunjeste la doua zecimale.
- 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):
- i=2, nota=22: suma = 15+22 = 37; 22 > 15 -> maxim = 22; minim ramane 15
- i=3, nota=8: suma = 37+8 = 45; 8 > 22? nu; 8 < 15? da -> minim = 8
- i=4, nota=30: suma = 45+30 = 75; 30 > 22? da -> maxim = 30; minim ramane 8
- 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.
- Citim 7 temperaturi; la fiecare citire verificam cu
DACA temp < -30 SAU temp > 50 ATUNCIcerem repetarea (interval valid: -30..50). - 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). - In aceeasi bucla, doua contoare:
DACA temp > 20 ATUNCI calduroase = calduroase + 1siDACA temp < 0 ATUNCI inghet = inghet + 1. - Dupa bucla:
media = suma / 7. Clasificare cu DACA-ATUNCI-ALTFEL in cascada: media > 15 -> calda; media >= 5 -> normala; altfel -> rece. - Bonus:
amplitudine = maxim - minim; pentru ziua cea mai calda/friguroasa retinempoz_maxsipoz_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):
- 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).
- 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).
- 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).
- 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.