Řízení běhu makra (2) – Příkazy select case, iif a operátory

programovani.png Příkaz IF má jednodušší a přehlednější variantu, a tou je příkaz CASE. Nemusíte se tak prokousávat stromovou strukturou podmínek. Potřebujete-li pracovat pouze se dvěma podmínkami, použijete IIF. Nakonec se podíváte na to, co to jsou operátory a k čemu se používají.  

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ů.

(Jako ve škole) Průměr: 1.27 | Hodnotilo: 15
 

Přidat názor

 

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích najdete v nápovědě. Diskuzi můžete sledovat pomocí RSS kanálu.

 
Daniel Sedláček

Daniel Sedláček

Amatérsky se věnuji programování maker od podzimu 2010.
Aktivní jsem na fóru od ledna 2011.
Od července 2011 spolupracuji i jako moderátor fóra.

Využívám pouze OpenOffice.org (LibreOffice nemám nainstalován).

 
 
 
woo jaw demo hz