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:
- prelucrarea cifrelor: sumă, produs, oglindit, palindrom, cifra maximă, eliminarea sau dublarea unor cifre;
- divizibilitate: divizorii unui număr, numărul și suma lor, verificarea primalității, descompunerea în factori primi;
- CMMDC și CMMMC prin algoritmul lui Euclid;
- conversii între baze de numerație (în special baza 10 ↔ baza 2);
- șiruri recurente, cum ar fi șirul lui Fibonacci;
- prelucrarea unui șir de valori citite fără memorarea lor: maxim, minim, numărare, sume.
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.
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
- ● Grupată practic, programa are zece capitole: de la algoritmi și elementele de bază C++ la recursivitate, backtracking și grafuri.
- ● Algoritmii elementari (cifre, divizibilitate, prime, CMMDC, baze) apar aproape în fiecare variantă, la Subiectele II și III.
- ● Tablourile, șirurile de caractere și fișierele text sunt baza Subiectului III.
- ● Grafurile, arborii, recursivitatea și backtracking-ul apar mai ales la grilele din Subiectul I și la itemii scurți.
- ● Programa diferă între specializări — verifică documentul oficial pentru specializarea ta.