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) |