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
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
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.