TUTORIAL VB NET 4: PROCEDIMIENTOS Y FUNCIONES

viernes, 13 de junio de 2014

Este tutorial de Visual Basic Net tratara sobre procedimientos y funciones aprenderemos que son, a utilizarlos y como crearlos tema muy importante ya que Visual Basic Net está lleno de ellos.

Nota:
Por conveniencia con otras versiones antiguas del Visual Basic se les llama procedimientos a las subrutinas aunque procedimiento es un término que engloba tanto a subrutinas y funciones en este tutorial seguiremos la convención y llamaremos procedimientos a las subrutinas.

¿Que son procedimientos y funciones?
Son estructuras creadas para desarrollar tareas específicas el objetivo de ellas es:

Reducir código
 Dividir un programa en partes más pequeñas es mejor tanto para su análisis como una mejor comprensión, Asimismo para un mejor uso.

Reutilizar código
 Los procedimientos y funciones pueden ser llamados por otros programas  o por otros mismos procedimientos y funciones. No hay que inventar la rueda hay que usar lo que otros ya han creado.

Por ejemplo:
Now() es una función del Visual Basic Net que nos regresa la fecha y la hora actual para ello solo nos basta con llamarlo.

Ucase() es otro ejemplo de función que convierte cualquier cadena en minúscula a mayúscula.

Ambas son ejemplos de funciones son propias del Visual Net y por lo tanto no tendremos que crearlas solo usarlas, ahorrándonos así líneas de código.

¿Cuál es la diferencia entre procedimientos y funciones?
La diferencia es que una función devuelve un valor producto de una operación o un cálculo mientras que un procedimiento no ya que ellas ejecutan acciones.

Un procedimiento en su forma más simple se define así:

Sub myproc()
  Instrucciones
End Sub

Con argumentos seria así

Sub myproc(argumento1 as tipodedato,...)
    Instrucciones
End Sub

Una función retorna un valor por lo que  tiene que tener el mismo tipo de dato que el valor devuelto, su sintaxis es así

Function mifuncion() as tipodedato
  return valoraretornar
End Function

Con argumentos

Function mifuncion(argumento1 as tipodedato,...) as tipodedato
  return valoraretornar
End Function


Ejemplo 1:

Crearemos un programa que cuenta con un botón y un procedimiento llamado "bienvenido" que desplegara un mensaje al hacer clic en el botón y ingresar un nombre.

'Código del botón.
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim nombre As String
        nombre = InputBox("Ingrese un nombre :")
        bienvenido(nombre)
End Sub

'Código del procedimiento
Sub bienvenido(nombre As String)
        MsgBox("Hola " & nombre)
End Sub

El código debe quedar así.


 Si bien es cierto el ejemplo es simple nos sirve para entender lo que un procedimiento hace.

Ejemplo 2:

Crearemos un programa que cuenta con un botón y una función que comparara dos números y devolverá el mayor de ellos. Ingresaremos 4 y 5 como valor a comparar.

'Código del botón.
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim resultado As Integer
        resultado = comparar(4, 5)
        MsgBox("El Numero mas alto es el " & resultado)
End Sub

'Código de la  función
Function comparar(valorA As Integer, valorB As Integer) As Integer
        Return IIf(valorA > valorB, valorA, valorB)
End Function

El código debe quedar así.



Argumentos
Los argumentos son los valores que pasamos a una función o procedimiento, Se diferencian en argumentos "Por Valor" y "Por Referencia" siendo la opción por defecto "Por Valor".
Cuando pasamos un argumento por valor no se modifica el contenido de la variable en si solo el valor enviado dejando la variable original intacta. Se usa opcionalmente la palabra "Byval" para indicar que un procedimiento se pasa por valor, Ya que es la opción por defecto se puede omitir.


Ejemplo 3:

Crearemos un programa que cuenta con un botón y una función myfunc que acepta un argumento "por valor" Esta función tiene como finalidad multiplicar cualquier numero por 2.

'Código dentro de un botón.
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim numero As Integer
        Dim retorno As Integer
        numero = 5
        retorno = myfunc(numero)
        MsgBox("variable numero = " & numero & " variable retorno = " & retorno)
 End Sub

'Código de la  función
 Function myfunc(ByVal numerof As Integer) As Integer
        numerof = numerof * 2
        Return numerof
 End Function

El código debe quedar así.


"numero" es nuestro valor a ingresar como vemos en el ejemplo al final sigue siendo 5 no habiéndose alterado su valor, "retorno" es donde se guardara el resultado de nuestra función.

Ejemplo 4:

Este ejemplo crearemos una función pero con un argumento "por referencia" seria así:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim numero As Integer
        Dim retorno As Integer
        numero = 5
        retorno = myfunc(numero)
        MsgBox("variable numero = " & numero & " variable retorno = " & retorno)

End Sub

Function myfunc(ByRef numerof As Integer) As Integer
        numerof = numerof * 2
        Return numerof
End Function

El código debe quedar así.



Como vemos en nuestro ejemplo al final nuestras variables "numero" y "retorno" son las mismas ya que se ha modificado la variable directamente.

Ejemplo 5:

Crearemos un programa con un botón que nos devuelva la suma, resta y multiplicación de 2 números.
El programa usara una función llamada "operaciones" que tomara 4 argumentos 2 por valor y  2 por referencia.

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim numeroa As Integer, numerob As Integer
        Dim resta As Integer, multiplicacion As Integer
        Dim suma As Integer
        numeroa = 5
        numerob = 7

        suma = operaciones(numeroa, numerob, resta, multiplicacion)
        MsgBox("suma =" & suma & " resta =" & resta & " multiplicacion =" & multiplicacion)
 End Sub

Function operaciones(numeroa As Integer, numerob As Integer, ByRef resta As Integer, ByRef multiplicacion As Integer) As Integer
        resta = numeroa - numerob
        multiplicacion = numeroa * numerob
        Return numeroa + numerob

End Function

El código debe quedar así.



Multiples Argumentos
Si queremos pasar una cantidad desconocida de argumentos utilizaremos ParamArray.

Ejemplo 6:

Crearemos un programa con un botón que nos enseñara como pasar múltiples parámetros a un procedimiento, para ello usaremos el tipo de datos Object.


Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        mifuncion("lunes", "martes", "miercoles", "jueves", "viernes")
End Sub

Sub mifuncion(ByVal ParamArray dias() As Object)
        Dim x As Object

        For Each x In dias
            msgbox(x)
        Next x

End Sub

El código debe quedar así.



Argumentos por Nombre
Otra forma de ingresar argumentos a una función es haciendo uso de su nombre.

Ejemplo 7:

Crearemos un programa con un botón que nos enseñara como pasar argumentos usando nombres de variables.

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        crear_empleado(nombre:="Alan Garcia Perez", cod:="666", direccion:="Av. Las Casuarinas, Lima", telefono:="1234567")

End Sub

Sub crear_empleado(cod as string,nombre as string,direccion as string,telefono as string)
        Dim resumen As String
        resumen = "Empleado " & vbCrLf & " Codigo: " & cod & vbCrLf & " Nombre : " & nombre & vbCrLf & " Direccion: " & direccion & vbCrLf & " Telefono: " & telefono
        Msgbox(resumen)

End Sub

El código debe quedar así.


"vbCrLf"  produce un salto de linea.

Interesante forma de pasar argumentos pero muy poco usada por programadores ya que se tiene que tipear mas.


Funciones Overloading
Overloading es una nueva característica de VB. Net, fue diseñada para aquellas funciones cuya funcionalidad es similar pero tienen diferentes números de argumentos o tipos de datos.

Ejemplo 8:

Crearemos un programa con un botón que nos enseñara como crear funciones Overloading.

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        MsgBox("El numero mayor es " & mayor(4, 5))
        mayor("alex")
        MsgBox("La fecha mayor es " & mayor(#1/5/1978#, #12/12/2014#))
End Sub

Overloads Function mayor(valora As Date, valorb As Date) As Date
        mayor = iif(valora > valorb, valora, valorb)
 End Function

 Overloads Function mayor(valora As Integer, valorb As Integer) As Integer
        mayor = iif(valora > valorb, valora, valorb)
 End Function

 Overloads Function mayor(nombre As String) As Integer
        MsgBox("Hola " & nombre)
 End Function

El código debe quedar así.


Las funciones tienen el mismo nombre pero aceptan diferentes tipos de datos.

 Aquí terminamos nuestro tutorial, si tiene alguna duda no tema preguntar.

Facebook Comments


0 comentarios:

Publicar un comentario