You are on page 1of 7

5.

PROCEDIMIENTOS Y PARÁMETROS
INTRODUCCIÓN
.NET Framework nos proporciona numerosos métodos predefinidos como ReadLine(),
WriteLine() con funcionalidades específicas. Nosotros, como programadores podemos
crear y utilizar nuestros propios métodos o procedimientos.
Una aplicación estructurada debe estar descompuesta en módulos, estos módulos
reciben distintos nombres función, método, subrutina, procedimiento o subprograma.
Un procedimiento es un miembro de una clase que lleva a cabo una acción y que se
compone de una serie de instrucciones VB.NET que han sido agrupadas bajo un nombre
determinado. Las instrucciones de que se compone un procedimiento se ejecutan cuando
se realiza una llamada al mismo.

TIPOS DE PROCEDIMIENTOS
En VB.NET permite el uso de dos tipos distintos de procedimientos:
• Function: Esta palabra clave es la que define las funciones que son
procedimientos que devuelve un valor.
• Sub: Esta palabra clave se utiliza para crear un procedimiento que no
devuelve ningún valor, se denomina genéricamente procedimiento.

FUNCIONES
Sintaxis
Function NombreFunción [(Lista de parámetros)] As TipoDato
Cuerpo de la función
Return Valor
End Function
Las instrucciones que contiene una función están limitadas por las palabras clave
Function…End Funcion.
El NombreFunción es un identificador que se utiliza para llamar a la función. Para los
nombres de función se recomienda utilizar la nomenclatura PascalCasing 1 que se
describe posteriormente.
La Lista de parámetros es una lista de variables identificadas por un nombre y un tipo,
separadas por comas. Estas variables se corresponden en tipo y posición con los valores
que son comunicados a la función en el momento de su llamada.
El Cuerpo de la función contiene las instrucciones que se ejecutan al llamar a la
función.

1
La convención de nomenclatura PascalCasing consiste en poner en mayúscula el primer carácter de
todas las palabras. Utilice PascalCasing para clases, métodos, propiedades, enumeraciones, interfaces,
campos constantes y de sólo lectura, espacios de nombres y propiedades, como se muestra en el siguiente
ejemplo: InicializarDatos( )

Visual Basic .Net | PROCEDIMIENTOS Y PARÁMETROS 1


La función tiene un tipo de datos (TipoDato) que se corresponde con el tipo de la
variable de la instrucción Return Valor.
La palabra clave Return permite finalizar la ejecución de la función a la vez que
devuelve un valor al código que realizó la llamada. La variable de retorno debe ser del
mismo tipo que la función. Esta instrucciones puede ser utilizada dentro de la función
en distintos lugares.

Llamada a un función
Para llamar a una función se utilizar su nombre en aquel punto del programa donde sea
necesario ejecutar las instrucciones que contiene. Se debe tener en cuenta que una
función siempre devuelve un valor, por lo tanto, la llamada a la misma debe ser
utilizada teniendo en cuenta el tipo del valor de retorno.

Ejemplo
Sub Main()
Dim base, altura As Double
Dim resultado As Double

Console.WriteLine("Introduce la base del triángulo")


base = Double.Parse(Console.ReadLine()) 'conversión explícita

Console.WriteLine("Introduce la altura del triángulo")


altura = Double.Parse(Console.ReadLine()) 'conversión explícita

resultado = Area(base, altura) 'llamada a la función


Console.WriteLine("El área del triángulo es " & resultado.ToString)

Console.ReadLine()
End Sub

'Función que calcula el área de un triángulo


Function Area(ByVal base As Double, ByVal altura As Double) As Double
Dim resultado As Double
resultado = (base * altura) / 2
Return resultado ‘valor que devuelve
End Function

PROCEDIMIENTOS

Sintaxis
Sub NombreProcedimiento [(ListaParámetros)]
Cuerpo del procedimiento
End Sub
Los procedimientos comienzan por la palabra reservada Sub y finaliza con End Sub.
El NombreProcedimiento es el identificador del mismo y se utiliza para realizar las
llamadas al procedimiento.

Visual Basic .Net | PROCEDIMIENTOS Y PARÁMETROS 2


La ListaParámtros es una lista de variables separadas por comas que representan los
valores que deben ser transmitidos en el momento de su llamada. Al igual que hacemos
cuando declaramos una variable, al declarar un parámetro debemos especificar el tipo
de dato que el parámetro va a contener.
El Cuerpo del procedimiento es el conjunto de instrucciones que se ejecutan cuando se
llama al procedimiento.

Llamada a un procedimiento
Para realizar una llamada a un procedimiento Sub, es necesario escribir su nombre en el
punto del programa donde se requiera la ejecución del mismo.
La llamada a un procedimiento debe incluir las variables que demandan la lista de
parámetros, se debe tener en cuenta el tipo y el orden pues el paso de parámetros se
realiza uno a uno según la secuencia establecida.

Ejemplo
Sub Main()
Dim base, altura As Double
Dim resultado As Double

Console.WriteLine("Introduce la base del triángulo")


base = Console.ReadLine() Conversión implícita

Console.WriteLine("Introduce la altura del triángulo")


altura = Console.ReadLine() Conversión implícita

Area(base, altura, resultado) 'llamada al procedmiento

Console.WriteLine("El área del triángulo es " & resultado.ToString)

Console.ReadLine()
End Sub

‘Procedimiento que calcula el área de un triángulo


Sub Area(ByVal base As Double, ByVal altura As Double, ByRef resultado _
As Double)
resultado = (base * altura) / 2
End Sub

PASO POR PARÁMETROS


Los parámetros se pueden pasar de tres maneras distintas:
• Por valor (ByVal). Los parámetros valor se llaman a veces parámetros de
entrada, ya que los datos se pueden transferir a un método pero no fuera de
él.
• Por referencia (ByRef). Los parámetros referencia se llaman a veces
parámetros de entrada/salida, ya que los datos se pueden transferir dentro y
fuera de un método.

Visual Basic .Net | PROCEDIMIENTOS Y PARÁMETROS 3


Parámetros por valor
Un parámetro por valor es aquél que se comunica con el método creando una nueva
ubicación donde se copian los valores que la variable tenía en el momento de la
llamada.
Los parámetros por valor llevan delante la palabra reservada ByVal.
La expresión de cada parámetro valor debe ser del mismo tipo que la declaración del
parámetro valor, o bien de un tipo que pueda ser convertido implícitamente a ese tipo.
Dentro del método se puede escribir código que cambie el valor del parámetro. Esto no
afectará a ninguna variable fuera de la llamada al método.
En el siguiente ejemplo, la variable x en SumaUno es completamente independiente de
la variable k en Main. Se puede cambiar la variable x en SumaUno, pero esto no
afectará al valor de k.
Sub Main( )
int k = 6 ‘k debe tener un valor asignado
SumaUno (k)
Console.WriteLine(k) ‘ Muestra el valor 6, no 7
End Sub

Sub SumaUno (ByVal x AS Integer)


x+=1
End Sub

Parámetros por referencia


Un parámetro referencia es una referencia a una posición de memoria. A diferencia de
un parámetro valor, un parámetro referencia no crea una nueva ubicación de
almacenamiento. Por el contrario, un parámetro referencia representa la misma posición
de memoria que la variable indicada en la llamada al método.
Un parámetro referencia se puede declarar poniendo la palabra clave ByRef antes del
nombre del parámetro, como se ve en el siguiente ejemplo:
Sub MostrarReferencia ( ByRef x as Integer, ByRef p as Long )
{
‘...
}
En la llamada a un método, el valor indicado debe ser exactamente igual al tipo en la
definición del método, y además debe ser una variable, no una constante ni una
expresión calculada.

Visual Basic .Net | PROCEDIMIENTOS Y PARÁMETROS 4


Dim x As Integer=3
Dim q As Long =5
MostrarReferencia (x, q)
El siguiente ejemplo ilustra cómo el cambio del parámetro referencia afecta también a la
variable:
Sub Main()
Dim k As Integer = 6
SumaUno(k)
Console.WriteLine(k) ' Muestra el valor 7
End Sub

Sub SumaUno(ByRef x As Integer)


x += 1
End Sub
Este código funciona porque, cuando se hace la llamada a SumaUno, su parámetro x
apunta a la misma posición de memoria que la variable k en Main. Por lo tanto, al
incrementar x se incrementará también k.

Parámetros opcionales
El uso de parámetros opcionales abre la posibilidad de tener parámetros que pueden
omitidos. Para indicar que un parámetro es opcional se debe introducir delante del
mismo la palabra clave: Optional y tener un valor asignado, ese valor será el que se
emplee dentro de procedimiento en el caso de que no se de valor a ese parámetro en el
momento de la llamada.

Sintaxis
Optional ByVal/ByRef Cantidad As TipoDato = valorAsignado
Se debe tener en cuenta que, que a partir del primer parámetro opcional en la lista de un
procedimiento, todos los parámetros sucesivos también deben ser opcionales.

Ejemplo
Sub Main()
Dim nombre As String
Dim salario As Integer
Dim resultado As Integer
' ---------------------
nombre = "Álvaro"
salario = 1700
' no se omite ningún paso por parámetro
resultado = Subida(nombre, salario)
Console.WriteLine("Primera llamada, valor devuelto: {0}", resultado)
' ---------------------
nombre = "Patricia"
' se opmite el parámetro opcional en la llamada
resultado = Subida(nombre)
Console.WriteLine("Segunda llamada, valor devuelto: {0}", resultado)
Console.ReadLine()
End Sub

Visual Basic .Net | PROCEDIMIENTOS Y PARÁMETROS 5


Function Subida(ByVal nombre As String, Optional ByVal sueldo As Integer = 1500) As
Integer
Console.WriteLine("Valores de los parámetros")
Console.WriteLine("Nombre: {0} - Ingresos: {1}", nombre, sueldo)
Return sueldo + 10
End Function

SOBRECARGA DE PROCEDIMIENTOS
Un solución alternativa al uso de parámetros opcionales en VB.NET es el uso de
procedimientos sobrecargados.
Se dice que un procedimiento está sobrecargado cuando existe más de una definición
del mismo. Cada definición de procedimiento sobrecargado debe contener distinto
número/tipo de parámetros.
Por ejemplo, suponemos que necesitamos mostrar los datos de un alumno de dos formas
diferentes en función del modo de consulta. En un tipo de consulta se puede visualizar
su nombre, domicilio y localidad; y por otra parte su edad, DNI y fecha de alta en el
curso.
Con lo que sabemos hasta el momento, podríamos resolver este problema escribiendo
un procedimiento con parámetros opcionales, y según pasáramos un valor u otro,
mostrar la información correspondiente.

Ejemplo
Sub Main()
' mostrar datos del empleado según nombre
VerAlumnoNombre("Laura Carreró")
' mostrar datos del empleado según edad
VerAlumnoNumero(28)
Console.ReadLine()
End Sub

Public Sub VerAlumnoNombre(ByVal Nombre As String)


Console.WriteLine("Datos del alumno por nombre")
Console.WriteLine("Nombre del alumno: {0}", Nombre)
Console.WriteLine("Domicilio: Calle Mon,12")
Console.WriteLine("Localidad: Oviedo")
Console.WriteLine()
End Sub

Visual Basic .Net | PROCEDIMIENTOS Y PARÁMETROS 6


Public Sub VerAlumnoNumero(ByVal Edad As Integer)
Console.WriteLine("Datos alumno por edad")
Console.WriteLine("Edad del alumno: {0}", Edad)
Console.WriteLine("DNI:78665666")
Console.WriteLine("Fecha de alta en la cursso: 1/2/2011")
Console.WriteLine()
End Sub

PRÁCTICAS
1) Crear un programa que indique si dos números son iguales y, en caso contrario,
cual es el mayor. Desde Main se introducirán los números y una función devolverá
el resultado a Main, que lo mostrará por pantalla.
2) Modificar el programa para que la entrada de valores por teclado y la salida sea
realizada también por una función.
3) Hacer un programa que calcule el factorial. Se debe incluir una función que reciba
un valor int y calcule el factorial, que será devuelto a Main.
a) Controlar los posibles errores de introducir un valor erróneo y de
desbordamiento (un número que no sea entero)
4) Hacer un programa que permita hacer la media de una cantidad de números, éstos
pueden ser 2, 3 o 4. Utilizar para ello la sobrecarga de métodos.
5) Implementar un programa que funcione como una calculadora. El programa debe
contener procedimientos o funciones para:
a) Mostrar un menú con las posibles operaciones de la calculadora que
permita introducir la opción elegida
b) Realizar las distintas operaciones (un procedimiento para cada
operación)
c) Mostrar el resultado por pantalla.
6) Modificar los programas realizados en el tema anterior y modularizarlos utilizando
procedimientos y funciones.

Visual Basic .Net | PROCEDIMIENTOS Y PARÁMETROS 7

You might also like