Declaración de variables
Declaración implícita de variables
OpenOffice Basic admite la declaración implícita de variables. Esta afirmación significa que se permite la creación de variables simplemente incluyéndolas en el código.
Por ejemplo:
Sub Main Variable = 25 MsgBox Variable End Sub
Este código crea la variable de nombre Variable y le asigna el valor 25; posteriormente es utilizado por el comando MsgBox, mostrando una ventana con el número 25.
Esta práctica no es aconsejable, pues puede dar como resultado la creación de nuevas variables por un simple error tipográfico, en lugar de generar un error detectable, y en consecuencia, resultará más difícil encontrar posibles errores en el código.
Por ejemplo:
Sub Main Variable = 25 MsgBox Variabe End Sub
Este código crea la variable de nombre Variable y le asigna el valor 25; posteriormente se crea una nueva variable denominada Variabe, que se ha escrito con un simple error tipográfico. Ésta es utilizada por el comando MsgBox, mostrando una ventana vacía, pues la nueva variable no contiene ningún valor.
Declaración explícita de variables
Para evitar los errores debidos a la declaración implícita de variables, OpenOffice Basic proporciona una instrucción que se debe insertar al inicio de cada módulo, forzando con ello la declaración explícita de las variables.
Esta instrucción es:
Option Explicit
Tras incluir esta instrucción al inicio de un módulo, las variables deberán ser declaradas con una instrucción Dim. Cualquier variable no declarada será identificada por un error como el siguiente:
Mediante este sencillo procedimiento evitaremos errores en nuestro código y facilitaremos la localización de los mismos.
Las variables se pueden declarar de forma explícita de los siguientes modos:
Las variables se declaran con la sentencia
Dim <NombreDeVariable>[ As <TipoDeVariable>]
Si no se define el tipo de variable, se asigna el tipo Variant.
Dim Textos as String Dim NumerosEnteros as Integer Dim EnterosGrandes as Long Dim NumerosConDecimales as Single Dim NumerosGrandesConDecimales as Double Dim Fecha as Date Dim Hora as Date Dim Verdadero as Boolean Dim Importe as Currency Dim miObjeto as Object Dim CualquierCosa as Variant Dim CualquierOtraCosa
Usar sufijos para declarar el tipo de variable
También se pueden declarar y definir su tipo utilizando los sufijos que se relacionan en la tabla de tipos de variables.
Dim Textos$ Dim NumerosEnteros% Dim EnterosGrandes& Dim NumerosConDecimales! Dim NumerosGrandesConDecimales# Dim Importe@
Se pueden declarar varias variables en una sóla línea tras una única sentencia Dim siguiendo este modelo:
Dim Fecha as Date, Texto as String, Contador as Integer Dim Precio as Currency, Descuento as single Dim CualquierCosa, Importe as Currency, Total as Currency
La variable CualquierCosa del ejemplo será declarada como Variant, al no especificar el tipo de variable en la declaración.
Un tercer modo de declarar el tipo de variable lo puedes encontrar en Directiva Def
Declaración de variables a nivel de módulo
Podemos declarar variables a nivel de módulo, declarando éstas después de las opciones de compilador y antes de cualquier función o subrutina.
REM ***** BASIC ***** Option Explicit Dim Fecha as date, Hora as Date, Empresa as string Dim Guardar as boolean Sub MiSubrutina() as string End Sub
Cualquier variable declarada a nivel de módulo será visible por todas las funciones y subrutinas de ese módulo.
Solo será visible en ese módulo (salvo que se declare como pública).
Declaración de variables a nivel de subrutina o función
Podemos declarar variables a nivel de subrutina o función, declarando éstas después de la declaración de la subrutina o función, y antes de su finalización con End Sub o End Function, según corresponda, y siempre antes de utilizar la variable, por lo que es recomendable situarlas al principio, justo tras la declaración de la subrutina o función.
REM ***** BASIC ***** Option Explicit Dim Fecha as date, Hora as Date, Empresa as string Dim Guardar as boolean Sub MiSubrutina() as string Dim miFecha as date, miHora as date, Guardar as boolean End Sub
Cualquier variable declarada a nivel de función o subrutina será visible sólo dentro de la misma (salvo que se declare como pública). Si el nombre coincide con una variable declarada a nivel de módulo, o pública, la variable de la función o subrutina eclipsará a las anteriores, por lo que no podremos acceder a ellas.
Declaración de variables como argumento
Al declarar los argumentos de una subrutina o función, estamos declarando variables, que podemos tipificar.
REM ***** BASIC ***** Option Explicit Dim Fecha as date, Hora as Date, Empresa as string Dim Guardar as boolean Sub MiSubrutina( Importe as Currency, Descuento as single ) as string Dim miFecha as date, miHora as date, Guardar as boolean End Sub
Las variables argumento se comportan exactamente igual que las variables declaradas a nivel de función o subrutina: serán visibles sólo dentro de la misma. Si el nombre coincide con una variable declarada a nivel de módulo, o pública, la variable argumento eclipsará a las anteriores, por lo que no podremos acceder a ellas.
No pueden coexistir variables de argumento y variables a nivel de función o subrutina con el mismo nombre.