Unidad 12. Funciones en VB (II)





12.3. Escribir la función.

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

 

12.4. Envío y recepción de los datos.

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.

12.5. Conclusiones.

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.

 

 

•Ejercicios propuestos de la Unidad
Octubre-2010
Pág. 12.2

Atrás  Inicio  Adelante






Página inicial  Cursos Informática Gratuitos

Síguenos en:   Facebook       Sobre aulaClic            Política de Cookies