Vemos el ejemplo de una función.
Como hemos comentado antes, primero se indica el ámbito de la función, público o privada, después la palabra que índica que es una función, no un procedimiento.
Public Function InvierteCadena(ByVal Cadena As String) As String
Dim Result As String = ""
Dim x As Integer
While x <> Len(Cadena)
x = x + 1
Result = Mid(Cadena, x, 1) & Result
End While
InvierteCadena = Result
End Function
El nombre de la función “InvierteCadena” y los argumentos que va a recibir, Cadena como string, y se recibe por valor, en VB hay que indicarlo, por defecto aparecerá siempre por valor, ByVal.
Después se inicia el código de la función
Dim Result As String = ""
Dim x As Integer
While x <> Len(Cadena)
x = x + 1
Result = Mid(Cadena, x, 1) & Result
End While
Finalizada la ejecución de la función se asigna su resultado a la misma.
InvierteCadena = Result
Y la función que finalizará con la línea
End Function
La devolución del resultado de la ejecución de la función se obtiene con la línea
InvierteCadena = Result
O bien como sigue:
FuncionFactorial = n * FuncionFactorial(n - 1)
En este ejemplo lo que se muestra es una utilización recursiva de la misma.
El nombre de la función es la encargada de recibir el valor que se va a devolver al punto de llamada de la misma, y el dato que se le asigna debe ser del mismo tipo que se declara en la función.
Private Function FuncionFactorial(ByVal n As Integer) As Integer
Public Function InvierteCadena(ByVal Cadena As String) As String
La creación de procedimientos y funciones, conlleva la necesidad de envío y recepción de variables, de datos. Hay dos formas de enviar datos a un procedimiento,
Por valor
Por referencia
En el primero de los casos la variable que recibe el procedimiento, puede ser utilizada en el interior del mismo, pero los cambios que sufra, no podrán ser devueltos al programa que lo ha llamado, el procedimiento recibe el valor de la variable, pero no la variable.
Por referencia, sin embargo la variable recibida podrá ser utilizada y si ha sufrido cambio en su valor, éste podrá ser devuelto al programa que lo ha llamado, el procedimiento recibe una referencia a la variable, por lo tanto los cambios que se realicen a la misma, perduran a la finalización del procedimiento, o función.
En VB se puede recibir datos por valor, ByVal, y por referencia, ByRef, tanto en un procedimiento, SUB, o una función, Function.
Dicho de otra forma, podríamos enviar datos por referencia a una función y recibir datos devueltos en el nombre de la función y en la variable que nosotros consideremos adecuado.
Un ejemplo:
Private Function InvierteCadena(ByVal Cadena As String, ByRef R As String) As String
Dim Result As String = ""
Dim x As Integer
While x <> Len(Cadena)
x = x + 1
Result = Mid(Cadena, x, 1) & Result
End While
InvierteCadena = Result
R = Result
End Function
En este ejemplo, se ha añadido a la función la variable
, ByRef R As String)
Que podemos observar que es por referencia, ByRef, y después para probar que se puede utilizar:
R = Result
Al final de la función, y el resultado de ejecutar
Sub Main()
Dim C As String = “ARROZ”
Dim R As String
Console.WriteLine("Valor por referencia en una función")
Console.WriteLine("Cadena invertida {0} es {1} ", C, InvierteCadena("ARROZ", R))
Console.WriteLine("La cadena invertida {0} es {1} ", C, R)
Console.ReadKey()
End Sub
es el que sigue:
Valor por referencia en una función
La cadena invertida ARROZ es ZORRA
La cadena invertida ARROZ es ZORRA
Y como se puede comprobar, la función solo se ejecuta una vez.
Pero a pesar de eso, no debemos utilizar esta estrategia, una función debe devolver el dato en su nombre.
El paso de datos se puede hacer por valor y por referencia,
Los datos han de enviarse en el mismo orden en el que se reciben en la función.
Han de ser del mismo tipo.
No tienen porque llamarse de la misma forma.
No hay valores opcionales.
![]() |
Síguenos en: Facebook Sobre aulaClic Política de Cookies