Module
Contents
Index 🔎︎

# Muutujate kasutamine

Järgnev tekst kirjeldab muutujate kasutamist LibreOffice BASICus.

## Muutujate nimede nimetamisviisid

Muutuja nimi võib sisaldada maksimaalselt 255 märki. Muutuja nime esimene märk peab olema inglise tähestiku täht vahemikus A-Z või a-z. Numbrid muutuja nimes on samuti lubatud, kuid kirjavahemärgid mitte, erandiks on alakriips ("_"). LibreOffice BASICus ei ole muutujate nimed tõstutundlikud. Muutuja nimi võib sisaldada tühikuid, kuid sellisel juhul peab nimi olema nurksulgudes.

Muutujate nimede näited:

          MyNumber=5
| Õige
          MyNumber5=15
| Õige
          MyNumber_5=20
| Õige
          My Number=20
| Ei ole õige, muutujad, mille nimes on tühik, peab panema nurksulgudesse
          [My Number]=12
| Õige
          DéjàVu=25
| Ei ole õige, erimärgid pole lubatud
          5MyNumber=12
| Ei ole õige, muutuja nimi ei tohi alata numbriga
          Number,Mine=12
| Ei ole õige, kirjavahemärgid pole lubatud

## Muutujate deklareerimine

LibreOffice Basicus pole muutujaid vaja üksikasjalikult deklareerida. Muutuja deklareerimiseks saad kasutada lauset Dim. Korraga saad deklareerida mitu muutujat, eraldades nimed komaga. Muutuja tüübi määramiseks kasuta nime järel tüübikirjelduse märki või vastavat võtmesõna.

Muutujate deklaratsioonide näited:

          Dim a$
| Deklareerib stringi nimega "a"
          Dim a As String
| Deklareerib stringi nimega "a"
          Dim a$, b As Integer
| Deklareerib ühe muutuja stringina ning teise täisarvuna
          Dim c As Boolean
| Kirjeldab muutuja C tõeväärtusmuutujana, mille väärtuseks võib olla kas TRUE või FALSE

Muutujate deklareerimisel on oluline, et kasutaksid iga kord tüübikirjelduse märki isegi siis, kui seda kasutati deklaratsioonis võtmesõna asemel. Seetõttu on järgmised laused vigased.

          Dim a$
| Deklareerib "a" stringina
          a="TestString"
| Tüübideklaratsioon puudub: "a$="

Kui muutuja on juba deklareeritud mingit kindlat tüüpi, siis teist korda sama nimega, kuid erinevat tüüpi muutujat enam deklareerida ei saa!

### Muutujate deklareerimise pealesundimine

Kasuta muutujate deklareerimise pealesundimiseks järgmist käsku:

    Option Explicit

Lause Option Explicit peab olema mooduli esimene rida ja enne esimest SUB-i. Üldiselt tuleb üksikasjalikult deklareerida ainult massiivid. Kõik muud muutujad deklareeritakse vastavalt tüübikirjelduse märgile või kui see on vahele jäetud, siis vaikimisi tüübina Üksik.

## Muutujate tüübid

LibreOffice BASIC toetab nelja muutujate klassi:

- Numbriline tüüp võib sisaldada arvulisi väärtusi. Mõningaid muutujaid kasutatakse suurte või väikeste arvude säilitamiseks, teisi ujukoma- või murdarvude tarvis.

- String-muutujad sisaldavad märgijadasid.

- Tõeväärtus-muutuja võib sisaldada väärtusi TRUE (TÕENE) või FALSE (VÄÄR).

- Objekt-muutujad võivad sisaldada erinevat tüüpi objekte, nt tabeleid ja dokumentide sees olevaid dokumente.

### Täisarvulised muutujad

Täisarvulised muutujad võivad olla vahemikus -32768 kuni 32767. Kui määrad täisarvulisele muutujale ujukomaväärtuse, ümardatakse kümnendkohad järgmise täisarvuni. Täisarvulised muutujad arvutatakse protseduurides ja sobivad kasutamiseks loendurimuutujatena tsüklites. Täisarvmuutuja vajab ainult kaks baiti mälu. Tüübikirjelduse märk on "%".

    Dim Variable%
    Dim Variable As Integer

### Pikad täisarvmuutujad

Pikad täisarvulised muutujad võivad olla vahemikus -2147483648 kuni 2147483647. Kui määrad täisarvulisele muutujale ujukomaväärtuse, ümardatakse kümnendkohad järgmise täisarvuni. Pikad täisarvulised muutujad arvutatakse protseduurides ja sobivad kasutamiseks suurte väärtuste loendurimuutujatena tsüklites. Täisarvmuutuja vajab ainult neli baiti mälu. Tüübikirjelduse märk on "&".

    Dim Variable&
    Dim Variable As Long

### Kümnendmuutujad

Kümnendmuutujate väärtuseks võib olla postiivne või negatiivne arv või null. Täpsus on kuni 29 kohta.

Kümnendarvude ees võib kasutada märke pluss (+) ja miinus (-) (tühikuga ja ilma).

Kui kümnendväärtus omistatakse täisarvulisele muutujale, ümardab LibreOffice BASIC arvu üles- või allapoole.

### Üksikmuutujad

Üksikmuutuja väärtus võib olla positiivne või negatiivne vahemikus 3,402823 x 10E38 kuni 1,401298 x 10E-45. Üksikmuutujad on ujukomamuutujad, mille kümnendkohaline täpsus arvu mittekümnendkohalise osa suurenemisel väheneb. Üksikmuutujad sobivad kasutamiseks keskmise täpsusega matemaatilistes arvutustes. Võrreldes täisarvuliste muutujatega võtavad arvutused rohkem aega, kuid on siiski kiiremad kui topeltmuutujate kasutamisel. Üksikmuutuja jaoks on vaja 4 baiti mälu. Tüübikirjelduse märk on "!".

    Dim Variable!
    Dim Variable As Single

### Topeltmuutujad

Topeltmuutuja väärtus võib olla positiivne või negatiivne vahemikus 1,79769313486232 x 10E308 kuni 4,94065645841247 x 10E-324. Topeltmuutujad on ujukomamuutujad, mille kümnendkohaline täpsus arvu mittekümnendkohalise osa suurenemisel väheneb. Topeltmuutujad sobivad kasutamiseks täpsetes arvutustes. Võrreldes üksikmuutujatega võtavad arvutused rohkem aega. Topeltmuutuja jaoks on vaja 8 baiti mälu. Tüübikirjelduse märk on "#".

    Dim Variable#
    Dim Variable As Double

### Rahamuutujad

Rahamuutujad salvestatakse sisemiselt 64-bitiste arvudena (8baiti) ja kuvatakse fikseeritud kümnendkohtade arvuna 15 mittekümnendkoha ja 4 kümnendkohaga. Väärtus võib olla vahemikus -922337203685477,5808 kuni +922337203685477,5807. Rahamuutujaid kasutatakse suure täpsusega rahaliste väärtuste arvutamiseks. Tüübikirjelduse märk on "@".

    Dim Variable@
    Dim Variable As Currency

### String-tüüpi muutujad

Stringmuutujad võivad sisaldada kuni 65 535 märgist koosnevaid märgistringe. Stringi iga märk salvestatakse vastava Unicode'i väärtusena. Stringmuutujaid saab kasutada programmides tekstitöötluseks ja kuni 64 kB mitteprinditavate märkide ajutiseks talletamiseks. Stringmuutujate salvestamiseks vajalik mälumaht sõltub muutuja märkide arvust. Tüübikirjelduse märk on "$".

    Dim Variable$
    Dim Variable As String

### Loogilised muutujad

Loogilistes muutujates talletatakse ainult kahte väärtust: TÕENE ja VÄÄR. Number 0 annab hindamise tulemuseks väärtuse Väär, kõik muud arvud aga väärtuse TÕENE.

    Dim Variable As Boolean

### Kuupäeva tüüpi muutujad

Kuupäeva tüüpi muutujad võivad sisaldada ainult sisemises vormingus salvestatud kuupäeva- ja kellaajaväärtusi. Kuupäeva tüüpi muutujatele funktsiooni Dateserial, Datevalue, Timeserial või Timevalue abil määratud väärtused teisendadatakse automaatselt sisemisse vormingusse. Kuupäeva tüüpi muutujad teisendatakse funktsioonide Day, Month, Year või Hour, Minute, Second abil harilikeks arvudeks. Sisemine vorming võimaldab kahe arvu vahelise erinevuse arvutamise abil võrrelda kuupäeva- ja kellaajaväärtusi. Need muutujad saab deklareerida võtmesõna Date abil.

    Dim Variable As Date

## Muutujate algväärtused

Niipea, kui muutuja deklareeritakse, omistatakse sellele kohe väärtus "Null". Tähele tuleb panna järgmist:

Numbriline muutuja saab deklareerimisel kohe väärtuseks "0".

Kuupäeva tüüpi muutujatele määratakse sisemiselt väärtus 0; funktsiooni Day, Month, Year or the Hour, Minute, Second abil väärtuse nulliks (0) teisendamise ekvivalent.

Stringmuutujatele omistatakse deklareerimisel ("").

## Massiivid

LibreOffice Basic tunneb määratud muutujatüübiga määratud ühe- ja mitmemõõtmelisi massiive. Massiivid sobivad kasutamiseks programmides loendite ja tabelite redigeerimisel. Massiivi üksikelemente saab otsida numbrilise indeksi järgi.

Massiivid peavad olema deklareeritud lause Dim abil. Massiivi indeksivahemiku deklareerimiseks on mitu võimalust.

          Dim Text$(20)
| 21 elementi, nummerdatud 0 kuni 20
          Dim Text$(5,4)
| 30 elementi (6 x 5 elemendiga maatriks)
          Dim Text$(5 To 25)
| 21 elementi, nummerdatud 5 kuni 25
          Dim Text$(-15 To 5)
| 21 elementi (kaasa arvatud 0), nummerdatud -15 kuni 5

Indeksi vahemik võib hõlmata nii positiivseid kui negatiivseid arve.

## Konstandid

Konstantidel on fikseeritud väärtus. Neid defineeritakse programmis ainult ühe korra ning nende väärtust ei saa hiljem muuta.

    Const ConstName=Expression