Usar variábeis

A continuación descríbese o uso básico das variábeis no Basic do LibreOffice.

Convencións de nomeamento das variábeis

O nome dunha variábel pode consistir nun máximo de 255 caracteres. O primeiro carácter do nome dunha variábel debe ser unha letra A-Z ou a-z. Tamén se poden empregar números no nome dunha variábel, mais os símbolos de puntuación e os caracteres especiais non están permitidos, coa excepción do trazo de subliñado ou guión baixo («_»). No Basic do LibreOffice os identificadores de variábeis non diferencian entre maiúsculas e minúsculas. Os nomes das variábeis poden conter espazos, mais neste caso deben ir metidas entre corchetes.

Exemplos de identificadores de variábeis:


    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'

Declaración de variábeis

No Basic do LibreOffice non hai que declarar as variábeis explicitamente. Pódese realizar unha declaración dunha variábel coa declaración Dim. Pódese declarar máis de unha variábel por vez, separando os nomes con vírgulas. Para definir o tipo de variábel, empregue un símbolo de declaración de tipo a continuación do nome ou empregue a palabra chave apropiada.

Exemplos de declaracións de variábeis:


    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

Despois de declarar unha variábel como dun tipo específico, non pode declarala de novo co mesmo nome e un tipo diferente!


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.


Obrigatoriedade das declaracións de variábeis

Use a seguinte orde para forzar a declaración de variábeis:


Option Explicit

The Option Explicit statement has to be the first line in the module, before the first SUB. Generally, only arrays need to be declared explicitly. All other variables are declared according to the type-declaration character, or - if omitted - as the default type Single.

Tipos de variábeis

O Basic do LibreOffice admite catro clases de variábeis:

Variábeis enteiras

As variábeis enteiras comprenden o intervalo de -32768 a 32767. Se atribúe un valor de punto flotante a unha variábel de número enteiro, os decimais arredóndanse ao número enteiro máis próximo. As variábeis enteiras calcúlanse rapidamente nos procedementos e son apropiadas como variábeis contador en lazos. Esas variábeis só requiren dous bytes de memoria. O carácter de declaración de tipo desas variábeis é o «%».


Dim Variable%
Dim Variable As Integer

Variábeis enteiras longas

As variábeis enteiras longas comprenden o intervalo -2147483648 a 2147483647. Se atribúe un valor de punto flotante a unha variábel de número enteiro longo, os decimais arredóndanse ao número enteiro máis próximo. As variábeis enteiras longas calcúlanse rapidamente nos procedementos e son apropiadas para contadores por lazos con valores maiores. Esas variábeis requiren catro bytes de memoria. O carácter de declaración de tipo desas variábeis é o «&».


Dim Variable&
Dim Variable As Long

Variábeis decimais

As variábeis decimais poden tomar números positivos, negativos ou cero. A precisión chega aos vinte e nove díxitos.

Pódense empregar símbolos de máis (+) ou menos (-) para os números decimais (con ou sen espazos).

Se un número decimal for asignado a unha variábel enteira, o Basic do LibreOffice arredonda o número por exceso ou por defecto.

Variábeis simples

As variábeis simples conteñen valores positivos ou negativos entre 3.402823 x 10E38 e 1.401298 x 10E-45. Son variábeis de punto flotante onde a precisión decimal diminúe cando a parte non decimal aumenta. Son apropiadas para cálculos matemáticos de precisión mediana. Os cálculos precisan de máis tempo que as variábeis enteiras aínda que son máis rápidos que con variábeis duplas. As variábeis simples requiren 4 bytes de memoria. O carácter de declaración de tipo é «!».


Dim Variable!
Dim Variable As Single

Variábeis duplas

As variábeis duplas conteñen valores positivos ou negativos entre 1.79769313486232 x 10E308 e 4.94065645841247 x 10E-324. Son variábeis de punto flotante onde a precisión decimal diminúe cando a parte non decimal aumenta. Son útiles para cálculos precisos. Estes cálculos demoran máis que coas variábeis simples. As variábeis duplas requiren 8 bytes de memoria. O carácter de declaración de tipo é «#».


Dim Variable#
Dim Variable As Double

Variábeis monetarias

As variábeis monetarias almacénanse internamente como números de 64 bits (8 Bytes) e móstranse como un número decimal fixo con 15 díxitos non decimais e 4 decimais. Os valores varían desde -922337203685477.5808 a +922337203685477.5807. Úsanse para calcular valores monetarios con alta precisión. O carácter de declaración de tipo é «@».


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

Variábeis de cadea

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

Variábeis lóxicas

As variábeis lóxicas almacenan só un destes valores: VERDADEIRO (TRUE) ou FALSO (FALSE). Un número 0 avalíase como FALSO, mestres que os outros valores avalíanse como VERDADEIRO.


Dim Variable As Boolean

Variábeis de data

As variábeis de data poden conter só valores de data e hora almacenados nun formato interno. Os valores atribuídos ás variábeis de tipo Data con Dateserial, Datevalue, Timeserial ou Timevalue son convertidas automaticamente para o formato interno. As variábeis de tipo Data son convertidas para números normais utilizando a función Day, Month, Year ou Hour, Minute, Second. O formato interno permite unha comparación de valores de data/hora calculando a diferenza entre dous números. Esas variábeis pode ser declaradas apenas coa palabra chave Date.


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:


  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

Valores iniciais das variábeis

Tras declarar a variábel, o seu valor defínese automaticamente como «Nulo». Teña en conta as seguintes convencións:

As variábeis numéricas reciben automaticamente o valor «0» así que son declaradas.

As variábeis de data reciben internamente o valor de 0; equivale a converter o valor en «0» coa función Day, Month, Year ou Hour, Minute, Second.

As variábeis de cadea reciben unha cadea baleira («») cando son declaradas.

Matrices

O Basic do LibreOffice recoñece matrices unidimensionais ou multidimensionais definidas por un tipo de variábel especificado. Son útiles para editar listas e táboas en programas. Pode acceder a elementos individuais dunha matriz por medio dun índice numérico.

As matrices teñen que ser declaradas coa declaración Dim. Existen varias maneiras de definir o intervalo do índice dunha matriz:


    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'

O intervalo do índice pode incluír tanto números positivos como negativos.

Constantes

As constantes teñen un valor fixo. Defínense só unha vez no programa e non poden redefinirse posteriormente:


Const ConstName=Expression

Precisamos da súa axuda!