Cyklus for


Cyklus for slúži na viacnásobné opakovanie jedného, príp. viacerých príkazov. Použijeme ho vtedy, keď dopredu presne vieme, koľkokrát sa má nejaká činnosť vykonať. Napríklad, ak by sme pomocou programu chceli nakresliť tajničku, ktorej prvé slovo má 10 písmen, tak skôr ako začneme kresliť, vieme, že budeme potrebovať 10 rovnakých štvorcov vedľa seba.

Na to, aby sme mohli začať používať konštrukciu cyklu for, musíme mať k dispozícii riadiacu premennú cyklu, tzv. počítadlo cyklu, ktoré posudzuje počet opakovaní, pričom ju nesmieme zabudnúť zadeklarovať (podobne, ako premenné). Táto premenná ešte pred príkazom cyklu je "obyčajnou" premennou a môžeme ju používať na ľubovoľné účely. Počas cyklu sa stáva počítadlom a nesmie sa nijakým spôsobom do nej priraďovať. Po skončení cyklu (až po záverečný end) je opäť obyčajná premenná. Pre správne fungovanie cyklu for je potrebné, aby bol definovaný interval hodnôt (začiatočná a konečná hranica), pre ktorý sa bude postupne vykonávať zadaný príkaz.

Konštrukciu cyklu for zapíšeme nasledovne:

               Vysvetlivky: 

                           RPC - riadiaca premenná cyklu (musí byť ordinálneho typu)

                           ZH - začiatočná hranica

                           KH - konečná hranica


  • cyklus začína slovom for
  • za ním nasleduje priradenie počiatočnej hodnoty (dolnej hranice) do premennej (napr. I := 0;)
  • to je rezervované slovo a znamená "po"
  • horná hranica určuje, akú maximálnu hodnotu nadobudne premenná I; určuje, koľkokrát sa cyklus vykoná (napr. 10-krát)
  • nasleduje rezervované slovo do, ktoré znamená "urob"
  • nakoniec napíšeme príkaz, ktorý sa má vykonať

Realizácia cyklu for bude teda nasledovná:

  • do premennej (počítadlo cyklu) priradíme interval hodnôt (začiatočnú a konečnú hodnotu, napríklad od 0 po 10), pre ktorý sa bude postupne vykonávať zadaný príkaz. To znamená, že najprv sa do počítadla priradí dolná hodnota (napríklad 0) a vykoná sa príkaz (napríklad príkaz pre kreslenie štvorca). Potom sa počítadlo zvýši o jednotku (teda 0 sa zvýši na 1) a opäť sa vykoná príkaz. Toto sa opakuje, kým počítadlo nepresiahne končenú hodnotu (v našom prípade 10). Vtedy sa cyklus zastaví a pokračuje sa vo vykonávaní nasledujúcich príkazov zapísaných za cyklom for.

Ukážme si využitie cyklu for na kreslenie 10 štvorcov vedľa seba (obr. 55): 

obr. 55 Cyklus for
obr. 55 Cyklus for


Hodnota premennej sa bude zvyšovať každým vykonaním cyklu od dolnej hranice (v našom prípade 0) po hornú hranicu (v našom prípade 9) a po spustení programu (F9) sa zobrazí (obr. 56):

obr. 56 Využitie cyklu for
obr. 56 Využitie cyklu for


Do príkazu na kreslenie štvorca sme okrem číselných súradníc pridali aj premennú (ktorá je zároveň aj riadiacou premennou), pretože má v každom behu cyklu inú hodnotu a zabezpečí tak, že štvorce sa nebudú vykresľovať len na jedno miesto.

Cyklus for však nie je obmedzený len na jeden príkaz. Ak chceme, aby cyklus obsahoval viac príkazov, musíme ich uzatvoriť medzi rezervované (kľúčové) slová begin a end. Takúto programovú konštrukciu nazývame zložený príkaz (obr. 57).


obr. 57 Zložený príkaz cyklu for
obr. 57 Zložený príkaz cyklu for


Teraz sme kreslili obrazce, ktoré sa zväčšovali. Občas sa nám však môže zísť aj opačný princíp, teda kresliť obrazce od najväčšieho po najmenšie, to znamená, že hodnota riadiacej premennej bude klesať. Toto dosiahneme, ak v konštrukcii cyklu for nahradíme rezervované slovo to (krok +1) slovom downto (krok -1). V tomto prípade platí, že začiatočná hranica je väčšia ako konečná hranica, aby cyklus prebehol aspoň raz.

V ďalšom príklade chceme nakresliť 8 zväčšujúcich sa kružníc. Pokiaľ by sme v konštrukcii for-cyklu použili rezervované slovo to, väčšia kružnica by vždy prekryla menšiu, čo ale nechceme, preto použijeme kľúčové slovo downto. Syntax zápisu zostáva okrem toho nemenná (riešenie: obr. 58)

Všimnite si, že pred cyklom for sme nastavili hrúbku pera, ktorá sa počas behu cyklu nemenila (pretože nebola súčasťou opakovaných príkazov v tele cyklu). Vo vnútri cyklu sme použili premennú A, pomocou ktorej sme zmenšovali jednotlivé kružnice, a to tak, že každá nasledujúca kružnica je o 15 pixlov menšia, ako predchádzajúca (obr. 59). 

obr. 59 Zmenšovanie kružníc pomocou downto
obr. 59 Zmenšovanie kružníc pomocou downto


Skúste vytvoriť ďalší program, v ktorom nepoužijete na zmenšovanie kružníc premennú A, ale riadiacu premennú I a porovnajte rozdiel.

Riadiaca premenná nemusí byť len celé číslo, ale môže ňou byť akákoľvek ordinálna (rozlišuje medzi predchádzajúcim a nasledujúcim prvkom iba v zmysle "väčší - menší") premenná, napríklad aj premenná znak (char). Skúsme pomocou premennej typu char vypísať všetky písmená abecedy. Použijeme na to nový komponent Memo, ktorý slúži na zápis textu, nie však dlhšieho ako 64 kb. Zo záložky Standard vyberieme komponent a vložíme ho do formulára. Zobrazí sa nám štvorček s nápisom Memo1, do ktorého pomocou stlačenia tlačidla vypíšeme celú abecedu.

Riadiacu premennú tentokrát nazveme AZ (aby zodpovedala obsahu) a bude údajového typu char. Syntax konštrukcie cyklu for bude podobná ako pri celočíselnej premennej, ale hornú a dolnú hranicu budú tvoriť prvé a posledné písmená abecedy (keďže ide o znak, musí byť ohraničený apostrofmi ALT+39). Text ideme vypisovať do komponentu Memo1, preto jeho meno musíme použiť aj v príkazovom riadku (obr. 60)

Komponent Memo1vlastnosť Lines (je typu array - pole), ktorá zadáva text v komponente, rozdelený do riadkov. Aj keď je Lines sama vlastnosťou komponentu Memo, obsahuje ďalšie vlastnosti, pričom jednou z nich je Add, ktorá pridá do komponentu Memo nový riadok. Text tohto riadku napíšeme za slovo Add do zátvorky, v našom prípade je to premenná (AZ) obsahujúca znaky (char). Po spustení programu dostávame (obr. 61):

obr. 61 Výpis znakov do komponentu Memo
obr. 61 Výpis znakov do komponentu Memo


Vidíme, že nám zobrazilo ako prvé písmeno p. Na to, aby nám zobrazilo všetky písmená od a, je potrebné zväčšiť komponent Memo1 aj formulár podľa potrieb. 

V príklade vyššie (obr. 56) sme kreslili pomocou cyklu for  10 štvorcov vedľa seba. 

Našou úlohou teraz bude tento cyklus zopakovať 9-krát (nakreslí nám pole 10 x 10). Využijeme na to vnorený cyklus, teda cyklus v cykle. Jednoduchšie povedané, to, čo chceme opakovať "zabalíme" do ďalšieho cyklu. Samozrejme, tento nový cyklus musí mať aj novú riadiacu premennú, nazveme ju J (obr. 62).

obr. 62 Vnorený cyklus
obr. 62 Vnorený cyklus


Program funguje nasledovne: najskôr sa nakreslí do jedného riadka vedľa seba 10 štvorcov, potom sa toto kreslenie ešte 9-krát zopakuje, ale za každým nakresleným riadkom štvorčekov sa zväčší Y-ová súradnica tak, aby ďalší rad bol pod predchádzajúcim. Po spustení programu (F9) dostávame (obr. 63):


obr. 63 Vnorený cyklus – štvorčekové pole 10 x 10
obr. 63 Vnorený cyklus – štvorčekové pole 10 x 10
Vytvorte si webové stránky zdarma! Táto stránka bola vytvorená pomocou služby Webnode. Vytvorte si vlastný web zdarma ešte dnes! Vytvoriť stránky