Variables, parámetros y argumentos
En las funciones y subrutinas las variables presentan un comportamiento específico que es necesario conocer tanto para entender estas unidades de programación como para diferenciar la una de la otra.
En OOo Basic al crear un script (o una macro) es suficiente con identificar el componente y nombrarlo mediante Sub NombreMacro. Además hay que cerrarlo mediante End Sub (1). Pero para crear una subrutina es obligatorio escribir un paréntesis tras el identificador o nombre e incluir dentro un identificador de variable y su tipificación: sub NombreSubrutina(NombreVar As TipoVar).
La subrutina puede contar (o no) con variables declaradas dentro de ella, pero mientras que éstas son denominadas variables sin más, la o las que se declaran dentro del paréntesis son denominadas específicamente parámetros, por lo que el contenido queda identificado como sigue (o cualquier otra formulación, incluyendo varios parámetros):
Sub NombreRutina(IdParametro As TipoVariable)
Dim NombreVar 1As TipoVar, NombreVar2 As TipoVar (Opcionales)
NombreVar2 = NombreVar1 operador IdParametro (Operaciones)
If NombreVar2 Operador X Then (por ejemplo...)
ProcesoAejecutar1
Else
ProcesoAejecutar2
End If
End Sub
Esta denominación (parámetro) lo es desde el punto de vista de la función o subrutina, pero como ésta ha de ser activada (llamada, si se prefiere) desde un script principal, el valor que se pasa equivalente y/o como concreción del parámetro recibe el nombre de argumento.
Sub ScriptPrincipal
...
NombreRutina(argumento) (llamada a subrutina)
...
End Sub
También el modo en que se utilizan parámetros y argumentos es diferente en función de que estemos hablando de una subrutina (que ejecuta una acción) o una función (que devuelve un valor), aunque esta diferenciación de nombre es pertinente en Basic, no lo es necesariamente en otros lenguajes (2). Las denominaciones (parámetro(s), argumento(s)) se mantienen, pero las estructuras, su identificación (3) y el modo de usarlas cambian.
Lo que sí es necesario es respetar el orden en que se pasan los argumentos, que debe coincidir con el que se establece en la formulación de la subrutina o función. Este orden es el que permite la correcta asignación referencial. Esto hace que no sea recomendable crear funciones (o subrutinas) con muchos argumentos, ya que resulta fácil cometer errores debidos a alteraciones del orden en que se pasan los datos.
En ciertos casos puede ser conveniente utilizar parámetros opcionales; para ello se declaran como tal en la formulación de la subrutina o función.
fMiFuncion (param1 As String, param2 As Integer, optional param3 As String)
No obstante este procedimiento obliga a que los parámetros que siguen al declarado opcional, también lo sean, no así los anteriores.
Esos parámetros opciones pueden pasarse desde el script o no, sin que se altere el funcionamiento de la subrutina o función (4). Para detectar si un parámetro opcional ha sido pasado o no se emplea la función IsMissing(), que devuelve True si el argumento no ha sido pasado o False si se ha hecho.
Para finalizar, una aclaración de "estilo": aunque dispongamos de dos denominaciones (parámetro y argumento), cada una con su significado concreto, es frecuente encontrar en la literatura especializada que se usa uno de los dos nombres para denominar ambos. Esto debe entenderse como un ejercicio de simplificación de la expresión o del vocabulario, ya que no altera la comprensión del fenómeno que se está explicando (5).
NOTAS
(2) Por ejemplo en Python se denomina función a ambas, aunque la diferencia de funcionamiento es la misma que en OOo Basic: existen funciones que no devuelven nada (ejecutan una acción) y otras que sí (las que en OOo Basic son funciones propiamente dichas)
(3) Posiblemente ya saber que en OOo Basic las subrutinas no reciben una identificador específico, pero las funciones sí, tanto para iniciarlas como para finalizarlas: Function... End Function.
No hay comentarios:
Publicar un comentario
Comenta esta entrada