martes, 20 de junio de 2023

OOo Basic. Datos

 Variables lógicas, de objeto y de tipo variable

Para finalizar la revisión del tipo de variables de OOo Basic, trataremos en esta entrada sobre las variables lógicas (Boolean), de tipo variable (Variant) y de tipo objeto (Object)




Las variables lógicas se conocen en OOo Basic como Boolean y son aquellas que pueden tener únicamente dos valores: True o False, y sus equivalentes "numéricos" (1 - 0). Permiten representar datos con dos opciones de presentación (0-1), como es el caso de la respuesta a preguntas del tipo...

¿Llegaste a la meta? -> Admite dos posibles respuestas: Sí (True) 1 vs. No (False) 0

¿Es niño? -> Admite dos posibles respuestas: Sí (1) -> Es niño vs. No (0) -> Es niña. 

Además de las variables declaradas como booleanas, este tipo de análisis también puede ser realizada sobre cualquier variable o expresión en contextos de condicionalidad, ya que en ellos lo que se hace es juzgar en términos V|F el cumplimiento de una condición. Por ejemplo:

Dim sDato  As String, sTipo As String

sDato = "Perro"

If sDato = "Perro" Then

sTipo = "Animal"

End If 

En este caso la variable sDato es de tipo string, pero cuando se emplea dentro del condicional If lo que analizamos es el cumplimiento de una equivalencia (no la asignación precedente sDato = "Perro"), así que si se cumple que sDato = "Perro" (esto es, si sDato = "Perro" es True, como es el caso), entonces se realiza la asignación (ahora sí, asignación) sTipo = "Animal". De no cumplirse la condición anterior, no se efectúa dicha (segunda) asignación. (1)

Otra situación en la que es interesante el uso de variables Boolean es cuando como resultado de una categorización, una variable puede tener asignados contenidos identificables dentro de dicha categoría, resultando, no obstante, suficientemente complejo el análisis de los mismos cuando nos interesa algún tipo de análisis de la tabla o base de datos resultante.

En este caso una opción frecuente es generar tantas variables como elementos tenga la categoría (al menos tantas como se presenten en los datos obtenidos), las cuales se identifican o denominan como la categoría, y que se definen como variables booleanas. Esto facilita su análisis posterior. Un ejemplo:

  • Dim sCatNE As String requiere como respuesta tres categoría "ORD", "NEAE", "NEE".
  • Podemos "desglosarla en tres variables Boolean (Dim vORD As Boolean, vNEAE As Boolean y vNEE As Boolean) a las que se responde como True o False. Esta diferenciación no tiene mucho interés cuando se trabaja con casos individuales, pero facilita los análisis posteriores de la base de datos que resulte de su aplicación a un colectivo.

Para la valoración de las expresiones booleanas contamos con las llamadas [tablas de verdad]

Las variables Variant permiten a OOo Basic tratar variables cuyo contenido no está definido a priori y es, por tanto, variable. Viene a ser el equivalente a no delimitar expresamente el (tipo de) contenido o dato de una variable. Variant da flexibilidad al lenguaje a costa de un consumo mayor de memoria RAM, por lo que su uso debe quedar restringido a lo necesario. Un ejemplo de uso del tipo Variant se da en la definición de las matrices por razones que se comentarán en su momento.

Finalmente las variables tipo objeto (Object) permiten almacenar en un variable cualquier objeto definido en la API de LibreOffice. Dado que LibreOffice es una suite construida en gran medida sobre Java, que es un lenguaje orientado a objetos (POO), el uso de variables de tipo objeto es muy frecuente en los script OOo Basic, permitiendo a este lenguaje acceder a los componentes fundamentales de la suite LibreOffice y sus diferentes servicios.

Un ejemplo de variable tipo Object es la que permite a OOo Basic acceder al documento sobre el que se construye el script:

Dim oDoc As Object, oHojaActiva As Object

oDoc = ThisComponent
oHojaActiva = oDoc.getCurrentController.getActiveSheet()

En este caso estamos construyendo el script sobre la hoja activa del documento Calc. Al documento se accede mediante la variable objeto oDoc (a la que se asocia el propio documento mediante el identificador ThisComponent). 

A la hoja activa se accede mediante la variable oHojaActiva que se asocia a oDoc.getCurrentController.getActiveSheet().

NOTA

(1) En este caso estamos hablando de operadores relacionales más que de variables. La coincidencia entre el operador relacional de igualdad o equivalencia (=) y el operador de asignación (también =) da lugar a confusiones. Sobre este tema [ver aquí]. Otros lenguajes, como Python, diferencian entre el operador de asignación y el de equivalencia, lo que evita este tipo de confusiones.

No hay comentarios:

Publicar un comentario

Comenta esta entrada