Kľúčové slová: cyklus FOR, cyklus WHILE, cyklus REPEAT

Cyklus so známym počtom opakovaní

for riad_prem := poc_hodnota to kon_hodnota do prikaz;

for riad_prem := poc_hodnota downto kon_hodnota do prikaz;

o       riad_prem - riadiaca premenná cyklu, jej aktuálny stav určuje, koľkýkrát sa opakuje telo cyklu

o       poc_hodnota - počiatočná hodnota riadiacej premennej, pre ktorú sa telo cyklu začne vykonávať

o       kon_hodnota - koncová hodnota riadiacej premennej, pre ktorú sa telo cyklu vykoná posledný raz

o       prikaz - telo cyklu tvorí jeden príkaz, ktorý môže byť jednoduchý alebo zložený

o        cyklus for-to riadiacu premennú každým krokom inkrementuje (zvyšuje o 1)

o        cyklus for-downto riadiacu premennú každým krokom dekrementuje (znižuje o 1)

Napríklad:

for x:=1 to 10 do write(*);                               {vypíše 10 hviezdičiek v riadku za sebou}

for x:=-10 to 10 do write(*);                           {vypíše 21 hviezdičiek v riadku za sebou}

for i:=1 to to 5 do write(i,‘ ‘);                          {vypíše čísla od 1 do 5 oddelené medzerou}

for znak :=‘A‘ to ’Z‘ do write(znak);               {vypíše za sebou všetky veľké písmená}

for a:=n to downto 1 do f:=f*a;                        {vypočíta faktoriál premennej a}

Príklad:

Vytvorte program, ktorý vypíše postupnosť čísel zo zadaného intervalu oddelených čiarkou. Hranice intervalu zadá používateľ. Ukážka

program postupnost;

uses crt;

var a,b,i: integer;

begin

   clrscr;

   write('Zadaj hranice intervalu: ');

   readln(a,b);

   for i:=a to b do write(i, ',');                            {vypíše čísla od a do b oddelené čiarkou}

   readln;

end.

Úlohy:

  1. Vytvorte program na výpočet priemernej známky. Vstupy: počet známok, známky (nezabudnite, že známky môžu byť len čísla 1 až 5). Výstup: priemerná známka
  2. Zostavte program, ktorý vypočíta faktoriál zadaného čísla (n! = n.(n-1)...2.1). Vstup: číslo. Výstup: faktoriál daného čísla.
  3. Vytvorte program, ktorý vykreslí štvorec z hviezdičiek. Vstup: počet hviezdiček na stranu štvorca. Výstup: štvorec.
  4. Modifikujte program tak, aby vykreslil trojuholník z hviezdičiek. Vstup: počet hviezdičiek na stranu trojuholníka. Výstup: trojuholník.
  5. Vytvorte program, ktorý vykreslí prázdny štvorec z hviezdičiek. Vstup: počet hviezdičiek na stranu štvorca. Výstup: prázdny štvorec.
  6. Vytvorte program, ktorý vykreslí obdĺžnik z hviezdičiek. Vstupy: počet hviezdičiek v riadku, počet hviezdičiek v stĺpci. Výstup: obdĺžnik.
  7. Vytvorte program, ktorý vypočíta výslednú sumu na účte, na ktorom bude len zadaný počiatočný vklad po n rokoch so zadaným nemenným úrokom. Vstupy: počiatočný vklad, počet rokov sporenia, úrok v percentách. Výstup: výsledná suma na účte.
  8. Vytvorte program na test malej násobilky, ktorý postupne vygeneruje 15 príkladov, každému správnemu výsledku priradí bod a vypíše počet dosiahnutých bodov spolu s vtipným ohodnotením. V prípade neúspešnej klasifikácie test zopakuje s novými príkladmi.

Cyklus s podmienkou na začiatku

while podmienka do prikaz;

o        ak podmienka platí, vykoná sa prikaz, ktorý tvorí telo cyklu a môže ním byť jednoduchý alebo zložený príkaz

o        ak podmienka neplatí, pokračuje sa nasledujúcim príkazom

o        telo cyklu sa nemusí vykonať ani raz

Príklad:

Vytvorte program na výpočet ciferného súčtu zadaného celého kladného čísla. Ukážka

Program cifernysucet;

uses crt;

var sucet, cifra: integer;

    cislo: longint;

begin

   clrscr;

   write('Zadaj cele kladne cislo: ');

   readln(cislo);

   sucet:=0;

   while cislo>0 do                               {telo cyklu sa vykonáva, kým sa neminú cifry}

         begin

            cifra :=cislo mod 10;

            sucet := sucet + cifra;

            cislo := cislo div 10

         end;

   writeln('Ciferny sucet je ', sucet);

   readln;

end.

Úlohy:

1.      Vytvorte program, ktorý vyráta priemernú výšku žiakov. Zadávanie údajov je ukončené nulou. (Vstupy: jednotlivé výšky ukončené nulou) Výstup: priemerná výška.

Cyklus s podmienkou na konci

repeat

            prikaz_1;

            prikaz_2;

            ...

            prikaz_n

until podmienka;

o        telo cyklu sabude opakovať, až kým sa nesplní podmienka

o        telo cyklu sa vykoná aspoň raz

Príklad:

Modifikujte program, ktorý na základe známky zadanej v číselnom tvare vypíše zodpovedajúce slovné hodnotenie ( 1 – výborný,...) tak, aby bolo možné zadať len vstupy 1 až 5. Ukážka

Program znamky;

uses crt;

var znamka: integer;

begin

   clrscr;

   repeat                                                         

   write('Zadaj znamku v ciselnom tvare: ');

   readln(znamka);

   until  (znamka > 0) and (znamka < 6);           {zadávanie sa opakuje pre nesprávne známky}

   case znamka of

        1: writeln ('vyborny');

        2: writeln ('chvalitebny');

        3: writeln ('dobry');

        4: writeln ('dostatocny');

        5: writeln ('nedostatocny')

   end;

   readln;

end.

Úlohy:

  1. Modifikujte program, ktorý k zadanému poradovému číslu vypíše zodpovedajúci deň v týždni (1 – pondelok,...) tak, aby bolo možné zadať len čísla od 1 do 7.
  2. Modifikujte program, ktorý k zadanému číslu mesiaca vypíše zodpovedajúci slovný variant (1 – január,...), tak aby vstupy mohli byť len od 1 do 12.
  3. Vytvorte program, ktorý simuluje nástup ľudí do výťahu a zistí, či sa daný počet ľudí zmestí do výťahu. Vstupy: nosnosť, počet osôb, hmotnosti osôb. Výstup: do výťahu sa zmestia všetky osoby respektíve počet osôb, ktoré sa zmestia do výťahu tak, aby sa neprekročila jeho nosnosť.

Testy:

Cyklus