Informatică Gimnaziu (5-8)

Testarea si depanarea algoritmilor (debugging manual)

Testarea si depanarea algoritmilor reprezinta un proces esential in programare, prin care identificam si corectam erorile (bug-uri) din codul scris. In aceasta lectie, ne concentram pe depanarea manuala, adica pe tehnici pe care le putem aplica fara ajutorul unor instrumente automate avansate, doar cu creionul, hartia si gandirea logica. Erorile pot fi de trei tipuri principale: erori de sintaxa (greseli de scriere a instructiunilor), erori de executie (cand programul se opreste brusc, de exemplu impartire la zero) si erori logice (cand programul ruleaza, dar da rezultate gresite).

Depanarea manuala inseamna sa citim codul cu atentie, sa simulam executia pas cu pas pe hartie (numita si 'executie de masa' – desk checking) si sa verificam daca variabilele isi schimba valorile corect. Un alt instrument util este 'afisarea de diagnostic' (debug printing) – adaugam temporar instructiuni care afiseaza valorile unor variabile in anumite puncte cheie, pentru a vedea ce se intampla. Tehnica 'divide et impera' (imparte si stapaneste) ne ajuta: izolam portiunea de cod suspecta si o testam separat.

Un exemplu frecvent de eroare logica: intr-un algoritm care calculeaza suma numerelor pare de la 1 la n, uitam sa crestem contorul sau conditionam gresit paritatea. Pentru a testa eficient, alegem date de intrare variate: valori limita (0, 1, n maxim), valori negative (daca e cazul), si valori obisnuite. Scopul depanarii nu este doar sa repari o eroare, ci sa intelegi cauza profunda pentru a preveni erori similare.

In concluzie, un programator bun nu scrie doar cod, ci si testeaza sistematic si depanaza metodic, transformand greselile in oportunitati de invatare.

Exemple

  • Exemplul 1: Algoritm gresit pentru calculul mediei a doua numere. Cod initial: a = 5; b = 7; medie = a + b / 2; Eroare: lipsa parantezelor – se calculeaza mai intai b/2, apoi se aduna a. Executie manuala: a=5, b=7, b/2=3.5, medie=8.5 (gresit). Corect: medie = (a + b) / 2 => 12/2=6. Test: alegem a=0, b=0 => medie corecta 0. Explicatie: ordinea operatiilor conteaza; depanare prin executie pe hartie releva imediat eroarea.
  • Exemplul 2: Algoritm care afiseaza numerele de la 1 la 5, dar bucla ruleaza infinit. Cod: i = 1; while (i <= 5) { print(i); } Lipseste incrementarea lui i – conditia ramane mereu adevarata. Executie manuala: i=1, afiseaza 1, i tot 1, repeta la nesfarsit. Corect: adaugam i = i + 1 in interiorul buclei. Test: simulam pasii – i=1, afis 1, i=2, afis 2, ..., i=5, afis 5, i=6, conditia falsa, oprire.
  • Exemplul 3: Algoritm care verifica daca un numar este par: function estePar(n) { daca n % 2 == 0 atunci returneaza 'da' altfel returneaza 'nu' } Dar din greseala scriem 'n % 2 == 1' pentru conditia de par. Executie manuala: n=4, 4%2=0, 0==1? fals, returneaza 'nu' (gresit). Test: alegem n=2, 3, 0, -2. Pentru n=0, 0%2=0, 0==1 fals, returneaza 'nu' (gresit, 0 e par). Depanare: observam ca am inversat conditia; corect este n % 2 == 0.

Concepte cheie: Bug (eroare de programare), Depanare manuala (manual debugging), Executie de masa (desk checking), Eroare de sintaxa, Eroare de executie, Eroare logica, Afisare de diagnostic (debug print), Testare cu valori limita

Vrei exerciții pe lecția asta + AI care te ajută pas cu pas?
Cont gratuit — 20 întrebări AI/zi, exerciții nelimitate.

Creează cont