Contents
Index 🔎︎

# Korištenje Procedura i Funkcija

Slijedeće opisuje osnovnu upotrebu procedura i funkcija u LibreOffice Basic-u.

Kada kreiraš novi modul , LibreOffice Basic automatski unosi SUB zvani "Osnovni". Ovo dodijeljeno ime nema veze sa poretkom početne tačke LibreOffice Basic projekat. Također možeš sigurno preimenovati ovaj SUB.

Some restrictions apply for the names of your public variables, subs, and functions. You must not use the same name as one of the modules of the same library.

Procedure (SUBS) i funkcije (FUNCTIONS) pomažu pri održavanju strukturalnog pregleda rastavljanjem programa u logične dijelove.

Prednost procedura i funkcija je što, kada razviješ program koji sadrži kompnente zadatka, možeš koristiti kod u drugom projektu.

## Prenošenje Varijabli Procedurama (SUB) i Funkcijama (FUNCTION)

Variable se mogu prenijeti objema procedurama i funkcijama. SUB ili FUNCTION mora biti deklarisana da očekuje parametre:

    Sub SubName(Parameter1 As Type, Parameter2 As Type,...)
    Kod programa
    End Sub

SUB je pozvan koristeći slijedeću sintaksu:

    SubName(Value1, Value2,...)

Parametri preneseni SUB-u moraju odgovarati onima koji su određeni pri SUB deklaraciji.

Isti proces se primjenjuje FUNKCIJAMA. Uz to, funkcije uvijek vraćaju rezultate funkcije.Rezultat funkcije je definisan dodjelom povratne vrijednosti imenu funkcije:

    Function FunctionName(Parameter1 As Type, Parameter2 As Type,...) As Type
    Kod programa
    FunctionName=Result
    End Function

Funkcija je pozvana koristeći slijedeću sintaksu:

    Variable=FunctionName(Parameter1, Parameter2,...)

Također možete koristiti potpuno kvalifikovano ime da bi pozvali proceduru ili funkciju
Library.Module.Macro()
FNa primjer, da bi pozvali Autotext macro iz biblioteke Gimmicks, koristite ovu komandu:
Gimmicks.AutoText.Main()

## Prenos Varijabli Vrijednošću ili Referencom

Parametri se mogu dodijeliti SUB-u ili FUNCTION referencom ili vrijednošću. Ukoliko nije drukčije odrđeno, parametar je uvijek prenesen referencom. To znači da SUB ili FUNCTION dobiva parametar i može čitati i mijenjati vrijednost.

Ako želiš prenijeti parameter sa vrijednošću unesi ključnu riječ "ByVal" ispred parametra kada pozivaš SUB ili FUNKCIJU, na primjer:

    Result = Function(ByVal Parameter)

U ovom slučaju, originalni sadržaj parametra neće biti promjenjen FUNKCIJOM jer uzima samo vrijednost a ne sami parametar.

## Domena Varijabli

Varijabla definisana unutar SUB ili FUNKCIJE je ispravna samo do izlaza iz procedure. Ovo je poznato kao "lokalna" varijabla. U mnogim slučajevima, potrebna je varijabla koja je ispravna u svim procedurama, u svakom modulu svih biblioteka, ili nakon što se izađe iz SUB ili FUNKCIJE.

### Deklarisanje Varijabli izvan SUB ili FUNKCIJE

    Global VarName As TYPENAME

varijabla je ispravna sve dok LibreOffice sesija traje.

    Public VarName As TYPENAME

Varijabla je ispravna u svim modulima.

    Private VarName As TYPENAME

Varijabla je ispravna u svim modulima.

    Dim VarName As TYPENAME

Varijabla je ispravna u svim modulima.

### Primjer privatnih varijabli

Nametni da privatne varijable budu privatne u svim modulima postavljajuci CompatibilityMode(true).

    ' ***** Module1 *****
    Private myText As String
    Sub initMyText
        myText = "Hello"
        Print "In module1 : ", myText
    End Sub

    ' ***** Module2 *****
    'Option Explicit
    Sub demoBug
        CompatibilityMode( true )
        initMyText
        Sada vraća prazan string
        ' (or raises error for Option Explicit)
        Print "Now in module2 : ", myText
    End Sub

### Sačuvati sadržaj varijable nakon izlaza iz SUB ili FUNCTION

    Static VarName As TYPENAME

Varijabla zadržava vrijednost sve dok se idući put otvori FUNCTION ili SUB. Deklaracija mora postojati unutar SUB ili FUNKCIJE.

## Određivanje Tipa Povratne Vrijednosti za FUNKCIJU

Kao i sa varijablama, uključi slovo za deklaraciju tipa poslije imena funkcije, ili tip označen sa "As" i odgovarajućom ključnom rječju na kraju liste parametara da bi definisali tip povratne vrijednosti za funkciju, na primjer:

    Function WordCount(WordText As String) As Integer