Programovanie makier v LibreOffice: Cykly (1)

LO.png V minulých dvoch dielach sme sa venovali podmienkam v programovaní makier. V tomto článku začneme rozoberať cykly.  

Predstavte si úlohu, že mate vytvoriť makro, ktoré zapíše do tabuľky rozmeru 10x10 nejaké hodnoty. Začali by ste písať kód makra a zistíte, že musíte písať rovnaký blok kódu viackrát. Nebolo by jednoduchšie vytvoriť krátku konštrukciu, ktorá by opakujúcu činnosť urobila za vás?

Tak ako i iné programovacie jazyky, i jazyk Visual Basic uspôsobený pre LibreOffice podporuje cykly.

Príkaz Do … Loop

Jeden z príkazov, ktorý podporuje opakovanie jednotlivých príkazov alebo rovno celých blokov príkazov, je Do … Loop.

Príklad 1: Ukážka cyklu s pomocou príkazu Do … Loop

Sub KontrolaVstupu   REM začiatok procedúry
    Do  REM začiatok cyklu
        Vstup = InputBox("Zadajte ľubovoľné číslo")  REM vstup od užívateľ
        If IsNumeric(Vstup) = False Then   REM podmienka
            Print "Nechápeš pojmu číslo?"  REM ak je splnená podmienka 
        End If
    Loop Until IsNumeric(Vstup) = True   REM ak je splnená podmienka cyklu, cyklus skončí
    Print "Zadal si číslo: "&Vstup REM výpis výsledku
End Sub   REM koniec procedúry

Napíšeme ľubovoľné číslo Napíšeme ľubovoľné číslo

Výstup, ktorý potrebujeme Výstup, ktorý potrebujeme

Rozbor makra:

Začiatok cyklu definujeme slovom Do. Cyklus končí slovom Loop. Do dialógového okna užívateľ zadá vstupný údaj, ktorý sa priradí do premennej Vstup. Ďalej pomocou funkcii isNumeric zisťujeme, či skutočne bola zadaná číselná hodnota. Jej návratová hodnota je buď True, ak je hodnota číselná alebo False, ak nie je.

Ak sa splní podmienka, čiže ak užívateľ zadá číselnú hodnotu, cyklus skončí a vykonávanie ďalších príkazov za telom cyklu pokračuje. Na vytvorenie podmienky v cykle použijeme kľúčové slovo Until. Za slovom Until píšeme podmienku.

Deklarácia Do … Loop je nasledovná:

Do
    príkazy
    …
Loop

Until verzus While

Cyklus s deklarovanou podmienkou pomocou slova Until sa vykonáva dovtedy, pokým nie je splnená podmienka. Pri While je to presne opačne.  Cyklus sa vykoná len vtedy, ak je splnená podmienka.

Využitie podmienky v cykle s pomocou Until už poznáte, ukážeme si, ako to vyzerá s pomocou While.

Príklad 2:  Ukážka podmienky v cykle pomocou slova While

Sub KontrolaVstupu   REM začiatok procedúry
    Do  REM začiatok cyklu
        Vstup = InputBox("Zadajte ľubovoľné číslo")  REM vstup od užívateľa
        If IsNumeric(Vstup) = False Then   REM podmienka
            Print "Nechápeš pojmu číslo?"  REM ak je splnená podmienka 
        End If
    Loop While IsNumeric(Vstup) = False   REM ak nie je splnená podmienka cyklu, 
cyklus skončí
    Print "Zadal si číslo: "&Vstup REM výpis výsledku
End Sub   REM koniec procedúry

Rozbor makra:

Makro sme pri použití While museli maličko upraviť. Tentoraz podmienka v cykle hovorí, že musí byť splnená podmienka, aby cyklus pokračoval. Inak sa ukončí a pokračuje makro ďalej.

Exit Do

Na ukončenie cyklu môžeme použiť špeciálny príkaz, Exit Do. Využíva sa vo vnútri cyklov a často je využívaný s podmienkami If, ElseIfElse.

Ukážeme si to na príklade.

Príklad 3: Využitie príkazu Exit Do.

Sub KontrolaVstupu   REM začiatok procedúry
    Do  REM začiatok cyklu
        Vstup = InputBox("Zadajte ľubovoľné číslo")  REM vstup od užívateľa
        If IsNumeric(Vstup) = False Then   REM podmienka
            Print "Nechápeš pojmu číslo?"  REM ak je splnená podmienka 
        Else
            Exit Do   REM ukončí cyklus, ak bola splnená východisková podmienka Else
        End If
    Loop 
    Print "Zadal si číslo: "&Vstup REM výpis výsledku
End Sub   REM koniec procedúry

Záverečný opakovací príklad

Príklad 4: V príklade pre zmenu využijeme funkciu IsDate.

Sub KontrolaVstupu   REM začiatok procedúry
    Do  REM začiatok cyklu
        Vstup = InputBox("Zadajte dátum vašeho narodenia")  REM vstup od užívateľa
        If IsDate(Vstup) = False Then   REM podmienka
            Print "Nechápeš pojmu dátum?"  REM ak je splnená podmienka 
        Else
            Exit Do   REM ukončí cyklus, ak bola splnená východisková podmienka Else
        End If
    Loop 
    Print "Zadal si dátum: "&Vstup REM výpis výsledku
End Sub   REM koniec procedúry

Napíšeme ľubovoľný dátum, napríklad dátum narodenia Napíšeme ľubovoľný dátum, napríklad dátum narodenia

Výstup, ktorý požadujeme Výstup, ktorý požadujeme

(Jako ve škole) Průměr: 1.86 | Hodnotilo: 14
 

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