Visual Basic Díl 3. - Rozhodovací Struktury a Dobré programátorské návyky

Zdroj: SOOM.cz [ISSN 1804-7270]
Autor: S0meB0dy
Datum: 19.8.2004
Hodnocení/Hlasovalo: 2/1

Ve třetím díle seriálu si ukážeme rozhodovací struktury If...Then...Else, Select Case a také si povíme něco o dobrých programátorských návycích

Dobré programátorské návyky
V předchozích dvou kapitolách jsem vás tzv. dobrými programátorskými návyky nechtěl zbytečně zatěžovat. Zpočátku se vám bude zdát že se jedná o věci zbytečné ale věřte mi až budete programovat nějaký větší projekt určitě je oceníte. Takže co to vlatstně je:

Psaní komentářů
Do programového kódu si můžete pomocí znaku ' vložit na konec řádky komentář, který při kompilaci překladač ignoruje, ale pokud bude po vás někdo kód číst, nebo budete kód později sami upravovat, jistě oceníte jak se za pomoci komentářů člověk v kódu rychle zorientuje. Příklad:

Label1.Caption = "Hello, World" 'Vlastnost Caption komponenty Label1 se změnila na hodnotu Hello, World

Pozn. Samozřejmně že nebudete přidávat komentáře k takto jednoduchým procedurám, jedná se pouze o příklad.

Pojmenovávání komponent
Jistě jste si všimly že pokud umístíte na formulář např. komponentu CommandButton její název, neboli hodnota name, je Command1 když přidáte další tak Command2 atd. Při rozsáhlejším projektu však doporučuji názvy měnit, kvůli přehlednosti, a to podle toho co bude daná komponenta v programu představovat a také jaký je to druh komponenty např. tlačítko které ukončí program se bude jmenovat cmdKonec.

Rozhodovací struktura If...Then...Else
V překladu Pokud...Tak...Jinak. Nejlepší bude když si hned ukážeme příklad a vysvětlení.

1.Umístěte na formulář komponenty CommandButton(cmdPotvrd ;-)) a TextBox(txtHeslo) Popisky si jistě domyslíte sami a doufám že jste pochopili co je v závorkách pokud ne tak si zvova a pozorně přečtěte "Dobré programátorské návyky".
2.Nyní umístíme do programu další formulář, na hlavním panelu přes Project -> Add Form a z nabídky vyberte hned ten první Form, pojmenujte ho frmGranted a jeho vlastnost Visible změňte na hodnotu False.
3.Vraťte se na Form1, poklepejte komponentu cmdPotvrdit a piště:

If txtHeslo.Text = "Password" Then
frmGranted.Visible = True
Else
End
End If

Pozn. Mezi If a Then můžeze vlkládat i proměnné a pomocí operátoru And(a) nebo Or(nebo) třeba i více podmínek najedou. Podívejte se na následující příklady

If Login = "Iam" And Heslo = "Password" Then 'Pokud jsou splněny obě podmínky tak

If A = "1" Or B = "2" Then 'Pokud je splněna alespoň jedna podmínka tak

4.Spusťte program a do txtHeslo napište cokoliv, kromě Password, program by se měl ukončit. Teď spusťte program znovu a do txtHeslo napiště Password, pokud je vše správně měl by se zobrazit formlulář frmGranted.

Rozbor kódu
V první rádku jsme řekli, že pokud se bude hodnota vlastnosti Text komponenty txtHeslo rovnat Password tak se stane... a co se stane jsme určily na dalším řádku, když jsme změnili hodnotu vlastnosti Visible, neboli viditelnost na True, tedy povoleno. Na třetím řádku jsme napsali příkaz Else který udává, co se stane pokud podmínka v prvním řádku nebude splněna a na posledním řádku jsme tedy určily že se jinak program ukončí.

Rozhodovací strukrura Select Case
Obdobou If...Then...Else je struktura Select Case ta je vhodná např. při praci s komponentou ListBox Nyní vytvoříme program který nám napíše podrobnosti o pizze kterou si vybereme ze seznamu

1.Vložte na formulář komponenty ListBox(lbPizza) a Label(lblPodrobnosti).
2.Poklepejte na formulář a pište:

lbPizza.AddItem "Šunková"
lbPizza.AddItem "Sýrová"
lbPizza.AddItem "Žampionová"

3.Vraťte se zpět na formulář, poklepejte komponentu lbPizza a piště:

Select Case lbPizza.ListIndex
Case 0
lblPodrobnosti.Caption = "Šunka, sýr, rajčata a bazalka"
Case 1
lblPodrobnosti.Caption = "Sýr, sýr, sýr... a bazalka :-)"
Case 2
lblPodrobnosti.Caption = "Žmpiony, Šunka, rajčata a bazalka"
End Select


4.Nyní spusťte program a klikejte postupně na položky v seznamu, na komponentě lblPodrobnosti by se měli pokaždé vypsat jiné informace.

Rozbror kódu
V prvních třech řádcích jsme doplnili do komponenty lbPizza položky 0-2 kdy 0 je první, 1 druhá atd. Poté jsme příkazy Select Case lbPizza.ListIndex určily v Case budou položky ze seznamu a poté již následoval příkas Case 0 který řekl Pokud je hodnota ListIndex rovna 0 stane se... a to jsme doplnili na dalším řádku, obdobně jsme nadefinovali také Case 1 a Case 2.

Úloha:
Pokuste se vytvořit hru která bude simulovat vyherní automat

Nápověda: Doufám že jste četli předchozí kapitolu bez ní to zřejmně nepůjde :-), a můžete se také nechat inspirovat, stačí kliknout ZDE

Pozn. Tím přičítáním do Spins, a USD si nelamte hlavu jedná se o veřejné proměnné v Modulu, ale o tom až později.