„Scrieți valoarea afișată dacă se citește numărul…” — așa începe aproape întotdeauna itemul II.1a de la BAC informatică. Imediat după vine II.1b: „Scrieți două numere care pot fi citite astfel încât să se afișeze…”. Ambele se bazează pe aceeași abilitate: să urmărești execuția unui algoritm în pseudocod fără să greșești niciun pas. Cea mai sigură tehnică este metoda tabelului.

Metoda tabelului, pe scurt

  1. Fă un tabel cu o coloană pentru fiecare variabilă care se modifică, plus o coloană pentru condițiile importante (de exemplu, „c < x?”).
  2. Scrie pe primul rând valorile de după instrucțiunile dinaintea buclei.
  3. Pentru fiecare execuție a corpului buclei, adaugă un rând nou. Completează coloanele în ordinea în care se execută instrucțiunile.
  4. Înainte de fiecare rând nou, verifică explicit condiția buclei.
  5. La final, scrie ce se afișează — exact în formatul din algoritm.

Pare lent, dar e mai rapid decât să refaci totul pentru că ai pierdut o valoare pe drum. Și te scapă de cea mai periculoasă greșeală: calculul „din cap” care pare corect.

Exemplu complet: punctul a)

citește n (număr natural, n ≥ 10)
k ← 0
x ← n % 10
n ← [n/10]
cât timp n > 0 execută
    c ← n % 10
    dacă c < x atunci
        k ← k + 1
    x ← c
    n ← [n/10]
scrie k

Cerința: ce se afișează pentru n = 52817?

Înainte de buclă: k = 0, x = 7 (ultima cifră), n = 5281. Acum tabelul:

Pasn (început)cc < x?kx (nou)n (final)
————075281
1528111 < 7 da11528
252888 < 1 nu1852
35222 < 8 da225
4555 < 2 nu250

După pasul 4, n = 0, condiția n > 0 e falsă și bucla se oprește. Se afișează 2.

Observă coloana „c < x?”: scrisă explicit, cu ambele valori, îți arată imediat dacă ai comparat ce trebuia. Majoritatea greșelilor de urmărire apar exact în condiții, nu în calcule.

Pasul intermediar: ce face algoritmul?

Înainte de punctul b), oprește-te și formulează în cuvinte ce ai văzut. Variabila x reține mereu cifra din dreapta lui c. Așadar algoritmul compară fiecare cifră cu vecina ei din dreapta și numără de câte ori cifra din stânga e strict mai mică. Verificare pe 52817, citit de la stânga: (5, 2) nu, (2, 8) da, (8, 1) nu, (1, 7) da — două perechi. Rezultatul confirmă tabelul.

Pentru mulți algoritmi de BAC, scopul se recunoaște repede: suma cifrelor, oglinditul, numărul de divizori, cifra maximă. Dacă nu se vede din prima, mai urmărește-l pe un număr mic, de exemplu 123 sau 321, și compară rezultatele.

Punctul b): lucrul invers

Să zicem că cerința este: „Scrieți cel mai mic și cel mai mare număr de patru cifre care pot fi citite astfel încât, în urma executării algoritmului, să se afișeze 3.”

Încercările la întâmplare durează mult. Folosește proprietatea găsită: un număr de patru cifre are exact trei perechi de cifre vecine. Ca k să fie 3, toate perechile trebuie să respecte „stânga < dreapta”, adică cifrele trebuie să fie strict crescătoare de la stânga la dreapta.

Verifică rapid cu algoritmul: pentru 1234, perechile (1,2), (2,3), (3,4) sunt toate crescătoare, deci k = 3. Atenție la cifrele egale: pentru 1123, perechea (1, 1) nu respectă condiția strictă, iar algoritmul afișează 2, nu 3.

Variantă de cerință: „Câte numere din intervalul [10, 99] pot fi citite astfel încât să se afișeze 1?” Un număr de două cifre are o singură pereche, deci trebuie ca prima cifră să fie strict mai mică decât a doua. Prima cifră a poate fi de la 1 la 8, iar a doua mai mare decât ea: pentru a = 1 sunt 8 posibilități (2…9), pentru a = 2 sunt 7, …, pentru a = 8 una singură. Total: 8 + 7 + … + 1 = 36 de numere.

La BAC: la punctul b), verifică fiecare valoare pe care o scrii, rulând algoritmul pe ea. Durează un minut și te asigură că nu ai încălcat vreo restricție din enunț (număr de cifre, interval, valori distincte).

Capcane frecvente la urmărire

Cum exersezi

Ia variante oficiale din anii trecuți și rezolvă doar itemii II.1a și II.1b, cronometrat — ținta este 8–10 minute pentru amândoi. După câteva zeci de algoritmi, vei observa că tiparele se repetă: prelucrarea cifrelor, divizori, numărări în intervale. Atunci vei recunoaște scopul algoritmului încă de la prima citire, iar tabelul va deveni doar verificarea.

De reținut