Programovanie makier v LibreOffice: Matematické funkcie a chybové hlášky

LO.png V článku sa pozrieme na niektoré matematické funkcie. Taktiež si ukážeme, ako si ošetriť prípadne chyby typu zlý vstup od užívateľa.  

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 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 Prvý vstup od užívateľa

Druhý vstup od užívateľa Druhý vstup od užívateľa

Výsledok 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čí.

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