CursoVB02

download CursoVB02

of 11

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/