Sisukord

# 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      'Correct'
        MyNumber5=15    'Correct'
        MyNumber_5=20   'Correct'
        My Number=20    'Not valid, variable with space must be enclosed in square brackets'
        [My Number]=12  'Correct'
        DéjàVu=25       'Not valid, special characters are not allowed'
        5MyNumber=12    'Not valid, variable may not begin with a number'
        Number,Mine=12  'Not valid, punctuation marks are not allowed'

## 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$               'Declares the variable "a" as a String'
        Dim a As String      'Declares the variable "a" as a String'
        Dim a$, b As Integer 'Declares one variable as a String and one as an Integer'
        Dim c As Boolean     'Declares c as a Boolean variable that can be TRUE or FALSE'

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

When you declare multiple variables in a single line of code you need to specify the type of each variable. If the type of a variable is not explicitly specified, then Basic will assume that the variable is of the Variant type.

      ' Both variables "a" and "b" are of the Integer type
      Dim a As Integer, b As Integer
      ' Variable "c" is a Variant and "d" is an Integer
      Dim c, d As Integer
      ' A variable can also be explicitly declared as a Variant
      Dim e As Variant, f As Double

The Variant type is a special data type that can store any kind of value. To learn more, refer to the section The Variant type below.

### 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.

### Lihttäpsusega reaalarvu tüüpi muutujad

Single variables can take positive or negative values ranging from 3.402823 x 10E38 to 1.401298 x 10E-45. Single variables are floating-point variables, in which the decimal precision decreases as the non-decimal part of the number increases. Single variables are suitable for mathematical calculations of average precision. Calculations require more time than for Integer variables, but are faster than calculations with Double variables. A Single variable requires 4 bytes of memory. The type-declaration character is "!".

    Dim Variable!
    Dim Variable As Single

### Topelttäpsusega reaalarvu tüüpi muutujad

Double variables can take positive or negative values ranging from 1.79769313486232 x 10E308 to 4.94065645841247 x 10E-324. Double variables are floating-point variables, in which the decimal precision decreases as the non-decimal part of the number increases. Double variables are suitable for precise calculations. Calculations require more time than for Single variables. A Double variable requires 8 bytes of memory. The type-declaration character is "#".

    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

### Literals for integers

Numbers can be encoded using octal and hexadecimal forms.

      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

### String-tüüpi muutujad

String variables can hold character strings with up to 2,147,483,648 characters. Each character is stored as the corresponding Unicode value. String variables are suitable for word processing within programs and for temporary storage of any non-printable character up to a maximum length of 2 Gbytes. The memory required for storing string variables depends on the number of characters in the variable. The type-declaration character is "$".

In BASIC String functions, the first character of the string has index 1.

    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

### Literals for Dates

Date literals allow to specify unambiguous date variables that are independent from the current language. Literals are enclosed between hash signs #. Possible formats are:

- #yyyy-mm-dd#

- #mm/dd/yyyy#

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

## The Variant type

Variables declared as Variant can handle any data type. This means that the actual data type is defined during runtime as a value is assigned to the variable.

There are three main ways to create a Variant variable, as shown below:

      Dim varA            ' The type is not specified, hence the variable is a Variant
      Dim varB as Variant ' The variable is explicitly declared as a Variant
      varC = "abc"        ' Previously undeclared variables are treated as Variants

The example below uses the TypeName function to show how the type of a Variant variable changes upon assignment.

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

A Variant variable is initialized with the Empty special data type. You can use the IsEmpty function to test if a variable is an Empty Variant.

You can also use the keyword Any to declare a variable as a Variant. However, Any is deprecated and is available for backward compatibility.

Arguments with type Variant or Any passed in function calls are not checked for their types.

      Dim myVar As Any ' Variable "myVar" is a Variant

## 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 elements numbered from 0 to 20'
        Dim Text$(5,4)      '30 elements (a matrix of 6 x 5 elements)'
        Dim Text$(5 To 25)  '21 elements numbered from 5 to 25'
        Dim Text$(-15 To 5) '21 elements (including 0), numbered from -15 to 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

Sarnased teemad

Basic Constants

Dim Statement