Pravidla editace maker

programovani.png V tomto dílu si povíme o základních pravidlech, která musíte dodržet, pokud chcete být úspěšní při programování.  

Deklarace programů a funkcí

Každý program a funkce musí mít označen svůj začátek a konec. Je to logické, protože jinak by program běžel do nekonečna.

Začátek zapisujete označením sub / function a názvem podprogramu. Konec zapisujete end sub / end function.

Praktický zápis vypadá takto.

sub nazev
' příkazy
end sub

a pro funkce

function nazev
' příkazy
end function

Jaký je vlastně rozdíl mezi sub a function? Sub je podprogram, který provádí příkazy, zápis, obsluhu dokumentů a další funkce, ale nevrací žádnou hodnotu.

Function oproti tomu vždy vrací nějaký výsledek (ať už jako číslo, text…). U větších programů je lepší na opakované výpočty vytvořit právě funkce, které pomocí sub vyvoláte, a ty vrátí požadovaný výsledek zpět do makra. Takový postup zpřehlední a zrychlí program, nemusí totiž opakovaně zapisovat výpočty přímo do sub.

Při přirovnání s obvyklou prací s dokumenty jsou sub otevírání, ukládání, tisk apod., zatímco funkce znáte zcela jistě z Calcu (SUM, IF a spousta dalších).

TIP: Následujícím způsobem si můžete do svého kódu zanést poznámky, použijete k tomu příkaz REM, nebo apostrof '. V editoru Basicu se tyto poznámky obarví šedivým písmem. Nebojte se je používat, na průběh programu nemají absolutně žádný vliv, naopak se může stát makro přehlednější.

Deklarace proměnných

Když píšete kód makra, měli byste programu deklarovat, kde bude s proměnnými pracovat a jakého druhu tyto proměnné jsou.

Nejprve si ukažme, jakým způsobem proměnné deklarovat, jestli tak, aby fungovaly pouze v jednom programu, nebo je budete používat ve více makrech (například je předávat jako proměnnou do funkcí…).

Lokální proměnné

DIM

Dim je nejčastějším způsobem deklarace. Znamená, že proměnná může být použita pouze v makru, kde jsme ji deklarovali.

Dim platí pouze po dobu, po kterou je používána makrem. Hodnota proměnné je předávána teprve programem nebo vstupem a po ukončení makra je nastavena na nulu.

Pokud je proměnná Dim definována před prvním makrem v modulu, není již lokální proměnnou, ale stala se veřejnou proměnnou.

Zápis dim promenna as string (o tom, co následuje po názvu proměnné, až níže).

STATIC

Pokud chcete zachovat hodnotu proměnné i po skončení konkrétního makra, použijete deklaraci Static. Takto deklarovaná proměnná platí po dobu běhu makra. Po ukončení běhu všech navazujících programů se hodnota proměnné vynuluje.

Logicky Static nelze použít pro deklaraci datových polí, která se mění.

Zápis static promenna as long.

Veřejné proměnné

Takto deklarované proměnné fungují obdobně jako STATIC, s tím rozdílem, že jsou použitelné ve všech makrech v daném modulu.

DIM

Použití je stejné jako při použití v makru, s tím rozdílem, že proměnná je deklarována jako první před prvním makrem a platí pro všechna makra v modulu. Znamená to tedy, že proměnná může být využita pro více programů (maker).

PUBLIC

Kdo nechce používat příkaz dim pro deklaraci veřejné proměnné, může použít příkaz public. Funkce i zápis je zcela shodný, jde jen o orientaci. Někoho může mást psát při zápisu dim jako lokální a ještě navíc jako veřejnou proměnnou.

Globální proměnné

GLOBAL

Global deklaruje proměnnou pro všechny moduly a knihovny a je přístupná pro všechna makra. Takto deklarovaná proměnná je platná až do ukončení OpenOffice.org.

Soukromé proměnné

Pokud chcete deklarovat stejně nazvanou proměnnou ve více modulech, použijete příkaz Private v každém jednotlivém modulu. Systém pak nastavuje každou takovou proměnnou zvlášť.

Druhy proměnných

Umíte již tedy sdělit programu, kdy a kde může proměnné používat. Zbývá naučit se určit, co vlastně bude proměnná obsahovat, zda půjde o čísla, text, objekty...

TIP: Někteří programátoři si jako pomůcku pojmenovávají proměnné podle jejich typu, například oDoc, oSheet, oCell autor definoval proměnné jako object a pojmenoval písmenem „o“, aby bylo jasné, že jde o objekt. Takto si autoři označují i číselné proměnné iCislo (integer) a tak dále.

Objektové

Objektová proměnná se používá k zpřístupnění dokumentu a jeho částí. Například v Calcu můžete takto zpřístupnit dokument, jednotlivé listy, rozsahy buněk, buňky... Také dialogy deklarujete jako objekty.

Dim promenna as object

Řetězec

Použijete, pokud chcete používat proměnnou jako text – například textové vstupy a výstupy, v Calcu lze takto definovat i čísla, která chcete mít formátována jako text. Textové hodnoty musí být uzavřeny uvozovkami.

Zápis

dim promenna as string / dim promenna$
promenna = "Ahoj"

Oba zápisy jsou totožné, ve druhé variantě se jedná o zkrácený zápis.

TIP: Pokud v budoucnu budete chtít předat do proměnné text v uvozovkách, musíte si uvědomit, že uvozovky ohraničují text a pro jejich zobrazení je musíte zadat třikrát – """Ahoj""".

Číslo

INTEGER – celé číslo mezi –32768 a 32767. Použijete tam, kde chcete použít menší rozsah (omezený počet kroků). Není vhodné použít například pro řádky v Calcu, protože ten má řádku milion a integer zde nedostačuje.

Dim promenna as integer / dim promenna %
promenna = 1

LONG – celé číslo mezi –2147483648 a 2147483647. Použití stejné jako integer, pouze má větší rozsah.

Dim promenna as long / dim promenna &
promenna = 1

SINGLE (mezi 3.402823*10 38 a 1.401298*10 -45 )

DOUBLE (mezi 1.79769313486232*10 308 a 4.94065645841247*10 -324 )

CURRENCY (mezi -922337203685477.5808 a +922337203685477.5807)

Více druhů číselných proměnných slouží k optimalizaci větších programů. Při opravdu rozsáhlých programech může správné použití číselné proměnné urychlit běh programu, a to právě pro rozdílný rozsah jednotlivých druhů.

Logické

Logická proměnná má pouze dva výsledky, a to TRUE (pravda) a FALSE (nepravda). Můžete využít při psaní vlastních funkcí, kde chcete přímo v zadání definovat způsob provedení funkce. Obdobně jako například u funkce VLOOKUP v Calcu, kde se jako poslední nepovinný parametr funkce zadává, zda je oblast seřazena, nebo ne.

Platí, že 0 = FALSE a 1 = TRUE.

Dim promenna as boolean

Datumové

Takováto proměnná může obsahovat pouze datum, nebo čas.

Dim promenna as date.

Datová pole

Občas potřebujete, aby proměnná obsahovala více hodnot, ne pouze jednu. V tomto případě musíte tyto hodnoty programu předat právě prostřednictvím datových polí. Hodnoty jsou za proměnnou uzavřené závorkou. Textové hodnoty musí být uzavřeny do uvozovek.

a = "kde"
b = "kdy"
Promenna ("Co", "jak", b, a, "proč") 

Rozsah datového pole můžete dopředu omezit určením počtu hodnot. Dim promenna (3). Takto jste omezili počet hodnot na 4 (pozor, jako první hodnota se bere vždy 0, ne 1). Hodnoty v datovém poli jsou primárně deklarovány jako variabilní, ale je možné je v průběhu běhu programu vymezit jinak. Pokud jste takto omezili datové pole, musíte mu předat hodnoty.

Dim promenna (3)
promenna (0) = "Co" 
promenna (1) = "Kde" 
promenna (2) = "Kdo" 
promenna  (3) = "Kam"       

Možností datových polí je daleko více, ale ty budete zjišťovat postupně tak, jak budete potřebovat.

Variant

Je také samozřejmě možné proměnné vůbec nedeklarovat. V tomto případě je proměnná automaticky deklarována jako VARIANT. Je zřejmé již z jejího názvu, že se druh hodnoty (text, číslo…) bude v průběhu měnit. V malých programech nebo funkcích vám to vadit nebude, ale u větších maker by to již mohlo způsobovat nechtěné chování programu.

TIP: Nezaměňujte proměnnou VARIANT s proměnnou, do které jste přidali konkrétní buňku. U buněk totiž často měníte její obsah (bunka.string, bunka.value …), toto ale není změna typu proměnné, protože buňka je vždy definována jako object a příkazem můžete změnit její vlastnosti.

Tipy

Ještě v krátkosti k přímé deklaraci proměnné. Každou proměnnou si definujte jednotlivě. Nejlépe to uvidíte na příkladu.

Dim promenna as string, promenna 2 as string

nebo

dim promenna as  string 
dim promenna2 as string

Toto je správný zápis deklarace proměnných. Obě proměnné jsou deklarovány jako text.

Dim promenna, promenna2 as string

Takto jste deklarovali jako text pouze promenna2. Promenna je automaticky deklarována jako typ VARIANT! Nemusí tedy obsahovat pouze text.

(Jako ve škole) Průměr: 1,29 | Hodnotilo: 14
 

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.

 
Daniel Sedláček

Daniel Sedláček

Amatérsky se věnuji programování maker od podzimu 2010.
Aktivní jsem na fóru od ledna 2011.
Od července 2011 spolupracuji i jako moderátor fóra.

Využívám pouze OpenOffice.org (LibreOffice nemám nainstalován).

 
 
 
woo jaw demo hz