Module
Contents
Index 🔎︎

# Použitie procedúr a funkcií

Nasledujúca časť popisuje základné použitie procedúr a funkcií v LibreOffice Basic.

Ak vytvoríte nový modul, LibreOffice Basic automaticky vloží SUB nazvaný "Main". Tento východiskový názov nemá nič spoločné s poradím alebo počiatočným bodom projektu v LibreOffice Basic. Túto procedúru je možné bez obáv premenovať.

Pre názvy verejných premenných, procedúr a funkcií platia isté obmedzenia. Nesmiete použiť rovnaký názov ako je názov modulu v tej istej knižnici.

Procedúry (SUB) a funkcie (FUNCTION) vám pomáhajú udržovať štruktúru programu rozdelením na logické celky.

Jednou z výhod procedúr a funkcií je to, že už raz zapísané časti plniace určité úlohy je možné využiť i v iných projektoch.

## Odovzdávanie premenných procedúram (SUB) a funkciám (FUNCTION)

Premenné je možné odovzdávať procedúram i funkciám. SUB alebo FUNCTION musí byť deklarovaná tak, aby očakávalo parametre:

    Sub SubName(Parameter1 As Type, Parameter2 As Type,...)

    Kód programu

    End Sub

SUB zavoláte pomocou nasledujúcej syntaxe:

    SubName(Value1, Value2,...)

Paremetre odovzdané SUB musia zodpovedať tým, ktoré sú špecifikované v deklarácii SUB.

Rovnaký postup platí i pre FUNCTION. Naviac funkcie vždy vracajú výsledok. Výsledok funkcie sa určí tak, že sa názvu funkcie priradí výsledná hodnota:

    Function FunctionName(Parameter1 As Type, Parameter2 As Type,...) As Type

    Kód programu

    NázovFuncie=Výsledok

    End Function

FUNCTION sa volá pomocou nasledujúcej syntaxe:

    Premenna=NazovFunkcie(Parameter1, Parameter2,...)

Procedúru alebo funkciu je tiež možné volať plne kvalifikovaným názvom.
Knižnica.Modul.Makro()
Napríklad chcete zavolať makro Autotext z knižnice Gimmicks:
Gimmicks.AutoText.Main()

## Odovzdávanie premenných hodnotou alebo odkazom

Parametre pre SUB alebo FUNCTION je možné odovzdať buď odkazom alebo hodnotou. Pokiaľ nie je určené inak, vždy sa odovzdáva parameter odkazom. To znamená, že SUB alebo FUNCTION môže čítať a upravovať hodnotu parametra.

Pokiaľ chcete odovzdať parameter hodnotou, vložte pred parameter pri volaní SUB alebo FUNCTION kľúčové slovo "ByVal". Napríklad:

    Výsledok = Funkcia(ByVal Parameter)

V tomto prípade nemôže FUNCTION zmeniť pôvodný obsah parametra, pretože získa iba jeho aktuálnu hodnotu a nie parameter samotný.

## Viditeľnosť premenných

Premenná definovaná v rámci SUB alebo FUNCTION zostáva platná iba do ukončenia procedúry či funkcie. To je takzvaná "lokálna" premenná. V mnohých prípadoch potrebujete, aby premenná platila vo všetkých procedúrach, v každom module všetkých knižníc, alebo po ukončení SUB či FUNCTION.

### Deklarácia premenných mimo SUB alebo FUNCTION

    GLOBAL Premenna As TYP

Premenná je platná, pokiaľ neukončíte LibreOffice.

    PUBLIC Premenna As TYP

Premenná je platná vo všetkých moduloch.

    PUBLIC Premenna As TYP

Premenná je platná iba v tomto module.

    Dim NazovPremennej As TYPENAME

Premenná je platná iba v tomto module.

### Príklad pre súkromné premenné

Súkromné premenné nastavíte ako súkromné v rámci modulov pomocou CompatibilityMode(true).

    ' ***** Module1 *****

    Private myText As String

    Sub initMyText

        mojText = "Hello"

        print "in module1 : ", mojText

    End Sub

    ' ***** Module2 *****

    'Option Explicit

    Sub demoBug

        CompatibilityMode( true )

        initMyText

        ' Vráti prázdny reťazec

        ' (alebo vyvolá chybu pre Option Explicit)

        print "Now in module2 : ", mojText

    End Sub

### Uloženie obsahu premennej po ukončení SUB alebo FUNCTION

    STATIC Premenna As TYP

Premenna si zachová svoju hodnotu až do najbližšieho spustenia FUNCTION alebo SUB. Deklarovaná musí byť vo vnútri SUB alebo FUNCTION.

## Určenie typu návratovej hodnoty FUNCTION

Podobne ako pri premennej pridajte za názov funkcie znak typovej deklarácie, alebo na koniec zoznamu parametrov typ určený "As" a zodpovedajúcim kľúčovým slovom. Napr.:

    Function WordCount(WordText As String) As Integer