Модул
Съдържание
Индекс 🔎︎

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

По-долу са описани основите на работата с променливи в 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 (лъжа)

При обявяване на променливи е много важно винаги да използвате знака за деклариране на тип, дори ако е бил използван в декларацията вместо ключова дума. Затова следните оператори са невалидни:

          Dim a$
| Обявява променливата „a“ от тип String
          a="TestString"
| Липсва декларация на тип: "a$="

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

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

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

    Option Explicit

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

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

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

- Числови променливи, които могат да съдържат числови стойности. Някои променливи служат за съхраняване на много големи или много малки числа, а други – за съхраняване на дробни числа или числа с плаваща запетая.

- Низови променливи, които съдържат знакови низове.

- Булеви променливи, съдържащи стойност TRUE или FALSE.

- Обектни променливи, съхраняващи обекти от различни типове, например таблици или документи.

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

Целочислените променливи приемат стойности от -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

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

Низовите променливи могат да съдържат знакови низове с дължина до 65 535 знака. Всеки знак се съхранява като съответната стойност от Уникод. Низовите променливи са подходящи за обработка на текст в програми и за временно съхраняване на непечатни знаци с дължина до 64 КБ. Необходимата памет за съхранение на низова променлива зависи от броя знаци в нея. Знакът за деклариране на тип е „$“.

    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

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

Още при декларирането на променливата автоматично й се присвоява стойността „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 на 5 елемента)
          Dim Text$(5 To 25)
| 21 елемента, номерирани от 5 до 25
          Dim Text$(-15 To 5)
| 21 елемента (включително номер 0), номерирани от -15 до 5

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

## Константи

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

    Const ConstName=Expression