Použití proměnných

Následující část popisuje základní použití proměnných v LibreOffice Basic.

Konvence pro pojmenování identifikátorů proměnných

Název proměnné může obsahovat maximálně 255 znaků. První znak názvu proměnné musí být písmeno A-Z nebo a-z. V názvu proměnné lze také použít čísla, ale interpunkční symboly a speciální znaky nejsou povoleny s výjimkou podtržítka ("_"). V LibreOffice Basic nezáleží na velikosti písmen v názvech proměnných. Názvy proměnných mohou obsahovat mezery, ale v tom případě musí být uzavřeny do hranatých závorek.

Příklady identifikátorů proměnných:


    MyNumber=5      'Správné'
    MyNumber5=15    'Správné'
    MyNumber_5=20   'Správné'
    My Number=20    'Neplatné, proměnné s mezerou v názvu musí být uzavřeny do hranatých závorek'
    [My Number]=12  'Správné'
    DéjàVu=25       'Neplatné, speciální znaky nejsou povoleny'
    5MyNumber=12    'Neplatné, proměnné nemohou začínat číslicí'
    Number,Mine=12  'Neplatné, interpunkce není povolena'

Deklarace proměnných

V LibreOffice Basic nemusíte proměnné explicitně deklarovat. Deklaraci proměnné lze provést příkazem Dim. Jedním příkazem je možné deklarovat několik proměnných, stačí oddělit názvy čárkou. Chcete-li definovat typ proměnné, použijte po názvu buď znaménko typové deklarace nebo odpovídající klíčové slovo.

Příklady deklarace proměnných:


    Dim a$               'Deklaruje proměnnou "a" jako datový typ String'
    Dim a As String      'Deklaruje proměnnou "a" jako datový typ String'
    Dim a$, b As Integer 'Deklaruje jednu proměnnou jako String a druhou jako Integer'
    Dim c As Boolean     'Deklaruje c jako proměnnou typu Boolean, která může být TRUE nebo FALSE'
warning

Jakmile v deklaraci přiřadíte proměnné určitý typ, není již možné deklarovat proměnnou stejného názvu jako jiný typ!


Pokud deklarujete na jednom řádku kódu více proměnných, je nutné určit pro každou proměnnou typ. Jestliže typ proměnné není explicitně určen, předpokládá se, že proměnná je typu Variant.


  ' Proměnná "a" i "b" jsou typu Integer
  Dim a As Integer, b As Integer
  ' Proměnná "c" je Variant a "d" je Integer
  Dim c, d As Integer
  ' Proměnnou lze také explicitně deklarovat jako Variant
  Dim e As Variant, f As Double
note

Typ Variant je speciální datový typ, do něhož lze ukládat jakýkoliv druh hodnoty. Další informace naleznete v níže uvedené části Typ Variant.


Vynucení deklarace proměnných

Chcete-li, aby každá proměnná byla deklarována, použijte následující příkaz:


Option Explicit

Příkaz Option Explicit musí být na prvním řádku modulu, před prvním SUB. Obecně je třeba explicitně deklarovat pouze pole. Všechny ostatní proměnné se deklarují podle znaku typové deklarace nebo (je-li vynechán) jako implicitní typ Single.

Typy proměnných

LibreOffice Basic podporuje čtyři typy proměnných:

Proměnné typu Integer

Proměnné typu integer (celá čísla) mají rozsah od -32768 do 32767. Pokud celočíselné proměnné přiřadíte hodnotu s desetinnou čárkou, zaokrouhlí se na nejbližší celé číslo. Celočíselné proměnné se počítají velmi rychle a jsou vhodné pro proměnné čítačů ve smyčkách. Proměnná typu integer vyžaduje v paměti jen dva bajty. Znak typové deklarace je "%".


Dim Variable%
Dim Variable As Integer

Proměnné typu Long Integer

Proměnné typu long integer (dlouhá celá čísla) mají rozsah od -2147483648 do 2147483647. Pokud dlouhé celočíselné proměnné přiřadíte hodnotu s desetinnou čárkou, zaokrouhlí se na nejbližší celé číslo. Dlouhé celočíselné proměnné se počítají velmi rychle a jsou vhodné pro proměnné čítačů ve smyčkách. Proměnná typu long integer vyžaduje v paměti čtyři bajty. Znak typové deklarace je "&".


Dim Variable&
Dim Variable As Long

Proměnné typu Float

Proměnné typu Float mohou obsahovat kladná nebo záporná čísla s přesností až na 29 desetinných míst.

Jako prefix desetinných čísel můžete použít znaky plus (+) nebo mínus (-) (s mezerami nebo bez).

Pokud přiřadíte desetinné číslo do celočíselné proměnné, LibreOffice Basic zaokrouhlí číslo nahoru nebo dolů.

Proměnné typu Single

Proměnné typu Single mohou obsahovat kladné či záporné hodnoty v rozsahu od 3,402823 × 10E38 do 1,401298 × 10E-45. Proměnné Single jsou proměnné v pohyblivé řádové čárce, kde se počet desetinných míst snižuje při zvyšování počtu míst celé části. Proměnné Single jsou vhodné pro matematické výpočty střední přesnosti. Výpočty jsou časově náročnější než pro celočíselné proměnné, ale jsou rychlejší než výpočty s proměnnými Double. Proměnná typu Single vyžaduje v paměti čtyři bajty. Znak typové deklarace je "!".


Dim Variable!
Dim Variable As Single

Proměnné typu Double

Proměnné typu Double mohou obsahovat kladné či záporné hodnoty v rozsahu od 1,79769313486232 × 10E308 do 4,94065645841247 × 10E-324. Proměnné Double jsou proměnné v pohyblivé řádové čárce, kde se počet desetinných míst snižuje při zvyšování počtu míst celé části. Proměnné Double jsou vhodné pro přesné matematické výpočty. Výpočty jsou časově náročnější než pro proměnné Single. Proměnná typu Double vyžaduje v paměti osm bajtů. Znak typové deklarace je "#".


Dim Variable#
Dim Variable As Double

Proměnné typu Currency

Proměnné typu Currency (měna) se interně ukládají jako 64bitová čísla (8 bajtů) a zobrazují se s pevným počtem desetinných míst - 15 míst v celé části a 4 desetinná místa. Rozsah hodnot je od -922337203685477.5808 do +922337203685477.5807. Proměnné Currency se používají pro výpočty s měnami s vysokou přesností. Znak typové deklarace je "@".


Dim Variable@
Dim Variable As Currency

Literály pro celá čísla

Čísla lze zapsat také v osmičkové a šestnáctkové podobě.


  xi = &o13 '    8 + 3
  ci = &h65 ' 6*16 + 5
  MAX_Integer =  &o77777 '  32767 = &h7FFF
  MIN_Integer = &o100000 ' -32768 = &h8000
  MAX_Long = &h7fffffff '  2147483647 = &o17777777777
  MIN_Long = &h80000000 ' -2147483648 = &o20000000000

Proměnné typu String

Proměnné typu String mohou obsahovat řetězce o délce až 2 147 483 648 znaků. Každý znak je uložen jako odpovídající hodnota Unicode. Proměnné String jsou vhodné pro zpracování slov v programech a dočasné ukládání netisknutelných znaků až do maximální délky 2 GB. Paměť potřebná k uložení proměnné String závisí na počtu znaků v proměnné. Znak typové deklarace je "$".

tip

U řetězcových funkcí v jazyce BASIC má první znak řetězce index 1.



Dim Variable$
Dim Variable As String

Booleovské proměnné

Booleovské proměnné mohou obsahovat jen dvě hodnoty: TRUE nebo FALSE. Číslo 0 se vyhodnotí jako FALSE, všechna ostatní jako TRUE.


Dim Variable As Boolean

Proměnné typu Date (datum)

Proměnné typu Date mohou obsahovat jen data nebo časy uložené v interním formátu. Hodnoty přiřazené proměnným Date pomocí Dateserial, Datevalue, Timeserial nebo Timevalue se automaticky převedou na interní formát. Datové proměnné převedete na normální čísla pomocí funkcí Day, Month, Year nebo Hour, Minute, Second. Interní formát umožňuje porovnání dvou datových/časových hodnot pomocí výpočtu rozdílu mezi čísly. Tyto proměnné lze deklarovat jen klíčovým slovem Date.


Dim Variable As Date

Literály pro data

Datové literály umožňují jednoznačně určit proměnnou data, která je nezávislá na aktuálním jazyku. Literály se uzavírají znaky křížků #. Lze použít formáty:


  start_date = #12/30/1899# ' = 1
  dob = #2010-09-28#

Typ Variant

Proměnné deklarované jako Variant mohou zpracovat jakýkoliv datový typ. To znamená, že se skutečný datový typ určí až za běhu programu, když je do proměnné přiřazena hodnota.

Proměnnou typu Variant lze vytvořit třemi hlavními způsoby, jak ukazuje následující kód:


  Dim varA            ' Typ není určen, proto je proměnná Variant
  Dim varB as Variant ' Proměnná je explicitně deklarována jako Variant
  varC = "abc"        ' Dříve nedeklarované proměnné jsou považovány za Variant

V následujícím příkladu se používá Funkce TypeName pro ukázku toho, jak se typ proměnné Variant mění podle přiřazené hodnoty.


  Dim myVar As Variant
  MsgBox TypeName(myVar) ' Empty
  myVar = "Hello!"
  MsgBox TypeName(myVar) ' String
  myVar = 10
  MsgBox TypeName(myVar) ' Integer
note

Proměnná Variant je inicializována speciálním datovým typem Empty. Otestovat, zda je proměnná Empty Variant, můžete pomocí funkce IsEmpty.


Pro deklaraci proměnné jako Variant můžete použít také klíčové slovo Any. To je však zastaralé a k dispozici je pouze kvůli zpětné kompatibilitě.

warning

U argumentů typu Variant nebo Any předávaných ve voláních funkcí se nekontrolují jejich typy.



  Dim myVar As Any ' Proměnná "myVar" je Variant

Počáteční hodnoty proměnných

Jakmile je proměnná deklarována, její hodnota je automaticky nastavena na "Null". Platí následující pravidla:

Proměnným typu Numeric se automaticky přiřadí hodnota "0", jakmile jsou deklarovány.

Proměnným typu Date se interně přiřadí 0, což odpovídá převodu hodnoty na "0" pomocí funkce Day, Month, Year nebo Hour, Minute, Second.

Proměnným typu String se při deklaraci přiřadí prázdný řetězec ("").

Pole

LibreOffice Basic zná jedno- či vícerozměrná pole, definovaná určeným typem proměnné. Pole jsou vhodná pro seznamy a tabulky v programu. K jednotlivým prvkům pole lze přistupovat pomocí číselného indexu.

Pole musí být deklarována příkazem Dim. Existuje několik možností, jak definovat rozsah pole:


    Dim Text$(20)       '21 prvků číslovaných od 0 do 20'
    Dim Text$(5,4)      '30 prvků (matice 6 × 5 prvků)'
    Dim Text$(5 To 25)  '21 prvků číslovaných od 5 do 25'
    Dim Text$(-15 To 5) '21 prvků (včetně 0) číslovaných od -15 do 5'

Index může obsahovat kladná i záporná čísla.

Konstanty

Konstanty mají pevnou hodnotu. V programu se definují jen jednou a nelze je později předefinovat:


Const ConstName=Expression

Podpořte nás!