(ak potrebujeme viackrát opakovať tie isté alebo podobné príkazy, máme dve možnosti: buď daný príkaz 100 krát opíšeme alebo vytvoríme cyklus a povieme mu, aby príkaz 100 krát zopakoval). Okrem príkazov, ktoré sa majú opakovane vykonávať, je súčasťou každého príkazu cyklu aj špecifikácia riadiaca toto opakovanie. Pri príkazoch repeat resp. while je táto špecifikácia daná podmienkou (výrazom typu boolean), ktorej splnenie alebo nesplnenie znamená opakované vykonávanie cyklu. V príkaze for sa udáva interval hodnôt ordinárneho typu, pre ktoré sa príkaz postupne vykonáva.
Príkaz FOR zaistí predom určený počet opakovaní jednoduchého alebo zloženého príkazu.
Syntax: for
i:= zac to/downto
kon do
príkaz; i - riadiaca premenná zac - počiatočná hodnota kon - koncová hodnota príkaz - jednoduchý alebo zložený príkazPočet opakovaní = ( kon - zac ) + 1 (TO) ( zac - kon ) + 1 (DOWNTO)Riadiaca premenná musí byť ordinárneho typu
a musí sa deklarovať v bloku, ktorý obsahuje príkaz FOR (najlepšie v deklaračnej časti hlavného programu). Počiatočná a koncová hodnota musia byť kompatibilné s typom riadiacej premennej. Obidve sa definujú na začiatku vykonávania cyklu FOR. Príkaz obsiahnutý v príkaze FOR sa vykonáva pre každú jednotlivú hodnotu intervalu počiatočná až koncová hodnota
. Riadiaca premenná vstupuje do opakovania vždy s počiatočnou hodnotou. Keď sa v príkaze FOR použije TO, zvýši sa
hodnota premennej o jednotku pri každom opakovaní. Keď je počiatočná hodnota väčšia ako konečná, príkaz sa neprevedie. Ak sa v príkaze FOR použije DOWNTO, zníži sa
hodnota riadiacej premennej o jednotku pri každom opakovaní príkazu. V tomto prípade, ak je počiatočná hodnota menšia ako koncová príkaz sa neuskutoční. Pri vykonávaní príkazu FOR sa považuje za chybu
zmena hodnoty riadiacej premennej vnoreným príkazom. Po prevedení príkazu FOR je hodnota riadiacej premennej neurčitá
.
Príkaz WHILE zaistí vopred neurčený počet opakovaní jednoduchého alebo zloženého príkazu.
Syntax: while
výraz do
príkaz; alebo while
výraz do
begin
príkaz1; príkaz2; ...
end
;Príkaz WHILE obsahuje výraz, ktorý riadi opakované vykonávanie príkazu. Výraz musí byť štandardného typu boolean a vyhodnocuje sa predtým, než sa uskutoční vnorený príkaz. Vnorený príkaz sa vykonáva tak dlho, pokiaľ je hodnota výrazu True. Ak má výraz hodnotu False, vnorený príkaz sa nevykoná. Vnorený príkaz môže byť jednoduchý alebo zložený.
Príkaz REPEAT zaistí vopred neurčený počet opakovaní jednoduchého alebo zloženého príkazu. Príkaz sa uskutoční najmenej raz.
Syntax: repeat
príkaz until
podmienka; alebo repeat
príkaz1; príkaz2; ... until
podmienka;Príkaz REPEAT obsahuje, podobne ako WHILE, výraz, ktorý riadi opakované vykonávanie príkazu. Výraz musí byť štandardného typu boolean a vyhodnocuje sa po uskutočnení vnoreného príkazu. Vnorený príkaz sa vykonáva tak dlho, pokiaľ nie je hodnota výrazu True.
Príkaz REPEAT použijeme, ak majú byť príkazy v jeho tele vykonané aspoň raz, príkaz WHILE zase použijeme, ak príkazy v jeho tele nemusia prebehnúť ani raz.
Príklady:
Vypíše všetky násobky čísla 3 od 3 do 60. Program NASOBKY;var i : integer; BEGIN for i := 1 to 20 do writeln(3*i); END. |
Vypíše písmená malej anglickej abecedy. Program ABECEDA;var key : char; BEGIN for key := ’a’ to ’z’ do write(key); END. |
Vypíše čísla od 1 do 20 (pomocou WHILE) Program CISLA1;var i : integer; BEGIN i := 1; while i < 21 do begin write(i,’ ’); i := i + 1; end; END. |
Vypíše čísla od 1 do 20 (pomocou REPEAT) Program CISLA2;var i : integer; BEGIN i := 0; repeat i := i + 1; write(i,’ ’); until i = 20; END. |