Când cauți programa BAC informatică, găsești de obicei documentul oficial: corect, dar scris în limbaj de competențe, greu de transformat într-o listă de lucruri de învățat. Mai jos ai aceleași teme, grupate pe capitole, cu explicații concrete: ce trebuie să știi să scrii, ce trebuie să recunoști și în ce tip de item apare fiecare.

Articolul se referă la limbajul C/C++, specializarea matematică-informatică. Programa diferă între specializări (la științele naturii, de exemplu, e mai restrânsă), iar organizarea de aici e una practică, nu reproduce textul oficial. Pentru lista exactă, consultă programa publicată de Ministerul Educației.

1. Algoritmi și pseudocod

Noțiunea de algoritm și proprietățile lui, reprezentarea în pseudocod, datele (constante, variabile), expresiile și structurile de control: secvențială, alternativă (dacă … atunci … altfel) și repetitivă (cât timp, repetă … până când, pentru).

Ce se cere: să urmărești execuția unui algoritm, să găsești date de intrare pentru o ieșire dată, să traduci în C++ și să rescrii cu o structură repetitivă echivalentă. Este întregul item II.1 — 28 de puncte.

2. Elementele de bază ale limbajului C++

Tipurile de date simple (int, long long, double, char, bool), operatorii aritmetici (inclusiv / și % pe întregi), relaționali și logici, prioritatea lor, conversiile de tip, citirea și afișarea cu cin și cout, instrucțiunile if, while, do … while, for.

Ce se cere: evaluarea expresiilor la grile (de exemplu, !(x % 2 == 0) || y > 3), condiții echivalente scrise cu legile lui De Morgan, programe complete fără erori de sintaxă.

3. Algoritmi elementari

Capitolul cel mai „productiv” ca punctaj. Include:

Ce se cere: apar în algoritmul de la II.1 și aproape sigur la subprogramul de la III.1.

4. Tablouri

Tablouri unidimensionale (vectori): citire, afișare, parcurgere, inserare și ștergere de elemente, căutare secvențială și binară, sortare (metoda bulelor, selecție, inserție), interclasarea a doi vectori sortați, vectorul de frecvență.

Tablouri bidimensionale (matrice): parcurgere pe linii și coloane, diagonalele și zonele unei matrice pătratice, construirea unei matrice după o regulă.

Ce se cere: itemii scurți de la Subiectul II, programul de la III.2 și, foarte des, ideea eficientă de la III.3 (vector de frecvență, interclasare).

5. Șiruri de caractere

Reprezentarea ca tablou de char terminat cu '\0', citirea cu cin.getline, funcțiile din <cstring> (strlen, strcpy, strcat, strcmp, strchr, strstr, strtok), lucrul cu codurile ASCII (litere mari/mici, cifre).

Ce se cere: un item scurt la Subiectul II și, frecvent, programul de la III.2: separarea cuvintelor, înlocuiri, numărarea vocalelor, verificarea palindromului.

6. Tipul înregistrare (struct)

Declararea unei structuri, accesul la câmpuri cu operatorul punct, structuri imbricate, vectori de înregistrări.

Ce se cere: de obicei un item scurt la Subiectul II — o declarare sau o expresie care accesează un câmp, de exemplu elev.nota sau v[i].data.an.

7. Fișiere text

Deschiderea fișierelor cu ifstream și ofstream, citirea unui număr cunoscut de valori și citirea până la sfârșitul fișierului cu while (f >> x).

Ce se cere: problema III.3, unde datele vin dintr-un fișier și se cere un algoritm eficient. Tot aici intră noțiunea de eficiență: numărul de parcurgeri, memoria folosită, complexitatea O(n) față de O(n²).

8. Subprograme

Subprograme predefinite (de exemplu sqrt, abs), subprograme definite de utilizator: declarare, definire, apel, parametri formali și efectivi, transmiterea prin valoare și prin referință, variabile locale și globale.

Ce se cere: subprogramul de la III.1 (10 puncte) și grile de urmărire în care trebuie să vezi ce se întâmplă cu un parametru transmis prin referință.

9. Recursivitate și backtracking

Recursivitatea: condiția de oprire, autoapelul, mecanismul stivei, urmărirea unei funcții recursive (inclusiv a celor care afișează „la întoarcere”).

Backtracking: schema generală, generarea permutărilor, aranjamentelor, combinărilor și a altor soluții cu condiții.

Ce se cere: mai ales grile la Subiectul I — „ce valoare are f(5)?”, „care este a patra soluție generată?”. Rareori ți se cere să scrii backtracking-ul complet, dar trebuie să înțelegi ordinea în care se generează soluțiile.

10. Grafuri și arbori

Grafuri neorientate: noduri, muchii, grad, matrice de adiacență, lanțuri, cicluri, conexitate, componente conexe, grafuri complete, grafuri parțiale și subgrafuri.

Grafuri orientate: arce, grad intern și extern, drumuri, circuite, tare conexitate.

Arbori: arbori cu rădăcină, frunze, niveluri, vectorul de tați.

Ce se cere: grile la Subiectul I și itemi scurți la Subiectul II. Contează formulele: un graf neorientat complet cu n noduri are n(n−1)/2 muchii, suma gradelor este dublul numărului de muchii, un arbore cu n noduri are n − 1 muchii.

La BAC: stivele și cozile apar în unele culegeri și materiale de pregătire. Verifică în programa oficială a specializării tale dacă sunt incluse, înainte să aloci timp pentru ele.

Cum folosești lista

Ia fiecare capitol și notează-ți, cinstit, unde te afli: „știu sigur”, „știu dar greșesc”, „nu știu”. Începe cu ce aduce cele mai multe puncte: capitolele 1, 3, 4, 5, 7 și 8 acoperă aproape în întregime Subiectele II și III. Apoi lucrează grafurile, recursivitatea și backtracking-ul, care aduc punctele din grile. Așa transformi programa dintr-un document oficial într-un plan de lucru.

De reținut