III razred – Naredbe za organizaciju ciklusa (FOR, WHILE, REPEAT)

Vrlo često je potrebno da se u nekom programu jedna ista naredba ponavlja više puta. Ukoliko je broj ponavljanja naredbi unapred poznat, moguće je rešiti ovakve situacije uzastopnim navođenjem iste naredbe, ali se to ne preporučuje (programski kod postaje nepregledan i predugačak). Probleme u kojima se unapred ne zna koliko puta je potrebno izvršiti neku naredbu nije moguće rešiti bez poznavanja naredbi za organizaciju ciklusa.

Naredbe ponavljanja omogućavaju višestruko izvršavanje jedne ili više naredbi u toku jednog izvršavanja programa. Naredbe čije se izvršavanje ponavlja u toku jednog izvršavanja programa obrazuju ciklus (petlju).

U Pascal – u postoje tri naredbe za opis ciklusa:

naredba FOR

naredba WHILE

naredba REPEAT

Naredba FOR služi za opis ciklusa kod kojih je broj ponavljanja naredbi unapred poznat, dok naredbe WHILE i REPEAT omogućavaju organizovanje ciklusa sa nepoznatim brojem ponavljanja (koliko puta će se neke naredbe izvršiti zavisi od ispunjenosti određenog uslova).

Svi zadaci koje rešavamo pomoću naredbe FOR, mogu se rešiti i pomoću druge dve naredbe – WHILE i REPEAT. Međutim postoje zadaci koji se obavezno rešavaju sa naredbama WHILE i REPEAT i nije ih moguće rešiti upotrebom naredbe FOR (to su problemi u kojima broj ponavljanja naredbi nije unapred poznat, već zavisi od ispunjenja nekog uslova).

 Naredba FOR – DO

Naredba FOR služi za opis ciklusa kod kojih je broj ponavljanja naredbi unapred poznat. Ovi ciklusi se nazivaju brojački ciklusi. U njima je važan parametar tzv. BROJAČ ili upravljačka promenljiva, čijom se promenom sadržaja prebrojava koliko puta su izvršene naredba u ciklusu.

Naredbu FOR možemo da zapišemo u sledećem obliku:

FOR promenljiva := pv TO kv DO naredba;

pri čemu je:
pv  – početna vrednost brojača
kv  – krajnja vrednost brojača
naredba; – jedna ili više naredbi koje treba izvršiti.

Za brojanje unazad koristi se sledeći oblik naredbe FOR:

FOR promenljiva := kv DOWNTO pv DO naredba;

Na slici je prikazano kako se naredba FOR predstavlja u algoritamskoj šemi.

Brojačka promenljiva mora biti nekog ordinalnog tipa podataka, kod kojeg može da se odredi prethodna i sledeća vrednost (ukoliko ona postoji). U zadacima se najčešće koristi promenljiva tipa INTEGER. Ovo je važno zbog načina na koji se izvršava naredba FOR.

 

Na početku izvršavanja naredbe promenljiva uzima početnu vrednost (pv) i za nju se izvršavaju naredbe ciklusa. Nakon toga se vrednost brojača automatski povećava za 1 (na sledeću vrednost), proverava se da li je nova vrednost brojača veća od krajnje vrednosti (kv), pa ako nije izvršavaju se naredbe ciklusa. I tako redom sve dok brojačka promenljiva ne postane jednaka krajnjoj vrednosti, kada se poslednji put izvršavaju naredbe ciklusa.

 

Umesto jedne naredbe možemo imati i više naredbi u telu ciklusa. Tada organizujemo blok naredbi između rezervisanih reči BEGIN i END. Ovo je neophodno da bi kompajler mogao da prepozna koje naredbe pripadaju ciklusu. U tom slučaju se koristi sledeći opšti oblik naredbe:

FOR promenljiva := pv TO kv DO        
                                                BEGIN
                                                            naredba1;
                                                            naredba2;
                                                            …
                                                            naredbaN;
                                                END;
 

Naredba WHILE – DO 

Druga naredba ponavljanja koja se koristi u programiranju je naredba WHILE. Naredba WHILE se još naziva i naredba ciklusa sa preduslovom. U njoj se najpre proverava da li je ispunjen uslov, pa ako jeste izvršavaju se naredbe ciklusa.

Naredbu WHILE možemo da zapišemo u sledećem obliku:

                                                  WHILE uslov DO naredba;

uslov je logički izraz ili promenljiva koji može imati vrednost TRUE ili FALSE – tačno ili netačno, a naredba – jedna ili više naredbi koje treba izvršiti.

Na slici je prikazano kako se naredba WHILE predstavlja u algoritmu.

Umesto jedne naredbe možemo imati i više naredbi u telu ciklusa i tada organizujemo blok naredbi između rezervisanih reči BEGIN i END. Kao i kod naredbe FOR, obavezno je navođenje ove dve rezervisane reči da bi kompajler znao koje naredbe pripadaju ciklusu. S obzirom da je potrebno menjati vrednost uslova u toku izvršavanja ciklusa najčešće telo ciklusa sadrži više od jedne naredbe. Na slici je prikazan odgovarajući deo algoritma.

Opšti oblik naredbe u kojem imamo više od jedne naredbe se može predstaviti na sledeći način:

 WHILE uslov DO

          BEGIN
                 naredba1;
                 naredba2;
                 
                naredbaN;
                                                       END;
 

Napomena 1: Ukoliko je pri prvom izračunavanju vrednost logičkog izraza uslov neistinita, naredba ciklusa se neće izvršiti nijednom i prelazi se na izvršavanje sledeće naredbe iza naredbe WHILE .

Napomena 2: Da ciklus ne bi bio beskonačan, mora postojati mogućnost promene vrednosti logičkog izraza uslov u naredbi. Drugim rečima vrednost uslova se mora tako menjati da u jednom trenutku postane netačan i da bi se završilo izvršavanje ciklusa (petlje).

 

Naredba REPEAT – UNTIL

Kod naredbe REPEAT uslov za izlazak iz ciklusa se nalazi na kraju, pa se zato ova naredba naziva i naredba ciklusa sa postuslovom.

Opšti oblik naredbe REPEAT je:

REPEAT naredba UNTIL uslov;

Jedan od načina da predstavite naredbu REPEAT u algoritmu prikazan je na slici.

Napomena: Važno je naglasiti da se naredbe ponavljaju dok god je uslov netačan (kod naredbe WHILE naredbe su se ponavljale dok god je uslov tačan).

Umesto jedne naredbe možemo imati više naredbi u telu ciklusa, ali kod ove naredbe nije neophodno koristiti novi blok i rezervisane reči begin i end jer ulogu zagrada preuzimaju rezervisane reči REPEAT i UNTIL.

 

Na časovima teorije i vežbi uradićemo dosta različitih zadataka sa naredbama za organizaciju ciklusa. Ipak potrebno je da i sami uradite nekoliko zadataka za vežbu. Ovde se nalaze rešeni zadaci za vežbanje.

Zadatke za vežbanje naredbi za organizaciju ciklusa (naredbi ponavljanja) urađene na tri različita načina možete preuzeti ovde

FOR WHILE REPEAT zadaci

Ako ste savladali sve tri naredbe i umete samostalno da rešite ove zadatke, pozivam vas da rešite specijalne nagradne zadatke sa naredbama za organizaciju ciklusa i pošaljete vaša rešenja do 25.2.2017. godine. Nagradni zadaci će biti objavljeni na blogu 1.2.2017. godine u 7,00 časova. SREĆNO 🙂

Advertisements
Ovaj unos je objavljen pod III razred Object Pascal/Lazarus, Ostalo, programiranje i označen sa , , , , , . Zabeležite stalnu vezu.

Ostavite odgovor

Popunite detalje ispod ili pritisnite na ikonicu da biste se prijavili:

WordPress.com logo

Komentarišet koristeći svoj WordPress.com nalog. Odjavite se / Promeni )

Slika na Tviteru

Komentarišet koristeći svoj Twitter nalog. Odjavite se / Promeni )

Fejsbukova fotografija

Komentarišet koristeći svoj Facebook nalog. Odjavite se / Promeni )

Google+ photo

Komentarišet koristeći svoj Google+ nalog. Odjavite se / Promeni )

Povezivanje sa %s