Compartir a través de


Procedimientos de función (Visual Basic)

Un procedimiento Function es una serie de instrucciones de Visual Basic delimitadas por las instrucciones Function y End Function. El procedimiento Function realiza una tarea y, a continuación, devuelve el control al código de llamada. Cuando devuelve el control, también devuelve un valor al código de llamada.

Cada vez que se llama a un procedimiento, se ejecutan las instrucciones de éste, desde la primera instrucción ejecutable tras la instrucción Function hasta la primera instrucción End Function, Exit Function o Return que se encuentre.

Puede definir un procedimiento Function en un módulo, clase o estructura. Es Public de forma predeterminada, lo que significa que puede llamarlo desde cualquier lugar de la aplicación que tenga acceso al módulo, clase o estructura en el que se ha definido.

Un procedimiento Function puede aceptar argumentos, como constantes, variables o expresiones, que le pasa el código de llamada.

Sintaxis de la declaración

La sintaxis para declarar un procedimiento Function es la siguiente:

[modificadores] Function nombreDeFunción[(listaDeParámetros)] As tipoDeValorDevuelto

' Statements of the Function procedure.

End Function

Los modificadores pueden especificar un nivel de acceso e información relativo a la sobrecarga, a la invalidación, uso compartido y sombreado. Para obtener más información, vea Function (Instrucción, Visual Basic).

Declara cada parámetro de la misma manera que para Subprocedimientos (Visual Basic).

Tipo de datos

Todos los procedimientos Function tienen un tipo de datos, al igual que las variables. La cláusula As especifica este tipo de datos en la instrucción Function y determina el tipo de datos del valor que la función devuelve al código de llamada. En las siguientes declaraciones de ejemplo se ilustra esto último.

Function yesterday() As Date
End Function
Function findSqrt(ByVal radicand As Single) As Single
End Function

Para obtener más información, vea "Partes" en Function (Instrucción, Visual Basic).

Valores devueltos

El valor que un procedimiento Function devuelve al código de llamada se denomina valor devuelto. El procedimiento devuelve dicho valor de dos maneras:

  • La función asigna un valor a su propio nombre de función en una o más instrucciones del procedimiento. El control no vuelve al programa de llamada hasta que se ejecuta una instrucción Exit Function o End Function. Esto se ilustra en el siguiente ejemplo:

    Function nombreDeFunción [(listaDeParámetros )] As tipoDeValorDevuelto

    ' The following statement does not transfer control back to the calling code.

    nombreDeFunción = expresión

    ' When control returns to the calling code, expresión is the return value.

    End Function

  • Utiliza la instrucción Return para especificar el valor devuelto y devuelve el control inmediatamente al programa de llamada. Esto se ilustra en el siguiente ejemplo:

    Function nombreDeFunción [(listaDeParámetros )] As tipoDeValorDevuelto

    ' The following statement immediately transfers control back to the calling code and returns the value of expresión.

    Return expresión

    End Function

La ventaja de asignar el valor devuelto al nombre de la función es que el control permanece en el procedimiento hasta que encuentra una instrucción Exit Function o End Function, lo que permite asignar un valor previo y, si es necesario, se puede ajustar después.

Para obtener más información, vea "Valor devuelto" en Function (Instrucción, Visual Basic).

Matrices devueltas

Si el procedimiento Function devuelve datos de tipo matricial, el acceso a los elementos individuales de la matriz no es posible dentro de la función. Si se intentara hacerlo, el compilador lo interpretará como una llamada recursiva al procedimiento. Esto se ilustra en el siguiente ejemplo:

Function allOnes(ByVal n As Integer) As Integer()

For i As Integer = 1 To n - 1

' The following statement generates a COMPILER ERROR.

allOnes(i) = 1

Next i

' The following statement generates a COMPILER ERROR.

Return allOnes()

End Function

En el ejemplo anterior, el compilador interpreta la asignación intentada allOnes(i) = 1 como una llamada a allOnes en el lado izquierdo de una instrucción de asignación. Interpreta la instrucción intentada Return allOnes() como una llamada sin argumento. Ambas instrucciones generan errores de compilador.

Sintaxis de llamada

Para invocar a un procedimiento Function hay que incluir el nombre y los argumentos de éste en la parte derecha de una instrucción de asignación o en una expresión. Debe suministrar valores para todos los argumentos que no sean opcionales e incluir la lista de argumentos entre paréntesis. Si no se proporcionan argumentos, se puede omitir el paréntesis.

La sintaxis para llamar a un procedimiento Function es la siguiente:

valorL = nombreDeFunción [(listaDeArgumentos)]

If (( nombreDeFunción [(listaDeArgumentos )] / 3) <= expresión) Then

Cuando se llama a un procedimiento Function, no es necesario utilizar su valor devuelto, en cuyo caso se ejecutan todas las acciones de la función, pero se omite el valor devuelto. Se suele llamar de esta forma al método MsgBox.

Ejemplo de declaración y llamada

El siguiente procedimiento Function calcula la hipotenusa de un triángulo rectángulo a partir de los valores de los catetos.

Function hypotenuse(ByVal side1 As Single, ByVal side2 As Single) As Single
    Return Math.Sqrt((side1 ^ 2) + (side2 ^ 2))
End Function

El ejemplo siguiente muestra una llamada típica a hypotenuse.

Dim testLength, testHypotenuse As Single
testHypotenuse = hypotenuse(testLength, 10.7)

Funciones en tiempo de ejecución de Visual Basic

El motor en tiempo de ejecución de Visual Basic proporciona muchas funciones, que se encuentran en el espacio de nombres Microsoft.VisualBasic. Incluye funciones comunes como Beep, MsgBox y StrComp. Puede llamar a estas funciones de la misma manera que llama a los procedimientos Function que ha creado.

Vea también

Tareas

Cómo: Crear un procedimiento que devuelve un valor (Visual Basic)

Cómo: Devolver un valor de un procedimiento (Visual Basic)

Cómo: Llamar a un procedimiento que devuelve un valor (Visual Basic)

Referencia

Function (Instrucción, Visual Basic)

Conceptos

Procedimientos en Visual Basic

Subprocedimientos (Visual Basic)

Procedimientos de propiedad (Visual Basic)

Procedimientos de operador (Visual Basic)

Argumentos y parámetros de procedimiento (Visual Basic)