CursoVB02
-
Upload
josephromeralo -
Category
Documents
-
view
213 -
download
0
Transcript of CursoVB02
-
7/25/2019 CursoVB02
1/11
CURSO DE VB
CAPTULO 2
ndice de contenido1.- PROCEDIMIENTOS Y FUNCIONES...........................................................................................2
UN PRIMER ACERCAMIENTO...................................................................................................2TIPOS DE FUNCIONES Y PROCEDIMIENTOS.........................................................................4ARGUMENTOS..............................................................................................................................4EL ADORNO FINAL: BYVAL, BYREF y PARAMARRAY........................................................6
UN GRAN EJEMPLO.........................................................................................................................6UN POCO MS DEL ENTORNO DE TRABAJO.............................................................................
AYUDA CONTE!TUAL................................................................................................................SEPARACI"N DE LA MISMA L#NEA EN VARIAS...................................................................$INTERDENTADO...........................................................................................................................$COMENTARIOS...........................................................................................................................1%
1Vistame en http://siliconproject.com.ar/neckkito/
-
7/25/2019 CursoVB02
2/11
1.- PROCEDIMIENTOS Y FUNCIONES
UN PRIMER ACERCAMIENTO
Vamos a empezar este segundo captulo hablando de cosastan raras como procedimientos y funciones.
a idea para llegar a tales conceptos empieza por algo tansimple como: vamos a escribir un bloque de cdigo, pero,dnde lo metemos?
Y un poquito ms all, si en lugar de un bloque de cdigoqueremos escribir varios, cmo lo hacemos? Loescribimos todo seguido? Los separamos con rayas o con
puntos?
!ara poder delimitar el inicio y el fin de un c"digo en V# $en estos inicios del curso%tenemos dos palabras reser&adas' (ue son:
Sub: (ue correspondera a un procedimiento unction: (ue correspondera a una funci"n
)so sera nuestro inicio' y lo (ue permitira a V# saber (ue empieza un blo(ue. os finesseran' pues:
!nd Sub !nd unction
a siguiente pregunta l"gica sera: *por (u+ hay dos tipos' y no uno, a respuesta &iene dadapor lo (ue (ueramos (ue haga el c"digo.
)s decir' (ue lo anterior representa (ue podemos realizar dos tipos de operaciones.
1.- i (ueremos (ue se ejecuten acciones necesitamos un procedimiento' esto es' necesitamosutilizar un Sub.
.- i (ueremos obtener un &alor necesitamos una funci"n' esto es' necesitamos utilizar unaunction.
o &amos a &er muy claro a tra&+s de un ejemplo simple: imaginemos (ue tenemos un
formulario con un cuadro de te0to y un bot"n. lo (ue (ueremos es (ue' al pulsar el bot"n' enel cuadro de te0to nos aparezca la fecha actual.
)n este caso nos encontramos con dos elementos:
)l primero' obtener un &alor' (ue en este caso ser2 la fecha actual. )l segundo' realizar una acci"n' (ue en este caso sera conseguir (ue te0t#o0 nosmostrara la fecha actual.
*Vamos &iendo la estructura, 3%
)l ejemplo es tan simple $y aun(ue fuera un poco m2s complicado tambi+n nos ser&ira% (ue
podemos englobar ambas acciones en un procedimiento. 4s' escribiramos lo siguiente:
Vistame en http://siliconproject.com.ar/neckkito/
-
7/25/2019 CursoVB02
3/11
&ub escribo5echa$%
67eclaramos las &ariables. 8s recuerdo (ue esto lo&imos en el primer captulo97im fecha4hora 4s 7ate
6ogemos la fecha del sistema
fecha4hora ; 7ate6)scribimos el &alor obtenido en el te0t#o0
5orms9
al pulsar el bot"n nos aparecera en nuestro te0t#o0 la fecha actual.
omo &emos' lo hemos escrito todo en un procedimiento. 4hora imaginemos (ue la obtenci"nde la fecha actual fuera un proceso muy complicado' o (ue continuamente necesit2ramoscalcular la fecha para cada uno de los ?@ te0t#o0 (ue tenemos en nuestro formulario. )n ese
caso lo mejor hubiera sido separar el anterior procedimiento en sus dos elementos: un sub yuna funci"n.
4s por una parte' tendramos:
>5unction calculo5echa$% 4s 7ate
calculo5echa ; 7ate)nd 5unction>
4hora calculo5echa siempre nos dar2 el &alor de la fecha actual. "lo tendremos (ue in&ocarla
$a la funci"n% para conseguir su &alor. )l procedimiento se escribira pues as:
>ub escribo5echa$%
67eclaramos la &ariable7im fecha4hora 4s 7ate
6lamamos a la funci"n y guardamos su &alor en nuestra &ariablefecha4hora ; calculo5echa$%
6Aellenamos el te0t#o05orms9
7e lo anterior podemos (uedarnos tambi+n con la idea de (ue para nombrar un procedimientoo una funci"n debemos seguir esta estructura:
ub nombre!rocedimiento$%
5unction nombre5uncion$% 4s Btipo"atoC
"gicamente' si la funci"n nos de&uel&e un &alor' debemos indicarle (u+ tipo de &alor debede&ol&er $podemos encontrar la similitud con la declaraci"n de &ariables (ue &eamos en elcaptulo 1%.
DVistame en http://siliconproject.com.ar/neckkito/
-
7/25/2019 CursoVB02
4/11
#ueno. a idea principal de esta primera apro0imaci"n era distinguir entre funciones yprocedimientos' y para (u+ sir&e cada uno. Vamos a seguir profundizando en el tema.
TIPOS DE FUNCIONES Y PROCEDIMIENTOS
Eablar de funciones y procedimientos a palo seco (uedamuy soso' por lo (ue &amos a ponerles motes. 4dem2s' alrealizar esta puesta de motes' &amos a conseguir unefecto interesante' (ue es lo (ue se denomina delimitar el2mbito de actuaci"n.
)0isten &arios motes para poner a ambos elementos. Ve2moslos: #rivate: esta es una definici"n del procedimiento o funci"n restricti&a' de manera (uetodo lo (ue escribamos en el blo(ue de c"digo no es accesible m2s (ue dentro de ese blo(uede c"digo.
!or ejemplo' si definimos una &ariable dentro de ese blo(ue $por ejemplo' 7im miVar as ong%'s"lo podremos llamar a esa &ariable dentro de ese blo(ue de c"digo. i escribimos otro y unalnea dijera: miVar ; ?' nos saltara el error ' OptionalargumentoH 4s Btipo"atoC% 4s Btipo"atoC
esto tan te"rico' *c"mo se come,
Vamos a &erlo con un ejemplo muy simple: imaginemos (ue (ueremos (ue al pulsar un bot"n
IVistame en http://siliconproject.com.ar/neckkito/
-
7/25/2019 CursoVB02
5/11
nos aparezca un mensaje con la fecha de maGana. + (ue lo (ue &oy a e0plicar no es elprocedimiento "ptimo pero me ser&ir2 para (ue lo entend2is.
)n el c"digo asociado al bot"n &amos a realizar lassiguientes acciones:
1.- Vamos a definir una &ariable (ue nos recoger2 la fecha
actual..- Vamos a llamar a un procedimiento (ue se encargar2 deencontrar el da siguiente y mostrarnos el mensaje (ue(ueremos.D.- 4l tiempo (ue llamamos al procedimiento le pasaremosel &alor sobre el (ue debe realizar los calculos' (ue ennuestro caso ser2 la &ariable mi5echa.
)sto lo escribiramos as:
>!ri&ate ub...
67efinimos la &ariable7im mi5echa 4s 7ate6e asignamos la fecha actual
mi5echa ; 7ate6lamamos al procedimiento
all fechaJanana$mi5echa%)nd ub>
omo podemos &er' a tra&+s de la palabra reser&ada $%LLllamamos a un procedimiento' y nos"lo eso' sino (ue le decimos (ue los c2lculos los debe realizar sobre nuestra &ariable mi5echa'indic2ndoselo as entre par+ntesis.
)n el procedimiento deberamos indicarle esa circunstancia a tra&+s de la definici"n de unargumento. 4s' escribiramos:
>!ublic sub fechaJanana$una5echa%
6Aealizamos el c2lculo del da de maGanauna5echa ; una5echa K 1
6Jostramos el mensajeJsg#o0 JaGana ser2 da L una5echa)nd ub>
i analizamos el c"digo &eremos (ue:
)l procedimiento fechaJanana$una5echa% lo hemos declarado como !ublic para teneracceso a +l desde cual(uier m"dulo. )l argumento una5echa ha cogido su &alor desde mi5echa' y eso lo hemos hecho atra&+s de la llamada all fechaJaGana$mi5echa% Eemos creado un ub por(ue (ueramos una acci"n $mostrar un cuadro de mensaje%.i s"lo hubi+ramos (uerido saber el &alor de maGana no hubi+ramos escrito un ub' sino una5unction.
?Vistame en http://siliconproject.com.ar/neckkito/
-
7/25/2019 CursoVB02
6/11
EL ADORNO FINAL: BYVAL, BYREF y PARAMARRAY
Eemos &isto (ue a las funciones se les pueden pasarargumentos. 4hora bien' estos argumentos se les puedenpasar de dos maneras: por &alor $&y'al% o por referencia$&y(e)%.
)stos conceptos pueden ser al principio algo confusos' porlo (ue a(u s tendremos (ue armarnos de un poco depaciencia para soportar un poco de teora. o intentar+e0plicar con mis palabras' procurando no entrar demasiadoen tecnicismos.
uando tenemos una &ariable (ue nos hace de argumento tenemos (ue esa &ariable tiene unadirecci"n de memoria. !ara (ue nos entendamos' tenemos una casilla con una direcci"n' yesa casilla es el original.
a sabemos (ue tenemos un original' y la pregunta es: *(ueremos operar con el original onos interesa m2s operar con una copia,
la respuesta es: si (ueremos operar directamente sobre el original' el argumento debe serpasado &y(e)3 sensu contrario' si (ueremos operar con una copia para mantener intacto eloriginal el argumento debe ser pasado &y'al.
)n principio' si no indicamos nada' la opci"n por defecto es &y(e).
* c"mo lo escribiramos, !ues declararamos la funci"n' a modo de ejemplo' de la siguientemanera:
#ublic unction miSuperuncion*&y'al mi'alor %s Long+ %s Long
)n principio lo dejamos a(u. !rofundizaremos un poco m2s adelante.
)l Fltimo adorno se refiere a (ue podemos pasar una matriz a una funci"n. !ara indicarle a lafunci"n (ue eso es una matriz utilizamos #aram%rray.
omo aFn no hemos hablado de matrices no complicaremos' por ahora' la historia. "lo oscomentar+ (ue para indic2rselo a la funci"n' como imagino habr+is adi&inado' debemosescribir una cosa as:
#ublic unction miSuperuncion*#aram%rray*++
UN GRAN EJEMPLO
Vamos a suponer (ue tenemos D &alores' y (ueremos obtener la media aritm+tica de esos&alores.
o (ue &amos a hacer es crear un nue&o m"dulo y le &amos a escribir una funci"n' (ue ser2 la(ue nos calcular2 esa media aritm+tica' y dos procedimientos $lo podramos hacer en menospasos' pero lo haremos as para (ue pod2is &er todo lo (ue hemos &isto hasta ahora%.
)l proceso ser2 el siguiente:
)l primer procedimiento' (ue ser2 #rivate' pedir2 los &alores al usuario' y los ir2
MVistame en http://siliconproject.com.ar/neckkito/
-
7/25/2019 CursoVB02
7/11
almacenando en &ariables. Nna &ez las tenga todas... lamaremos a la funci"n' (ue ser2 #ublic' la cual noscalcular2 la media aritm+tica. Nna &ez la tenga calculada...
omo &emos en el c"digo a tra&+s de los comentarios' el proceso realiza el siguiente paseo:
ub &alores=niciales 5unction fncalculaJedia ub &alores=niciales ub subJuestraJsj
D.- 7ebajo del anterior procedimiento escribimos la funci"n' as:
>!ublic 5unction fncalculaJedia$primerValor 4s =nteger' segundoValor 4s =nteger' Q tercerValor 4s =nteger% 4s 7ouble 67efinimos las &ariables 7im miuma 4s =nteger miuma ; primerValor K segundoValor K tercerValor 6alculamos el resultado' asign2ndolo directamente a la funci"n fncalculaJedia ; miuma / D)nd 5unction>
RVistame en http://siliconproject.com.ar/neckkito/
-
7/25/2019 CursoVB02
8/11
I.- debajo de la funci"n escribimos el segundo procedimiento' as:
>!ublic ub subJuestraJsj$media8btenida% 6Jostramos el mensaje Jsg#o0 Pa media de los tres &alores introducidos es P L
media8btenida)nd ub>
!or si nos hemos perdido' de manera global deberamostener:
5ij+monos (ue para obtener la media con decimales hemos definido la &ariable media' delprimer procedimiento' y la propia funci"n' como tipo de dato "ouble.
UN POCO MS DEL ENTORNO DE TRAAJO
AYUDA CONTEXTUAL
i en la &entana de c"digo &amos escribiendo el c"digo &eremos (ue V#4 nos proporciona unaayuda conte0tual (ue' para mi gusto' es de bastante utilidad.
!or ejemplo' si empezamos a escribir
SVistame en http://siliconproject.com.ar/neckkito/
-
7/25/2019 CursoVB02
9/11
7im miValor 4s =nt...
Veremos (ue sobre =nt... nos muestra una serie de opcionesposibles. i no (ueremos escribir mucho utilizamos lasflechas de nuestro teclado para seleccionar =nteger3 o' sien ese momento no nos acordamos de c"mo se llama
e0actamente la palabra (ue (ueremos utilizar' tenemosun chi&atillo (ue nos lo susurra.
Tambi+n podremos comprobar (ue' al escribir una funci"n oprocedimiento' V#4 detecta (u+ es lo (ue (ueremos hacer y yanos pone la sentencia de fin de la instrucci"n. )s decir' (ue sinosotros escribimos:
#ublic Sub unSub*+y pulsamos )nter autom2ticamente V#4 nos escribir2 !nd Sub
SEPARACIN DE LA MISMA LNEA EN VARIAS
a pantalla de nuestro ordenador puede ser muy grande o muy pe(ueGa. !odramos escribirtoda una lnea de c"digo seguida' de manera (ue nos fu+ramos desplazando hacia la derecha'con lo cual aparecera una barra de desplazamiento horizontal. )so' a la hora de leer o repasarel c"digo' es bastante molesto. !odemos pues separar una lnea en trozos de lnea' lo (uehar2 mucho m2s legible el c"digo.
!ara indicar a V#4 (ue la lnea es la misma' aun(ue sigue en el siguiente salto de lnea'utilizamos el subgui"n $Q%.
i cogemos el ejemplo anterior &eremos (ue cuando hemos definido la funci"n hemos escrito
!ublic 5unction fncalculaJedia$primerValor 4s =nteger' segundoValor 4s =nteger' Q tercerValor 4s =nteger% 4s 7ouble
i obser&amos lo anterior &eremos (ue tras el segundo argumento $segundoValor 4s =nteger'%'he aGadido un subgui"n. 7e esta manera V#4 entiende (ue lo (ue sigue en la lnea siguienteen realidad debe pertenecer a la primera lnea de declaraci"n de la funci"n.
7e hecho' hay programadores (ue utilizan el interdentado para definir nombre de funci"n'argumentos y tipo de funci"n con este sistema. )s decir' lo (ue se hubiera escrito hubiera sidolo siguiente:
!ublic 5unction fncalculaJedia$ Q
primerValor 4s =nteger' QsegundoValor 4s =nteger' Q
tercerValor 4s =nteger Q% 4s 7ouble
7e esta manera es m2s f2cil &er la funci"n' a golpe de &ista' de (u+ tipo es' y cu2les son susargumentos. )n definiti&a' (ue sobre gustos no hay nada escrito...
INTERDENTADO
ya (ue hablamos de interdentado' para hacer m2s legible un c"digo se suele utilizar el
UVistame en http://siliconproject.com.ar/neckkito/
-
7/25/2019 CursoVB02
10/11
interdentado para identificar los distintos blo(ues dentro del propio blo(ue de c"digo. 4un(ueesto lo &eremos a lo largo del curso' os puedo decir (ue es(uem2ticamente la cosa funcionaraas $&isualmente y a modo de ejemplo' (uiero decir%:
...!ri&ate ub unaub$%67eclaraci"n de &ariables
64signaci"n de &ariables6#lo(ue1 de c"digo
6#lo(ue de c"digo $dependiente del blo(ue1%6#lo(ueD de c"digo $dependiente del blo(ue%65in #lo(ueD
65in #lo(ue65in#lo(ue16#lo(ue I
6#lo(ue? de c"digo $dependiente del blo(ueI%65in #lo(ue?
65in #lo(ueI)nd ub
>
COMENTARIOS
como habremos podido intuir' podemos escribir comentarios dentro del c"digo. !ara ellobasta anteponer una comilla simple $6% al inicio de la lnea (ue contendr2 nuestro comentario.Veremos (ue autom2ticamente V#4 nos marca esa lnea en &erde $si no hemos cambiado laconfiguraci"n' claro%.
)s altamente recomendable la escritura de comentarios por &arios moti&os:
i tenemos (ue pasar el c"digo a alguien lo podr2 entender m2s f2cilmente
i tenemos (ue repasar nuestro c"digo' ya sea al momento o al cabo de un par de
aGos' podremos recordar m2s f2cilmente (u+ hace nuestro c"digo si leemos nuestros propioscomentarios.
-
7/25/2019 CursoVB02
11/11
!or ejemplo' si yo escribo estas lneas de c"digo supuestamente dentro de un c"digo m2samplio:
miValor ; )stomiValor ; miValor L concatenamiValor ; miValor L todo este
miValor ; miValor L te0to
y' por los moti&os (ue sean' me produce un error' o no meda el resultado esperado' podra eliminarlo del c"digosimplemente borr2ndolo. !ero' *y si con posterioridad medoy cuenta de (ue lo necesitaba, !ues a &ol&erlo a escribirtodo otra &ez... *o no,
o (ue puedo hacer es marcarlo todo y dejarlo como un blo(ue con comentarios. 7e estamanera no afectar2 a mi c"digo pero lo tendr+ ah para cuando lo necesite. iempre estamos atiempo para realizar un borrado si finalmente no lo necesitamos.
' en principio y como fin' esto es todo por ahora.
Ouerte9
11Vistame en http://siliconproject.com.ar/neckkito/