Cyklus s pevným počtom opakovaní
V živote často musíme opakovať nejakú činnosť viackrát, napríklad vypočítať tri
príklady z matematiky, zjesť dva rožky na desiatu, absolvovať v škole 7 vyučovacích hodín.
V Pascale na zápis opakovania nejakej činnosti používame príkazy cyklu. Dnes sa naučíme
používať jeden z nich.
Troška teórie:
Príkaz cyklu je zložený riadiaci príkaz. Používame ho vtedy, keď potrebujeme, aby sa
určitý príkaz alebo príkazy vykonal/vykonali viackrát. Príkaz/príkazy, ktoré sa v cykle opakujú
nazývame telo cyklu.
Príkazy cyklu sú
a) nepodmienený cyklus (cyklus s pevným počtom opakovaní) – používame vtedy, ak
vieme dopredu koľkokrát máme telo cyklu vykonať – for
b) podmienený cyklus – používame vtedy, ak nevieme dopredu koľkokrát treba vykonať
telo cyklu
 s podmienkou ukončenia na začiatku – while
 s podmienkou ukončenia na konci – repeat-until
Cyklus s pevným počtom opakovaní
for RPC:=DH to HH do telo_cyklu;
Fungovanie: RPC je riadiaca premenná cyklu, je vždy typu integer. DH je dolná hranica, celé
číslo. HH je horná hranica, celé číslo. Telo cyklu je jeden príkaz alebo blok príkazov. Na
začiatku sa do RPC priradí hodnota DH a testuje sa podmienka cyklu, teda či RPC<=HH. Ak je
tento výraz pravdivý, vykoná sa telo cyklu, zväčší sa hodnota RPC o 1 a opäť sa testuje
podmienka cyklu. Ak je výsledok opäť pravdivý, pokračuje sa v cykle, ak nie je, pokračuje sa
za telom cyklu. Minimálny počet opakovaní cyklu je 0.
Tento cyklus môže mať aj takýto tvar:
for RPC:=HH downto DH do telo_cyklu;
{downto – dole k}
Fungovanie: Na začiatku sa do RPC priradí hodnota HH a testuje sa podmienka cyklu, teda
či RPC>=DH. Ak je tento výraz pravdivý, vykoná sa telo cyklu, hodnota RPC sa zmenší
o 1 a opäť sa testuje podmienka cyklu. Ak je výsledok opäť pravdivý, pokračuje sa v cykle, ak
nie je, pokračuje sa za telom cyklu. Minimálny počet opakovaní cyklu je 0.
Zbierame skúsenosti:
 Vytvoríme v Lazaruse nový program (Súbor – Nový – Program, vymažeme takmer
celý obsah okna okrem slov begin end., uložíme ho kliknutím na ikonu tri diskety),
ktorý vypíše na obrazovku 10 hviezdičiek. Zdrojový text programu:
var i:integer;
begin
for i:=1 to 10 do write('* ');
readln;
end;

Upravte program tak, aby vykreslil 23 hviezdičiek.

Počítadlo (premennú i) by sme mohli meniť aj od hodnoty 10 do hodnoty 1, lenže
v tomto prípade by sme museli po každom vykonaní tela cyklu znížiť hodnotu
počítadla o 1. Riešenie za týchto podmienok by vyzeralo takto:
var i:integer;
begin
for i:=10 downto 1 do write('* ');
readln;
end.
Ako nám tento cyklus môže uľahčiť zápis zdrojového textu programu (pre mysliteľov):
Na minulej hodine ste riešili nasledujúcu úlohu: Vytvor program, ktorý prečíta
postupne zo vstupného súboru fyzika.txt 4 namerané hodnoty z fyzikálneho laboratórneho
merania (v jednom riadku je jeden údaj) a vypíše na obrazovku priemer nameraných hodnôt.
Zdrojový text programu by mohol vyzerať napr. aj takto:
var f:TextFile;
h1,h2,h3,h4,pr:real;
begin
AssignFile(f,'fyzika.txt');
Reset(f);
readln(f,h1);
readln(f,h2);
readln(f,h3);
readln(f,h4);
CloseFile(f);
pr:=(h1+h2+h3+h4)/4;
writeln('Aritmeticky priemer: ',pr:0:2);
readln;
end.
Využitím nepodmieneného cyklu by náš program spotreboval o dve premenné menej
a bol by o dva riadky dlhší. S narastajúcim počtom nameraných hodnôt by sa v novom
programe zmenil iba počet nameraných hodnôt, nič viac. Zdrojový text upraveného
programu by mohol vyzerať takto:
var f:TextFile;
h,pr:real;
i:integer;
begin
AssignFile(f,'fyzika.txt');
Reset(f);
pr:=0;
for i:=1 to 4 do begin
readln(f,h);
pr:=pr+h;
end;
CloseFile(f);
pr:=pr/4;
writeln('Aritmeticky priemer: ',pr:0:2);
readln;
end.
Precvičujeme, čo sme sa naučili (pre všetkých):
K dispozícii máš aj riešenia úloh, ak si nevieš rady. Riešenie úlohy si najprv odsimuluj
na papieri a snaž sa pochopiť princíp fungovania programu. Keď rozumieš riešeniu, pokús sa
poskladať program sám/a. Ak niečo nevieš, pozri sa na riešenie. Môžeš si povedať, že úlohu
vieš vyriešiť iba vtedy, keď vytvoríš program úplne sám/a.
1. Zostav program, ktorá načíta dve celé čísla a vynásobí ich. Operáciu násobenia realizuj
operáciou sčítania (3 x 8 = 8 + 8 + 8).
2. Zostav program, ktorý vygeneruje a vypíše 10 čísel z intervalu <0, 20> a nakoniec
vypíše ich súčet.
3. Zostav program, ktorý vygeneruje a vypíše 10 čísel z intervalu <0, 100> a nakoniec
vypíše najväčšie vygenerované číslo.
4. Zostav program, ktorý načíta poradové číslo člena Fibonanciovej postupnosti
(predpokladáme, že to bude číslo väčšie nanajvýš rovné 3) a vypíše jeho hodnotu.
O Fibonanciovej postupnosti vieme, že jej prvé dva členy sú rovné 1. Každý ďalší člen je
súčtom predchádzajúcich dvoch. Takže 1. člen = 1; 2. člen = 1; 3. člen = 1+1=2; 4. člen
= 1+2=3; 5. člen = 2+3=5; 6. člen = 3+5=8; 7. člen = 5+8=13; atď.
Zisti, či to už vieš:
1. Akým príkazom je príkaz cyklu?
2. Kedy používame príkaz cyklu?
3. Ako hovoríme príkazu alebo príkazom, ktoré v cykle opakovane vykonávame?
4. Vymenujte príkazy cyklu.
5. Kedy používame podmienené príkazy cyklu?
6. Aká je syntax (zápis) príkazu nepodmieneného cyklu v Pascale?
7. Aký iný tvar môže mať v Pascale príkazu nepodmieneného cyklu?
8. Ako funguje vykonávanie podmieneného cyklu s podmienkou ukončenia na konci
v Pascale?
Download

pracovný list