Matematické funkcie
Makra v LibreOffice podporujú širokú škálu matematických funkcii. Pár z nich si teraz uvedieme.
Atn
- funkcia vráti arcustangens číselného výrazu.
Cos
- funkcia vráti kosínus uhlu v radiánoch.
Sin
- funkcia vráti sínus uhlu v radiánoch.
Tan
- funkcia vráti tangens uhlu v radiánoch.
Log
- funkcia vráti prirodzený logaritmus čísla.
Exp
- funkcia vráti základ prírodzeného logaritmu, kde e = 2,718282 a hodnota e je následne
umocnená zadaným číslom
Fix
- funkcia vráti číslo bez zlomku. Napríklad Fix(10.6) vráti 10
a Fix(-10.6) vráti -10.
Int
- funkcia vráti číslo bez zlomku ale na rozdiel od funkcie Fix v záporných číslach má
iné fungovanie. Napríklad Int(-10.6) vráti -11. Pri Int(10.6) nie je žiadna zmena. Funkcia vráti
číslo 10.
Sqr
- funkcia vráti druhú odmocninu čísla
Abs
- funkcia vráti absolútnu hodnotu čísla.
Sgn
- funkciu rozhodne, či je číslo kladné alebo záporne. Pre kladné číslo vráti hodnotu 1, pre
nulu hodnotu 0 a záporné čísla vráti hodnotu -1.
Hex
- funkcia vráti reťazec, ktorý predstavuje hexadecimálnu (čísla so základom 16) podobu čísla.
Oct
- funkcia vráti osmičkovú reprezentáciu čísla
Rnd- funkcia vráti náhodne číslo
1. program: Matematické funkcie
Sub matFunkcie REM začiatok procedúry
REM následne experimenty s funkciami
MsgBox "Využitie funkcie Atn: "&Atn(22)&Chr(10)&"Využitie funkcie Cos:
"&Cos(55)&Chr(10)&"Využitie funkcie Sin: "&Sin(27)&Chr(10)&"Využitie funkcie Tan:
"&Tan(45)&Chr(10)&"Využitie funkcie Exp: "&Exp(5)&Chr(10)&"Využitie funkcie Log:
"&Log(7)&Chr(10)&"Využitie funkcie Fix: "&Fix(-10.6)&Chr(10)&"Využitie funkcie Int:
"&Int(-10.6)&Chr(10)&"Využitie funkcie Sqr: "&Sqr(16)&Chr(10)&"Využitie funkcie Abs:
"&Abs(-15)&Chr(10)&"Využitie funkcie Sgn: "&Sgn(-125)&Chr(10)&"Využitie funkcie Hex: "&
Hex(77)&Chr(10)&"Využitie funkcie Oct: "& Oct(99)&Chr(10)&"Využitie funkcie Rnd:
"&Rnd
End Sub REM koniec procedúry
Výsledok
Ošetrenie chyb
Pri písaní makier môžu nastať dve druhy chýb. Syntaktické a logické.
Syntaktické chyby vznikajú pri písaní makier a nedodržaní syntaktických pravidiel jazyka Basic (pre LibreOffice). O týchto chybách sa dozvieme pri kompilácii alebo pri behu makra.
Aké chyby sú logické? Napríklad miesto operátora + dáme – a podobne. Očakávame istý druh výsledku makra ale výsledok je iný.
Okrem syntaktických a logických chybách existujú ešte takzvané chybové stavy pri behu makra. Čo sú zač?
Napríklad, ak užívateľ miesto číselného výrazu napíše reťazec, ale v makre funkcia CDbl nebude vedieť reťazec previesť na premennú typu Double. To bude aj hlavná myšlienka nadchádzajúceho makra.
2. program: Makro na ošetrenie chyby pomocou chybovej hlášky
Sub obsahObdlznika
On Error GoTo ChybaHlasenie REM začiatok analýzy prípadnej chyby
VstupDlzka = InputBox("Zadajte dĺžku obdĺžnika") REM vstup od užívateľa
VstupSirka = InputBox("Zadajte šírku obdĺžnika")
Dlzka = CDbl(VstupDlzka)
Sirka = CDbl(VstupSirka)
obsahObdl = Dlzka * Sirka
MsgBox "Dĺžka obdĺžnika: "& Dlzka & Chr(13) & "Šírka obdĺžnika: "& Sirka & Chr(10) & "Obsah
obdĺžnika: " & obsahObdl
Exit Sub
ChybaHlasenie: REM naša definovaná chybová hláška
MsgBox "Číslo chyby: " & Err & Chr(10) & "Popis chyby: " & Error & Chr(10) & "V riadku: "
& Erl
End Sub
Prvý vstup od užívateľa
Druhý vstup od užívateľa
Výsledok
Analýza makra: Ak užívateľ zadá celé alebo desatinné číslo, funkcia CDbl to bez problémov spracuje. Čo by sa ale stalo, keby užívateľ zadal miesto čísla napríklad text: „Ako sa máš?“?
Vzniklo by chybové hlásenie. V prípade, že za príkazom skoku On Error GoTo dôjde k chybe a nevykoná sa nejaká inštrukcia makra, tak sa vypíše chybová hláška, ktorú zadefinujeme. Pre príkaz On Error GoTo sme v prípade chyby zvolili skok na ChybaHlasenie.
Následne nám funkcia Err vypíše číslo chyby, funkcia Error vráti popis chyby a funkcia Erl vráti číslo riadku, kde sa nachádza chyba. Počíta sa od začiatku modulu, nie od procedúry. Vzdialenosť procedúry od modulu je 1. Po výpise chybovej hlášky sa makro ukončí.