Използване на променливи

По-долу са описани основите на работата с променливи в LibreOffice Basic.

Правила за съставяне идентификатори на променливи

Имената на променливи не могат да надхвърлят дължина от 255 знака. Първият знак от името на променлива трябва да бъде латинска буква от A до Z или от a до z. В имената на променливи могат да се използват и цифри, но препинателни и специални знаци не се допускар, с изключение на знака долна черта (_). В LibreOffice Basic идентификаторите на променливи са нечувствителни към регистъра. Имената на променливи могат да съдържат интервали, но в такъв случай трябва да са оградени с квадратни скоби.

Примери за идентификатори на променливи:


    MyNumber=5      'Правилно'
    MyNumber5=15    'Правилно'
    MyNumber_5=20   'Правилно'
    My Number=20    'Неправилно, променлива с интервал трябва да е оградена в квадратни скоби'
    [My Number]=12  'Правилно'
    DéjàVu=25       'Неправилно, не се допускат специални знаци'
    5MyNumber=12    'Неправилно, променлива не може да започва с число'
    Number,Mine=12  'Неправилно, не се допускат пунктуационни знаци'

Обявяване на променливи

В LibreOffice Basic не е задължително да декларирате изрично променливите. Обявяването на променлива се извършва с оператора Dim. Можете да декларирате няколко променливи наведнъж, като разделите имената им със запетая. За да дефинирате типа на променливата, използвайте или знак за декларация на тип след името, или съответната ключова дума.

Примери за декларации на променливи:


    Dim a$               'Обявява променливата "a" от тип String'
    Dim a As String      'Обявява променливата "a" от тип String'
    Dim a$, b As Integer 'Обявява една променлива от тип String и една от тип Integer'
    Dim c As Boolean     'Обявява c като променлива от тип Boolean с възможни стойности TRUE и FALSE'
warning

След като сте декларирали променлива като принадлежаща на определен тип, не можете да декларирате променлива със същото име от друг тип!


Когато обявите няколко променливи на един ред от кода, трябва да зададете типа на всяка от тях. Ако типът на променлива не е зададен явно, Basic приема, че тя е от тип Variant.


  ' И двете променливи „a“ и „b“ са от тип Integer
  Dim a As Integer, b As Integer
  ' Променливата „c“ е Variant, а „d“ – Integer
  Dim c, d As Integer
  ' Променлива може да бъде и изрично декларирана като Variant
  Dim e As Variant, f As Double
note

Типът Variant е специален тип данни, който позволява съхранение на произволен вид стойност. За да научите повече, вижте раздела Типът Variant по-долу.


Форсиране на декларациите на променливи

За да направите обявяването на променливите задължително, използвайте следната команда:


Option Explicit

Операторът OPTION EXPLICIT трябва да бъде на първия ред от модула, преди първия блок SUB. Обикновено само масивите трябва да се обявяват изрично. Всички останали променливи се декларират според знака за тип или – ако той е пропуснат – като принадлежащи на подразбирания тип Single.

Типове на променливите

LibreOffice Basic поддържа четири вида променливи:

Целочислени променливи

Целочислените променливи приемат стойности от -32768 до 32767. Ако присвоите стойност с плаваща запетая на целочислена променлива, стойността ще бъде закръглена до най-близкото цяло число. С целочислените променливи се работи бързо и те са подходящи за броячи в цикли. Целочислените променливи заемат само по два байта в паметта. Техният знак за деклариране на тип е „%“.


Dim Variable%
Dim Variable As Integer

Дълги целочислени променливи

Дългите целочислени променливи приемат стойности от -2147483648 до 2147483647. Ако присвоите стойност с плаваща запетая на дълга целочислена променлива, стойността ще бъде закръглена до най-близкото цяло число. С дългите целочислени променливи се работи бързо и те са подходящи за броячи в цикли с големи стойности. Дългите целочислени променливи заемат по четири байта в паметта. Техният знак за деклариране на тип е „&“.


Dim Variable&
Dim Variable As Long

Десетични променливи

Десетичните променливи могат да приемат положителни, отрицателни и нулеви стойности. Точността им е до 29 цифри.

Можете да използвате знаците плюс (+) и минус (-) като префикси за десетични числа (с или без интервал).

Ако присвоите десетично число на целочислена променлива, LibreOffice Basic ще го закръгли нагоре или надолу.

Променливи с еднична точност

Променливите с единична точност приемат положителни или отрицателни стойности от 3,402823.10^38 до 1,401298.10^-45. Това са променливи с плаваща запетая, в които точността спада с удължаването на цялата част от стойността. Променливите с единична точност са подходящи за средно точни математически пресмятания. С тях се работи по-бавно, отколкото с целочислените, но по-бързо, отколкото с тези с двойна точност. Променливите с единична точност заемат по четири байта в паметта. Техният знак за деклариране на тип е „!“.


Dim Variable!
Dim Variable As Single

Променливи с двойна точност

Променливите с двойна точност приемат положителни или отрицателни стойности от 1,79769313486232.10^308 до 4,94065645841247.10^-324. Това са променливи с плаваща запетая, в които точността спада с удължаването на цялата част от стойността. Променливите с двойна точност са подходящи за точни пресмятания. С тях се работи по-бавно, отколкото с тези с единична точност. Променливите с двойна точност заемат по осем байта в паметта. Техният знак за деклариране на тип е „#“.


Dim Variable#
Dim Variable As Double

Променливи за парични суми

Променливите за парични суми се съхраняват вътрешно като 64-битови числа (8 байта) и се изобразяват като десетични числа с фиксирана запетая, с 15-цифрена цяла и 4-цифрена дробна част. Стойностите им варират от -922337203685477,5808 до +922337203685477,5807. Тези променливи се използват за валутни изчисления с висока точност. Съответният знак за деклариране на тип е „@“.


Dim Variable@
Dim Variable As Currency

Литерали за цели числа

Числата могат да се кодират в осмична и в шестнадесетична бройна система.


  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

Низови променливи

Низовите променливи могат да съдържат знакови низове с дължина до 2 147 483 648 знака. Всеки знак се съхранява като съответната стойност от Уникод. Низовите променливи са подходящи за обработка на текст в програми и за временно съхраняване на непечатни знаци с дължина до 2 ГБ. Необходимата памет за съхранение на низова променлива зависи от броя знаци в нея. Знакът за деклариране на тип е „$“.

tip

Във функциите на BASIC за низове първият знак на низа има индекс 1.



Dim Variable$
Dim Variable As String

Булеви променливи

Булевите променливи могат да съдържат само две стойности: TRUE (истина) или FALSE (лъжа). Числото 0 има стойност FALSE, а всички останали числа се считат за TRUE.


Dim Variable As Boolean

Променливи за дати

Променливите за дати могат да съдържат само дати и часове, съхранявани във вътрешен формат. Стойностите, присвоявани на променливите за дати с функциите Dateserial, Datevalue, Timeserial и Timevalue, автоматично се преобразуват във вътрешния формат. Променливите за дати се преобразуват в обикновени числа чрез функциите Day, Month, Year или Hour, Minute, Second. Вътрешният формат позволява сравняване на дати и часове чрез изчисляване на разликата между две числа. Тези променливи могат да се декларират само с ключовата дума Date.


Dim Variable As Date

Литерали за дати

Литералите за дати позволяват задаване на еднозначни променливи за дати, независими от текущия език. Литералите са оградени със знак диез #. Възможните формати са:


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

Типът Variant

Променливите, декларирани като Variant, могат да съдържат данни от всякакъв тип. Това означава, че действителният тип данни се определя по време на изпълнение, когато на променливата се присвои стойност.

Има три основни начина да се създаде променлива от тип Variant, както е показано по-долу:


  Dim varA            ' Типът не е зададен, следователно променливата е от тип Variant
  Dim varB as Variant ' Променливата е изрично декларирана като Variant
  varC = "abc"        ' Недекларираните променливи се смятат за Variant

В примера по-долу е използвана функцията TypeName, за да се покаже как типът на променлива, декларирана като Variant, се променя при присвояване.


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

Променливите, декларирани като Variant, се инициализират със специалния тип данни Empty. С функцията IsEmpty можете да проверите дали дадена променлива е Empty Variant.


Ключовата дума Any също може да се използва за деклариране на променлива като Variant. Any обаче е отхвърлена и се поддържа само заради обратна съвместимост.

warning

Аргументите с тип Variant или Any, предадени при обръщение към функция, не се проверяват по тип.



  Dim myVar As Any ' Променливата "myVar" е Variant

Начални стойности на променливите

Още при декларирането на променливата автоматично й се присвоява стойността „Null“. Обърнете внимание на следните правила:

Числовите променливи автоматично получават стойност 0 при обявяването си.

На променливите за дати се присвоява вътрешно стойност 0. Това е еквивалентно на преобразуването на стойността до „0“ с функциите Day, Month, Year или Hour, Minute, Second.

На низовите променливи при обявяването им се присвоява празен низ ("").

Масиви

LibreOffice Basic поддържа едномерни и многомерни масиви, дефинирани със специален вид променлива. Масивите са подходящи за редактиране на списъци и таблици в програмите. Отделните елементи на масив могат да се адресират чрез числов индекс.

Масивите трябва да бъдат обявени с оператора Dim. Има няколко начина за дефиниране на диапазона от индекси на масив:


    Dim Text$(20)       '21 елемента, номерирани от 0 до 20'
    Dim Text$(5,4)      '30 елемента (матрица от 6 x 5 елемента)'
    Dim Text$(5 To 25)  '21 елемента, номерирани от 5 до 25'
    Dim Text$(-15 To 5) '21 елемента (включително 0), номерирани от -15 до 5'

Диапазонът от индекси може да включва както положителни, така и отрицателни числа.

Константи

Константите имат фиксирана стойност. Те се задават само веднъж в програмата и след това не могат да се предефинират:


Const ConstName=Expression

Моля, подкрепете ни!