Programovanie makier v LibreOffice: Chyby (1)

LO.png Čakajú nás nie veľmi obľúbená téma v programovaní, avšak je dôležitou súčasťou samotného procesu tvorby programov. Má to mnoho mien, napríklad bugs, errors, fails alebo po slovenský chyby či zlyhania.  

Úvod do chýb

V tomto seriáli sme sa už o chyby obtreli v staršej časti seriálu. Avšak, bolo to len také dotknutie sa tejto problematiky. Táto problematika je zaujímavá a prínosná i pre začiatočníkov. Tak poďme si o tom niečo povedať. 

Samotné chýby delíme na compile-time chyby, run-time chyby a logické chyby. 

Compile-time chyby

Do kategórie compile-time chyby patria všetky prehrešky, ktoré spáchame na syntaxi jazyka StarBasic. Stačí ak zabudnete na nejakú bodku a hneď máme na krku chybovú hlášku. Tak ako je potrebné dodržovať gramatiku v materinskom jazyku (alebo hocijakom inom ľudskom jazyku) tak pri programovacích jazykoch je to obzvlášť dôležité. Bez toho by váš chudáčik procesor nevedel rozlúštiť, čo od neho chcete. Preto je dodržiavanie gramatiky veľmi dôležité a ak tento požiadavok nesplníte, program sa nespustí. 

1. program: Ukážka na compile-time errors

Sub Example REM začiatok procedúry
 Dim x As Integer REM deklarácie premenných
 Dim y As Integer
 Dim z As Integer
 
 x = 5 REM priradenie hodnôt premenným 
 y = 6
 z = 7
 
 REM výpis na obrazovku
 
 MsgBox "Mocnina: čísla: " & x & " je " & x^2 & Chr(10) & 
"Mocnina: čísla: " & y & " je " & y^2 & Chr(10) & "Mocnina: čísla: " & z & " je 
" & z^2 & Chr(10) & "Koniec programu".
 End Sub REM koniec procedúry

Chybová hláška Chybová hláška

Rozbor makra:

Kód vyzerá v poriadku na prvý pohľad. Ale kde je zrada? Síce sme neurobili žiadnu skomoloneninu  mien príkazov a rovnako sme neporušili žiadny deklaračný proces premenných. Avšak, každý nadbytočný znak tam, kde nemá byť je chybou. V tomto prípade bodka sa nemôže nachádzať mimo reťazca.

Run-time chyby

Run-time chyby si prostredie pri kontrole makra pred spustením nevšimne. Je to ten druh chýb, ktoré sa vyvinú počas behu makra. Medzi ne patrí napr. presah poľa mimo vymedzený rozsah. Pri tomto type chýb sa najviac spomína problém s delením 0. Ako vieme na jedno základné pravidlo z matematiky, že nulou nikdy nedelíme. Pri run-time chybách môžeme makro bez problémov spustiť. Počas behu makra sa môže run-time chyba prejaviť. Obvykle nás nato upozorní chybová hláška a makro sa zastaví.

2. program: Príklad na run-time chybu pri delení nulou. 

Sub Example
 Dim pole(3 To 6) As Integer
 
 pole(3) = 2
 pole(4) = 10
 pole(5) = 44
 pole(6) = 11
 
 MsgBox "Vitam ta užívateľ! Niečo ti ukážem! 
 Nie neboj sa, žiadný vírus, prisahám!"
 
 Dim x As Integer
 
 x = 2
 
 Dim y As Integer
 Dim retazec As String
 
 For i = 3 To 6 REM cyklus
  retazec = retazec & pole(i)/x & Chr(10) 
 
  If i = 6 Then REM podmienka
   retazec = retazec & pole(i)/y & Chr(10)
  End If
 Next
 
 MsgBox retazec
 End Sub

Hláška Hláška

Chybová hláška Chybová hláška

Rozbor makra: Na začiatku definujeme pole s indexami od 3 do 6. Následne k prvkom poľa s indexami priradíme hodnoty. Vytvoríme cyklus, v ktorom každý prvok poľa vydelíme číslom dva. Ak cyklus narazí na index šesť, tak sa splní podmienka a vtedy šiesty prvok poľa bude vydelený nulou. A pri tejto nedovolenej operácii sa má program zrúbať za asistencie chybovej hlášky.

V treťom programe si ukážme presah mimo pamäte. Len mierne modifikujeme kód 2. programu. 

3. program: Príklad na run-time chybu pri presahu poľa

Sub Example
 Dim pole(3 To 6) As Integer
 
 pole(3) = 2
 pole(4) = 10
 pole(5) = 44
 pole(6) = 11
 
 MsgBox "Vitam ta užívateľ! Niečo ti ukážem! 
 Nie neboj sa, žiadný vírus, prisahám!" 
 
 Dim x As Integer
 
 x = 2
 
 Dim y As Integer
 Dim retazec As String
 
 For i = 3 To 7
  retazec = retazec & pole(i)/x & Chr(10)
 Next
 
 MsgBox retazec
 End Sub

Hláška Hláška

Chybová hláška Chybová hláška

Rozbor makra: Tentoraz má cyklus prebiehať od indexu 3 až 7. Ale index poľa s číslom 7 sme nedeklarovali. Výsledok rovnaký ako pri druhom príklade. Stopka pre program a vypísanie chybovej hlášky. 

V druhom diele budeme pokračovať logickými chybami a predstavíme si pár fintičiek pri práce s chybami v makrách.

(Jako ve škole) Průměr: 1.40 | Hodnotilo: 5
 

Komentáře

user avatar neutr
Odpovědět
Programovanie makier v LibreOffice: Chyby (1)
3. 05. 2017, 20:45:35
Jenom malou připomínku a poznámku.

My nepoužíváme VisualBasic, ale StarBasic.

Ještě by to chtělo popsat typy chyb obvyklými výrazy jako syntaktické a sémantické i když tento popis který uvádíte se mi líbí. Přes to bych ještě doporučil dát počeštěný popis například "běhové chyby" k výrazu RunTime Error.
user avatar Eduard Boldižár
Odpovědět
Re:Programovanie makier v LibreOffice: Chyby (1)
4. 05. 2017, 16:54:20
Vďaka, opravím.

Odpovědět

 

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