Příkaz SELECT CASE
Variantou příkazu If je příkaz CASE. Tento příkaz funguje na stejném principu jako IF a tedy ověří, zda je zadaná podmínka TRUE, a provede činnost, kterou určíte. Výhodou tohoto příkazu je snazší zadávání podmínek v případech, kdy jich potřebujete zadat větší množství.
CASE je ve takovém případě přehlednější a jednodušší pro použití, než se prokousávat stromovou strukturou podmínek pomocí IF. Stejně jako u IF musí být příkaz ukončen. Zde ukončujete příkazem End Select . Ukažme si příklad na vyhodnocení číslic v Calcu třeba v buňce A1.
sub zkus_select_ case dim cislo as integer cislo = inputbox ( "Vložte číslo do 10" , "Zkouška SELECT CASE " ) select case cislo ' zde určujete, k čemu hodnotíte podmínku case 1 ' v případě, že je číslo 1 exit sub ' ukončíte makro case 2 ' pokud je číslo 2 program1 ' spustíte makro s názvem program1 case 3 to 5 ' je číslo od 3 do 5 program2 ' spustíte program2 case 6 , 8 , 10 ' je pouze 6,8,10 program3 case 7 , 9 print "Zadali jste " + cislo case else ' zadali jste jinou hodnotu print "Číslo mimo rozsah" end select end sub sub program1 print "Ahoj" end sub sub program2 print "Dobrý den" end sub sub program3 print "Nazdar" end sub
Toto makro vás pozdraví podle toho, jaké číslo máte v A1. Pokud A1 obsahuje 1, pak se makro ukončí (exit sub), a pokud číslo nevyhovuje ani jedné z podmínek, makro vás informuje.
Zkuste si zapsat tento příklad pomocí funkce If … Then … Else a brzy poznáte, proč se vám SELECT CASE tak hodí. Samozřejmě lze jednotlivé podmínky dále třídit ať už pomocí IF nebo CASE.
CASE má, jak už to v programování bývá, své zákonitosti, které musíte při zadávání dodržet, jinak program hlásí chybu. Ve většině případů použijete některý ze způsobů zadávání, který byl použit ve „zdravici“. Tedy:
- case 1 – to je přímé určení, tedy podmínka se musí rovnat 1 (stejné jako if cislo = 1 then). Další možný zápis je case IS 1
- case 2, 3, 4 – opět přímé určení, tentokrát více podmínek najednou – podmínka se musí rovnat jednomu z uvedených čísel
- case 5 to 7 – zadání rozmezí jako podmínky – podmínka musí být na stupnici od 5 do 7
- case else – pokud nesouhlasí žádná z podmínek
- case IS > 5 – pokud je podmínka větší než 5 (v tomto případě musíte zadat podobně jako u IF i přímé porovnání).
Stejně jako u IF lze z CASE vyskočit při splnění (nesplnění podmínky), ale nelze do ní vkročit.
SELECT CASE ukončujete příkazem End Select.
IIF
Je možné, že budete potřebovat pracovat pouze se dvěma podmínkami ANO/NE a bude vám stačit vrátit hodnotu, v tomto případě je pro vás zdlouhavé vypisovat podmínky do IF a CASE. Pro toto je nachystaný příkaz IIF.
Výše jsem psal o tom, že funkce Calcu a Basicu nejsou stejné a jejich použití je jiné. Příkaz IIF je jednou z mála výjimek, kdy je použití i zápis téměř totožný.
IIF vyhodnotí podmínku, a je li TRUE, pak vrací první hodnotu, pokud je FALSE, vrací druhou hodnotu.
IIF (podminka1 > podminka2, hodnota1, hodnota2). Toto je praktický zápis příkazu. Vzhledem k tomu, že příkaz vrací jednu z hodnot, je dobré si přiřadit ho k proměnné:
vysledek = IIF (podminka1 > podminka2, hodnota1, hodnota2)
S proměnnou vysledek pak můžete dále pracovat. Pozor, pokud se pokusíte zadat namísto hodnoty příkaz (například podmínka1 > podminka2, program1, program2, pak se postupně provedou oba příkazy (programy). Je to způsobeno tím, že IIF vrací HODNOTU a není určena k příkazům. I z tohoto důvodu ji nebudete tolik využívat, avšak v mnoha případech vám může podstatně ulehčit život.
Operátory
Další věcí, bez které se při psaní maker neobejdete, je znalost základních operátorů. Není se čeho bát, jde o prosté matematické a logické operátory.
Matematické
+ sčítání proměnných
- odečítání proměnných
/ dělení proměnných
* násobení proměnných
^ umocňování proměnných
MOD tento operátor vrátí zbytek po dělení čísla.
Logické
Nejvíce využijete tyto tři základní:
AND logické násobení dvou výrazů (pokud jsou dva výrazy True /pravda/, vrátí True)
OR logický součet dvou výrazů (stačí, pokud je jeden výraz True, vrátí True)
NOT neguje výraz (pokud je výraz True, vrátí False)
Porovnávací
= je rovno
> je větší
< je menší
<= je menší nebo roven
>= je větší nebo roven
Všechny tyto operátory budete používat velice často. Nejdůležitějším z nich je ale operátor [=], tímto nejen porovnáváte, ale zároveň přiřazujete. Bez tohoto operátoru se neobejde jediné makro. Pomocí = deklarujete proměnné, přiřazujete hodnoty do proměnných.
V příštím díle si povíme o řízení běhu programu dělením a jeho podmínkách.
Co bude příště?
Zní to téměř neuvěřitelně, ale z příkazů, které rozdělují programy na více částí, je toto vše. Dva základní příkazy IF a CASE vám budou stačit v absolutní většině programů. Doplňkový IIF využijete pouze výjimečně.
Základy dělení programu znáte. Příště se těšte na cykly, pomocí kterých můžete během chvíle provést velké množství příkazů.