Variabelen gebruiken

Hieronder wordt het basisgebruik van variabelen in LibreOffice BASIC beschreven.

Naamgevingsconventies voor variabelen-ID's

Een variabelenaam mag maximaal 255 tekens bevatten. Het eerste teken van een variabelenaam moet een letter A-Z of a-z zijn. U kunt ook getallen in een variabelenaam gebruiken, maar leestekens en speciale tekens zijn niet toegestaan met uitzondering van het onderstrepingsteken ("_"). In LibreOffice BASIC zijn ID's van variabelen niet hoofdlettergevoelig. Er mogen spaties in variabelenamen staan, maar deze moeten dan wel tussen vierkante haakjes staan.

Voorbeelden van variabelen-ID's:


    MyNumber=5      "Correct"
    MyNumber5=15    "Correct"
    MyNumber_5=20   "Correct"
    My Number=20    "Niet geldig, variabele met een spatie moet tussen vierkante haakjes staan"
    [My Number]=12  "Correct"
    DéjàVu=25      "Niet geldig, speciale tekens zijn niet toegelaten"
    5MyNumber=12    "Niet geldig, de variabele mag niet met een cijfer beginnen"
    Number,Mine=12  "Niet geldig, leestekens zijn niet toegelaten"

Variabelen declareren

In LibreOffice BASIC hoeft u variabelen niet expliciet te declareren. Het declareren van variabelen kan met de instructie Dim uitgevoerd worden. U kunt meerdere variabelen tegelijk declareren door de namen met een komma te scheiden. Gebruik een type-aanduidingsteken na de naam, of het toepasselijke sleutelwoord om het type variabele te definiëren.

Voorbeelden van declaraties:


    Dim a$               "Beschouwt de variabele "a" als een String"
    Dim a As String               "Beschouwt de variabele "a" als een String"
    Dim a$, b As Integer "Beschouwt één variabele als een String en één als een geheel getal"
    Dim c As Boolean     'Beschouwt c als een Booleaanse variabele, die TRUE of FALSE kan zijn
warning

Hebt u een variabele eenmaal als een bepaald type gedefinieerd, dan kunt u de variabele niet nogmaals met dezelfde naam als een ander type definiëren!


Als u meerdere variabelen in een regel code declareert, dan moet het type per variabele worden gespecificeerd. Als u dat niet doet, zal Basic aannemen dat het type van de variabele Variant is.


  ' Beide variabelen "a" en "b" zijn van het type Integer
  Dim a As Integer, b As Integer
  ' Variabele "c" is een Variant en "d" is een Integer
  Dim c, d As Integer
  ' Een variabele kan ook expliciet als Variant worden vastgelegd
  Dim e As Variant, f As Double
note

Het type Variant is een datatype dat elke mogelijke waarde kan bevatten. Lees het gedeelte Het Variant-type.


Declaratie van variabelen afdwingen

Gebruik de volgende opdracht om declaratie van variabelen af te dwingen:


Option Explicit

De instructie Option Explicit moet de eerste regel in de module zijn, vóór de eerste SUB. Meestal moeten alleen matrices expliciet gedeclareerd worden. Alle andere variabelen worden volgens het type-aanduidingsteken gedeclareerd of, indien weggelaten, als het standaardtype Single.

Typen variabelen

LibreOffice BASIC ondersteunt vier klassen variabelen:

Integer-variabelen

Integer-variabelen gaan van -32768 tot 32767. Als u een drijvende-kommawaarde aan een integere variabele toewijst, worden de decimalen naar het volgende gehele getal afgerond. Integer-variabelen worden snel in procedures berekend en zijn geschikt voor tellervariabelen in lussen. Een Integer-variabele vereist slechts 2 byte geheugen. "%" is het type-aanduidingsteken.


Dim Variable%
Dim Variable As Integer

Long Integer variabelen

Long Integer variabelen hebben een waarde van -2147483648 tot 2147483647. Als u een drijvende-kommawaarde aan zo'n variabele toewijst, worden de decimalen naar het volgende gehele getal afgerond. Deze variabelen worden snel in procedures berekend en zijn geschikt als teller in grote lussen. Dit type variabele vereist 4 byte geheugen. Het aanduidingsteken voor het type is "&".


Dim Variable&
Dim Variable As Long

Decimale variabelen

Decimale variabelen kunnen positieve of negatieve getallen of nul zijn. De nauwkeurigheid gaat tot 29 cijfers.

U kunt plus- (+) of min- (-) tekens gebruiken als voorvoegsels voor decimale getallen (met of zonder spaties).

Als een decimaal getal is toegewezen aan een Integer-variabele, rondt LibreOffice Basic het getal naar boven of beneden af.

Single-variabelen

Variabelen kunnen positieve of negatieve waarden aannemen die variëren van 3,402823 x 10E38 tot 1,401298 x 10E-45. Het zijn variabelen met een drijvende komma, waarbij de decimale precisie afneemt naarmate het niet-decimale deel van het getal toeneemt. Ze zijn geschikt voor wiskundige berekeningen met gemiddelde precisie. Berekeningen kosten meer tijd dan voor variabelen met gehele getallen, maar zijn sneller dan berekeningen met double variabelen. Een variabele vereist 4 bytes geheugen. Het declaratieteken is "!".


Dim Variable!
Dim Variable As Single

Double-variabelen

Double variabelen kunnen positieve of negatieve waarden aannemen variërend van 1,79769313486232 x 10E308 tot 4,94065645841247 x 10E-324. Double variabelen zijn variabelen met een drijvende komma, waarbij de decimale precisie afneemt naarmate het niet-decimale deel van het getal toeneemt. Double variabelen zijn geschikt voor nauwkeurige berekeningen. Berekeningen kosten meer tijd dan voor normale variabelen. Een double variabele vereist 8 bytes geheugen. Het declaratieteken is "#".


Dim Variabele#
Dim Variable As Double

Valutavariabelen

Valutavariabelen worden intern opgeslagen als 64bits-getallen (8 byte) en weergegeven als een getal met een vast aantal plaatsen achter de komma (15 niet-decimale en 4 decimale plaatsen). De waarden gaan van -922337203685477,5808 tot +922337203685477,5807. Valutavariabelen worden gebruikt om valutawaarden uiterst nauwkeurig te berekenen. Het type-aanduidingsteken is "@".


Dim Variable@
Dim Variable As Currency

Letterlijke waarden voor gehele getallen

Getallen kunnen worden gecodeerd met octale en hexadecimale vormen.


  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-variabelen

Tekenreeksvariabelen kunnen tekenreeksen bevatten met maximaal 2.147.483.648 tekens. Elk teken wordt opgeslagen als de overeenkomstige Unicode-waarde. Tekenreeksvariabelen zijn geschikt voor tekstverwerking binnen programma's en voor tijdelijke opslag van niet-afdrukbare tekens tot een maximale lengte van 2 Gbytes. Het geheugen dat nodig is voor het opslaan van Tekenreeksvariabelen is afhankelijk van het aantal karakters in de variabele. Het type-declaratieteken is "$".

tip

In BASIC tekenreeks-functies, heeft het eerste teken van de tekenreeks, index 1.



Dim Variable$
Dim Variable As String

Booleaanse variabelen

Booleaanse variabelen slaan slechts één van twee waarden op: WAAR of ONWAAR. Het getal 0 levert ONWAAR op, terwijl alle andere waarden WAAR opleveren.


Dim Variable As Boolean

Datumvariabelen

Datumvariabelen kunnen enkel datums en tijdwaarden bevatten die in een interne notatie opgeslagen zijn. Waarden die met Dateserial, Datevalue, Timeserial of Timevalue aan datumvariabelen zijn toegewezen, worden automatisch naar de interne opmaak geconverteerd. Datumvariabelen worden naar normale getallen geconverteerd met behulp van de functie Dag, Maand, Jaar of Uur, Minuut, Seconde. Via de interne opmaak kunnen datum-/tijdwaarden vergeleken worden door het verschil tussen twee getallen te berekenen. Deze variabelen kunnen alleen met het sleutelwoord Date gedeclareerd worden.


Dim Variable As Date

Lettersymbolen voor Datums

Lettersymbolen voor datums maken het mogelijk om eenduidig een variabele voor een datum te specificeren onafhankelijk van de taal. Lettersymbolen staan tussen hekjes #. Mogelijke formaten zijn:


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

Het type Variant

Een variabele van het type Variant kan elk datatype bevatten. Dit betekent dat het datatype pas wordt bepaald bij het toekennen van een waarde aan de variabele.

Een variabele van het type Variant kan op drie manieren worden aangemaakt:


  Dim varA            ' Het type is niet aangegeven, dus het type is Variant
  Dim varB as Variant ' De variabele is expliciet gedeclareerd met het type Variant
  varC = "abc"        ' Een niet gedeclareerde variabele wordt behandeld alsof het type Variant is

Het onderstaande voorbeeld gebruikt de functie TypeName om te tonen hoe het type van een variabele Variant wijzigt als er een waarde aan de variabele wordt toegekend.


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

Een variabele van het type Variant wordt geïnitialiseerd met het speciale datatype Empty. U kunt de functie IsEmpty gebruiken om te zien of een variabele een Empty Variant is.


U kunt ook Any gebruiken om een variabele te declareren als een Variant. Het gebruik van Any wordt ontraden, maar het is beschikbaar om compatibel te blijven met oudere software.

warning

De argumenten in de aanroep van een functie met type Variant en Any worden niet op type gecontroleerd.



  Dim myVar As Any ' Variabele "myVar" is een Variant

Beginwaarden van variabelen

Zo gauw de variabele gedeclareerd is, wordt deze automatisch op de waarde "Null" ingesteld. Neem de volgende conventies in acht:

Aan numerieke variabelen wordt automatisch de waarde "0" toegewezen zodra ze gedefinieerd zijn.

Aan datumvariabelen wordt intern de waarde 0 toegewezen; equivalent aan het converteren van de waarde "0" met de functie Day, Month, Year of Hour, Minute, Second.

Aan tekenreeksvariabelen wordt een lege tekenreeks ("") toegewezen wanneer ze uitgevoerd worden.

Matrices

LibreOffice BASIC kent matrixen met één of meerdere dimensies, gedefinieerd door een gespecificeerd type variabele. Matrixen zijn geschikt voor het bewerken van lijsten en tabellen in programma's. Afzonderlijke elementen van een matrix kunnen via een numerieke index geadresseerd worden.

Matrices moeten gedeclareerd worden met de instructie Dim. Het indexbereik van een matrix kan op verschillende manieren gedefinieerd worden.


    Dim Text$(20)       "21 elementen zijn genummerd van 0 tot 20"
    Dim Text$(5,4)      "30 elementen (een matrix van 6 x 5 elementen)"
    Dim Text$(5 To 25)  "21 elementen genummerd van 5 tot 25"
    Dim Text$(-15 To 5) "21 elementen (met inbegrip van 0), genummerd van -15 tot 5"

Het indexbereik kan positieve en negatieve getallen bevatten.

Constanten

Constanten hebben een vaste waarde. Ze worden maar één keer in het programma gedefinieerd en kunnen later niet opnieuw gedefinieerd worden:


Const ConstName=Expression

Help ons, alstublieft!