5. Cykly

Cyklus opakovane vykonáva (zložený) príkaz.

Cyklus s pevným počtom krokov

Príkazy sa vykonajú nastaveným počtom opakovaní.

For prem := min To max Do príkaz;

Opakovane vykonáva príkaz, pričom hodnotu premennej Prem zvyšuje od Min do Max (Max>Min).

For prem := max DownTo min Do príkaz;

To isté ako For s To, ale hodnota premennej sa znižuje.

Príklad 1: Výpis celých čísel od min do max, a opačne.

Vypíšeme čísla od 1 do 10:

For i := 1 To 10 Do write(i,' ');

Doplníme opačný výpis.

For i := 10 DownTo 1 Do write(i,' ');

Program upravíme tak aby načítal minimálne a maximálne číslo výpisu, a potom ich vypísal:

readln(min);
readln(max);
For i := min To max Do write(i,' ');
For i := max DownTo min Do write(i,' ');

Cyklus s podmienkou na konci

Príkaz sa opakovane vykonáva, ak nie je splnená podmienka na konci. Príkaz sa musí vykonať aspoň raz. Ak je podmienka splnená, cyklus sa ukončí.

Repeat
príkaz1;
príkaz2;
...
Until nepravdiva_podmienka;

Príkazy REPEAT-UNTIL nahrádzajú slová BEGIN-END

Príklad 2: Aritmetický priemer známok, ak nepoznáme ich počet.

Budeme načítavať čísla, dokiaľ nenačítame hodnotu 0.

sucet:=0;
pocet:=-1;
Repeat
readln(X)
sucet := sucet + X;
pocet := pocet + 1;
Until X = 0;
priemer := sucet / pocet;

Upravíme podmienku tak, aby zistila čísla mimo rozsah 1 až 5:

Until ((X < 1) or (X > 5));
priemer := sucet / pocet;

Cyklus s podmienkou na začiatku

Príkaz sa opakovane vykonáva, dokiaľ je splnená podmienka na začiatku. Príkaz sa nemusí vykonať ani raz.

While pravdiva_podmienka Do príkaz;

Príklad 3: Výpočet najväčšieho spoločného deliteľa dvoch čísel.

Euklidov algoritmus spočíva v tom že dokiaľ nebude a = b, budú sa vykonávať operácie:
ak a > b potom a := a - b
ak b > a potom b := b - a

While a >< b Do
begin
if a>b then a:=a-b;
if b>a then b:=b-a;
end;

Pomôcky

repat until keypressed; {počká kým nestlačíme klávesu, je potrebná knižnica Crt}

break; {ukončí cyklus}

continue; {skok na dalsie opakovanie}

Príklady na opakovanie

a) cyklus s pevným počtom krokov (For - To)

Príklad 4: Výpočet faktoriálu:

Faktoriál je súčin čísel 1 až N, číže N! = 1 . 2 . 3 ... N. Napríklad 4! = 1 . 2 . 3 . 4 = 24.

vysledok := 1;
For i := 1 To cislo Do vysledok := vysledok * i;

b) cyklus s podmienkou na konci (Repeat - Until)

Príklad 5: Program načítava znak z klávesnice. V prípade že je to 'q' alebo 'Q', tak program ukončí.

repeat
writeln ('Stlac klaves (Q,q: koniec) ');
kl:=readkey;
writeln(kl);
until (kl='q') or (kl='Q');

c) cyklus s podmienkou na začiatku (While - Do)

PrílohaVeľkosť
CyklusSpevnym.odg13.06 KB
CyklusSpevnym.svg34.99 KB
CyklusNaZaciatku.svg14.23 KB
CyklusNaZaciatku.odg11.39 KB
CyklusNaKonci.svg14.33 KB
CyklusNaKonci.odg11.26 KB