Programovanie makier v LibreOffice: Preddefinované štruktúry, príkaz Set a konštanty

LO.png V minulom diele sme si vytvorili vlastné dátové typy. Častejšie budete využívať preddefinované v jazyku Basic pre LibreOffice. Uvidíte, ako sa definujú konštanty a ukážeme si alternatívnu deklaráciu dátového typu. Čaká na vás aj výpočet objemov niektorých vybraných geometrických útvarov.  

Preddefinované dátové typy

Keďže teóriu o štruktúrach poznáte dobre a ich využitie tiež už z minulého článku, ukážeme si len deklarácie preddefinovaného dátového typu.

1. spôsob deklarácie:

Dim mojTyp As New com.sun.star.beans.PropertyValue

2. spôsob deklarácie:

Dim mojTyp : mojTyp = CreateObject("com.sun.star.beans.PropertyValue")

3. spôsob deklarácie:

Dim mojTyp : mojTyp = CreateUnoStruct("com.sun.star.beans.PropertyValue")

Vidíme sa stále opakujúcu časť: com.sun.star.beans.PropertyValue, čo nie je nič iné len odkaz na daný preddefinovaný dátový typ.

Príkaz Set

Ukážeme si alternatívu ku klasickej deklarácii premenných. Môžete použiť túto možnosť miesto deklarácie premenných.

Tento príklad už poznáte z minulého článku.

Príklad 1:  Príklad na príkaz Set

REM definujeme vlastný dátový typ
 Type Vec REM vlastná štrukúra
 Meno As String
 Dlzka As Integer
 Sirka As Integer
 Vyska As Integer
 Farba As String
 End Type
 
 Sub Makricko REM začiatok procedúry
 
 REM deklarácia vlastného dátového typu
 Dim mojTyp As Vec
 REM priradenie do premenných vlastného dátového typu 
 mojTyp.Meno = "Televízia"
 mojTyp.Dlzka = 30
 mojTyp.Sirka = 45
 mojTyp.Vyska = 50
 mojTyp.Farba = "modrú"
 REM a vypíšeme
 Set televizia = new Vec REM príkaz Set
 
 REM výstup na obrazovku
 MsgBox "Špecifikácia veci: " & televizia.Meno & " má dlžku " & televizia.Dlzka & " cm 
 šírku " & televizia.Sirka & " cm, vyšku " & televizia.Vyska & " cm 
 a farbu " & televizia.Farba
 
 End Sub REM koniec procedúry

Výsledok makra Výsledok makra

Rozbor makra: Prekvapil vás výsledok? Jednoducho, premenná televizia získa vlastností zadefinovanej štruktúry Vec, ale to neznamená, že automatický zdedí vlastností v premennej mojTyp. Z pohľadu programu sú to dve rozdielne štruktúry, ktoré sa vzájomne neovplyvňujú v tomto príklade.

Príklad 2: Vypočítanie objemu kocky, kvádru, gule a valca.

Type geoMetrickyUtvar 
Meno As String
Dlzka As Integer
Sirka As Integer
Vyska As Integer
Objem As Long
Polomer As Integer
End Type
Sub Makricko
 Set kocka = new geoMetrickyUtvar
 With kocka REM spomeňte si na príkaz With
 .Meno = "Kocka"
 .Dlzka = 31
 .Sirka = 31
 .Vyska = 31
 .Objem = .Dlzka ^ 3
 End With
 
 Set kvader = new geoMetrickyUtvar
 With kvader
 .Meno = "Kvader"
 .Dlzka = 31
 .Sirka = 77
 .Vyska = 14
 .Objem = .Dlzka * .Sirka * .Vyska
 End With
 
 Set gula = new geoMetrickyUtvar
 With gula
 .Meno = "Gula"
 .Polomer = 25
 .Objem = (4 * (.Polomer ^ 3 * 3.14159))/3
 End With
 
 Set valec = new geoMetrickyUtvar
 With valec
 .Meno = "Valec"
 .Polomer = 25
 .Vyska = 77
 .Objem = (3.14159 * .Polomer ^ 2 * .Vyska)
 End With
 
 MsgBox "Objem kocky: " & kocka.Objem & " mm^3" & Chr(10) & "Objem kvadra: 
 " & kvader.Objem & " mm^3" & Chr(10) & "Objem gule: " & gula.Objem & " mm^3" 
 & Chr(10) & "Objem valca: " & valec.Objem & " mm^3"
 
 End Sub

Výsledok makra Výsledok makra

Konštanty

Robíte makro a potrebujete, aby nejaká premenná bola stála počas celého behu. Čiže aby nemenila svoju hodnotu. Definujeme takúto premennú ako konštantu a vieme to deklarovať aj v makrách. Využijeme na to kľúčové slovo Const.

Príklad 3: Konštanty

Sub Makricko
  Const teplotaVaru = 100  REM deklarácia konštanty pomocou Const
  Dim cislo As Integer
  cislo = teplotaVaru + 1
  teplotaVaru = cislo   REM tu vám to spadne
  MsgBox "Teplota: " & teplotaVaru & " °C"
 End Sub

Výsledok makra Výsledok makra

Rozbor makra: S konštantou nepohnete a výstup programu vás o tom patrne presvedčí.

(Jako ve škole) Průměr: 1.00 | Hodnotilo: 4
 

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