předchozí lekce (1.12) | obsah kurzu | následující lekce (1.14) |
Pokud budete potřebovat v programu provést nějakou akci s předem známým počtem
opakování, bude nejvhodnější použít cyklus typu For..Next. Jedná se o cyklus, ve kterém
je definován tzv. čítač, který udává kolikrát se má cyklus ještě provést. Čítač je
automaticky systémem zvyšován o jedničku. Směr načítání může být přitom nahoru,
nebo dolů:
Sub Main()
ConsoleClear 'vymaže obsah textového výstupu
ConsoleShow 'zobrazí textové výstupní okno
'cyklus směrem nahoru
For x = 1 to 10
Writeln(x)
Next
'cyklus směrem dolů
For x = 10 to 1 Step -1
Writeln(x)
Next
End Sub
V uvedeném příkladě jsou v programu dva cykly For. První z nich zvyšuje stav čítače x
směrem nahoru, druhý směrem dolů. Všimněte si, že čítač musí být sice deklarován
jako proměnná, ale přiřazení počáteční hodnoty se provádí až v definici cyklu.
Konečná hodnota čítače se pro směr načítání nahoru zadává za klíčovým slovem 'to'.
Pro směr načítání dolů musí být uvedena počáteční hodnota větši než konečná hodnota.
Navíc se musí uvést pomocí Step krok cyklu se zápornou hodnotou. Step udává krok
v jednom cyklu a může být uvedena libovolná číselná nenulová hodnota. Pokud se uvede
například hodnota Step ve velikosti 10, bude se řídící proměnná cyklu zvětšovat o 10.
Pokud budete chtít ve svém programu použít cyklus, jehož ukončení bude záviset na
splnění zadané podmínky, máte možnost použít cyklus typu Do..Loop. Podmínku pro
opakování cyklu můžete přitom uvést buď na začátku cyklu, nebo na jeho konci. Podle toho
budou také vykonávány příkazy obsažené v cyklu. Pokud uvedete podmínky cyklu na jeho
konci, provede se cyklus vždy minimálně jednou, což může být v některých programech
výhodné.
Sub Main()
x = 0
Do 'začátek cyklu
Writeln(x) 'výpis hodnoty čítače
x = x+1 'zvýšení hodnoty čítače
Loop While x < 10 'dokud je výraz pravdivý
x = 0
Do 'začátek cyklu
Writeln(x) 'výpis hodnoty čítače
x = x+1 'zvýšení hodnoty čítače
Loop Until x = 10 'dokud není výraz pravdivý
End Sub
Všimněte si, že v těle cyklu musí být vždy uveden příkaz, který má za následek možnou
změnu vyhodnocení cyklu. Jinak by byl cyklus stále opakován a nedošlo by k jeho
ukončení.
Příkazy jsou vykonávány opakovaně, dokud není splněna (nesplněna) zadaná podmínka
uvedená na konci cyklu. Pokud je v cyklu zadáno While, provádí se příkazy opakovaně tak
dlouho, dokud je podmínka cyklu pravdivá. Při zadání Until v podmínce se budou příkazy
vykonávat opakovaně tak dlouho, dokud není podmínka cyklu splněna. Obdobným
způsobem lze zadat cyklus, kde je platnost podmínky vyhodnocována na začátku cyklu.
V takovém případě však nemusí být podle zadané podmínky a počátečních hodnot cyklus
proveden ani jednou.
Sub Main()
x = 0
Do While x < 10 'dokud je výraz pravdivý
Writeln(x) 'výpis hodnoty čítače
x = x+1 'zvýšení hodnoty čítače
Loop
x = 0
Do Until x = 10 'dokud není výraz pravdivý
Writeln(x) 'výpis hodnoty čítače
x = x+1 'zvýšení hodnoty čítače
Loop
End Sub
Příkazy uvedené mezi klíčovými slovy Repeat a Until se provádí tak dlouho, dokud
není výraz definovaný na konci podmínky pravdivý. Nesmíte přitom zapomenout na
zvýšení hodnoty čítače, případně provést jinou akci, která může mít za následek ukončení
cyklu.
Jako další cyklus můžete použít cyklus While, který vyhodnocuje podmínku opakování
cyklu vždy na jeho počátku. To umožňuje, že pokud není podmínka splněna,
neprovedou se příkazy uvedené v bloku následujícím za definicí cyklu ani jednou. To
může být v některých případech výhodné a je proto nutné se při vlastním programování
rozhodnout, který druh cyklu má být použit.
X = 1
While x < 5 'dokud je výraz pravdivý
Writeln(x * 1.22);
x = x + 1 'zvýšení hodnoty čítače
Wend
Pro zápis podmínek při používání cyklů platí vše co bylo uvedeno u popisu větvení
programu příkazem If. Stejně tak je velmi výhodné a hlavně přehledné v textu
programu odsadit řádky programu uvnitř cyklů o tři prázdné znaky doprava. Viz výše
uvedené příklady. Programy tím získají na přehlednosti. Současně doporučujeme uvádět v
programu poznámky ve formě komentáře. Jak jste si již mohli všimnout, poznámky se
uvádějí ve složených závorkách. Pokud byste na začátku řádku uvedli dvě lomítka, byl by
text až do konce řádku v programu ignorován.
Při programování cyklů si musíte dát pozor na to, aby byly v těle cyklu příkazy umožňující jeho ukončení. Pokud byste měli například cyklus s definovanou podmínkou, která nebude nikdy splněna, běžel by program stále v tomto cyklu a museli byste jej ukončit restartem.
V této lekci jsme se zabývali několika příkazy, které však prováděly podobnou činnost. Příkazy cyklu jsou v programech velmi často používané. Je však nutné si podle požadovaných akcí vybrat nevhodnější příkaz pro cyklus.
předchozí lekce (1.12) | obsah kurzu | následující lekce (1.14) |