Lecție-punte: urmărirea manuală a unui algoritm

Bază~8 min11 pași

De ce contează?

Un pilot verifică manual lista de pre-decolare înainte să pornească motoarele — nu pentru că nu are încredere în avioane, ci pentru că o eroare la 10.000 de metri nu se mai poate repara. La fel, urmărirea manuală a algoritmului pe hârtie e cel mai rapid mod de a prinde o eroare de logică înainte să petreci ore căutând-o în cod.

Ce este urmărirea manuală?

Urmărirea manuală (trace) înseamnă să execuți un algoritm pe hârtie, pas cu pas, cu date concrete — notând valoarea fiecărei variabile după fiecare instrucțiune executată.

Nu ai nevoie de calculator. Hârtie, pix și câteva date de test concrete sunt suficiente.

Cum faci un tabel de urmărire

Algoritmul: calculează suma cifrelor lui 153.

n = 153, suma = 0
Pas 1: suma += 153 % 10 = 3  →  suma = 3,  n = 15
Pas 2: suma += 15 % 10  = 5  →  suma = 8,  n = 1
Pas 3: suma += 1 % 10   = 1  →  suma = 9,  n = 0
Conditie while: 0 > 0 = false → stop
Rezultat: 9 ✓

Sub formă de tabel:

Pasnn % 10suma
Start1530
11533
2158
3019
Stop9
Observația-cheie

Urmărești toate variabilele relevante, nu doar rezultatul final. O valoare intermediară greșită trădează exact unde algoritmul deviază față de ce ai intenționat.

Reguli practice pentru urmărire

  1. Alege date mici și concrete — n=3 sau n=5 sunt de ajuns. Cu n=1000 nu poți urmări manual.
  2. Verifică cazurile limită — ce se întâmplă când n=0? Când n=1? Când toate valorile sunt egale?
  3. Notează condiția de oprire — la while/for, scrie explicit true sau false lângă condiție la fiecare iterație. Altfel e ușor să ratezi o buclă infinită sau una prea scurtă.
  4. Calculează independent rezultatul corect — mai întâi afli cât ar trebui să fie (ex: suma cifrelor lui 153 = 1+5+3 = 9), apoi verifici că algoritmul produce același număr.

Exemplu cu structura alternativă

Algoritmul decide dacă n e perfect pătrat. Testăm cu n=16:

n = 16
radacina = sqrt(16) = 4.0
(int)radacina = 4
4 * 4 = 16 == n → afiseaza "DA"   ✓

Testăm cu n=15:

n = 15
radacina = sqrt(15) ≈ 3.872...
(int)radacina = 3
3 * 3 = 9 ≠ 15 → afiseaza "NU"   ✓
Greșeli frecvente

Greșeala 1: Urmărești cu date prea mari sau prea „normale". n=100 nu testează ce se întâmplă la n=0 sau n=1. Alege intenționat cazuri care pot stresa limitele algoritmului.

Greșeala 2: Calculezi valorile în minte fără să le notezi. Memoria de lucru e limitată — pierzi firul după 2–3 pași. Pune fiecare valoare pe hârtie, chiar dacă pare evident.

Greșeala 3: Urmărești „ca să confirmi" că algoritmul e corect. Urmărirea e eficientă când ești sceptic — întreabă-te la fiecare pas: „de ce această valoare e corectă?".


De reținut în 3 idei:

  • Urmărirea manuală = execuție cu date concrete + notarea valorilor la fiecare pas
  • Tabelul de urmărire (coloane per variabilă, linii per pas) e cel mai clar format
  • Testează mereu cazurile limită — n=0, n=1, valori negative, valori identice

Întrebarea 1 / 3

De ce urmărim manual un algoritm înainte să-l programăm?