Documente Academic
Documente Profesional
Documente Cultură
Subrutinas de cdigo
Se denomina subrutina a una porcin de cdigo que tiene como principal funcin
ejecutar una determinada tarea. Estas tienen un nombre para poder identificarlas y
luego poder llamarlas para poder utilizarlas.
Las subrutinas tienen un principio y un fin y estas pueden tener distinto tipo de
alcance, o sea pueden ser de tipo privadas o pblicas.
End Sub
End Sub
label1 = ""
label2 = ""
label3 = ""
End Sub
Pero ahora te preguntars como hago para que se ejecute el procedimiento que he
creado ?.
Muy fcil. Solo debemos escribir el nombre del procedimiento en el lugar donde
queremos que se ejecute. Por ejemplo supongamos que tenemos un formulario con
3 controles Label (Label1, Label2 y Label3), Tambin un Commandbutton llamado
Command1 y en la ventana de cdigo hemos escrito el procedimiento del ejemplo
anterior. Si nosotros queremos llamar al procedimiento, que borrar el contenido de
los label cuando hagamos click en el Command1 lo haramos as:
ProcedimientoBorrar
End Sub
una vez que se ha terminado de ejecutar las instrucciones que estn dentro del
bloque del procedimiento, volvera a la lnea siguiente de donde fue llamado el
mismo, y ejecutara todas las lneas restantes de cdigo. En este caso no ejecutara
nada mas por que no hemos puesto ninguna otra instruccin debajo de
ProcedimientoBorrar.
La principal ventaja de crear procedimientos de cdigo es que evita tener que escribir
varias veces las mismas instrucciones en un programa, el cdigo se hace mucho mas
funcional y entendible, se pueden dividir un problema (una rutina), en varios
procedimientos y probarlos independientemente, y adems la posibilidad de enviar
parmetros a los procedimientos
Label1 = nombre
Label2 = edad
Label3 = ciudad
End Sub
End sub
Despus que las variables ya cargaron el valor las podemos utilizar dentro del
procedimiento, como en el ejemplo anterior que le asignamos a un control Label1 el
contenido de la variable nombre, al Label2 el contenido de edad y al Label3 el
contenido de la variable ciudad.
Otra cosa importante es que cuando creamos, por ejemplo un procedimiento que va
a recibir 2 parmetros, cuando lo llamemos, no podemos enviarle solo 1 parmetro,
debemos obligatoriamente pasarle los 2 parmetros que hubisemos declarado
en el mismo. Un ejemplo que dara un error en tiempo de ejecucin por no pasar
adecuadamente los parmetros sera:
Label1 = a + b
End Sub
Nota: hay una sentencia llamada Optional que SI permite pasar parmetros de
forma opcional, por ejemplo:
MsgBox Nombre
MsgBox Email
End Sub
Ahora si llamas a la rutina anterior, y omites el parmetro Email, esta no dar error,
por ejemplo:
Call Con_Parametro_Opcional("Maria")
Si estn declarados como ByVal, los mismos sern por valor, si se declaran como
ByRef sern por referencia.
Cdigo de ejemplo
Un_Valor = 100
Call Sumar(Un_Valor)
End Sub
End Sub
En el ejemplo anterior hay una Sub llamada Sumar que recibe como parmetro una
variable enviada por valor con ByVal ( es decir es una copia de la variable original ).
al presionar el Commmand1.
Al entrar en la Sub Sumar, el dato se modifica ( Valor = Valor + 100). Cuando finaliza
el procedimiento Sumar y retorna a la lnea siguiente de la llamada a la Sub sumar,
muestra mediante un MsgBox el valor de la misma, en este caso es 100, y NO 200
que es el cambio que tuvo dentro del procedimiento Sumar ( Valor = Valor + 100 ).
Con esto queda visto que en realidad al enviarla como ByVal, se enva una copia de
la variable original y cualquier cambio que se produzca, ser solo en el mbito del
procedimiento o funcin
Este ejemplo es igual que el anterior, pero en la Sub sumar , la variable Valor se
declara con ByRef ( por Referencia )
Cdigo
Un_Valor = 100
Call Sumar(Un_Valor)
End Sub
End Sub
Las funciones son casi exactamente iguales que los procedimientos con respecto a la
forma en que se los llama y se los crea o declara en el cdigo, en como se le pasa
los parmetros etc..
End Function
Las Funciones pueden retornar casi cualquier tipo de datos, como nmeros,
cadenas, fechas, arreglos y vectores
Nota : En el siguiente link , hay un ejemplo de una funcin que retorna un array de
tipo string