Использование переменных

Далее описано основное использование переменных в LibreOffice Basic.

Соглашения об именовании для идентификаторов переменных

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

Примеры идентификаторов переменных.


    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'

Объявление переменных

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

Примеры объявлений переменных.


    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'
warning

После объявления типа переменной нельзя задать переменную другого типа с таким же именем!


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
note

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.


Обязательное объявление переменных

Для принудительного объявления переменных служит следующая команда:


Option Explicit

Инструкция Option Explicit должна быть первой строкой модуля, до первой подпрограммы (SUB). Обычно в явном объявлении нуждаются только массивы. Все другие переменные объявляются в соответствии с символом объявления типа или, если он пропущен, переменной назначается тип по умолчанию Single (число с одинарной точностью).

Типы переменных

В LibreOffice Basic предусмотрена поддержка четырёх классов переменных.

Переменные типа Integer (целое число)

Переменные типа Integer могут иметь значение от -32768 до 32767. Если переменной типа Integer присваивается значение с плавающей точкой, десятичные разряды округляются до следующего целого числа. Переменные типа Integer удобны для быстрых вычислений в процедурах и пригодны для переменных счётчика в циклах. Для переменной типа Integer требуется всего два байта памяти. "%" — символ объявления типа.


Dim Variable%
Dim Variable As Integer

Числовые переменные типа Long

Переменные типа Long могут иметь значение от -2147483648 до 2147483647. Если переменной типа Long присваивается значение с плавающей точкой, десятичные разряды округляются до следующего целого числа. Переменные типа Long удобны для быстрых вычислений в процедурах и пригодны для переменных счётчика в циклах при использовании больших значений. Для переменной типа Long требуется четыре байта памяти. "&" — символ объявления типа.


Dim Variable&
Dim Variable As Long

Десятичные переменные

Десятичные переменные могут принимать положительные или отрицательные значения или нуль. Точность – до 29 разрядов.

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

Если десятичное число присвоено целой переменной, LibreOffice Basic округляет число в большую или меньшую сторону.

Переменные типа Single

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

Переменные типа Double

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

Переменные типа Currency (валюта)

Переменные типа Currency хранятся во внутренней памяти как 64-разрядные числа (8 байт) и отображаются как числа с фиксированным количеством разрядов (15 знаков в целой части и 4 знака в десятичной). Диапазон значений включает числа от -922337203685477.5808 до +922337203685477.5807. Переменные типа Currency применяются в расчётах денежных значений высокой точности. Символом описания типа является "@".


Dim Variable@
Dim Variable As Currency

Литералы для целых чисел

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 (строки)

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 "$".

tip

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



Dim Variable$
Dim Variable As String

Переменные типа Boolean (логические)

Переменные типа Boolean содержат только одно из двух значений: ИСТИНА или ЛОЖЬ. Число 0 соответствует значению ЛОЖЬ, все другие значения соответствуют значению ИСТИНА.


Dim Variable As Boolean

Переменные типа Date (дата)

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


Dim Variable As Date

Литералы для дат

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


  start_date = #12/30/1899# ' = 1
  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
note

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.

warning

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

Начальные значения переменных

После объявления переменной ей автоматически присваивается значение "Null". Приняты следующие соглашения.

Числовым переменным после их объявления автоматически присваивается значение "0".

Переменным дат присваивается внутреннее значение 0, эквивалентное преобразованию значения в "0" с помощью функции Day, Month, Year или Hour, Minute, Second.

Строковым переменным при объявлении присваевается пустая строка ("").

Массивы

В LibreOffice Basic есть одно- и многомерные массивы, определяемые с помощью заданного типа переменной. Массивы применяются для изменения списков и таблиц в программах. К отдельным элементам массива можно обращаться с помощью числового индекса.

Массивы необходимо объявлять с помощью инструкции Dim. Для определения диапазона индексов массива используется несколько способов.


    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'

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

Константы

Константы имеют фиксированное значение. Они определяются в программе только раз и не могут быть переопределены позднее.


Const ConstName=Expression

Пожалуйста, поддержите нас!