<p class="Paragraph">Toto téma popisuje některé z nejběžnějších proměnných.</p>
</help:to-be-embedded>
<p class="Paragraph">Proměnné jsou základní prvky programů vytvořených v programovacím jazyce Basic. V proměnných jsou při běhu programu uloženy číselné hodnoty, řetězce nebo objekty. Program může proměnné číst nebo je upravovat. V aplikaci <help:productname xmlns:help="http://openoffice.org/2000/help">%PRODUCTNAME</help:productname> Basic není nutné deklarovat proměnné explicitně. Proměnná je deklarována automaticky při jejím prvním použití. Příkazem <span class="T1">Option Explicit</span> je možné vynutit deklaraci proměnných pomocí příkazu <span class="T1">Dim</span> ještě před jejich použitím.</p>
<p class="TextInTable">Deklaruje dvě proměnné oddělené čárkou, jedna proměnná je datový typ String, druhá je datový typ Integer.</p>
</span></td></tr></table>
<p class="Paragraph">Při deklarování proměnných je velmi důležité vždy použít znak deklarující typ, a to i tehdy, pokud byl v deklaraci použit namísto klíčového slova. Následující příkazy jsou tedy neplatné:</p>
<p class="Paragraph">Chcete-li, aby každá proměnná byla deklarována, použijte následující příkaz:</p>
<p class="PropText">OPTION EXPLICIT</p>
<p class="Paragraph">Příkaz Option Explicit musí být na prvním řádku zdrojového kódu modulu, tj. před prvním výrazem SUB. Obecně musí být deklarovány explicitně pouze proměnné typu Array. Všechny ostatní proměnné jsou deklarovány podle znaku deklarujícího typ nebo, je-li znak vynechán, jako výchozí typ <span class="T1">Single</span>. Výhodou vynucení deklarace proměnných je snadná čitelnost a odlišitelnost proměnných od jiných objektů. Zde je příklad vynucené deklarace:</p>
<p class="Paragraph">Existuje proměnná StorageMedium$ použitá v proceduře typu SUB. V určitém místě kódu programu přiřadíte proměnné určitou událost následujícím (nesprávně zadaným) příkazem:</p>
<p class="Paragraph">Aplikace <help:productname xmlns:help="http://openoffice.org/2000/help">%PRODUCTNAME</help:productname> Basic by samozřejmě přijala tento výraz jako novou proměnnou, protože proměnné obvykle nemusí být deklarovány. Pokud jste ale použili příkaz <span class="T1">Option Explicit</span>, nerozpozná aplikace Basic (nesprávný) název proměnné a za běhu programu zobrazí zprávu o chybě.</p>
<p class="Paragraph">Programovací jazyk <help:productname xmlns:help="http://openoffice.org/2000/help">%PRODUCTNAME</help:productname> Basic podporuje množství typů proměnných. Obecně mohou být proměnné roztříděny do čtyř následujících typů:</p>
<p class="Paragraph"><span class="T1">Číselné</span> proměnné mohou obsahovat číselné hodnoty určitého rozsahu. Určité proměnné jsou používány pro uložení velkých nebo malých čísel, jiné pro čísla s plovoucí desetinnou čárkou či pro zlomky. Každý typ proměnné má své výhody a nevýhody. Například celočíselné proměnné nevyžadují velké množství paměti, proto výpočty s těmito proměnnými jsou provedeny rychle. Čísla s plovoucí desetinnou čárkou vyžadují více paměti a času (pro výpočet), jsou však přesnější.</p>
<p class="Paragraph">Proměnné typu <span class="T1">String</span> obsahují řetězce libovolných znaků.</p>
<p class="Paragraph"><span class="T1">Booleovské</span> proměnné vyjadřují pouze stav TRUE (pravda) nebo FALSE (nepravda).</p>
<p class="Paragraph">V proměnných typu <span class="T1">Object</span> mohou být uchovány objekty různých typů. Objekty mohou například odkazovat na tabulky a dokumenty uvnitř dokumentu. Chcete-li tyto objekty upravit, můžete k tomu v programu použít odpovídající metody a vlastnosti.</p>
<p class="Head3">Proměnné typu Integer</p>
<p class="Paragraph">Proměnné typu Integer mohou nabývat hodnot v rozsahu <text:s text:c="" xmlns:text="http://openoffice.org/2000/text"/>-32 768 až 32 767. Pokud přiřadíte proměnné typu Integer hodnotu s plovoucí desetinnou čárkou, budou místa za desetinnou čárkou oříznuta. Proměnné typu Integer jsou při výpočtech rychle zpracovány a jsou vhodné pro čítače proměnných ve smyčkách. V paměti počítače vyžadují proměnné typu Integer pouze dva bajty. Znak <text:s text:c="" xmlns:text="http://openoffice.org/2000/text"/>% je znak deklarující typ.</p>
<p class="Paragraph">Deklarace:</p>
<p class="PropText">Dim Variable%</p>
<p class="PropText">Dim Variable As Integer</p>
<p class="Head3">Proměnné typu Long Integer</p>
<p class="Paragraph">Proměnné typu Long Integer mohou nabývat hodnot v rozsahu -2 147 483 648 až 2 147 483 647. Pokud přiřadíte proměnné typu Long Integer hodnotu s plovoucí desetinnou čárkou, budou místa za desetinnou čárkou oříznuta. Proměnné typu Long Integer jsou během výpočtů rychle zpracovány a jsou vhodné pro čítače proměnných ve smyčkách pro velké hodnoty. V paměti počítače vyžadují proměnné typu Long Integer čtyři bajty. <text:s text:c="" xmlns:text="http://openoffice.org/2000/text"/>Znak & je znak deklarující typ.</p>
<p class="Paragraph">Deklarace:</p>
<p class="PropText">Dim Variable&</p>
<p class="PropText">Dim Variable as Long</p>
<p class="Head3">Proměnné typu Single</p>
<p class="Paragraph">Proměnné typu Single mohou uchovávat kladné nebo záporné hodnoty z intervalu 3,402823 x 10E38 až 1,401298 x 10E-45. Proměnné typu Single jsou proměnné s plovoucí desetinnou čárkou. Pro tato čísla je charakteristické, že čím větší je část čísla před desetinnou čárkou, tím menší je přesnost výpočtu u desetinných míst. <text:s text:c="" xmlns:text="http://openoffice.org/2000/text"/>Proměnné typu Single jsou vhodné pro matematické výpočty průměrné přesnosti. Při výpočtech vyžadují proměnné typu Single více času než proměnné typu Integer, jsou však rychlejší než výpočty s proměnnými typu Double. V paměti počítače vyžadují proměnné typu Single čtyři bajty. Znak deklarující typ je znak <text:s text:c="" xmlns:text="http://openoffice.org/2000/text"/>!.</p>
<p class="PropText">Dim Variable!</p>
<p class="PropText">Dim Variable as Single</p>
<p class="Head3">Proměnné typu Double</p>
<p class="Paragraph">Proměnné typu Double mohou uchovávat kladné nebo záporné hodnoty z intervalu 1,79769313486232 x 10E308 až 4,94065645841247 x 10E-324. Proměnné typu Double jsou proměnné s plovoucí desetinnou čárkou, pro které platí, že čím větší je část čísla před desetinnou čárkou, tím menší je přesnost výpočtu u desetinných míst. Proměnné typu Double jsou vhodné pro přesné výpočty a vyžadují 8 bajtů paměti počítače. Znak deklarující typ je znak <text:s text:c="" xmlns:text="http://openoffice.org/2000/text"/>#.</p>
<p class="PropText">Dim Variable#</p>
<p class="PropText">Dim Variable As Double</p>
<p class="Head3">Proměnné typu Currency</p>
<p class="Paragraph">Proměnné typu Currency jsou vnitřně uchovávány jako 64bitová čísla (8 bajtů), jsou zobrazeny v celočíselném formátu a děleny hodnotou 10 000. Výsledkem je formát s pevnou desetinnou čárkou, který má 15 míst před a 4 místa za oddělovačem desetinných míst. Hodnoty musí být v rozsahu od -922 337 203 685 477,5808 do +922 337 203 685 477,5807. Proměnné typu Currency se používají při finančních výpočtech s relativně vysokou přesností. <text:s text:c="" xmlns:text="http://openoffice.org/2000/text"/>Znak deklarující typ je znak @.</p>
<p class="PropText">Dim Variable@</p>
<p class="PropText">Dim Variable As Currency</p>
<p class="Head3">Proměnné typu String</p>
<p class="Paragraph">Proměnné typu String mohou uchovávat jakýkoli znakový řetězec o délce až 64 000 znaků. Každý znak je uložen jako 1bajtový znak ASCII. Proměnné typu String jsou vhodné pro zpracování slov uvnitř programů a pro dočasné uchování libovolného netisknutelného znaku maximální délky až 64 kilobajtů. Velikost paměti vyžadované pro proměnné typu String závisí na počtu znaků v proměnné. Znak deklarující typ je znak $.</p>
<p class="PropText">Dim Variable$</p>
<p class="PropText">Dim Variable As String</p>
<p class="Paragraph"/>
<p class="Head3">Booleovské proměnné</p>
<p class="Paragraph">Booleovské proměnné uchovávají pouze jednu ze dvou hodnot: TRUE (PRAVDA) nebo FALSE (NEPRAVDA). Použijete-li k zobrazení booleovské proměnné příkaz <span class="T1">Print</span>, bude hodnota TRUE vrácena jako hodnota -1, hodnota FALSE jako hodnota 0. Booleovské proměnné se používají k uchování binárních hodnot, například výsledků porovnání. Vnitřně je booleovská proměnná uložena jako 2bajtová celočíselná hodnota. Každá hodnota přiřazená booleovské proměnné je převedena na hodnotu FALSE, pokud není rovna přesně hodnotě -1. Booleovské proměnné mohou být deklarovány pouze pomocí klíčových slov True nebo False.</p>
<p class="PropText">Dim Variable As Boolean</p>
<p class="Head3">Proměnné typu Date (datum)</p>
<p class="Paragraph">Proměnné typu Date mohou obsahovat pouze data a časové hodnoty uložené ve vnitřním formátu. Hodnoty přiřazené proměnným typu Date pomocí funkcí <span class="T1">Dateserial</span>, <span class="T1">Datevalue</span>, <span class="T1">Timeserial</span> nebo <span class="T1">Timevalue</span> jsou automaticky převedeny do vnitřního formátu. Na běžná čísla jsou proměnné typu Date převedena pomocí funkcí <span class="T1">Day</span>, <span class="T1">Month</span>, <span class="T1">Year</span>, <span class="T1">Hour</span>, <span class="T1">Minute</span> nebo <span class="T1">Second</span>. Vnitřní formát umožňuje srovnání hodnot typu datum/čas vypočtením rozdílu mezi dvěma čísly. Tyto proměnné mohou být deklarovány pouze pomocí klíčového slova <span class="T1">Date</span>.</p>
<p class="PropText">Dim Variable As Date</p>
<p class="Head2">Definování proměnných</p>
<p class="Paragraph">Jakmile je proměnná deklarována, je automaticky nastavena na hodnotu Null, to znamená, že není nutné deklarovanou proměnnou nastavit na hodnotu nula ručně. Povšimněte si následujících obecných zásad:</p>
<p class="Paragraph"><span class="T1">Číselným</span> proměnným je, jakmile jsou deklarovány, automaticky přiřazena hodnota 0.</p>
<p class="Paragraph"><span class="T1">Proměnným typu Date</span> je vnitřně přiřazena hodnota 0; analogicky s převodem hodnoty na <text:s text:c="" xmlns:text="http://openoffice.org/2000/text"/>0 pomocí funkcí <span class="T1">Day</span>, <span class="T1">Month</span>, <text:s text:c="" xmlns:text="http://openoffice.org/2000/text"/><span class="T1">Year</span>, <span class="T1">Hour</span>, <span class="T1">Minute</span> nebo <span class="T1">Second</span>.</p>
<p class="Paragraph"><span class="T1">Proměnným typu String</span> je při deklaraci přiřazen prázdný řetězec ("").</p>
<p class="Paragraph">Aplikace <help:productname xmlns:help="http://openoffice.org/2000/help">%PRODUCTNAME</help:productname> Basic podporuje několik předdefinovaných systémových proměnných, které vždy v dotazu vrátí určitý výsledek.</p>
<p class="Head3">TRUE (PRAVDA) a FALSE (NEPRAVDA)</p>
<p class="Paragraph">Jedná se o booleovské proměnné, které vrací buď hodnotu 0 (FALSE) nebo hodnotu -1 (TRUE). Tyto proměnné lze použít například při testování logické hodnoty porovnání v dotazech typu <span class="T1">If...Then...Else</span>. Porovnání jsou vyjádřena operátory porovnání <text:s text:c="" xmlns:text="http://openoffice.org/2000/text"/>(=, <, >). Příkaz:</p>
<p class="PropText">PRINT 5=3</p>
<p class="Paragraph">vrátí hodnotu 0 (FALSE), protože výraz 5=3 je nepravdivý. Příkaz:</p>
<p class="PropText">PRINT 5>3</p>
<p class="Paragraph">vrátí hodnotu -1 (TRUE), protože výraz je pravdivý. Používání systémových proměnných technicky nezmění skutečné číselné hodnoty 0 nebo -1, avšak přiřadíte-li proměnným hodnoty TRUE nebo FALSE, zlepšíte čitelnost kódu programu.</p>
<p class="Head3">Ludolfovo číslo</p>
<p class="Paragraph">Ludolfovo číslo je matematická konstanta vracející nekonečné číslo Pi = 3,1415926535...</p>
<p class="Head2">Pole</p>
<p class="Paragraph">Aplikace <help:productname xmlns:help="http://openoffice.org/2000/help">%PRODUCTNAME</help:productname> Basic používá jednorozměrná nebo vícerozměrná pole definovaná určitým typem proměnné. Pole jsou vhodná k úpravám seznamů a tabulek v programech. Výhodou pole je, že jeho jednotlivé prvky mohou být adresovány přes index číselných výrazů nebo proměnných.</p>
<p class="Paragraph">Pole se deklarují příkazem <span class="T1">Dim</span>. Existují dvě možnosti definování způsobu, jakým bude index adresován:</p>
<p class="PropText">33 prvků, dimenze 0, od 0 do 10, <text:s text:c="" xmlns:text="http://openoffice.org/2000/text"/>dimenze 1, od 0 do 10, dimenze 2, od 0 do 10.</p>
<p class="PropText">21 prvků (včetně 0) číslovaných od -15 do 5</p>
</span></td></tr></table>
<p class="Paragraph">Oblast indexu může zahrnovat kladná i záporná čísla. Maximální počet prvků, který může být adresován přes index je 16 368.</p>
<p class="Head2">Konstanty</p>
<p class="Paragraph">Konstanty jsou obměnou proměnných a napomáhají k tomu, aby byl vytvořený kód programu čitelnější. Konstanty nejsou definovány jako určitý typ, jsou používány v kódu programu místo zástupného znaku. Konstantu lze v programu definovat pouze jednou, nemůže být předefinována. K definici konstanty slouží následující příkaz:</p>
<p class="Paragraph">Druh výrazu určený v příkazovém řádku není zohledněn. Po spuštění programu je jeho kód v aplikaci <help:productname xmlns:help="http://openoffice.org/2000/help">%PRODUCTNAME</help:productname> Basic vnitřně převeden a každá konstanta je bez ohledu na typ nahrazena předdefinovaným výrazem.</p>