Bugurile sunt complet normale — chiar și programatorii cu experiență le au. Ceea ce contează este să știi cum să le găsești: urmărești execuția pas cu pas, testezi cu date diferite și identifici exact unde calculatorul face altceva față de ce ai intenționat.
Depanarea (debugging) înseamnă să mergi pe urmele programului ca un detectiv: notezi valorile variabilelor la fiecare pas și compari cu ce ar fi trebuit să fie. Testarea înseamnă să verifici că programul funcționează corect pentru toate cazurile posibile, nu doar pentru exemplul pe care l-ai folosit în timp ce scriai codul.
Un mediu de dezvoltare (IDE) cum este Code::Blocks combină trei unelte într-un singur program: editorul de cod (unde scrii), compilatorul (care transformă codul în program executabil) și debuggerul — unealta care te lasă să pui programul în pauză și să vezi exact ce valori au variabilele în orice moment al execuției.
Gândește-te la depanare ca la un joc video unde poți activa modul „slow-motion": în loc să rulezi totul dintr-o dată și să nu înțelegi unde a mers prost, avansezi câte un pas pe rând și urmărești cum se schimbă fiecare variabilă — exact ca atunci când trasezi un algoritm pe hârtie la ciornă.
Trasarea manuală (urmărirea valorilor pe hârtie) este prima tehnică de depanare pe care o exersezi la clasă: notezi valorile inițiale ale tuturor variabilelor, parcurgi instrucțiunile una câte una și actualizezi valorile după fiecare pas. Această metodă este identică cu ce face debuggerul automat — diferența este că tu ești calculatorul.
Testarea sistematică înseamnă să rulezi programul cu mai multe seturi de date deliberat alese:
La clasa a VIII-a, fiecare produs sumativ include o etapă de testare — nu poți preda proiectul fără să verifici că algoritmul funcționează corect pentru toate cele trei tipuri de cazuri de mai sus.
Breakpoint-ul este un marcaj pe o linie de cod care oprește execuția exact acolo. În Code::Blocks, dai clic în marginea stângă a editorului și apare un cerc roșu. Când pornești programul în modul Debug (opțiunea „Debug → Start" din meniu), execuția se oprește la breakpoint și poți inspecta fiecare variabilă în panoul „Watches" fără să modifici codul.
Dacă trasarea manuală este ca și cum citești o carte cuvânt cu cuvânt, breakpoint-ul este un semn de carte pus exact înaintea paragrafului suspect — sari direct acolo, fără să parcurgi tot ce știi deja că funcționează corect.
Tehnica înjumătățirii (binary search debugging): dacă nu știi unde se află bugul, pune un breakpoint la mijlocul programului. Dacă valorile sunt corecte acolo, bugul e în a doua jumătate; dacă nu, e în prima. Repeți până găsești linia exactă — mult mai rapid decât să parcurgi toate instrucțiunile de la început.