Naredbe za organizaciju ciklusa (Naredbe ponavljanja)

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 (naredba ponavljanja)

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.

primer 1: Napisati program koji će pet puta ispisivati rečenicu “ Ana voli matematiku !!! “

program ANA;
var
i : integer;
begin
for i := 1 to 5 do
writeln (‘ Ana voli matematiku !!!’)
end.

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.

primer 2: Napisati program koji će ispisivati brojeve od 1 do 10.

program Brojevi;
var
i : integer;
begin
for i := 1 to 10 do
write (i, ‘  ‘); (*dodala sam razmak izmedju brojeva*)
end.

Rezultat izvršavanja ovog programa će biti: 1 2 3 4 5 6 7 8 9 10

Napomena: (*dodala sam razmak izmedju brojeva*) predstavlja komentar. Podsetite se šta su komentari u lekciji o elementarnim konstrukcijama u Pascal-u.

Sledeći primer je malo složeniji. U njemu je između ostalog ilustrovana i primena naredbe FOR u kojem je potrebno smanjivati vrednost brojačke promenljive za 1.

primer 3: Napisati program koji će izračunavati vrednost izraza:

program Zadacic;
var  i : integer;
y : real;
begin
y := 0;
for i := 33 downto 1 do y := sqr (3.0 * i + y);
writeln (‘ Vrednost izraza je ‘, y : 8: 2)
end.

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 (naredba ponavljanja)

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).

primer: Napisati program za štampanje prvih 100 prirodnih brojeva.

program brojeviWHILE;
var
broj: integer;
begin
broj := 1;
while broj <= 100 do
begin
write (broj, ‘   ‘);
broj := broj + 1;
end;
end.

Više primera sa naredbama ponavljanja možete pronaći na stranici sa zadacima iz Pascal-a.

Naredba REPEAT (naredba ponavljanja)

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.

primer: Napisati program koji ispisuje neparne prirodne brojeve manje od 150.

program Neparni150;
var
i : integer;
begin
i := 1;
repeat
writeln ( i );
i := i + 2
until i > 150;
end.

Više primera sa naredbama ponavljanja možete pronaći na stranici sa zadacima iz Pascal-a.

Ovaj unos je objavljen pod Programski jezik Pascal i označen sa , , , , , , . Zabeležite stalnu vezu.

4 reagovanja na Naredbe za organizaciju ciklusa (Naredbe ponavljanja)

  1. Povratni ping: Priprema za drugi pismeni zadatak (III razred) | Računarstvo i informatika

  2. Za usvajanje novih znanja vrlo često je od velike koristi da učite o istoj temi iz različitih izvora, a ne samo iz jedne knjige, sveske… Ovom prilikom se zahvaljujem koleginici Jeleni na saradnji i preporučujem učenicima da pogledaju sadržaje na njenom blogu. Pronaći ćete dosta korisnih informacija ne samo iz oblasti informatike, već i iz matematike čije učenje često predstasvlja veliki problem.

    http://profesorka.wordpress.com

  3. Povratni ping: Petlje « On-line učionica

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