Vsebina

# Uporaba spremenljivk

Sledi opis osnov uporabe spremenljivk v LibreOffice Basicu.

## Pravila poimenovanja za identifikatorje spremenljivk

Ime spremenljivke ima lahko največ 255 znakov. Prvi znak imena mora biti črka. V imenu spremenljivke lahko uporabite tudi številke, ločila in ostali posebni znaki pa razen podčrtaja (»_«) niso dovoljeni. LibreOffice Basic pri imenih spremenljivk ne razlikuje med velikimi in malimi črkami. Imena spremenljivk lahko vsebujejo presledke, vendar morajo biti v tem primeru ograjena v zavite oklepaje.

Primeri imen spremenljivk:

        MojaStevilka=5      'Pravilno'
        MojaStevilka5=15    'Pravilno'
        MojaStevilka_5=20   'Pravilno'
        Moja stevilka=20    'Neveljavno. Ime spremenljivke s presledkom mora biti ograjeno z oglatimi oklepaji'
        [Moja stevilka]=12  'Pravilno'
        MojaŠtevilka=25       'Neveljavno, posebni znaki niso dovoljeni.'
        5MojaStevilka=12    'Neveljavno, ime spremenljivke se ne sme začeti s številko.'
        Stevilka,moja=12  'Neveljavno, ločila niso dovoljena.'

## Deklariranje spremenljivk

V LibreOffice Basicu vam spremenljivk ni treba posebej deklarirati. Deklaracijo lahko izvedete z ukazom Dim. Naenkrat lahko deklarirate več spremenljivk tako, da jih navedete in ločite z vejico. Za določitev vrste spremenljivke uporabite znak za deklaracijo vrste za imenom spremenljivke ali ustrezno ključno besedo.

Primeri za deklaracije spremenljivke:

        Dim a$               'Deklarira spremenljivko »a« kot String (niz znakov)'
        Dim a As String      'Deklarira spremenljivko »a« kot String (niz znakov)'
        Dim a$, b As Integer 'Deklarira prvo spremenljivko kot String (niz znakov) in drugo kot Integer – celo število'
        Dim c As Boolean     'Deklarira spremenljivko c kot Boolean, to je logično spremenljivko, ki je lahko res (TRUE) ali ni res (FALSE)'

Ko enkrat deklarirate spremenljivko določene vrste, ne morete deklarirati spremenljivke druge vrste z enakim imenom!

Če deklarirate več spremenljivk v eni sami vrstici kode, morate navesti vrsto za vsako spremenljivko. Če vrsta spremenljivke ni izrecno navedena, Basic predvideva, da je spremenljivka vrste Variant.

      ' Spremenljivki "a" in "b" sta vrste Integer (celo število)
      Dim a As Integer, b As Integer
      ' Spremenljivka "c" je vrste Variant, "d" je vrste Integer
      Dim c, d As Integer
      ' Spremenljivka je lahko tudi eksplicitno deklarirana kot vrste Variant
      Dim e As Variant, f As Double

Vrsta Variant je posebna podatkovna vrsta, ki lahko hrani poljubno vrsto vrednosti. Podrobnosti si preberite v spodnjem razdelku Spremenljivke vrste Variant.

### Obvezno deklariranje spremenljivk

Če želite, da bo deklaracija spremenljivk obvezna, uporabite sledeči ukaz:

    Option Explicit

Ukaz Option Explicit mora biti prva vrstica v modulu, pred prvim ukazom SUB. V splošnem je izrecna deklaracija potrebna samo za polja. Vse ostale spremenljivke se deklarirajo v skladu z znakom za vrsto deklaracije ali pa, če ga ni, kot privzeta vrsta Single.

## Vrste spremenljivk

LibreOffice Basic podpira štiri razrede spremenljivk:

- Numerične spremenljivke lahko vsebujejo številčne vrednosti. Nekatere spremenljivke se uporabljajo za velika ali majhna števila, druge pa za števila s plavajočo vejico ali ulomke.

- Znakovne spremenljivke (String) vsebujejo nize znakov.

- Logične (Boolean) spremenljivke vsebujejo vrednost res ali ne res (TRUE ali FALSE).

- Spremenljivke vrste Object (predmet) lahko hranijo predmete različnih vrst, kot so tabele in dokumenti znotraj dokumenta.

### Spremenljivke celoštevilčne vrste Integer

Spremenljivke vrste Integer imajo razpon od -32768 do 32767. Če spremenljivki vrste Integer dodelite vrednost vrste števila s plavajočo vejico, se decimalna mesta zaokrožijo na naslednje celo število. S spremenljivkami vrste Integer se hitro računa in so primerne za števce znotraj programskih zank. Zasedejo samo dva bajta pomnilnika. Znak za deklaracijo vrste je »%«.

    Dim Variable%
    Dim Variable As Integer

### Spremenljivke vrste Long Integer

Celoštevilčne spremenljivke vrste Long Integer imajo razpon od -2147483648 do 2147483647. Če spremenljivki vrste Long Integer dodelite vrednost vrste števila s plavajočo vejico, se decimalna mesta zaokrožijo na naslednje celo število. S spremenljivkami vrste Long Integer se hitro računa in so zato primerne za števce znotraj programskih zank. Zasedejo štiri bajte pomnilnika. Znak za deklaracijo vrste je »&«.

    Dim Variable&
    Dim Variable As Long

### Decimalne spremenljivke

Decimalne spremenljivke imajo lahko negativno ali pozitivno vrednost ali so enake nič. Natančnost je do 29 decimalk.

Kot predznak za decimalne številke lahko uporabite znak plus (+) ali minus (-) (s presledkom ali brez).

Če je celoštevilčni spremenljivki določena decimalna številka, LibreOffice Basic zaokroži vrednost navzgor ali navzdol.

### Spremenljivke vrste Single

Spremenljivke vrste Single lahko zavzemajo negativno ali pozitivno vrednost z obsegom od 3,402823 x 10E38 do 1,401298 x 10E-45. Gre za števila s plavajočo vejico, pri katerih se natančnost decimalnega dela števila manjša z naraščanjem celega dela števila. Primerne so za matematične izračune s povprečno natančnostjo. Izračuni zahtevajo več časa kot spremenljivke vrste Integer, so pa bolj hitri od izračunov s spremenljivkami vrste Double. Spremenljivka vrste Single zasede 4 bajte pomnilnika. Znak za deklaracijo vrste je »!«.

    Dim Variable!
    Dim Variable As Single

### Spremenljivke vrste Double

Spremenljivke vrste Double lahko imajo negativno ali pozitivno vrednost z obsegom od 1,79769313486232 x 10E308 do 4,94065645841247 x 10E-324. Gre za števila s plavajočo vejico, pri katerih se natančnost decimalnega dela števila manjša z naraščanjem celega dela števila. Primerne so za natančne matematične izračune. Izračuni zahtevajo več časa kot spremenljivke vrste Single. Spremenljivka vrste Double zasede 8 bajte pomnilnika. Znak za deklaracijo vrste je »#«.

    Dim Spremenljivka#
    Dim Variable As Double

### Spremenljivke vrste Currency

Spremenljivke vrste Currency (valuta) so notranje hranjene kot 64-bitna števila (8 bajtov) in prikazana kot številke s 15 celimi mesti in 4 decimalnimi mesti. Njihove vrednost obsegajo od -922.337.203.685.477,5808 do +922.337.203.685.477,5807. Uporabljamo jih za računanje finančnih postavk z visoko natančnostjo. Znak za deklaracijo vrste je »@«.

    Dim Variable@
    Dim Variable As Currency

### Zapisi celih števil

Števila so lahko v osmiški ali šestnajstiški obliki.

      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

### Spremenljivke vrste String

Spremenljivke vrste String lahko vsebujejo nize znakov do dolžine 2.147.483.648 znakov. Vsak znak je shranjen kot ustrezna koda Unicode. Spremenljivke vrste String so primerne za obdelavo besedil v okviru programa in za shranjevanje poljubnih kombinacij znakov do dolžine 2 Gb. Velikost potrebnega pomnilnika za spremenljivko vrste String je odvisna od števila znakov v njej. Znak za deklaracijo vrste je »$«.

V funkcijah BASIC z nizi (s spremenljivkami vrste String) ima prvi znak niza indeks 1.

    Dim Variable$
    Dim Variable As String

### Spremenljivke vrste Boolean

Spremenljivke vrste Boolean lahko shranjujejo le dve vrednosti: ali RES ali NI RES. Število 0 velja za FALSE, vse ostale vrednosti pa kot TRUE.

    Dim Variable As Boolean

### Spremenljivke vrste Date

Spremenljivke vrste Date vsebujejo podatke o datumu in času, pretvorjene v notranjo obliko. Vrednosti, dodeljene spremenljivki vrste Date z Dateserial, Datevalue, Timeserial ali Timevalue, se samodejno pretvorijo v notranjo obliko. Datumske spremenljivke pretvorimo v številke z uporabo funkcij Day, Month, Year ali Hour, Minute, Second. Notranja oblika omogoča primerjavo oziroma izračun razlike med dvema številkama. Te spremenljivke je mogoče deklarirati samo s ključno besedo Date.

    Dim Variable As Date

### Neposredni zapisi datumov

Neposredni zapisi datumov omogočajo podajanje datumskih spremenljivk na nedvoumen način, neodvisen od krajevnih nastavitev. Takšni zapisi so zaobjeti z višaji (znak #). Možna zapisa sta:

- #yyyy-mm-dd#

- #mm/dd/yyyy#

      start_date = #12/30/1899# ' = 1
      dob = #2010-09-28#

## Spremenljivke vrste Variant

Deklarirane spremenljivke vrste Variant lahko imajo vrednost poljubne vrste podatkov. To pomeni, da se dejanska vrsta podatkov določi med izvajanjem, ko je spremenljivki dodeljena vrednost.

Spremenljivko vrste Variant lahko ustvarite na tri različne načine, kar je prikazano spodaj:

      Dim varA            ' Vrsta spremenljivke ni navedena, torej je vrste Variant
      Dim varB as Variant ' Spremenljivka je izrecno deklarirana kot vrste Variant
      varC = "abc"        ' Poprej ne deklarirane spremenljivke so obravnavane kot spremenljivke vrste Variant

Naslednji primer uporablja funkcijo TypeName, da prikaže, kako se vrsta spremenljivke Variant spreminja z dodeljevanjem vrednosti.

      Dim myVar As Variant
      MsgBox TypeName(myVar) ' Empty
      myVar = "Hello!"
      MsgBox TypeName(myVar) ' String
      myVar = 10
      MsgBox TypeName(myVar) ' Integer

Spremenljivko vrste Variant inicializirate s posebno vrsto podatkov Empty. S funkcijo IsEmpty lahko preverite, če je spremenljivka vrste Variant Empty.

Za deklaracijo spremenljivke vrste Variant lahko uporabite tudi ključno besedo Any. Vendar je Any zastarela oz. opuščena in je na voljo le zaradi združljivosti s starejšimi izdajami.

Preverjanje vrste za argumente vrste Variant ali Any, ki so podani v klicih funkcij, se ne izvaja.

      Dim mojaSpr As Any ' Spremenljivka "mojaSpr" je vrste Variant

## Začetne vrednosti spremenljivk

Takoj, ko je spremenljivka deklarirana, dobi vrednost »Null«. Pri tem veljajo naslednja pravila:

Spremenljivke vrste Numeric dobijo ob deklaraciji vrednost »0«.

Spremenljivke vrste Date dobijo interno vrednost 0, to je vrednost, ki bi jo dobili, če bi vanje vnesli vrednost »0« s funkcijami Day, Month, Year ali Hour, Minute, Second.

Spremenljivke vrste String ob deklaraciji dobijo vrednost praznega niza ("").

## Polja

LibreOffice Basic podpira eno- ali večdimenzionalna polja spremenljivk z dano vrsto spremenljivke. Polja so primerna za urejanje seznamov ali tabel v programih. Posamezni elementi polja so naslovljivi s številčnim indeksom.

Polja morate deklarirati z ukazom Dim. Za definicijo obsega indeksa polja sta na razpolago dve metodi:

        Dim besedilo$(20)       '21 elementov, oštevilčenih od 0 do 20'
        Dim besedilo$(5,4)      '30 elementov (matrika 6 x 5 elementov)'
        Dim besedilo$(5 to 25)   '21 elementov, oštevilčenih od 5 do 25'
        Dim besedilo$(-15 To 5) '21 elementov, oštevilčenih od -15 do 5 (vključno z 0)'

Obseg indeksa vsebuje lahko pozitivne in negativne številke.

## Konstante

Konstante imajo nespremenljivo vrednost. Določimo jih samo enkrat v programu in jih kasneje ni mogoče znova definirati:

    Const ConstName=Expression

Podobne teme

Konstante Basica

Ukaz Dim