Procedimientos y Funciones

. : darksoft : .
01 de Enero del 2006
O.k.

Hola!

Sabes la diferencia entre los Procedimientos y las funciones?

Si lo sabes, ya estas del otro lado, de lo contrario te aconsejo que
sigas leyendo...

Tratare de explicarlo de una manera entendible, espero ser de lo mas
sencillo y primitivo.

DEFINICIONES

PROCEDIMIENTO: Un procedimiento es una secuencia de comandos que tiene
como objetivo el realizar una accion especifica.

FUNCION: Una funcion es parecida a un procedimiento, pero con la unica
diferencia de que esta puede devolver un resultado.

Ahora si, imaginate que nesesitas comprar algo, por alguna razon no puedes
salir de tu casa y decides mandar a alguien a que te lo compre. Imagina que
mandas a tu primo, si tu primo fuera un procedimiento, te quedarias bailando
y sin lo que nesesitas, porque tu primo se iria y no te traeria nada, no te
devolveria nada... :(

Pero si tu primo fuera una funcion, este te traeria lo que nesesitas... :)

Ahora vamos a ver esto en el mundo VB:

Public Sub Iniciar()

Codigo

End sub

El ejemplo de arriba es un procedimiento normal, como ves, se ejecuta el codigo
y se sale del procedimiento...

Para llamar a este Procedimiento solo tienes que escribir su nombre:

Iniciar

Inmediatemente se ejecuta ese procedimiento...


Pero en las funciones pasa algo mas:

Public Function Fecha() AS STRING

Fecha = "Hoy es " & format( date, "Long Date")

end function

Supongamos que quieres saber que dia es hoy, si ya se, usarias la funcion DATE,
pero como este es mi ejemplo, usaremos una funcion mia ;)

Yo te preguntaria: En que variable quieres guardar esta fecha?

Proque como ya dije, una funcion casi siempre te regresara un dato, entonces
imagina que quieres guardar la fecha en una variable String (texto) llamada: Hoy

La forma de hacerlo es esta:

Hoy = Fecha

Ves, ahora el valor de HOY es "Hoy es sabado 1 Enero de 2006"

Notas las diferencias entre el procedimiento y la funcion?


Public Sub Iniciar()
^^^ ^

Public Function Fecha() AS STRING
^^^^^^^^ ^^ ^^^^^^

Esto es porque el procedimiento sirve solo para ejecutar tareas y la funcion sirve
para ejecutar tareas y obtener un resultado.

El resultado ovbiamente tiene que ser de algun tipo de dato, ya sea texto (String)
Numero entero (Integer), Moneda ( Currency ), Fecha (Date), etc.

Por consecuente, la variable que recivira los datos ( en este caso HOY ) debe de ser
del mismo tipo que el valor devuelto por la funcion ( en este caso STRING ).

A estas alturas te preguntaras: Y como le hace la funcion para devolverte un valor?

Bueno, es sencillo, al momento de llamar a la funcion, la llamamos asi:

Hoy = Fecha

Entonces se ejecuta la funcion, hace su trabajo y antes del final de la funcion
habra una linea parecida a esta: Fecha = "Hoy es " & format( date, "Long Date")
^ --------------------------------------
Nombre de la funcion ^ Valor devuelto

Entonces la funcion toma ese valor y lo asigna a la variable receptora ( Hoy )

Ya estas entendiendo verdad ;).


Si DarkSoft pero... Como se cuando utilizar un procedimiento o una funcion?

Es sencillo y depende de lo que quieras hacer:

Si quieres cargar una imagen en un PictureBox, te conviene usar un procedimiento.

Pero si quieres cargar una imagen en un picturebox y saber que esta accion se completo
satisfactoriamente, entonces echa mano de una funcion:

Ejemplos:

procedimiento para cargar una imagen.

Public sub CargarImagen(sRuta as string, picBox as picturebox)

picBox.picture = Loadpicture(sRuta)

end sub


Funcion para Cargar una imagen y serciorarse de que todo salio bien.

Public Function CargarImagen(sRuta as string, picBox as picturebox) as Boolean
on error goto Hell

PicBox.picture = Loadpicture(sRuta)
CargarImagen = true
exit function

Hell:
CargarImagen = False
resume next

End function



Las funciones tienen un poder enorme, tanto asi que todos los sistemas operativos
incluyen miles de ellas, un ejemplo de eso es la API de Windows, si, esas son las
primeras funciones que usaste, ya ves, ni te diste cuenta.

Pero ese es parte de otro tema que seguramente y dependiendo de la respuesta que
le den ustedes a mi Artuculillo ( si sele puede llamar asi ), lo veremos.

Espero que te halla servido de algo y ya sabes, estoy para servirte... ;)

Preguntas, comentarios, felicitaciones, maldiciones y hasta flores, son recividos
en mi mail: [email protected]

O.k

Bye!