Uvod u programski jezik C (3. deo)
Autor: Stefan Nožinić
U prošlom delu smo se dotakli tipova podataka, onih promenljivih nad kojima se mogu izvršiti neke operacije. U ovom delu ćemo diskutovati o uslovnom grananju i kontrolama toka programa i pokazaćemo neke zanimljive primere.
Uslovno grananje
Iako smo do sada naučili osnovne stvari o C-u, nismo bili u mogućnosti da napišemo neke zanimljive programe. Nismo mogli da napišemo program čiji tok zavisi od vrednosti neke promenljive, odnosno od njegovog ulaza. Prva stvar koju ćemo u ovom tekstu objasniti, jeste if naredba koja prima određeni uslov i na osnovu toga da li je uslov ispunjen, izvršava neki određen kod. Ovaj uslov jeste relacija dve promenljive ili promenljive i neke konstantne vrednosti. Pogledajmo sintaksu if naredbe:
if (uslov) { /* .... naredbe koje će biti izvršene ako je uslov ispunjen */ }
Kao što smo i rekli, uslov je relacija pa su neki primeri uslova:
- a == b – poređenje jednakosti dve promenljive tipa int
- a != b – tačno u slučaju da su dve promenljive različite vrednosti
- a > 0 – tačno ako je promenljiva a (tipa /int) veća od nule
Isto tako postoje i „dodaci” za ovu naredbu, a to su else if i else. Prvo se stavlja jedna if naredba, zatim nekoliko else if naredbi i potom jedna else naredba. Naredba else if zadaje drugi uslov u slučaju da onaj pre njega nije ispunjen, dok else obuhvata sve što nije obuhvaćeno u gornjim slučajevima.
Primer: program koji ispisuje da li je broj pozitivan, negativan ili nula:
#includeint main() { int n; // broj u koji unosimo vrednost scanf(" %d", &n); // učitavamo broj if (n>0) { printf("Broj je pozitivan\n"); } else if (n < 0) { printf("Broj je negativan\n"); } else { printf("Broj je nula\n"); } return 0; }
Petlje
Sada je vreme da pokažemo kako se neka određena sekvenca naredbi u našem programu može ponavljati, odnosno izvršavati u krug. Za to služe petlje i najčešće se koriste for i while petlje.
Petlja for se koristi u slučajevima kada znamo tačan broj ponavljanja i tu imamo jednu promenljivu kao brojač, ona dobija početnu vrednost, uslov koji treba da bude ispunjen kako bi se petlja izvršavala u naredbu koja se izvršava posle svakog izvršavanja petlje, odnosno iteracije. Ukoliko uslov potreban za izvršavanje više nije ispunjen, petlja se zaustavlja i nastavlja se dalje izvršavanje programa.
Sintaksa for petlje je:
for (inicijalizacija promenljive; uslov; naredba posle svake iteracije) { /* ... naredbe u petlji koje se izvršavaju tokom svake iteracije ... */ }
Evo primer programa koji ispisuje „0 1 2 3 4 5 6 7 8 9”:
#includeint main() { int brojac; for (brojac = 0; brojac < 10; brojac++) // brojac++ je isto što i brojac = brojac + 1 { printf("%d ", brojac); } return 0; }
Za razliku od for petlje, while petlje se izvršavaju sve dok je jedan određen uslov ispunjen. Nema brojača pa se tako ne može unapred znati koliko će se puta odrediti, odnosno to nije lako razaznati. Kod ove petlje se često dešava da se program „zaglavi” jer je neki uslov stalno ispunjen pa se tako petlja neprekidno izvršava.
Sintaksa:
while (uslov) { /* ... naredbe ... */ }
Evo i primera kako se gore napisani kod sa for petljom mogao napisati korišćenjem while petlje:
#includeint main() { int brojac = 0; while (brojac < 10) { printf("%d ", brojac); brojac++; } return 0; }