Petlja “while”

Postaviću vam jedno čudno pitanje: koliko dugo perete ruke? Nemojte da razmišljate o tome već samo odgovorite. Ako su vam ruke veoma prljave, perete ih veoma dugo, a inače vam treba manje vremena:

while moje_ruke_su_prljave

Perem_ruke;

 

Napomenimo da ovo takođe znači da ako su vam ruke čiste, nećete ih prati.

Ovo je jedan od načina kako se izvršavaju petlje u programskom jeziku C.

 

U opštem slučaju, petlja (engl.loop) izgleda kao :

while(uslov)

obrada;

Ovde možete da vidite sličnost sa instrukcijom if. U čemu je razlika? Kada je uslov ispunjen, if će da izvrši obradu jednom, dok kod while ponavlja se izvršavanje dokle god je uslov ispunjen.

Da ponovimo - karakteristično za programski jezik C: Uslov je ispunjen - true - ako mu je vrednost različita od 0, a uslov nije ispunjen ako mu je vrednost jednaka 0 !

Bitne stvari koje treba znati u vezi petlji:

  • ako je potrebno da se unutar petlje while izvrši više od jedne instrukcije, morate (kao i kod if) da koristite blok :

while(uslov)

{

obrada_1;

obrada_2;

:

obrada_n;

}



  • instrukcija ili instrukcije koje se izvršavaju unutar petlje nazivamo telo petlje;

  • ako odmah na početku uslov “nije ispunjen (engl.false)” (jednak nuli) tj. prvi put kada se proverava njegova vrednost, telo petlje neće biti izvršeno nijednom (kao u prethodnom primeru kada nećete prati ruke ako nisu prljave)

  • u telu petlje bi trebalo da može da se promeni vrednost ispunjenosti uslova, jer ako je uslov na početku ispunjen, i ako mu se uopšte ne promeni vrednost, moglo bi se desiti da se telo petlje beskonačno puta uzvršava (beskonačna petlja ili mrtva petlja - radili smo to ranije) (u prethodnom primeru će pranje ruku da promeni stanje uslova - ruke više neće biti prljave u nekom momentu).

U nastavku je dat primer petlje koja ne može da završi svoje izvršavanje. Ova petlja će beskonačno da na ekran štampa poruku "Zaglavio sam u petlji":

while(1)

{

printf("Zaglavio sam u petlji");

}

 

 

Petlja “do” (ili uradi to bar jednom)

Ono što ste do sada naučili je da petlja while ima dve važne karakteristike:

  • uslov se proverava pre ulaska u telo petlje;

  • u telo petlje se ne ulazi ako uslov nije ispunjen (engl.false).

Ovo ponekad može da zakomplikuje rešavanje problema. Zbog toga u programskom jeziku "C" postoji još jedna vrsta petlje koja se ponaša suprotno od petlje while. Ta druga petlja radi na sledeći način:

  • uslov se proverava nakon izvršenja tela petlje;

  • telo petlje se izvršava bar jedanput, čak i ako uslov nije ispunjen.

Petlja “do” :

do

obrada;

while(uslov);

ili ako ima više od jedne naredbe koja treba da se izvrši u telu petlje, mora da se koristi blok:

do {

obrada_1;

obrada_2;

:

obrada_n;

} while(uslov);

Poslednja izmena: субота, 31. март 2018, 15:25