Programovanie makier v LibreOffice: Cykly (2)

LO.png V tomto článku využijeme druhý spôsob, ako vytvoriť cyklus v programovaní makier. Tiež si ukážeme príkaz skoku GoTo a príkaz Exit.  

Príkaz For...To...Step...Next

V minulom diele sme podrobne rozoberali tvorbu cyklu pomocou Do...Loop. Tento typ cyklu obvykle využijeme, ak nepoznáme počet iterácii, ktoré sa majú vykonať.

Konštrukcia For...To...Step...Next umožňuje definovať, koľko krát sa cyklus vykoná.

Poďme si pozrieť prvý príklad.

1. príklad: Využitie príkazu For...To...Step...Next

Sub mocninator   REM začiatok procedúry
Vstup% = InputBox("Zadajte celé číslo: ")   REM vstup od užívateľa
For n = 0 To 1 Step 1   REM začiatok cyklu
Vysledok = Vysledok * Vstup   REM výpočet
Next n   REM koniec cyklu a vyhodnotenie, či má pokračovať
Print "Mocnina čísla " & Vstup & " je " & Vysledok   REM vypísanie na obrazovku
End Sub   REM koniec procedúry

Výsledok: Ak zadá užívateľ napríklad celé číslo 5, tak výsledok je mocnina 5, čiže 25.

Výzva pre užívateľa Výzva pre užívateľa

Výsledok Výsledok

Rozbor makra: Cyklus je inicializovaný slovom For, za ktorým nasleduje premenná n.

Rozsah počtu vykonania cyklu je od hodnoty inicializovanej premennej n až po hodnotu definovanú v slove To. Veľkosť skokov je definovaná v slove Step. V našom prípade je to hodnota 1, čiže začne počítať, 0 (prvý cyklus), 1 (druhý cyklus) a cyklus skončí a vykonáva sa makro ďalej.

Zvyšok kódu je už jasný, užívateľské definované číslo sa násobí s výsledkom. Tak dostaneme mocninu rôzneho čísla.

Pozastavme sa ešte nad kľúčovým slovom Next s premennou n. Práve tu dôjde k navýšeniu premennej n o hodnotu definovanej v slove Step. Taktiež Next vyhodnotí, či je v intervale od 0 do 1(v našom konkrétnom prípade).

Príkaz GoTo

Príkaz GoTo využívame na skoky v programe. Najčastejšie sa využíva vtedy, ak je splnená/nesplnená podmienka a potrebujete skočiť na iné miesto vykonávania kódu.

2. príklad: Praktické využitie príkazu GoTo

Sub obvodStvorca   REM začiatok procedúry
sirkaHrany = InputBox("Zadajte celočíselnú šírku hrany štvorca")   REM vstup od užívateľa
If IsNumeric(sirkaHrany) = False Then GoTo Chyba   REM testovanie podmienky
Obvod% = 4 * Cint(sirkaHrany)   REM výpočet
Print "Obvod je: " & Obvod   REM vypísanie na obrazovku
GoTo Koniec   REM využitie príkazu skoku
Chyba: REM kam príkaz GoTo skočí
Print "Fakt mám vás naučiť písať celé čísla?!"   REM výpis
Koniec:  REM kam príkaz GoTo skočí
End Sub   REM koniec procedúry

Výsledok: obvod štvorca, čiže užívateľ zadá napríklad číslo 6, tak obvod štvorca bude 24.

Vstup od používateľa Vstup od používateľa

Výsledok Výsledok

Rozbor: Užívateľ najprv zadá vstupný udaj, ktorý sa vyhodnotí. Ak užívateľ nezadá číslo, tak GoTo príkaz nasmeruje vykonávanie kódu na inom mieste. V tomto prípade vypíše na obrazovku text a končí. Ak užívateľ zadá číslo, vypočíta sa obvod štvorca a následne GoTo ho presunie vykonávanie programu až na Koniec. To znamená, že ak napíšeme „Chyba:“, tam skočí program, ak za GoTo dáme slovo Chyba.

Ešte si povšimnite prevod z reťazca na číselnú hodnotu pomocou CInt.  Pomocou InputBox sme dostali údaj vo forme reťazca, ktorý ale musíme prekonvertovať na celočíselnú hodnotu.

Príkaz Exit

Potrebovali by ste v nejakom vetvení programu ukončiť makro, bez toho aby sa ďalej vykonávalo makro? Použijeme na to príkaz Exit.

Exit sa často využíva v cykloch, kde sú mnoho podmienok a ak jedna nastane, vykoná čo požadujete a skončite makro. Ukážeme si to na príklade, ktorý už poznáte.

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

Sub obvodStvorca  REM začiatok procedúry
sirkaHrany = InputBox("Zadajte celočíselnú šírku hrany štvorca")  REM vstup od užívateľa
If IsNumeric(sirkaHrany) = False Then GoTo Chyba   REM testovanie podmienky
Obvod% = 4 * Cint(sirkaHrany)   REM výpočet 
Print "Obvod je: " & Obvod   REM výpis na obrazovku
Exit Sub   REM ukončenie makra pomocou Exit
Chyba: REM kam skočí príkaz GoTo
Print "Fakt mám vás naučiť písať celé čísla?!" REM výpis na obrazovku 
End Sub  REM koniec procedúry 
(Jako ve škole) Průměr: 4.52 | Hodnotilo: 21
 

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.

 
 
 
woo jaw demo hz