Cuando se define una función que retorna valor, se definen dos parametros fundamentales en su cabecera a saber:
El nombre de la función que también es una variable global.
Los argumentos de entrada, que son variables locales que se declaran entre los paréntesis que siguen al nombre de la función, en este lenguaje permite hasta cinco.
Por ejemplo:
'Función calcula cuadrado de un número:
Function x_sqr (_x as Word) as Word
x_sqr = _x * _x
End Function
Por lo tanto se ha declarado una función que calcula el cuadrado de un número de longitud Word (16bit -> maximo 65535).
La función se llama x_sqr y devuelve el valor del cuadrado en la variable global x_sqr.
Esta función tiene un único argumento de entrada, llegándole el valor mediante una copia a través de la variable local _x de tipo Word.
Cuando la función es llamada mediante por ejemplo:
Dim cuadrado as Word
Dim numero as word
numero = 10
cuadrado = x_sqr (numero), el compilador hace internamente _x = numero para pasar el argumento a la función.
Devuelve x_sqr = 100 (10x10)
Otro ejemplo:
'Función calcula cuadrado de un numero y antes de volver de la fucnión hace una pausa:
Function x_sqr (_x as Word, _pause as Byte) as Word
x_sqr = _x * _x
Waitms _pause
End Function
Por lo tanto se ha declarado una función que calcula el cuadrado de un número de longitud Word (16bit -> maximo 65535) y luego hace una pausa.
La función se llama x_sqr y devuelve el valor del cuadrado en la variable global x_sqr.
Esta función tiene DOS argumentos de entrada, llegándole los valores mediante una copia a través de la variable local _x de tipo Word, para calcular el cuadrado y,
para hacer la pausa el valor le llega mediante una copia en la variable local _pause de tipo Byte.
Cuando la función es llamada mediante por ejemplo:
Dim cuadrado as Word
Dim numero as word
numero = 10
cuadrado = x_sqr (numero, 100), el compilador hace internamente _x = numero y _pause = 100, para pasar los argumentos a la función por riguroso orden de declaración.
Devuelve x_sqr = 100 (10x10)
Hace Waitms 100
En este otro caso para la misma función anterior:
Dim cuadrado as Word
Dim numero as word
numero = 10
cuadrado = x_sqr (100, numero), el compilador hace internamente _x = 100 y _pause = numero, para pasar los argumentos a la función por riguroso orden de declaración.
Devuelve 10000 (100x100)
Hace Waitms 10