Instrucciones y funciones en OOo Basic

From Apache OpenOffice Wiki
Jump to: navigation, search

Diferenciar instrucciones y funciones

Dijimos que las palabras claves o reservadas de OOo Basic se llaman así por que solo OOo Basic puede hacer uso de ellas. Por ese motivo no puedes crear una macro que se llame MsgBox u Option; tampoco puedes declarar variables con alguna de estas palabras. Estas palabras clave, las podemos dividir en dos grandes grupos; las instrucciones y las funciones:


Documentation note.png Las instrucciones “hacen” algo

Las funciones “devuelven” algo


La diferencia entre una y otra es crucial para el entendimiento y desarrollo óptimo de los siguientes capítulos. Usaremos una instrucción que ya conoces, MsgBox, para mostrar las diferencias entre las instrucciones y las funciones, pues esta palabra clave tiene la particularidad de poder usarse como una u otra dependiendo de nuestras necesidades.


Utilizar MsgBox como una instrucción

Veamos la siguiente linea de código.


 MsgBox "Estoy aprendiendo OOo Basic"


Estamos usando MsgBox como una instrucción, por que esta “haciendo” algo: nos muestra un mensaje en pantalla. El texto que debe mostrar se indica entre comillas dobles.

Documentation note.png Los textos en programación se denominan cadena de texto


Argumentos de una instrucción o de una función

Esta cadena de texto recibe el nombre de “parámetro” o “argumento”.

¿Has probado a intentar ejecutar esta instrucción sin ningún argumento?.


 MsgBox


En este caso, el IDE nos muestra el siguiente error.


ES.StarBasic.ElLenguajeOOoBasic.InstruccionesFunciones.008.png


Y nos señalara con una flecha la linea del error, en este caso, la que contiene la instrucción MsgBox sin argumentos, con lo cual se deduce fácilmente que el argumento Mensaje, que en este caso es de tipo “cadena de texto” es necesario o requerido. La instrucción no trabajará mientras no incorporemos el/los argumentos requeridos en la linea de código.

¿MsgBox necesita algún otro argumento? No, al menos argumentos requeridos. Pero admite más argumentos, como vemos en los siguientes ejemplo:


     MsgBox "Estoy aprendiendo OOo Basic", 16


ES.StarBasic.ElLenguajeOOoBasic.InstruccionesFunciones.007.png


Y ahora esta:


     MsgBox "Estoy aprendiendo OOo Basic", 32


ES.StarBasic.ElLenguajeOOoBasic.InstruccionesFunciones.006.png


Entonces, si queremos que te muestre un icono con la señal de stop, debemos agregar un segundo argumento que es opcional, llamado Tipo, y que es un número entero, el 16. Si deseas mostrar el icono de interrogación, el argumento Tipo debe tener el valor 32, existen otro dos iconos que puedes mostrar, el de exclamación (48) y el de información (64):


ES.StarBasic.ElLenguajeOOoBasic.InstruccionesFunciones.005.png
ES.StarBasic.ElLenguajeOOoBasic.InstruccionesFunciones.004.png


La instrucción MsgBox, tiene un tercer argumento opcional que se llama Titulo, que nos permite personalizar el titulo del cuadro de dialogo, que por defecto presenta el texto soffice:


 MsgBox "Estoy aprendiendo OOo Basic", 16, "Icono de Stop"
 MsgBox "Estoy aprendiendo OOo Basic", 32, "Icono de pregunta"
 MsgBox "Estoy aprendiendo OOo Basic", 48, "Icono de exclamación"
 MsgBox "Estoy aprendiendo OOo Basic", 64, "Icono de información"


ES.StarBasic.ElLenguajeOOoBasic.InstruccionesFunciones.003.png


Aprender a leer la sintaxis de una intrucción o de una función

Como vemos la instrucción MsgBox admite tres argumentos, Mensaje, Tipo y Titulo. La sintaxis completa y correcta de esta instrucción es:


MsgBox Mensaje As String, [Tipo As Integer], [Titulo As String]


Es muy importante aprender a leer la estructura o sintaxis de una instrucción:

  • Los argumentos se separan por comas
  • Los argumentos opcionales se encierran entre corchetes
  • Se especifica el tipo de dato que se espera se use en el argumento


Documentation caution.png Si a una instrucción se le pasa un argumento con un tipo de dato que no es el que espera, generalmente la instrucción fallará o se pueden producir errores o resultados imprevisibles


Regresemos al argumento Tipo; también permite establecer los botones de comando mostrados en el cuadro de dialogo, según esta la lista:


Argumento Tipo
Muestra los botones:
0
Mostrar el botón  Aceptar 
1
Mostrar los botones  Aceptar  y  Cancelar 
2
Muestre los botones  Cancelar ,  Repetir  y  Ignorar 
3
Mostrar los botones  Sí ,  No  y  Cancelar 
4
Mostrar los botones  Sí  y  No 
5
Mostrar los botones  Repetir  y  Cancelar 


Por ejemplo:


 MsgBox "Estoy aprendiendo OOo Basic", 2, "Instrucción MsgBox"


ES.StarBasic.ElLenguajeOOoBasic.InstruccionesFunciones.002.png


Para mostrar una combinación de botones e iconos, establece el argumento Tipo como una suma de los valores que quieres mostrar; las dos lineas siguientes son equivalentes:


 MsgBox "Estoy aprendiendo OOo Basic, ¿quieres continuar?", 4 + 32, "OOo Basic"
 MsgBox "Estoy aprendiendo OOo Basic, ¿quieres continuar?", 36, "OOo Basic"


Ambas muestran el siguiente diálogo:


ES.StarBasic.ElLenguajeOOoBasic.InstruccionesFunciones.001.png

Utilizar MsgBox como una función

Una vez presentado el diálogo en pantalla ¿como sabemos que botón es el que presionó el usuario?

Utilizando MsgBox como función podremos responder a esta pregunta.

Una función devuelve un valor, que podemos almacenar en una variable. Al utilizar funciones en el código debemos de utilizar las siguientes reglas de sintaxis:

  • Las funciones devuelven un valor de un tipo especifico (String, Integer, etc), por lo que es muy importante que la variable donde guardemos el valor sea del mismo tipo que el valor que esperamos nos devuelva la función.
  • En las funciones, y a diferencia de las instrucciones, los argumentos se escriben siempre encerrados entre paréntesis.
  • Para asignar el valor devuelto a una variable, necesitamos usar el signo igual.


La sintaxis completa de la función MsgBox es:


Variable As Integer = MsgBox (Mensaje As String, [Tipo As Integer], [Titulo As String])


Insistimos en que la variable que almacena el valor devuelto por la función debe ser declarada del mismo tipo del valor que esperamos devuelva la función. En este caso en particular, la función MsgBox devuelve un entero (Integer), por lo que la variable donde guardes el valor de retorno debes de declararla como tipo entera (Integer).

En la documentación de OOo Basic normalmente viene especificado este valor de retorno para cada función.

Es importante que aprendas a consultar esta documentación, y con lo mostrado hasta ahora en estas páginas ya debes de ser capaz de hacer uso de cualquier función o instrucción, conocer que argumentos necesita y de que tipo, así, como saber en el caso de las funciones que tipo de valor de retorno obtendrás.


Almacenar el valor devuelto por una función

Veamos el ejemplo anterior, completo, ya con su variable de retorno.


 Sub InstruccionesYFunciones()
 Dim Respuesta As Integer
 
     Respuesta = MsgBox ( "Estoy aprendiendo OOo Basic, ¿quieres continuar?", 36, "OOo Basic" )
     MsgBox Respuesta
 End Sub


Esta macro mostrará el mismo cuadro de dialogo que la macro utilizando MsgBox como instrucción, pero la gran diferencia, es que en la variable Respuesta, tendremos el valor del botón que el usuario haya presionado, ¿como saber cual? y actuar en consecuencia, lo veremos más adelante.

Esta es la lista completa de los valores que puede retornar la función MsgBox:


Valor de retorno
El usuario presiono el botón
1
 Aceptar 
2
 Cancelar 
3
 Cancelar  (si argumento Tipo = 2)
4
 Repetir 
5
 Ignorar 
6
 Sí 
7
 No 


Cuanto más conozcas y domines las instrucciones y funciones de OOo Basic, más rápido y productivo serás.

Documentation note.png No es necesario aprender de memoria todo esto; si aprendes a reconocer la sintaxis y estructura de cualquier instrucción o función podrás consultar la documentación del lenguaje, la ayuda del programa, libros o páginas como ésta y obtener la información que precisas

Más adelante aprenderemos a crear nuestras propias instrucciones (subrutinas) y funciones.



ES.Plantillas.Logo foro es.png
Si tienes dudas acerca de lo aquí explicado, tienes algún problema con AOO,
o quieres ampliar la información, no dudes en dirigirte al

Foro Oficial en español de Apache OpenOffice para Macros y API UNO

Personal tools