Descrierea proiectului
Tema: Aplicație C++ modulară completă cu funcții recursive: calculator de prelucrări numerice și de text. Aplicația afișează un meniu interactiv cu cel puțin următoarele opțiuni:
| Opțiune | Prelucrare | Funcție cerută |
|---|---|---|
| 1 | Factorialul unui număr natural | factorial(n) recursiv |
| 2 | Termenul n din șirul lui Fibonacci | fib(n) recursiv |
| 3 | CMMDC a două numere | cmmdc(a, b) recursiv |
| 4 | Suma cifrelor unui număr | suma_cifre(n) recursiv |
| 5 | Inversarea unui șir de caractere | inversare_sir(s, i, j) recursiv |
| 6 | Verificarea dacă un șir este palindrom | palindrom(s, i, j) recursiv |
| 0 | Ieșire din aplicație | - |
Cerințe obligatorii pentru toate notele
- Sintaxa BAC completă:
#include,using namespace std;, funcții înainte demain,return 0;. - Meniul interactiv cu structura
do...while. - Fiecare funcție recursivă are caz de bază și pas recursiv corect, comentată pe pași logici.
- Programul compilează fără erori și rulează corect pe toate exemplele din enunț.
- Verificarea programului în fața profesorului, cu explicarea linie cu linie a codului.
Nivelurile de notare - cerințe pe niveluri
| Nivel | Cerințe pentru notă | Funcții cerute |
|---|---|---|
| Nota 5-6 | Funcționalitate de bază: meniu funcțional, cel puțin o funcție recursivă corectă, citirea și afișarea datelor, sintaxă BAC corectă. Aplicația rulează și produce rezultate corecte pentru exemplele simple. | factorial + meniu (minim) |
| Nota 7-8 | Mai multe funcții recursive (cel puțin patru: factorial, Fibonacci, CMMDC, suma cifrelor) + validări complete ale intrărilor (opțiuni inexistente, n negativ, valori care depășesc domeniul) + tratarea corectă a cazurilor limită (n = 0, n = 1). | 4+ funcții recursive + validări |
| Nota 9-10 | Modularizare avansată (funcții separate pentru citire validată, afișare meniu, prelucrări), eficiență (Fibonacci iterativ sau cu memoizare, comentarii care justifică alegerile de complexitate), documentație completă (descrierea aplicației, scheme logice sau pseudocod pentru fiecare funcție, exemple de rulare, concluzii) și susținere orală excelentă, cu răspunsuri corecte la întrebări despre mecanismul stivei și eficiența algoritmilor. | 6 funcții + validări + documentație |
Interpretare: nota finală se acordă pe baza întregii lucrări: codul, comportamentul programului, documentația și susținerea orală. Un program corect dar fără validări se încadrează la nivelul 5-6, indiferent de numărul de funcții scrise.
Criteriile de evaluare detaliate
| Criteriu | Ce verifică profesorul | Pondere |
|---|---|---|
| Corectitudinea codului | Programul compilează și produce rezultatele așteptate pe toate exemplele, inclusiv cazurile limită | 30% |
| Corectitudinea funcțiilor recursive | Caz de bază corect, pas recursiv corect, tip de return potrivit (long long unde e nevoie) | 25% |
| Modularizarea și stilul | Funcții cu o singură responsabilitate, nume sugestive, comentarii pe pași logici, cod lizibil | 15% |
| Validările și robustețea | Tratarea opțiunilor inexistente și a valorilor invalide, fără blocări | 10% |
| Documentația | Descrierea aplicației, pseudocodul funcțiilor, exemple de rulare, concluzii | 10% |
| Susținerea orală | Explicarea codului linie cu linie, răspunsuri la întrebări despre stivă, caz de bază, eficiență | 10% |
Reguli anti-AI - citire obligatorie
Nota se acordă DOAR în urma susținerii orale în fața profesorului, unde elevul explică codul linie cu linie și răspunde la întrebări despre funcționarea programului.
- Proiectul predat fără susținere orală nu primește notă, indiferent de calitatea codului.
- Elevul trebuie să poată explica orice linie din program: de ce există, ce face și ce se întâmplă dacă lipsește.
- Elevul trebuie să poată modifica codul la cererea profesorului (de exemplu, să adauge o funcție sau să schimbe un caz de bază) și să explice efectul modificării.
- Codul generat integral de instrumente de inteligență artificială și neînțeles de elev este considerat nepredat și se tratează conform regulamentului privind integritatea academică.
- Întrebările de susținere pot viza: mecanismul stivei de apeluri, diferența dintre recursivitate și iterație, complexitatea funcțiilor și motivul pentru care fiecare funcție are exact cazul de bază scris.
Termenul de predare și pașii de lucru
Termen de predare: săptămâna 36, la ora de informatică, în format digital (fișierul .cpp și documentația). Susținerea orală are loc în aceeași zi, în fața profesorului.
Pașii recomandați pentru realizare
- Pasul 1: proiectează pe hârtie meniul și lista funcțiilor cu cazurile lor de bază.
- Pasul 2: scrie și testează fiecare funcție recursivă separat, cu exemplele din sinteza modulului.
- Pasul 3: integrează funcțiile în meniul do...while și adaugă validările.
- Pasul 4: testează toate opțiunile, inclusiv valorile limită (n = 0, n = 1) și opțiunile inexistente.
- Pasul 5: scrie documentația: descriere, pseudocod, exemple de rulare, concluzii.
- Pasul 6: antrenează-te pentru susținere: explică-ți codul cu voce tare, linie cu linie.
Sugestie de structură a documentației: (1) prezentarea aplicației și a meniului; (2) pseudocodul fiecărei funcții recursive; (3) explicația mecanismului de executare pentru o valoare de test; (4) exemple de rulare; (5) concluzii și posibile extinderi.
Rezumat pentru caiet
Ce trebuie predat
- Fișierul sursă C++ (.cpp) care compilează fără erori.
- Documentația proiectului (tipărită sau digitală).
- Susținerea orală obligatorie, cu explicarea codului linie cu linie.
Formula de notă
- Nota 5-6: o funcție recursivă corectă + meniu funcțional + sintaxă BAC.
- Nota 7-8: patru funcții recursive + validări complete + cazuri limită.
- Nota 9-10: șase funcții + modularizare avansată + eficiență + documentație completă + susținere excelentă.
Regula de aur
- Nota se acordă DOAR în urma susținerii orale: înțelegerea codului este condiția obligatorie pentru notare.