La BAC informatică, diferența dintre 9 și 10 rareori ține de o problemă pe care n-ai știut-o. Aproape întotdeauna ține de un punct și virgulă uitat, de o variabilă neinițializată sau de un caz în care numărul citit era 0. Nota se obține împărțind la 10 punctajul din 100 (cu 10 puncte din oficiu), deci un 10 curat înseamnă toate cele 90 de puncte de pe foaie. Asta schimbă complet strategia: nu cauți probleme spectaculoase, ci elimini sistematic greșelile.
1. Fă din Subiectul II punctaj garantat
Itemul II.1 are patru cerințe (a, b, c, d) în valoare totală de 28 de puncte, toate pe același algoritm în pseudocod. E cea mai mare sumă de puncte legată de o singură abilitate: să înțelegi un algoritm scurt. Ce trebuie să stăpânești perfect:
- urmărirea cu tabel — o coloană pentru fiecare variabilă, un rând la fiecare modificare, fără calcule „din cap”;
- înțelegerea scopului — după ce ai urmărit algoritmul o dată, întreabă-te „ce face, de fapt?”. Asta îți rezolvă punctul b);
- traducerea în C++ —
[a/b]devinea/bpe întregi,repetă … până când cdevinedo { … } while (!(c));; - structurile echivalente — știi să transformi
pentruîncât timpși invers, fără să schimbi ce se afișează.
Itemii 2 și 3 din Subiectul II sunt scurți, dar fiecare are 6 puncte. Recapitulează declararea unui struct și accesul la câmpuri, condițiile pe indici în matrice și funcțiile din <cstring>.
2. Învață pe de rost câteva „șabloane” de cod
Subiectul III pare liber, dar cerințele se repetă: cifrele unui număr, divizori, numere prime, CMMDC, vectori de frecvență, cuvinte dintr-un text, citire din fișier până la final. Fiecare dintre acestea are o formă standard pe care trebuie s-o poți scrie fără să te gândești. De exemplu, parcurgerea cifrelor:
while (n != 0) {
int c = n % 10;
// prelucrezi cifra c
n = n / 10;
}
Când șablonul e automatism, toată atenția ta rămâne pentru partea specifică a problemei. Scrie fiecare șablon de mână de cel puțin 5–6 ori în săptămânile de pregătire; la examen scrii tot de mână, nu tastezi.
3. Testează pe cazuri limită, nu doar pe exemplul din enunț
Exemplul din enunț e ales să meargă. Corectorul se uită însă dacă programul e corect pentru orice date valide. Înainte să predai, rulează mental codul pe:
- n = 0 sau un număr cu o singură cifră;
- un număr care conține cifra 0 în interior (de exemplu 1005);
- un vector cu un singur element sau cu toate elementele egale;
- un fișier în care nicio valoare nu respectă condiția — ce afișează programul atunci? Enunțul cere adesea un mesaj anume, cum ar fi
nu exista.
Exemplu concret: un subprogram care returnează cea mai mare cifră a lui n. Varianta de mai jos pare corectă, dar pentru n = 0 nu intră deloc în buclă și returnează valoarea inițială. Aici merge, pentru că maxim pornește de la 0, deci rezultatul e chiar cifra 0. Dacă ai fi inițializat cu -1, ai fi greșit.
int cifraMaxima(int n) {
int maxim = 0;
while (n != 0) {
if (n % 10 > maxim)
maxim = n % 10;
n = n / 10;
}
return maxim;
}
4. La problema cu fișier: corect întâi, eficient apoi
La III.3 se cere un algoritm eficient ca timp și memorie. Mulți elevi se blochează căutând soluția optimă și nu mai scriu nimic. Greșeală. O soluție corectă dar mai puțin eficientă primește de regulă o parte din punctaj, pe când o foaie goală primește zero. Ordinea bună:
- scrie pe ciornă cea mai simplă soluție corectă;
- întreabă-te: trebuie să memorez toate numerele? Pot afla răspunsul dintr-o singură parcurgere? Valorile sunt mici (de exemplu, cifre sau numere sub 1000), deci merge un vector de frecvență?
- dacă găsești varianta mai bună, pe aceea o scrii pe foaie.
Și nu uita punctul a): descrierea algoritmului în 3–4 propoziții, cu o justificare explicită a eficienței, de tipul „numerele sunt citite o singură dată, iar memoria folosită nu depinde de numărul de valori din fișier”.
5. Teoria pentru grile nu se improvizează
Subiectul I are 20 de puncte fără punctaj parțial. Aici contează teoria exactă: câte muchii are un graf complet cu n noduri (n(n−1)/2), ce e o frunză într-un arbore, în ce ordine generează backtracking-ul soluțiile, cum se evaluează o expresie cu && și ||. Asemenea lucruri se rețin cel mai bine prin repetare scurtă și deasă — flashcard-uri, câteva minute pe zi — nu prin citit capitolul o dată.
6. Simulări cronometrate, corectate cinstit
Ultimele 4–5 săptămâni ar trebui să conțină simulări complete: 3 ore, fără întreruperi, pe hârtie. Apoi corectezi cu baremul, sever, ca un profesor care nu te cunoaște. Notează-ți separat fiecare punct pierdut și motivul: „neinițializat”, „condiție inversată la repetă”, „n-am tratat cazul fără soluție”. După câteva simulări vei vedea că greșelile tale se repetă — și exact pe acelea le elimini.
7. Verificarea finală: lista de control
Păstrează ultimele 10–15 minute pentru o trecere rapidă prin lucrare:
- Fiecare sumă, contor și produs e inițializat (sumele cu 0, produsele cu 1)?
- Ai folosit
==în condiții, nu=? - Ai inclus bibliotecile și ai declarat toate variabilele?
- Antetul subprogramului are exact numele și parametrii din enunț?
- Ai deschis fișierul cu numele exact din enunț?
- La II.1a și II.1b, răspunsurile sunt scrise clar, nu doar în tabelul de pe ciornă?
Nota 10 la informatică e, în mare parte, o chestiune de disciplină. Dacă îți construiești obiceiurile de mai sus din timp, în ziua examenului le aplici fără efort.
De reținut
- ● Nota 10 înseamnă toate cele 90 de puncte de pe foaie — strategia e să nu pierzi puncte, nu să rezolvi probleme grele.
- ● Itemul II.1 (28p) și subprogramul de la III.1 trebuie să devină punctaj sigur.
- ● Testează-ți codul pe cazuri limită: 0, o singură cifră, valori egale, fișier cu un singur număr.
- ● La III.3 scrie întâi o soluție corectă; optimizeaz-o după, dacă știi cum.
- ● Fă cel puțin 6–8 simulări complete, cronometrate, corectate cu baremul.