|
|
| For...Next=udělej
to Y-krát |
|
Smyčky jsou části programu,
které se opakují, dokud se nesplní, co jste chtěli. Můžou
se opakovat: buď několikrát, tedy tolikrát, kolikrát předem
zadáte, nebo dokud se nesplní podmínka. Můžete se tedy
zeptat, kolik je uživateli let 3× a potom vybrat nepravěpodobnější,
nebo nejčastější možnost, nebo se ho ptát, dokud nezadá
správný údaj (tedy číslo nižší než 80, atd. ...). Smyčka
For ... Next udělá blok kódu tedy
několikrát:
For x = 0 To 10
'Udělej to tolikrát, než se z x (teď je to nula) stane 10
MsgBox "Nazdar po " & x & "."
Next 'Konec bloku smyčky
Tak to bychom měli. A teď trocha individuákního
interativizmu:
<SCRIPT
language="VBScript">
<!--
Option Explicit
Dim x, kolikrat
kolikrat = InputBox("Tak kolikrát tě mám dneska
pozdravit?")
For x = 0 To kolikrat
MsgBox "Tohle jest podrav číslo " & x
& "."
Next
-->
</SCRIPT>
Pokud bychom si však vymysleli,
že nechceme, aby to šlo po jedné, můžeme přihodit
atribut Step, který určuje po
kolika se má "skákat":
<SCRIPT
language="VBScript">
<!--
Option Explicit
Dim x, kolikrat
kolikrat = InputBox("Tak kolikrát tě mám dneska
pozdravit (pouze sudé pozdravy)?")
For x = 0 To kolikrat Step 2
MsgBox "Tohle jest podrav číslo " & x
& "."
Next
-->
</SCRIPT>
No a kdyby to mělo bý počítání "pozpátku",
tedy sestupně, od 10ti k 5i, jednoduše nastavíme Step
na -1:
<SCRIPT
language="VBScript">
<!--
Option Explicit
Dim x, kolikrat
kolikrat = InputBox("Tak tentokrát zdravíme od konce na
začátek. Tak kolikrát?")
For x = 0 To kolikrat Step -1
MsgBox "Tohle jest podrav číslo " & x
& "."
Next
-->
</SCRIPT> |
| Do...Loop=dělej to,
dokud to nebude tak a tak |
|
Smyčka typu "udělej to xkrát" je sice jednoduchá,
ale s tím bychom si většinou neystačily. Většinou je třeba
zachovat se interaktivně dle chování uživatele. Na to je
smyčka Do...Loop, která dělá,
dokud je/není podmínka splněna. To podle nastavení
atributem While - opakuj, pokud platí
a Until - dělej, dokud to není
pravda. Until je tedy obdobou jakéhosi
While Not:
<SCRIPT language="VBScript">
<!--
Option Explicit
Dim cislo
While Not cislo < 10 And cislo > 5
cislo = InputBox("Zadej číslo menší než 10 a zároveň
větší než 5 " & _
"(Pokud bude špatné, zeptám se znova):")
WEnd
MsgBox "Děkuji, že jsi zadal " & cislo &
". Je to správně, protože " & _
cislo & " je menší než 10 a větší než
5.", vbExclamation
-->
</SCRIPT> |
| While...WEnd=totéž
co Do...Loop |
|
While...WEnd je vlastně obdoba Do
While...Loop:
<SCRIPT language="VBScript">
<!--
Option Explicit
Dim cislo
Do Until cislo < 10 And cislo > 5
cislo = InputBox("Zadej číslo menší než 10 a zároveň
větší než 5 " & _
"(Pokud bude špatné, zeptám se znova):")
Loop
MsgBox "Děkuji, že jsi zadal " & cislo &
". Je to správně, protože " & _
cislo & " je menší než 10 a větší než
5.", vbExclamation
-->
</SCRIPT> |
| Vnořené bloky=vkládání
bloků a smyček do sebe |
|
Bloky a smyčky jdou do sebe samozřejmě vkládat, tzv. vnořovat.
Malá ukázka testu uživatele:
<SCRIPT language="VBScript">
<!--
Option Explicit
Dim pohlavi, osloveni, vek
Dim cislo, prip, zbytek
If MsgBox("Ahoj, uživateli. Mohu ti nabídnout malý
dotazník?", vbQuestion+vbYesNo) = vbYes Then
Do Until pohlavi = "muž" Or pohlavi = "žena"
pohlavi = InputBox("Teď mi řekni, zda jsi muž
či žena (napiš ""muž"" nebo ""žena""):")
Loop
Select Case pohlavi
Case "muž"
osloveni = "Vážený pane"
prip = ""
Case "žena"
osloveni = "Mladá paní"
prip = "a"
End Select
Do Until vek < 80 And vek > 0
vek = InputBox("A kolik ti je?")
Loop
zbytek = 80 - vek
Do Until cislo < 100 And cislo > 0
cislo = InputBox("A teď se zeptám:Jaké je tvé
oblíbné číslo od 0 do 100?")
Loop
MsgBox osloveni & ", děkuji, že jste
absolboval" & prip & _
" tento dotazník, ve kterém bylo vnořeno
všechno možné do" & _
" hlavního dotazu, zda se má dotazník
vůbec spustit. Je" & _
" podivné, že ač je Vám " &
vek & " let, je Vaše oblíbené číslo " & _
cislo & ". Přeji Vám hodně štěstí
v následujících " & zbytek & _
" letech života!", vbInformation
End If
-->
</SCRIPT> |
|