La fiecare sesiune, odată cu subiectele se publică și baremul de evaluare. Pentru BAC informatică, baremul e documentul care îți spune cel mai clar ce contează: ce primește puncte, ce nu, și cum se împart punctele la itemii de programare. Mulți elevi îl citesc doar ca să-și afle nota după examen. E mai util să-l citești înainte, ca să știi cum gândește corectorul.

Descrierea de mai jos e una generală, bazată pe forma baremelor din ultimii ani. Detaliile exacte diferă de la o variantă la alta, așa că verifică întotdeauna baremele oficiale de pe subiecte.edu.ro.

Regulile generale

Itemi cu răspuns exact: Subiectul I și II.1a, II.1b

La cele cinci grile din Subiectul I (4 puncte fiecare) contează doar litera corectă. La fel la II.1a („ce se afișează dacă se citește…”) și, în general, la II.1b („scrieți valori pentru care se afișează…”): rezultatul e corect sau nu. Tabelul de urmărire de pe ciornă nu aduce puncte dacă rezultatul final e greșit.

Ce înseamnă asta pentru tine: la itemii aceștia, viteza fără verificare e periculoasă. O cifră greșită la jumătatea urmăririi strică tot rezultatul. Dacă ai timp, refă urmărirea a doua oară, eventual pe alt drum (de exemplu, după ce ai înțeles ce face algoritmul, verifică rezultatul „logic”).

La II.1b, citește atent ce se cere: „două valori distincte”, „cel mai mic număr de trei cifre”, „toate numerele din intervalul…”. O singură valoare când se cer două sau o valoare care nu respectă restricția din enunț înseamnă puncte pierdute.

Programele: punctajul pe elemente

Aici baremul devine cu adevărat interesant. La itemii unde scrii cod — II.1c, III.1, III.2, III.3b — punctajul nu e „totul sau nimic”. Baremul împarte punctele pe elemente distincte, de exemplu:

Consecința practică: scrie întotdeauna ceva. Un program care citește corect datele, are structura repetitivă potrivită și afișează rezultatul în formatul cerut poate aduna puncte chiar dacă logica din interior e incompletă. O foaie goală aduce zero.

La II.1c, „corectitudinea globală” înseamnă că programul tău C++ face exact ce face pseudocodul. Greșelile de traducere, cum ar fi condiția nenegată la repetă … până când sau o împărțire care nu e întreagă, se depunctează chiar dacă restul e perfect.

Subprogramul de la III.1: antetul contează

La subprogram, baremul punctează separat antetul: tipul returnat, numele exact și parametrii cu tipurile lor. Dacă enunțul cere subprogramul nrDiv cu un parametru n care returnează numărul de divizori ai lui n, atunci antetul corect este int nrDiv(int n). Un nume diferit sau un parametru în plus costă puncte, chiar dacă algoritmul e bun.

int nrDiv(int n) {
    int k = 0;
    for (int d = 1; d * d <= n; d++)
        if (n % d == 0) {
            k++;                 // divizorul d
            if (d != n / d) k++; // perechea lui, n / d
        }
    return k;
}

Pentru n = 12, perechile găsite sunt (1, 12), (2, 6), (3, 4), deci funcția returnează 6. Pentru n = 16: (1, 16), (2, 8) și apoi 4, numărat o singură dată — rezultat 5.

Alte depunctări frecvente la subprogram: afișarea rezultatului cu cout în loc de return, citirea lui n în interiorul funcției (deși îl primește ca parametru) sau lipsa transmiterii prin referință atunci când subprogramul trebuie să modifice o variabilă primită.

La BAC: la III.1 se cere de obicei doar subprogramul, nu și funcția main. Citește cerința: dacă nu ți se cere un program complet, nu pierde timp scriindu-l.

Problema de eficiență (III.3): cum se împart cele 10 puncte

Itemul III.3 are două părți. La a) (2 puncte) descrii algoritmul în limbaj natural și justifici eficiența. Corectorul urmărește ca descrierea să fie coerentă (să se înțeleagă ce faci) și ca justificarea să fie concretă: câte parcurgeri faci, ce memorie folosești și de ce nu depinde de numărul de valori.

La b) (8 puncte) scrii programul. O parte din punctaj e legată de corectitudine (citirea din fișier, algoritmul, afișarea), iar o parte de eficiență. Două reguli importante, care apar în forme asemănătoare în baremele recente:

Strategia care rezultă e simplă: dacă nu vezi imediat soluția eficientă, scrie-o pe cea corectă. Și descrie la a) exact algoritmul pe care l-ai implementat la b), nu altul.

Itemul II.1d: structura echivalentă

La rescrierea cu altă structură repetitivă, baremul urmărește două lucruri: că ai folosit efectiv tipul de structură cerut și că algoritmul nou e echivalent cu cel inițial, adică afișează același lucru pentru orice date de intrare. Cea mai frecventă depunctare apare la trecerea de la repetă la cât timp: bucla repetă se execută cel puțin o dată, iar cât timp poate să nu se execute deloc. Dacă nu tratezi diferența, algoritmul nu mai e echivalent pentru anumite valori.

Cum folosești baremul în pregătire

După fiecare simulare, corectează-te singur cu baremul oficial, punct cu punct, fără indulgență. Notează unde ai pierdut puncte: la antet? La format? La eficiență? În câteva săptămâni vei avea o hartă clară a punctelor tale slabe — mult mai utilă decât o notă generală.

De reținut