Dodatak - Kako se vrši debugging u Code::Blocks
2. Unos jednostavnog programa
- U datoteku unesite programski kod za program u kojem treba da se učitavaju tri broja, izračunava njihova suma a zatim tu sumu treba ispisati na ekran. Najpre treba izbrisati postojeći kod koji je automatski generisan prilikom kreiranja projekta.
Napomena:
Redne brojeve linija nemojte unositi. Ti će nam brojevi u sledećem
tekstu služiti pri objašnjavanju i lakšem pozivu u tekstu na neku
konkretnu liniju programskog koda.

Ako niste sigurni gde se nalaze neki od posebnih znakova, pogledajte tastaturu ispred sebe - baz obzira da ki koristite EN sliva ili SR varijantu, postoji i treći način :
Posebni znakovi: Znakove koji nemaju svoj taster možete da unosite tako što držite desni ALT taster (koji je ponekad označen sa AltGr ) i taster u čijem je donjem desnom uglu ispisan traženi znak:

Obratite pažnju da:
\ (backslash) nije isto što i / (slash)
| (pipe) nije isto što i veliko slovo I ili malo slovo l (L) ili broj 1
` (backtick) nije isto što i ' (apostrof)
Još jedan koristen savet: između srpskog/hrvatskog/bosanskog i engleskog rasporeda tastature prebacujemo kombinacijom tastera Alt+Shift.
- Pažljivo još jednom proverite da li ste korektno uneli programski kod. Kada ste sigurni da ste sve ispravno uneli, pređite na njegovo pokretanje izborom opcije u meniju Build -> Build and Run. Kraći način za pokretanje je treća ikonica u drugom redu, koja je predstavljena plavim točkićem preko kojeg je nacrtana crvena strelica udesno. Još kraći način je da pritisnete taster F9 na tastaturi.
Ako ste ispravno pratili uputstvo, vaš jednostavni C program će biti izvršen.

Osim
rezultata izvršenja programa (zaključno sa redom u kojem piše "Suma
unesenih brojeva...", ovaj prozor sadrži i nekoliko korisnih podataka.
Prvi je poratna vrednost (engl. return value) - broj koji se nalazi iza naredbe return u liniji 13. Ovo je korisno u slučaju da imate više return naredbi, jer možete zaključiti koja od njih se izvršila. Drugi podatak je ukupno vreme izvršenja programa.
Da biste zatvorili ovaj prozor, možete pritisnuti bilo koji taster.
2.1 Ispravljanje grešaka
Budući da smo svi ljudska bića, vrlo je verovatno da program neće raditi iz prvog pokušaja. Sledi nekoliko saveta:
- Pročitajte pažljivo tekst greške! Da biste dobili tekst kliknite na karticu Compile Log u dnu ekrana. (ako ne vidite, klik u meniju na View -> Logs).
- Na levoj strani od linije u kojoj je otkrivena greška nalazi se crvena kockica. U zavisnosti od vrste greške, može se desiti da je greška u stvari u prethodnoj liniji, kao što je slučaj na sledećoj slici:

U slučaju sa slike, korisnik je zaboravio staviti znak tačka-zarez u redu iznad reda označenog crvenim pravougaonikom. Poruka koju možete pročiati u kartici Build messages glasi:
syntax error before "printf"
Dakle, before (na engleskom: prije) - greška je otkrivena na komandi printf jer je na tom mestu očekivan znak tačka-zarez ( u C-programskom jeziku, razmaci i novi redovi se jednostavno ignorišu, dakle mogli ste zaista otkucati ; neposredno pre printf i program bi radio).
Ono što treba uraditi u ovom slučaju je: postaviti kursor na kraj prethodnog reda koji počinje sa scanf(...) i otkucati znak tačka-zarez (;). Zatim ponovo pokrenite Build&Run.
3. Pregled datoteka i pokretanje programa bez Code::Blocks okruženja
- Pomoću Windows Explorera potražite lokaciju vaše izvršne datoteke u folderu gde ste kreirali projekat.
- Možete primetiti ikonicu sa kockicama i opisom project file (Code::Blocks projekat) i ikonicu sa opisom .C (sam program).
- Ovu drugu datoteku možete otvoriti npr. u programu Notepad tako što kliknete na nju desnim tasterom miša, i izaberete Open Width -> Notepad.
- Pored ovoga, možete uočiti folder pod nazivom bin, u kojem se nalazi folder Debug, a u njemu datoteka koja se zove kao i naš projekat. Ikona datoteke simbolizuje prazan prostor. Ovo je u stvari sam naš program. Možete dvoklikom na ovu datoteku da pokrenete program.
Takođe, ako želite da pošaljete program nekome ko nema Code::Blocks (ili neko drugo C razvojno okruženje), dovoljno je da pošaljete ovu datoteku.
Možete da primetite da, nakon što unesete treći broj, program se zatvori. To je zato što se konzolni programi zatvaraju odmah po završetku. To možete zaobići tako što u programski kod dodate neku naredbu koja zaustavlja izvršenje (npr.još jedan scanf) ili tako što napravite prečicu (eng.shortcut) do programa u kojoj ćete definisati da se prozor treba zadržati.
4. Postavljanje prekidnih tački
4.1 Načini postavljanja i uklanjanja prekidnih tački
Prekidne tačke nam omogućavaju da na određenim mestima u fazi ispravljanja programa napravimo prekid izvođanja programa. Postavljanje prekidne tačke obavljamo na sledeći način:
- Pozicioniranje na liniju u programu u kojoj želimo postaviti prekidnu tačku
- Izabrati Debug ->Toggle Breakpoint ili
- napraviti desni klik miša a zatim izabrati Toggle Breakpoint ili
- kliknite u sivi prostor sa leve strane programskog koda ali desno od broja linije ili
- pritisnite taster F5.
- Isti redosled akcija deaktivira prekidnu tačku na datoj lokaciji
Nakon postavljene prekidne tačke na sivoj traci levo od teksta se pojavljuje crveni kružić. To je mesto na koej trebate da kliknete da biste (de)aktivirali prekidnu tačku.
4.2 Postavljanje prekidnih tački u našem programu
Napravite sledeće korake:
- Postavite prekidnu tačku u liniji 11 - suma=br1+br2+br3;
- Sada pokrenite program izborom opcije u meniju Debug -> Start ili funkcijskim tasterom F8.
- Izvršavanje programa će biti prekinuto u spomenutoj liniji. Sada možemo da vidimo koje trenutno vrednosti imaju varijable br1, br2 i br3.
- U meniju izaberite opciju Debug -> Debugging windows -> Watches. Pojaviće se prozor za nadzor (praćenje) varijabli (promenljivih).
- Kliknite desnim tasterom miša na ovaj prozor i izaberite opciju Add watch. Zatim u prozor koji se pojavi unesite naziv varijable koju želite nadzirati - npr.br1. Pogledajte na sledećoj slici prikaz kako bi vaš ekran trebao izgledati:

U prozoru Watch možemo da unesemo jedno ispod drugog nazive varijabli kao i jednostavnije (npr. matematičke) izraze čije vrednosti želimo videti u prekidnoj tački. U ovom primeru, možete videti da je vrednost varijable br1 = 1.
4.3 Ostale opcije u meniju Debug
U meniju Debug nalazi se još nekoliko važnih opcija koje mogu da budu korisne tokom ispravljanja programa. Spomenućemo samo najčešće korišćene:
- Stop debugger: Omogućuje prekid izvođenja programa i isključuje debugging režim. Kada ponovo kliknete na Debug -> Start, izvođenje će početi ispočetka.
- Continue: Omogućuje da se nastavi izvođenje programa od one tačke u kojoj je izvršavanje programa trenutno zaustavljeno.
- Next line: Izvodi samo sledeću liniju programa (i ništa više). Ako je sledeća naredba poziv potprograma, potprogram se u celosti izvede, a izvođenje se zaustavlja u sledećoj naredbi iza poziva potprograma.
- Next instruction:
Izvodi sledeću naredbu. Podsetimo se da razmaci i novi redovi ne znače
ništa u C-u, tako da se može više naredbi nalaziti u istoj liniji, ili
se jedna naredba može prostirati preko više linija.
- Step into: Izvodi samo sledeću naredbu programa (i ništa više). Ako je sledeća naredba poziv potprograma, izvođenje programa se nastavlja na prvoj naredbi u tom potprogramu.
- Run to cursor: Izvodi sve naredbe do trenutne lokacije na kojoj se nalazi kursor za unos teksta.
Svim
spomenutim naredbama možete pristupiti i preko ikona koje se nalaze u
trećem redu, nakon što pokrenete debug režim. Ako želite da zatvorite
ovaj prozor za nadzor varijabli, kliknite na X u njegovom gornjem desnom
uglu.
4.4 Eksperimentisanje sa izvršavanjem programa naredbu po naredbu
- Izvedite program naredbu po naredbu koristeći opciju Debug -> Next line ili funkcijski taster F7.
- Tokom izvođenja programa u prozoru Watches posmatrajte šte se događa sa varijablama br1, br2, br3 i suma.
Šta sve moramo izvesti da bismo ovo postigli?
5. Unos i izvršenje složenijeg programa
Unesite sledeći program:

- Analizirajte program
- Kompajlirajte program
- Testirajte program tako što ćete uneti tri puta različite vrednosti za poluprečnik
6. Zadatak za proveru razumevanja prvog zadatka
6.1 Izmenite prethodni program tako da program pored površine kruga i zapremine kugle sa poluprečnikom R izračunava i površinu lopte sa tim poluprečnikom
Napomena: površina lopte se računa po formuli: P=4*R2, gde je R - poluprečnik lopte.
7. Zadaci za samostalnu vežbu
7.1 Napraviti program koji učitava koordinate dve tačke u trodimenzionalnom prostoru:
Tačke t1 i t2 su definisane kao trojke:
t1=(x1, y1, z1), t2=(x2, y2, z2)
Kao izlaz, program treba da daje udaljenost između tih tačaka.
Napomena: Za kvadratni koren koristiti funkciju sqrt() koja je definisana u datoteci math.h
Na primer, naredba a=sqrt(9); će izračunati kvadratni koren od 9 i dodeliti izračunatu vrednost varijabli a.