12. Podmíněné příkazy
Přidal/a Jarda dne November 13 2010 11:51:41
V předchozích příkladech jsme často využívali podmíněné větvení programu. Známe ho už z LOGA nebo z navrhování tabulek v tabulkových procesorech. My jsme využívali klasického příkazu IF...THEN. V této kapitole se k tomuto příkazu vrátíme podrobněji a rozšíříme podmíněné příkazy o příkaz SELECT CASE. Samozřejmě bude následovat praktický příklad.


Podmíněný příkaz IF...THEN

Nejjednodušší tvar příkazu vypadá takto:

If podmínka Then prikaz1 [Else prikaz2]


Podmínkou je logický výraz, po jehož splnění se provede příkaz nebo příkazy uvedené za klíčovým slovem Then. Pokud podmínka splněna nebude, vykoná se příkaz za klíčovým slovem Else (Část Else je nepovinná, proto je uvedena v harnatých závorkách) – pokud ji nepoužijeme, podmíněný příkaz reaguje jen na splnění podmínky.

Pokud chceme, aby byly splněny dvě podmínky, můžeme použít logickou spojku And.

If A<=5 And A>=1 Then ... Else …


Rozšířená varianta příkazu If...Then:

If podmínka Then
Prikazy1
[ElseIf podminka2 then
Prikazy2
.
.
.
ElseIf podminkaN Then
PrikazyN
Else
PrikazyN+1]
Else If


V tomto případě lze vytvořit podmínku s několika variantami větvení kódu. Je možno využít libovolný počet příkazů pro každou variantu větvení. Příkaz je vždy ukončen klíčovým slovem End If.. Ukážeme to na jednoduchém příkladě, kdy rozhodujeme o to, zda je číslo kladné, záporné či rovno nule.



Ze cvičných důvodů jsem použil další prvek formuláře, a to tzv. Roletku – výběr ze seznamu – ComboBox (Items: Colection – zde jsem vypsal pod sebe několik celých čísel, které se budou nabízet při kliknutí na malý trojúhelník rozevírací nabídky (name: comVstup) a jako výstup využívám Message Box.




Podmíněný příkaz Select Case


Dalším z příkazů, jejichž činnost závisí na podmínce je příkaz Select Case:
Select Case výraz
Case seznam1
.
.
Case seznam2
.
.
.
.
[Case Else
.
.]
End Select



V případě, že hodnota výraz, vyhovuje v některém z případů, vykoná se blok příkazů následující za ním. Pokud nevyhovuje žádnému případu a bude v kódu část Case Else, provede se blok příkazů uvedený v této části. Rozdíly oproti If...Else:

- výraz se vyhodnotí a jeho hodnota je předána do těla příkazu ( u If...Then se vyhodnocuje pravdivost či nepravdivost)

- v seznamu podmínek nemohou být složité podmínky, například s logickými spojkami.

Jako příklad může sloužit již uvedené určování kladných či záporných čísel upravené pro příkaz SELECT CASE.



Volba podmíněného příkazu
Příkazy jsou sice zaměnitelné a ekvivalentní, ale při špatné volbě je program zbytečně složitý a může dělat problémy jeho modifikace.

Příkaz If...Then používáme:

když máme pouze jednu nebo dvě možnosti – podmínka splněna, či nesplněna
potřebujeme vyhodnotit složitější podmínky

Příkaz Select Case používáme:

když máme více možností

když jsou jednotlivé případy rozlišeny jako hodnoty, jejich seznamy, rozsahy či jednoduché podmínky.
Příklad na podmíněný příkaz Select...Case
Ukážeme si program, který není zdaleka dokončený a dá se s ním ještě dále pracovat. Je to kakový náznak kalkulačky. Jsou na něm vidět možnosti práce s textem a vstupy, je tam i cyklus Select...Case. Berte ho jako drobnou inspiraci.
Vzhled aplikace – jeho vytvoření, úprava formuláře


Opět jsem použil prvek formuláře, tzv. Roletku – výběr ze seznamu – ComboBox (Items: Colection – zde jsem vypsal pod sebe několik operací – pro jednoduchost + a - , které se budou nabízet při kliknutí na malý trojúhelník rozevírací nabídky, Name: cmdOperace).
Dále jsou zde známá tlačítka (nazval jsem je txt1....txt0, cmdVypocet, cmdDalsi), TextBox (txtDisp) a jeden Label.


Zdrojový kód aplikace
Aplikace funguje takto: Do textového okna zadáváme čísla podobně jako na kalkulačce. Roletkou si vyberem číselnou operaci (u nás +, -), stiskneme Další číslo, TextBox se vymaže a můžeme zadat další čílo. Pak můžeme počítat stiskem tlačítka Výpočet.

Ukázky kódu k jednotlivým prvkům formuláře. Nejdříve tlačítka s čísly:
Private Sub txt1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txt1.Click
txtDisp.Text = txtDisp.Text + "1"
End Sub


Jistě dokážete popsat, co kód vykoná.
Nesmíme zapomenout deklarovat proměnné – přímo ve formuláři:
Public Class Form1
Dim A As Integer
Dim B As Integer

Dále tlačítko Další číslo (budu dále vynechávat část, kterou generuje editor VisualBasicu – Private Sub... atd.):
A = Val(txtDisp.Text)
txtDisp.Clear()
MsgBox("Zadej další číslo")


Samotný výpočet se vykoná při stisku tlačítka Výpočet: - zde využijeme roletky (příkaz Select...Case):


Select Case cmdOperace.Text
Case "+"
B = Val(txtDisp.Text)
txtDisp.Text = Val(A + B)
Case "-"
B = Val(txtDisp.Text)
txtDisp.Text = Val(A - B)
End Select


Zde je celá program:


Úkoly:
1.Upravte program – doplňte operace, (nezapoměňte u dělení na podmínku, že nelze dělit nulou!!)