Programovanie makier v LibreOffice: Podmienky (2)

LO.png V článku budeme pokračovať druhým typom vyhodnocovania podmienok. Minule sme mali If, Else If, Else a End If. Dnes to bude Select Case, Case, Case Else a End Select.  

Príkaz Select Case, Case a End Select

Na vyhodnotenie podmienok a na následne vetvenie procedúry môžeme využiť príkazy Select Case, Case, Case Else a End Select. Tieto príkazy sú alternatívou ku konštrukcii If, Else If, Else a End If.

1. príklad: Vyhodnotenie podmienky pomocou príkazov Select Case, Case, Case Else a End Select.

Sub KontrolaVstupu   REM začiatok procedúry
 Dim Vstup As Double   REM deklarácia premennej 
             Vstup = InputBox("Zadajte číselnú hodnotu")   REM vstup od používateľa 
             Select Case Vstup REM začiatok testovania podmienok
                         Case 12, 24   REM vyhodnotenie číselnej premennej a následná odozva pre používateľa
                                    Sprava = "Bolo zadané číslo 12 alebo 24"
                         Case 55, 155, 1555.55
                                    Sprava = "Bolo zadané číslo 55 alebo 155 alebo 1555.55"
                         Case 200, 300 To 400
                                    Sprava = "Bolo zadané číslo 200 alebo číslo v intervale od 300 do 400"
                         Case Else   REM východzia možnosť
                                    Sprava = "Bolo zadané programom nešpecifikované číslo"
             End Select   REM koniec vyhodnocovania číselnej premennej 
             Print Sprava   REM výpis výsledku
 End Sub   REM koniec procedúry

Výsledok:

Zadáme číselnú hodnotu Zadáme číselnú hodnotu

Výsledok Výsledok

Popis makra: Po spustení makra nás dialógove okno výzve zadať číselnú hodnotu. Táto číselná hodnota je viazaná na premennú Vstup. Začiatok vyhodnotenia číselnej hodnoty začína v Select Case a parametrom príkazu je premenná Vstup.

Jednotlivé podmienky testuje Case. Ak už nie je iná možnosť testu premennej, zvolí sa východzia voľba Case Else, ktorá zaručené prebehne. Koniec testovania podmienky je ukončený End Select.

2. príklad: Zoberme si ten istý príklad s malou obmenou, nevyužijeme deklaráciu premennej

Sub KontrolaVstupu   REM začiatok procedúry 
             Vstup = InputBox("Zadajte číselnú hodnotu")   REM vstup od používateľa 
             Select Case Vstup REM začiatok testovania podmienok
                         Case 12, 24   REM vyhodnotenie číselnej premennej a následná odozva pre používateľa
                                    Sprava = "Bolo zadané číslo 12 alebo 24"
                         Case 55, 155, 1555.55
                                    Sprava = "Bolo zadané číslo 55 alebo 155 alebo 1555.55"
                         Case 200, 300 To 400
                                    Sprava = "Bolo zadané číslo 200 alebo číslo v intervale od 300 do 400"
                         Case Else   REM východzia možnosť
                                    Sprava = "Bolo zadané programom nešpecifikované číslo"
             End Select   REM koniec vyhodnocovania číselnej premennej 
             Print Sprava   REM výpis výsledku
 End Sub   REM koniec procedúry

Výsledok:

Využijeme rovnaký vstup ako v prvom príklade Využijeme rovnaký vstup ako v prvom príklade

Výstup Výstup

Popis makra: v tomto príklade sme nedeklarovali premennú. Výstup ako vidíte, je nešpecifikované číslo i napriek tomu, že číslo ktoré napíšete, vie program odhaliť.

Je to preto, lebo funkcia InputBox má návratovú hodnotu typu String (reťazec) a bez deklarácie príkaz Case nerozozná číslo ale práve ten reťazec a test podmienky sa nevykoná. Case nepodporuje automatické konvertovanie typu premennej. Preto sa vykoná len východzia možnosť Case Else.

Konštrukcia príkazov

Najjednoduchší 1. variant konštrukcie je:

Select Case Premenná 
Case Hodnota1
príkaz1
príkaz2
…
End Select

Začína sa Select Case, pri Case sa vyhodnocuje podmienka a pokračuje prípadnými príkazmi podľa návrhu makra. Koniec vyhodnocovania vykoná End Select.

2. variant:

Select Case Premenná
Case Hodnota1
príkaz1
príkaz2
…
Case Hodnota2
príkaz1
príkaz2
…
…
End Select

Ako vidíte v tomto variante, môžete využiť Case koľko len chcete.

3. variant:

Select Case Premenná
             Case Hodnota1
                         príkaz1
                         príkaz2
                         …
             Case Hodnota2
                         príkaz1
                         príkaz2
                         …
             …
             Case Else
                         príkaz1
                         príkaz2
                         …
 End Select

V treťom variante sme využili východziu možnosť Case Else.

Príkaz Case

Argument v príkaze Case Hodnota môže tvoriť nejaký číselná hodnota, napríklad Case 10, alebo údaj, napr. Case „áno“ alebo viac hodnôt oddelenými čiarkami napríklad Case „áno“, „nie“, „neviem“.

Možnosť je argument zapísať i takto: Case 10 To 20. To znamená, že hodnota je v číselnom intervalu od 10 do 20.

(Jako ve škole) Průměr: 1.80 | Hodnotilo: 25
 

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.

 
Eduard Boldižár

Eduard Boldižár

Som redaktorom stránky astrotech.cz. Mám 24 rokov. Čas trávim v IT škole. Medzi moje záľuby patrí astronómia, sci-fi literatúra a programovanie.

 
 
 
woo jaw demo hz