Uso de variables

A continuación se describe el uso básico de variables en LibreOffice Basic.

Convenciones de nombres para identificadores de variables

Un nombre de variable puede tener hasta 255 caracteres. El primer carácter de un nombre de variable debe ser una letra entre A y Z o entre a y z. También es posible utilizar números en los nombres de variable, aunque no se permiten ni signos de puntuación ni caracteres especiales, con la excepción del guion bajo («_»). En LibreOffice Basic no se hace distinción entre mayúsculas y minúsculas en los identificadores de variable. Los nombres de variable pueden contener espacios, pero en ese caso deben delimitarse entre corchetes.

Ejemplos de identificadores de variable:


    MiNumero=5      'Correcto'
    MiNumero5=15    'Correcto'
    MiNumero_5=20   'Correcto'
    Mi Numero=20    'No válido; las variables con espacios deben escribirse entre corchetes'
    [Mi Numero]=12  'Correcto'
    DéjàVu=25       'No válido; no se permiten caracteres especiales'
    5MiNumero=12    'No válido; la variable no puede comenzar por un número'
    Numero,Mio=12  'No válido; no se permiten signos de puntuación'

Declaración de variables

En LibreOffice Basic no es necesario declarar las variables explícitamente. Las declaraciones de variables pueden realizarse con la instrucción Dim. Puede declarar más de una variable a la vez separando sus nombres mediante una coma. Para definir el tipo de variable, use un signo de declaración de tipo después del nombre o la palabra clave apropiada.

Ejemplos de declaraciones de variable:


    Dim a$               'Declara la variable «a» como cadena'
    Dim a As String      'Declara la variable «a» como cadena'
    Dim a$, b As Integer 'Declara una variable como cadena y otra como entero'
    Dim c As Boolean     'Declara «c» como una variable booleana que puede ser VERDADERA o FALSA'
warning

Tenga en cuenta que en cuanto haya declarado una variable como de un tipo concreto ya no puede declararla con el mismo nombre y un tipo distinto.


Cuando se declaran varias variables en un solo renglón de código, es necesario especificar el tipo de cada variable. Si no se especifica de forma explícita el tipo de una variable, BASIC supondrá que esta es del tipo Variant.


  ' Tanto la variable «a» como la «b» son del tipo entero
  Dim a As Integer, b As Integer
  ' La variable «c» es variante y la «d», entera
  Dim c, d As Integer
  ' Las variables también pueden declararse de forma explícita como de tipo variante
  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.


Forzar declaraciones de variables

Para forzar la declaración de variables, use la orden siguiente:


Option Explicit

La instrucción Option Explicit debe ser la primera línea del módulo, antes del primer SUB. Normalmente, solo es necesario declarar explícitamente las matrices. El resto de las variables se declaran según el carácter de declaración de tipo o, si se omite, según el tipo predeterminado Single.

Tipos de variables

LibreOffice Basic admite cuatro clases de variables:

Variables enteras

Las variables de números enteros van desde −32768 hasta 32767. Si se asigna un valor de coma flotante a una variable de número entero, los decimales se redondearán hacia el entero siguiente. Las variables de números enteros se calculan rápidamente en los procedimientos y son apropiadas para variables contadoras en bucles. Estas variables solo necesitan dos bytes de memoria. El carácter de declaración de tipo es «%».


Dim Variable%
Dim Variable As Integer

Variables enteras largas

Las variables de entero largo van de −2147483648 a 2147483647. Si asigna un valor de coma flotante a una variable de entero largo, los valores decimales se redondean al entero más próximo. Las variables de entero largo se calculan rápidamente en los procedimientos y son adecuadas como variables contadoras en bucles de valor elevado. Una variable de entero largo necesita cuatro bytes de memoria. El carácter de declaración de tipo es «&».


Dim Variable&
Dim Variable As Long

Variables decimales

Las variables decimales pueden tomar numeros positivos y negativos o el numero cero. La exactitud esta hasta 29 digitos.

Puede utilizar un signo de suma (+) o resta (-) como prefijo a un número decimal (con o sin espacios).

Si un número decimal se asigna a una variable entera, LibreOffice Basic redondea la cantidad al alza o a la baja.

Variables sencillas

Las variables sencillas pueden tomar valores positivos o negativos que vayan desde 3,402823 × 10³⁸ hasta 1,401298 × 10⁻⁴⁵. Las variables sencillas son variables de coma flotante (o de punto flotante) en las cuales la precisión del decimal disminuye a medida que la parte no decimal del número aumenta. Las variables sencillas son idóneas para cálculos matemáticos de precisión media. Los cálculos requieren más tiempo que los de variables enteras, pero son más rápidos que los de variante doble. Una variable sencilla requiere 4 bytes de memoria. El carácter de declaración de tipo es «!».


Dim Variable!
Dim Variable As Single

Variables dobles

Las variables dobles pueden tomar valores positivos o negativos que vayan desde 1,79769313486232 × 10³⁰⁸ hasta 4,94065645841247 × 10⁻³²⁴. Las variables dobles son variables de coma flotante en las cuales la precisión del decimal disminuye a medida que la parte no decimal del número incrementa. Las variables dobles son idóneas para cálculos precisos. Los cálculos requieren más tiempo que los de las variables sencillas. Una variable doble requiere 8 bytes de memoria. El carácter de declaración de tipo es «#».


Dim Variable#
Dim Variable As Double

Variables monetarias

Las variables de moneda se almacenan internamente como números de 64 bits (8 bytes) y se muestran como números con cantidad de decimales fija con 15 posiciones no decimales y 4 decimales. Los valores van de −922337203685477,5808 a +922337203685477,5807. Las variables de moneda se usan para calcular valores de divisas con una precisión elevada. El carácter de declaración de tipo es «@».


Dim Variable@
Dim Variable As Currency

Literales para enteros

Es posible codificar números usando formas octales y hexadecimales.


  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

Variables de cadena

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

En las funciones de BASIC para cadenas, el primer carácter de una cadena tiene el índice 1.



Dim Variable$
Dim Variable As String

Variables booleanas

Las variables booleanas solo almacenan uno de estos dos valores: TRUE (verdadero) o FALSE (falso). Un número 0 se calcula como FALSE; cualquier otro número, como TRUE.


Dim Variable As Boolean

Variables de fecha

Las variables de fecha solo pueden contener valores de fecha y hora almacenados en un formato interno. Los valores asignados a variables de fecha con Dateserial, Datevalue, Timeserial o Timevalue se convierten automáticamente al formato interno. Las variables de fecha se convierten a números normales usando las funciones Day, Month, Year or the Hour, Minute, Second. El formato interno permite la comparación de valores de fecha/hora calculando la diferncia entre dos números. estas variables solamente pueden declararse con la palbra clave Date.


Dim Variable As Date

Literales para fechas

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#

El tipo Variant

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            ' No está especificado el tipo; por ende, la variable es Variant
  Dim varB as Variant ' La variable se declara especificamente como una variable Variant
  varC = "abc"        ' Las variables que no se han declarado previamente se tratan como variantes

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 iniciales de las variables

En cuanto se declare la variable, esta recibe automáticamente el valor «Null» (‘nulo’). Preste atención a las convenciones siguientes:

A las variables numéricas se les asigna automáticamente el valor «0» desde que se definen.

A las variables de fecha se les asigna el valor 0 internamente, lo que equivale a convertir el valor a «0» con las funciones Day, Month, Year or the Hour, Minute o Second.

A las variables de cadena se les asigna una cadena vacía («») cuando se declaran.

Matrices

LibreOffice Basic distingue matrices de una o varias dimensiones, definidas por un tipo de variables especificado. Las matrices son adecuadas para editar listas y tablas en los programas. Se puede acceder a los elementos individuales de las matrices utilizando un índice numérico.

Las matrices deben declararse con la instrucción Dim. Hay varias maneras de definir el intervalo de índices de una matriz:


    Dim Text$(20)       '21 elementos numerados del 0 al 20'
    Dim Text$(5,4)      '30 elementos (una matriz de 6 × 5 elementos)'
    Dim Text$(5 To 25)  '21 elementos numerados del 5 al 25'
    Dim Text$(-15 To 5) '21 elementos (el 0 incluido), numerados del −15 al 5'

El intervalo de índices puede incluir números positivos y negativos.

Constantes

Las constantes tienen un valor fijo. Solo se definen una vez en el programa y no pueden volverse a definir más adelante:


Const ConstName=Expression

¡Necesitamos su ayuda!