Procedimientos
• Es un conjunto de sentencias incluidas entre las
declaraciones Sub o Function y End Sub/Function
• VB utiliza varios tipos de procedimientos:
– Sub. Ejecuta acciones pero no devuelve un resultado al
código que los invocó
– Conducidos por eventos. Se ejecutan como respuesta a
un suceso ocurrido en un programa
– Function. Ejecuta acciones y devuelve un resultado al
código que los invoca
– Definen propiedades. Permiten devolver o asignar
valores a propiedades definidas en un módulo o clase
– Sobrecargan operadores. Definen la conducta de un
operador estándar en un contexto diferente para el que
está definido
1
• Un procedimiento será invocado desde
algún otro lugar en el código. Esto es
conocido como llamada a un procedimiento
• Cuando el procedimiento invocado finaliza
su ejecución, el control es devuelto al
código que lo invocó
• Cuando un procedimiento es llamado para
su ejecución, VB busca ese procedimiento
en el módulo donde nos encontramos. Si no
lo encuentra, entonces continúa la
búsqueda en el resto de los módulos de la
aplicación
2
• Definición de un procedimiento
[nivel de acceso] Sub nombre[(parámetros)]
[Sentencias]
[Exit Sub]
[Sentencias]
[Return]
[Sentencias]
End Sub
[nivel de acceso] Function nombre[(parámetros)] [As Tipo]
[Sentencias]
[Exit Function]
[Sentencias]
[Return [(]expresión[)]]
[Sentencias]
End Function
3
• Nivel de acceso. Puede ser Public, Protected, Friend, ProtectedFriend o
Private. Por omisión es Public
• Nombre. Es el nombre del procedimiento. Cuando se trate de un
procedimiento Function, el tipo del valor retornado se especifica mediante
la cláusula As
• Parámetros. Son una lista de variables separadas por comas que se
corresponden con los argumentos que son pasados cuando es invocado el
procedimiento. Cuando se ejecuta la llamada, VB asigna el valor de cada
argumento en la llamada al parámetro que ocupa su misma posición en la
lista de parámetros del procedimiento
• Expresión. Define el valor devuelto
• Exit Sub/Function. Permite la salida del procedimiento. El control será
devuelto al código que efectuó la llamada. Esta sentencia puede ser o no
la última y puede aparecer más de una vez en el cuerpo del procedimiento
• End Sub/Function. Devuelve el control al código que efectuó la llamada,
continuando de esta forma la ejecución del programa
• Return. Permite salir del procedimiento y en el caso de una Function,
especificar el valor que se desea retornar. Esta sentencia puede ser o no
la última y puede aparecer más de una vez en el cuerpo del procedimiento
4
• Ejemplo Sub:
Public Sub Factorial(ByVal n As Integer, ByRef f As Long)
If n=0 Then
f=1
Else
f=1
While (n>0)
f=n*f
n=n-1
End While
End If
End Sub
• La llamada a este procedimiento puede ser:
Dim r As Long
Factorial(10, r)
5
• Ejemplo Function:
Public Function Factorial(ByVal n As Integer) As Long
Dim f As Integer = 1
If n=0 Then
Return 1
Else
While (n>0)
f=n*f
n=n-1
End While
Return f
End If
End Sub
• La llamada a este procedimiento puede ser:
Dim r As Long
r = Factorial(10)
6
Argumentos por valor y por referencia
• Cuando un argumento se pasa por valor, lo
que se pasa una copia del mismo, por lo
cual, el procedimiento no puede modificar el
valor del argumento en la llamada. Se debe
anteponer la palabra ByVal
• Cuando se pasa por referencia, lo que se
pasa es la posición en la memoria de dicho
valor, con lo que el procedimiento tiene
acceso directo al argumento especificado en
la llamada para modificar su valor. Se debe
anteponer la palabra ByRef
• Por omisión se supone ByVal
7
• Argumentos que son matrices. Las matrices son
siempre pasadas por referencia. Ejemplo:
Public Sub Mult2(matrizX() As Integer)
Dim i As Integer
For i=0 To matrizX.Length -1
matrizX(i) *= 2
Next
End Sub
La llamada puede ser:
Dim a() As Integer = {10, 20, 30, 40}
Mult2(a)
8
Argumentos opcionales
• Se utiliza la palabra Optional. Cada uno de estos parámetros debe
tener asignado el valor que se utilizará cuando éste se omita en la
llamada
• Cuando en la lista de parámetros se especifica uno opcional, todos
los parámetros subsiguientes de esa lista deben ser también
opcionales
• Ejemplo:
Public Sub Visualizar(ByVal a As Integer, _
Optional ByVal b As Single = 2.5, _
Optional ByVal c As Double = 3.456)
Etiqueta.Text = “Parámetro 1 = “ & a & VbCrlf & _
“Parámetro 2 = “ & b & VbCrlf & _
“Parámetro 3 = “ & c
End Sub
Puede ser llamado de las siguientes formas:
Visualizar(2)
Visualizar(2, 3.7)
Visualizar(2, 3.7, 8.125)
9
Visualizar(2, , 8.125)
Número indefinido de argumentos
• La palabra ParamArray permite especificar que un
procedimiento aceptará un número arbitrario de argumentos
• Ejemplo:
Public Sub Visualizar(ParamArray matriz() As Object)
Dim x As Object, i As Integer
For Each x In matriz
i += 1
Etiqueta.Text &= “Parámetro “ & i & “=“ & x & VbCrlf
Next
End Sub
Puede ser llamado de las siguientes formas:
Visualizar(2)
Visualizar(2, 3.7)
Visualizar(2, 3.7, 8.125)
10
Argumentos con nombres
• Es posible pasar argumentos a un procedimiento
utilizando el nombre de los mismos, lo que
permitirá especificarlos en cualquier orden en la
llamada
• Se debe utilizar la sintaxis:
Nombre_parámetro := valor
• Ejemplo:
Sub Visualizar(ByVal nombre As String, _
ByVal sueldo As Long)
Etiqueta.Text = nombre & VbCrlf & “Sueldo “ & sueldo
End Sub
Puede llamarse:
Visualizar(sualdo:=300, nombre:=“Juan”)
11
Procedimientos recursivos
• Se dice recursivo si se llama a sí mismo
• Ejemplo:
Public Function Factorial(ByVal n As Integer) As Long
If n = 0 Then
Return 1
Else
Return (n * Factorial(n-1))
End If
End Function
12
Descargar

Diapositiva 1