Naredba for..to

     

 

Petlje s unaprijed poznatim brojem ponavljanja ponavljaju blokove naredbi onoliko puta koliko je to zadano definicijom petlje.

Naredba for..to je petlja s unaprijed poznatim brojem ponavljanja. Takve petlje imaju definiran brojač (kontrolna varijabla) čija je zadaća odbrojavati broj prolaza kroz petlju.

Opći oblik naredbe for..to je:

for i:=pocetna to konacna do
naredba;

Brojač i mijenja se od početne vrijednosti do konačne uvećavajući se za 1. Brojač uvijek mora biti rednog tipa podatka (najčešće je to cijeli broj) i kao takvog ga treba najaviti. Također uvijek mora biti početna vrijednost manja ili jednaka konačnoj. U protivnom se naredbe u petlji neće nikada izvršiti.

Ako umjesto jedne naredbe treba ponoviti neki blok naredbi onda je opći oblik petlje:

for i:=pocetna to konacna do

begin

naredba_1;
naredba_2;
.....
naredba_n;

end;

Tijek izvršavanja for..to petlje:

  1. brojač se postavlja na početnu vrijednost
  2. uspoređuje se vrijednost brojača sa konačnom vrijednošću.
  3. ako je vrijednost brojača manja ili jednaka konačnoj vrijednosti izvršava se naredba (blok naredbi) u petlji. Brojač se povećava za 1 i ponavlja se od točke 2.
  4. ako je brojač veći od konačne vrijednosti izlazimo iz petlje i nastavljamo program s prvom naredbom koja slijedi iza petlje.

Napomena:

  • Brojač se uvijek automatski povećava za 1 i ne treba ga mijenjati unutar petlje.
  • početna i konačna vrijednost mogu biti zadani kao izrazi, ali se ne mogu mijenjati unutar petlje
  • ako je pocetna>konacne naredbe u petlji neće se nikada izvršiti.

Zorno for..to petlju to možemo prikazati dijagramom tijeka:

Primjer 1:

Napišimo dio programa koji će na zaslon ispisati 5 puta rečenicu "Sutra je novi dan"

for i:= 1 to 5 do

writeln('sutra je novi dan');

Primjer 2:

Napišimo dio programa koji će na zaslon ispisati prvih 20 prirodnih brojeva.

for i:=1to 20do

write
(i:3);

Nakon što proučite upute sljedećih zadatka riješite ih uporabom FreePascala.

Zadatak 1:

Uporabom for..to petlje pronađite i ispišite sumu prvih n prirodnih brojeva.

Napomena:

Prije početka petlje moramo inicijalizirati varijablu s, što znači dodijeliti joj neku početnu vrijednost.
Ukoliko to ne napravimo mogli bismo dobiti netočne podatke, jer bi se kao početna vrijednost mogla uzeti trenutna vrijednost memorijske lokacije. Neki prevodioci automatski dodjeljuju vrijednost 0 varijablama

s:=0;
for i:=1 to n do
s:=s+i; (*prethodnoj vrijednosti s pribroji trenutni i i to pohrani u varijablu s*)

Pogledajte što se događa u memoriji za n=5

1. korak
- na početku s=0

i

1

s

0+1=1

2. korak

i

2

s

1+2=3

3. korak

i

3

s

3+3=6

4. korak

i

4

s

6+4=10

5. korak

i

5

s

10+5=15

Također promotrite da je suma deklarirana kao longint. To je zato jer integer može prikazati brojeve iz intervala od -32768 do 32767, a to često kod izračuna suma ili produkata nije dovoljno pa se potkradaju pogreške (rezultat ispadne negativan).

Zadatak 2:

Ako učitamo bazu b i eksponent e izračunajte potenciju be.

Napomena be = b*b*b*b*...*b e puta. Dakle moramo bazu b množiti samu sa sobom e puta.

for i:=1 to e do

pot:=pot*b;

Ali ako početnu vrijednost varijable pot stavimo na 0 vrijednost potencije će uvijek biti 0. Obzirom da množenje bilo kojeg broja sa 1 uvijek daje taj broj, pot ćemo inicijalizirati na 1.

Osim petlje for u Pascalu postoji još jedna petlja s unaprijed poznatim brojem ponavljanja. U sljedećoj lekciji pogledajte koja je to petlja.