Obsah

# 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'

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

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 Numeric mohou obsahovat číselné hodnoty. Některé proměnné se používají k ukládání velkých či malých čísel, jiné pro čísla s plovoucí desetinnou čárkou.

- Proměnné typu String obsahují znakové řetězce.

- Booleovské proměnné obsahují hodnotu TRUE nebo FALSE.

- Proměnné typu Object mohou obsahovat objekty různých typů, např. tabulky nebo dokumenty.

### 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 "$".

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:

- #yyyy-mm-dd#

- #mm/dd/yyyy#

      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

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ě.

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

Související témata

Konstanty jazyka Basic

Příkaz Dim