Makrá v OpenOffice.org VIII. – typy premenných

Július Pastierik  /  08. 12. 2005, 00:00

Už sme si predstavili základné príkazy jazyka StarOffice Basic, no ešte sme si stále nehovorili o základných typoch premenných, ktoré tento jazyk podporuje. Dnes to napravíme.

V treťom dieli tohto seriálu (Makrá v OpenOffice.org III. – čo sme to naprogramovali?) sme naznačili, že premenná je akoby nejaká krabička, do ktorej ukladáme rôzne údaje,pričom každá krabička je určená iba na jeden typ údajov. A práve o týchto typoch budeme dnes hovoriť. Pre jednoduchosť budeme v nasledovnom (skôr technickom) popise týchto typov používať názov premennej „premenna“, pričom v prípade potreby uvedieme aj niekoľko príkladov alebo poznámok. Nebudeme sa však zaoberať ich praktickým použitím, napokon z príkladov makier, ktoré sme už programovali a ktoré ešte budeme programovať je to dosť zrejmé, ale obmedzíme sa naozaj iba na stručné zoznámenie.


Reťazcové premenné

DIM premenna AS STRING
DIM premenna$ ' Skrátený formát definície

Reťazec je vlastne textový údaj. StarOffice Basic ich ukladá v Unikóde,pričom dĺžka jedného reťazca je obmedzená na 65535 znakov. Pokiaľ chceme zadať reťazec priamo, musíme ho uzatvoriť do úvodzoviek. Niekedy však potrebujeme znak úvodzoviek mať priradený aj ako súčasť reťazca. Vtedy to musíme urobiť pomocou jeho ASCII kódu (34). Príklady reťazcov:

premenna = "Príklad reťazca"
premenna = chr$(34)' priradenie úvodzovky do reťazca


Číselné premenné

StarOffice Basic rozoznáva päť rôznych typov číselných premenných, ktoré sa líšia najmä svojou veľkosťou a tým aj rozsahom čísiel, pre ktoré sú použiteľné:


Celé čísla v rozsahu od -32 768 do 32 767 (dva bajty)

DIM premenna AS INTEGER
DIM premenna% ' Skrátený formát definície


Celé čísla v rozsahu od -2 147 483 648 do 2 147 483 647 (štyri bajty)

DIM premenna AS LONG
DIM premenna& ' Skrátený formát definície


Reálne čísla v rozsahu od ± 1,401 298 x 10-45 do ± 3,402 823 x 1038 (štyri bajty)

DIM premenna AS SINGLE
DIM premenna! ' Skrátený formát definície


Reálne čísla v rozsahu od ± 4,940 656 458 412 47 x 10-324 do ± 1,797 693 134 862 32 x 10308 (osem bajtov)

DIM premenna AS DOUBLE
DIM premenna# ' Skrátený formát definície


Finančné čísla v rozsahu od -922 337 203 685 477,580 8 do 922 337 203 685 477,580 7 (osem bajtov)

DIM premenna AS CURRENCY
DIM premenna@ ' Skrátený formát definície

Finančné čísla majú špeciálny formát s pevným počtom štyroch desatinných miest a používajú sa pri presných finančných výpočtoch.


Logické premenné

DIM premenna AS BOOLEAN

Logické premenné môžu nadobúdať iba dve hodnoty – logickú nepravdu (nulu) – FALSE alebo logickú pravdu (jednotku) – TRUE.


Dátumové premenné

DIM premenna AS DATE

Dátumové premenné obsahujú hodnotu dátumu a času.


Dátové polia

Niekedy potrebujeme, aby premenná neobsahovala iba jednu hodnotu, ale celý rad (zoznam) hodnôt rovnakého typu. Na to slúžia dátove polia:

DIM premenna(rozsah_indexu, …) AS <základný typ>

Príklad:

DIM mesiace(12) AS STRING
mesiace(1)="Január"
mesiace(2)="Február"
mesiace(3)="Marec"
mesiace(4)="Apríl"
mesiace(5)="Máj"
mesiace(6)="Jún"
mesiace(7)="Júl"
mesiace(8)="August"
mesiace(9)="September"
mesiace(10)="Október"
mesiace(11)="November"
mesiace(12)="December"

Polia nemusia mať iba jeden rozmer, napríklad pomocou tohto príkazu:

DIM matica (5, 4) AS DOUBLE

sme zadefinovali dvojrozmernú maticu čísiel. Pri praktickom programovaní mnohokrát potrebujeme, aby indexy nezačínali od jednotky, ale napríklad od nuly a pod. Na takéto účely môžeme použiť presnú špecifikáciu spodnej a hornej hranice indexu:

DIM pole (-10 TO 25) AS INTEGER

Niekedy však nemusíme vopred poznať počet prvkov poľa, ktoré špecifikujeme. Vtedy nemusíme rozsah indexu zadať vôbec. Takýto príklad sme mohli vidieť v minulom dieli nášho seriálu:

DIM tituly() AS STRING
tituly() = ARRAY("akad.", "Bc.", "Csc.", "doc.", "Dr.", "DrSc.", "h.c.", "Ing.", "arch.", "JUDr.", "Mgr.", "MUDr.", "MVDr.", "PaedDr.", "PharmDr.", "PhDr.", "PhMr.", "prof.", "RNDR", "ThDr.")

Pre zistenie skutočného rozsahu indexov nám pri takýchto poliach slúžia systémové funkcie – LBOUND, ktorá vracia hodnotu (ako celé číslo) dolnej hranice indexu a UBOUND, ktorá vracia hodnotu (ako celé číslo) hornej hranice indexu:

FOR i = LBOUND(tituly()) TO UBOUND(tituly())


Objektové premenné

DIM premenna AS OBJECT

Tieto premenné používame v našich makrách na riadenie prístupu k spracovávanému dokumentu. Obsahujú vlastne celú množinu údajov najrôznejších typov, ako je napríklad text, farba textu, farba pozadia, dátum, číslo strany a pod. Okrem toho je ich súčasťou aj množina operácií a funkcií, ktoré môžeme s týmito údajmi vykonávať, ako napríklad hľadanie, výmena a pod.


Operátory

Operátory nám umožňujú prevádzať základné operácie s premennými. Delíme ich na tri skupiny:


Matematické operátory

+   Sčítanie čísiel a dátumových údajov, spájanie reťazcov.
-   Odčítanie čísiel a dátumových údajov.
*   Násobenie čísiel.
/   Delenie čísiel.
   Celočíselné delenie čísiel, t.j. výsledok je zaokrúhlený na celé číslo.
^   Mocnina.
MOD   Zvyšok po delení.


Logické operátory

AND   Logický súčin.
OR   Logický súčet.
XOR   Exkluzívny logický súčet.
NOT   Negácia.
EQV   Ekvivalencia.
IMP   Implikácia.


Porovnávacie operátory

=   Rovnosť čísiel, dátumových hodnôt alebo reťazcov.
<>   Nerovnosť čísiel, dátumových hodnôt alebo reťazcov.
>   Väčší ako druhé číslo, dátumová hodnota alebo reťazec.
>=   Väčší alebo rovný ako druhé číslo, dátumová hodnota alebo reťazec.
<   Menší ako druhé číslo, dátumová hodnota alebo reťazec.
<=   Menší alebo rovný ako druhé číslo, dátumová hodnota alebo reťazec.

Na budúce: Znovu vymazávame viacnásobné medzery, alebo ako to všetko urobiť jednoduchšie.


Neprehliadnite: