VBA

57
Metodología de la Programación Autor: Xavi Llunell [Ver curso online] Descubre miles de cursos como éste en www.mailxmail.com 1 mailxmail - Cursos para compartir lo que sabes

description

VBA

Transcript of VBA

  • Metodologa de la ProgramacinAutor: Xavi Llunell[Ver curso online]

    Descubre miles de cursos como ste en www.mailxmail.com 1

    mailxmail - Cursos para compartir lo que sabes

  • Presentacin del cursoEste curso gratis le proporcionar, a modo de iniciacin, algunos de los pasos aseguir para aprender a programar.Los bucles o los operadores lgicos son algunosde los contenidos que aprender en este curso. Un curso realizado en colaboracincon Areaint.com.

    Visita ms cursos como este en mailxmail:[http://www.mailxmail.com/cursos-informatica][http://www.mailxmail.com/cursos-programacion]

    Tu opinin cuenta! Lee todas las opiniones de este curso y djanos la tuya:[http://www.mailxmail.com/curso-metodologia-programacion/opiniones]

    Cursos similaresCursos Valoracin Alumnos Vdeo

    PHP y MySQL. Aplicaciones Web (undcimaparte)Programacin de aplicaciones Web con PHP y MySQL. Ahora te capacitamospara entender el funcionamiento en Internet de una tienda online.Aprenders ... [02 /12/08]

    1.367

    Funciones en C (primera parte)Curso de programacon informtica sobre Funciones en C en el orden de losfundamentos de la programacin. Comprende el desarrollo de un softwareutilizando funciones y a ... [17 /10/08]

    5.595

    Manual de programacinEl objetivo de este curso consiste en ofrecer conocimientos bsicos deprogramacin. No pretender ensear cmo programar en un lenguajeespecfico, ni utilizar ninguna te... [31 /01/08]

    2.801

    Holstica informticaAprende con nuestro curso de holstica informtica, sobre los avancesinformticos que te ayudar a actualizarte conociendo ms acer... [28 /04/09]

    2.223

    Primeros pasos con XML y XSLXML es el acrnimo del ingls eXtensible Markup Language cuyo objetivoprincipal es conseguir una pgina web ms semntica. Inicialmente nacecomo sucesor del HTML, separ... [10 /09/04]

    7.410

    Descubre miles de cursos como ste en www.mailxmail.com 2

    mailxmail - Cursos para compartir lo que sabes

  • 1. Introduccin[http://www.mailxmail.com/curso-metodologia-programacion/introduccion]En este curso veremos las estructuras bsicas de la programacin. Estas estructurasnos ayudarn en el momento en el que nos tengamos que enfrentar a la creacin deun programa, ya que nos facilitarn la planificacin y la programacin del mismo.

    En el momento de programar deber tener en cuenta los siguientes aspectos.-Estructurar el cdigo para una fcil comprensin en el momento de modificacionesy ampliaciones.-Poner comentarios en lugares clave para facilitar el entendimiento del cdigo. -Intentar ahorrar el nmero de lneas de cdigo, cuantas ms lneas intiles peorser el programa. -Pensar que el cdigo del programa, muchas veces, no es slo para nosotros, sinoque hay mucha gente a la que le puede interesar nuestro trabajo o deban trabajarcon l y ellos deben ser capaces de entender el cdigo.

    El por qu de la Metodologa.- Mucha gente piensa que estudiar metodologa de laprogramacin es una cosa ardua, costosa y muy aburrida. Nosotros intentaremoshacer que esto no sea as y que todo lo que aprenda a partir de este momento le seade mucha utilidad para la creacin de esos programas que tiene en mente.

    Ejemplo (Subiendo escaleras).- Imagine que estamos creando un pequeo programapara un robot que debe subir 10 escalones. El robot entiende las siguientesinstrucciones LevantePieIzquierdo (para levantar el pie izquierdo y subir unescaln) y LevantePieDerecho (para levantar el pie derecho y subir otro escaln),con lo que podr ir ascendiendo hasta llegar al final de una escalera.

    Si slo pudisemos utilizar estas dos instrucciones, para crear un programa paraque el robot subiera los 10 escalones, deberamos hacer un programa con lassiguientes lneas de cdigo:

    LevantePieIzquierdo

    LevantePieDerecho

    LevantePieIzquierdo

    LevantePieDerecho

    LevantePieIzquierdo LevantePieDerecho LevantePieIzquierdo LevantePieDerecho LevantePieIzquierdo LevantePieDerecho

    Fjese que en este caso. Hemos tenido que escribir las mismas instrucciones variasveces para que el robot subiera los escalones. Qu hubiese sucedido si el robot en

    Descubre miles de cursos como ste en www.mailxmail.com 3

    mailxmail - Cursos para compartir lo que sabes

  • veces para que el robot subiera los escalones. Qu hubiese sucedido si el robot enlugar de subir 10 escalones hubiese tenido que subir los 1.665 escalones de la TorreEiffel? El cdigo hubiese sido interminable, corriendo el peligro de equivocarnos alcontar la cantidad de escalones, con lo que el robot no hubiese llegado a la cima dela torre. O incluso, nos podramos haber equivocado escribiendo dos veces la mismainstruccin, con lo que el robot se hubiese tropezado al levantar dos veces el mismopie.

    Descubre miles de cursos como ste en www.mailxmail.com 4

    mailxmail - Cursos para compartir lo que sabes

  • 2. Formas de solucionar posibles problemas[http://www.mailxmail.com/...rso-metodologia-programacion/formas-solucionar-posibles-problemas]Para solucionar posibles problemas de repeticin de la misma instruccin o de cdigosinterminables, disponemos de diferentes instrucciones que nos permiten reducir el nmerode lneas de un programa facilitando as la compresin, la modificacin del cdigo y unposible error en la ejecucin del programa.

    Observe una posible solucin para nuestro problema. (Piense que para un mismo problema noslo existe una solucin, yo le ofrecer una, pero eso no quiere decir que sea la mejor). Lasinstrucciones que aparecen en esta solucin se irn explicando a lo largo del curso.

    Repetir hasta que NmeroEscaln = 5

    LevantePieIzquierdo

    LevantePieDerecho

    Sume 1 a NmeroEscaln

    Fin Repetir

    Lo que hemos creado es una repeticin de cdigo hasta que se cumple una determinadacondicin. Compare las dos posibles soluciones al mismo programa.

    Seguramente, al no conocer las instrucciones de la segunda solucin, le parecer mucho msfcil la primera solucin, pero estoy seguro que cuando haya realizado alguna leccin ms delcurso comprender que la segunda es mucho ms fcil de comprender y de modificar que laprimera. Ya intentar demostrrselo a lo largo de todo el curso.

    Descubre miles de cursos como ste en www.mailxmail.com 5

    mailxmail - Cursos para compartir lo que sabes

  • 3. La estructura condicional 'si'[http://www.mailxmail.com/curso-metodologia-programacion/estructura-condicional-si]En este e-mail nos adentraremos en el concepto de condicin.

    Una instruccin condicional es aquella que nos permite "preguntar" sobre el entornoque nos rodea, pudiendo as actuar segn la respuesta obtenida. Estas respuestassiempre sern Verdaderas o Falsas, pudiendo as tomar, en un principio, doscaminos diferentes.

    Pongamos un pequeo ejemplo. Imagine que tenemos nuestro robot subiendo lasescaleras de la Torre Eiffel y le indicamos lo siguiente: si est en el escaln 200entonces no contine subiendo, sino continua su ascensin. Como puede ver aquse nos presenta una condicin y, segn en el punto de la escalera en la que seencuentre, nuestro robot se parar o continuar subiendo.

    Estructura bsica de una condicin.- En nuestro curso esta estructura condicional serepresentar de la siguiente manera:

    Si entonces

    Si no

    Fin Si

    Le explicaremos lnea a lnea la estructura condicional anterior:-Primera lnea: aparece parte de la estructura condicional y la quedeseamos evaluar.

    -Segunda lnea: lugar donde pondremos las instrucciones a realizar en caso que larespuesta a la condicin sea VERDADERA.-Tercera lnea: parte de la estructura condicional que nos divide la parte de lasinstrucciones a realizar cuando la condicin es verdadera y cuando es falsa.-Cuarta lnea: lugar donde pondremos las instrucciones a realizar en caso que larespuesta a la condicin sea FALSA.-Quinta lnea: parte de la estructura condicional que nos indica el final de la misma.

    En la siguiente unidad didctica le explicaremos un ejemplo.

    Descubre miles de cursos como ste en www.mailxmail.com 6

    mailxmail - Cursos para compartir lo que sabes

  • 4. Ejemplo 1 - subiendo escaleras hasta el escaln 200[http://www.mailxmail.com/...metodologia-programacion/ejemplo-1-subiendo-escaleras-escalon-200]Ahora veremos cmo podemos utilizar esta estructura condicional dentro del caso que hemoscitado anteriormente.

    Recordemos el problema: tenemos nuestro pequeo Robot que sube una escalera. En unmomento determinado, queremos que tome una decisin segn el punto en el que seencuentra. La decisin es la siguiente: si se encuentra en el escaln 200 debe detenerse,mientras que si est en cualquier otro sitio debe continuar subiendo.

    Ante un problema as, debemos plantearnos cul es la estructura que debemos utilizar. En estecaso, es fcil ya que slo hemos estudiado una. Cuando tenemos clara la estructura debemosmirar que es lo que debemos poner en cada lugar y cules son las instrucciones que debemosutilizar.

    Vamos a definir las instrucciones que nos hacen falta para este ejemplo:-Escaln: nos servir para saber en qu nmero de escaln se encuentra nuestro robot.- Parar: detiene al robot y lo pone en modo de pausa para que "descanse".

    Estas "instrucciones" estn hechas a medida porque estamos utilizando un pseudo cdigo,pero podran ser sustituidas por instrucciones reales en el momento en el que nosotrosdecidiramos en qu lenguaje realizar nuestro programa.

    Una vez hemos definido las instrucciones y mirado cul es la estructura que queremos utilizarpasaremos a escribir el cdigo. Quiero decir que al principio puede ser que le cueste un pocoencontrar una solucin lgica. Pero piense que esto, como la mayora de las cosas, requieremucha paciencia, mucha prctica y algo de concentracin.

    Pasemos a implementar el ejemplo:

    Si Escaln = 200 entonces

    Parar

    Sino

    LevantaPieIzquierdo

    LevantaPieDerecho

    Fin Si

    Observe detenidamente la implementacin del cdigo y mire cules seran los pasos quedeberamos seguir cuando se dieran los dos posibles casos de nuestro problema. Recuerdeque para un mismo problema pueden existir diferentes soluciones.

    Descubre miles de cursos como ste en www.mailxmail.com 7

    mailxmail - Cursos para compartir lo que sabes

  • 5. Ejemplo 2 - Moverse de una posicin a otra[http://www.mailxmail.com/curso-metodologia-programacion/ejemplo-2-moverse-posicion]Una vez visto el ejemplo anterior vamos a plantear otros que nos ayudarn a entendery a familiarizarnos con esta estructura condicional. Con la prctica, podr ver queesta es una de las estructuras que ms se utilizan en programacin. En casi todos losprogramas hay que tomar algn tipo de decisin.

    Este es un ejemplo un poco tonto pero nos puede servir para acabar de entendercmo funciona esta estructura condicional.

    Imagine que tenemos a nuestro Robot trabajando en una cadena de montaje en unaplataforma mvil que tiene dos posiciones posibles: la 1 la 2 a derecha e izquierda.

    Lo que nosotros queremos que haga el Robot es lo siguiente: si el Robot inicialmentese encuentra en la posicin 1 deber moverse a la 2, y si se encuentra en la posicin2 deber moverse a la 1.

    Para este ejemplo definiremos unas nuevas instrucciones que iremos utilizando enfuturos ejemplos:-MoverDer: mover el robot a la derecha una sola posicin.-MoverIzq: mover el robot a la izquierda una sola posicin.-Posicin: esta instruccin nos servir para saber en qu posicin se encuentra elrobot.

    Antes de mirar la solucin que yo le propongo estudie una posible solucin, pienseun poco y no tenga miedo en equivocarse con la solucin.

    Posible solucin Ejemplo 2.- Una posible solucin a nuestro programa del Robot quese debe mover de una posicin a la otra podra ser la siguiente:

    Si Posicin = 1 entonces MoverDer Sino MoverIzq Fin Si

    Observe que en este ejemplo lo que hacemos es preguntar si el Robot se encuentraen la posicin 1. Si la respuesta es Verdadera haremos que se mueva a la derecha"MoverDer" (con lo que se quedar en la posicin 2), mientras que si la respuestafuera Falsa (cosa que querra decir que est en la posicin 2) se movera a la izquierda"MoverIzq" (quedando situado el Robot en la posicin 1). As de fcil podemos hacerque nuestro Robot cambie de posicin dependiendo de su posicin inicial.

    Descubre miles de cursos como ste en www.mailxmail.com 8

    mailxmail - Cursos para compartir lo que sabes

  • Descubre miles de cursos como ste en www.mailxmail.com 9

    mailxmail - Cursos para compartir lo que sabes

  • 6. Ejemplo 3 - Coger el bloque y moverse[http://www.mailxmail.com/...curso-metodologia-programacion/ejemplo-3-coger-bloque-moverse]Ahora que ya sabemos cmo hacer que nuestro Robot se mueva segn la posicin en la quese encuentra; vamos ha realizar un ejercicio que nos haga lo siguiente: tenemos a nuestroRobot en la plataforma mvil definida anteriormente, pero esta vez con tres posiciones: 1 -2 - 3. Y encima de una de estas tres posiciones pondremos un bloque (caja) llamada "A".Puede que en alguna de estas posiciones haya un bloque que no se llame "A", si fuera as nodeberamos hacer nada con l.

    Lo que queremos que realice nuestro Robot es lo siguiente: el Robot siempre partir de laposicin 1, pero no sabr dnde est situado el bloque y ste siempre debe estar en una delas 3 posiciones. Nosotros deberemos hacer que nuestro Robot se desplace por la cintamirando si el bloque se encuentra en esta posicin. Si el bloque est en esa posicin, debecogerlo.

    Como siempre, vamos a definir las nuevas instrucciones que necesitaremos para solucionareste problema, recuerde que si necesita alguna de las instrucciones definidas anteriormentepuede hacerlo. Eso s, no puede inventarse ninguna instruccin nueva. Es recomendable quevaya haciendo una lista de todas las instrucciones que vamos definiendo.

    Nuevas instrucciones:

    - BloqueEncima: ser el equivalente a hacer que el robot mire arriba y mire el nombre quetiene escrito el bloque.-CogerBloque: el robot alargar su brazo y coger el bloque.

    Sera muy recomendable que antes de mirar la solucin lo intentara usted solo, para ver siha comprendido a la perfeccin todo lo que llevamos de curso.

    Descubre miles de cursos como ste en www.mailxmail.com 10

    mailxmail - Cursos para compartir lo que sabes

  • 7. Posible solucin al ejemplo 3[http://www.mailxmail.com/curso-metodologia-programacion/posible-solucion-ejemplo-3-1]Vamos a dar dos posibles soluciones para el problema que se nos plantea, en estee-mail y en el siguiente. Recordemos que el Robot siempre partir de la posicin 1 tal ycomo indica el enunciado.

    Primera solucin.-

    1 . - Si BloqueEncima = "A" entonces

    2 . - CogerBloque

    3 . - Sino

    4 . - MoverDer

    5 . - Si BloqueEncima = "A" entonces

    6 . - CogerBloque

    7 . - Sino

    8 . - MoverDer

    9 . - CogerBloque

    1 0 . - Fin Si

    11 . - Fin Si

    Explicacin del ejemplo.-

    1.- Miramos si encima de la primera posicin, posicin en la que sabemos que seencuentra seguro al iniciar el programa, est el bloque A.2.- Si es as, verdadera lo cogemos. En este caso, hemos terminado elprograma. Ya que continuara con la lnea 3, punto donde se separa la parte de larespuesta a la condicin verdadera y falsa, y al haberse cumplido la parte Verdaderasaltaramos hasta la lnea 11.3.- Si no se cumple la puesta en la lnea 1, continuamos el programa.4.- Hacemos desplazar al Robot hacia la derecha. Hecho esto, nos encontramos en laposicin 2 de nuestra plataforma.5.- Miramos si encima de esta posicin (segunda posicin) est el bloque A.6.- Si es as, verdadera la cogemos. En este caso, hemos terminado elprograma; ya que continuara con la lnea 7, punto donde se separa la parte de larespuesta a la condicin verdadera y falsa, y al haberse cumplido la parte Verdaderasaltaramos hasta la lnea 10.7.- Si no se cumple la puesta en la lnea 5, continuamos el programa.8.- Hacemos desplazarse el Robot a una posicin derecha. Hecho esto, nosencontramos en la posicin 3 y ltima de nuestra plataforma.9.- Como sabemos seguro que el bloque "A" est en alguna de las 3 posiciones y yahemos visto que no estaba ni en la 1, ni en la 2. Sin mirar qu bloque hay en estaposicin podemos cogerlo.

    Descubre miles de cursos como ste en www.mailxmail.com 11

    mailxmail - Cursos para compartir lo que sabes

  • 10.- Fin del segundo Si.

    11.- Fin del primer Si.

    Observe como dentro de un Si hemos puesto otro Si. Con lo que hemos podido haceruna pregunta despus de haber visto que la primera era falsa.

    Observe que para este ejemplo hemos necesitado 11 lneas y muchas de estas lneasestn repetidas varias veces. Esto no quiere decir que no funcionara, ya que hemosvisto en la traza, ejecucin del programa lnea a lnea, que el Robot al final conseguirasu objetivo. Cuando veamos que una misma instruccin se repite muchas veces nosdeberamos plantear que puede ser que exista alguna otra solucin que sea un pocoms corta y con menos lneas repetidas.

    Descubre miles de cursos como ste en www.mailxmail.com 12

    mailxmail - Cursos para compartir lo que sabes

  • 8. Otra posible solucin al ejemplo 3[http://www.mailxmail.com/curso-metodologia-programacion/posible-solucion-ejemplo-3-2]Ahora veremos una solucin al mismo problema en el que slo se utilizan 7 lneas.

    1 . - Si BloqueEncima "A" entonces

    2 . - MoverDer

    3 . - Si BloqueEncima "A" entonces

    4 . - MoverDer

    5 . - Fin Si

    6 . - Fin Si

    7 . - CogerBloque

    1.- Preguntamos si el posible bloque que hay en esta posicin es diferente a "A". Deesta forma, si el bloque fuera el "A",

    saldramos del bucle en la lnea 6.2.- Nos moveramos una posicin a la derecha, con lo que ya estaramos situados en lasegunda posicin.3.- Preguntamos si el posible bloque que hay en esta posicin es diferente a "A".

    4.- Si estamos en esta lnea quiere decir que el bloque "A" no estaba en la primeraposicin, ni en la segunda; con lo que nos desplazaremos otra posicin a la derechapara situarnos en la tercera posicin.5.- Lnea que nos indica el final del segundo Si.

    6.- Lnea que nos indica el final del primer Si.

    7.- En esta lnea, sera el momento en el que cogemos el bloque que existe en laposicin que nos encontramos.

    Si se fija en este ejemplo, la instruccin CogerBloque est fuera del Si ya que, lo quehemos conseguido, con todas las instrucciones que tenemos dentro de nuestraestructura condicional, ha sido situar el Robot en la posicin en la que se encuentra elbloque A.

    Observe que, en este caso, desde un principio preguntamos por diferente ( < > ) y nopor igual (=); con lo que conseguimos que la forma de plantearnos el cdigo sea unpoco diferente.

    Aqu le muestro una lista de operadores lgicos que podemos utilizar:-

    = Igual que- < Menor que- > Mayor que- < > Diferente que

    Descubre miles de cursos como ste en www.mailxmail.com 13

    mailxmail - Cursos para compartir lo que sabes

  • Intente ampliar los ejemplo que hemos dado hasta este momento y buscar unaimplementacin del cdigo lo ms sencilla posible. En prximas lecciones, pondremosms ejemplos y algunos ejercicios a realizar.

    Descubre miles de cursos como ste en www.mailxmail.com 14

    mailxmail - Cursos para compartir lo que sabes

  • 9. Los bucles[http://www.mailxmail.com/curso-metodologia-programacion/bucles-1]Un bucle no es ms que una serie de instrucciones que se repiten.

    Podemos tener dos tipos de bucles segn lo que nos interese comprobar. - Bucle que se repite mientras se cumple una condicin determinada.- Bucle que se realiza hasta que se cumple la condicin que marcamos.

    En esta leccin nos encargaremos del primer tipo.

    A la hora de utilizar un bucle, sea del tipo que sea, debemos ir con cuidado y pensarcuando debe acabar ya que; si no tuviramos en cuenta esto, podramos entrar enun bucle sin fin, bucle que no terminara nunca. Por esto, es de suma importanciaque pensemos, antes de hacer nada, en qu momento, cmo, dnde y por qu debeacabar el bucle.

    Estructura bsica.- En nuestro curso, es la estructura bsica de un bucle y serepresentar de la siguiente manera:

    Mientras hacer

    Fin Mientras

    Explicaremos lnea a lnea este bucle:-Primera lnea: en esta lnea escribiremos la que se debe dar paraque se ejecute el bucle. En el momento en que la condicin que estamos evaluandosea Falsa, se terminar el bucle y se continuarn ejecutando las instrucciones queapareceran despus de la tercera lnea de esta estructura bsica.-Segunda lnea: lnea o lneas donde escribiremos las instrucciones a efectuar encaso de que la condicin sea Verdadera.-Tercera lnea: marca el final del bucle. Podemos decir que nos indica hasta dndeestn las lneas que se repiten o justo el final del bucle para poder seguir con lasdems instrucciones de nuestro programa.

    En esta estructura no tenemos ninguna lnea que sea opcional.

    Descubre miles de cursos como ste en www.mailxmail.com 15

    mailxmail - Cursos para compartir lo que sabes

  • 10. Ejemplo 1 - Situarse en la ltima posicin de nuestraplataforma (I)[http://www.mailxmail.com/...gramacion/ejemplo-1-situarse-ultima-posicion-nuestra-plataforma-1]Imagine que tenemos a nuestro Robot en la plataforma mvil que definimos en leccionesanteriores, con tres posibles posiciones 1 - 2 - 3.

    Nuestro Robot lo podemos tener situado en la primera o segunda posicin y nosotrosqueremos que se desplace hasta la tercera posicin.

    Pasemos a implementar el ejemplo:

    Mientras Posicin 3 hacer MoverDer Fin Mientras

    Observe el cdigo que hemos propuesto para la resolucin de este primer ejemplo conbucles. Vamos a seguir paso a paso cmo miraramos si hemos realizado bien la solucindel cdigo en los dos posibles casos (Robot posicionado en la posicin 1 en la 2).

    -Tenemos el Robot en la posicin 1 a)Miraramos la primera lnea, la que marca la condicin. La condicin nos dice queentremos en el bucle mientras no estemos en la posicin 3 (Mientras Posicin 3 hacer).Como en este caso no estamos en la posicin indicada, ya sabemos lo que nos toca, entraren el bucle.b)Nos movemos una posicin a la derecha (MoverDer).

    c)Vamos a la ltima lnea del bucle. (Fin Mientras).

    d)Volvemos a mirar si se cumple la condicin. Como todava no se cumple, ya que nosencontramos en la posicin 2, entraramos otra vez dentro del bucle. e)Nos volveramos a desplazar una posicin a la derecha.f)Volveramos al final del bucle donde nos mandara otra vez a la primera lnea de ste paraas volver a comprobar la condicin.g)Ahora, como ya nos encontramos en la posicin deseada, no entraramos dentro denuestro bucle y seguiremos con la instruccin que encontrsemos despus de (FinMientras); en este caso finalizamos el programa.

    Descubre miles de cursos como ste en www.mailxmail.com 16

    mailxmail - Cursos para compartir lo que sabes

  • 11. Ejemplo 1 - Situarse en la ltima posicin de nuestraplataforma (II)[http://www.mailxmail.com/...gramacion/ejemplo-1-situarse-ultima-posicion-nuestra-plataforma-2]Continuamos con el ejemplo que planteamos en la leccin anterior.

    -Tenemos el Robot en la posicin 2.a)Miramos la condicin que nos pone la estructura Mientras, como no nos encontramos enla posicin 3, entramos en el bucle. b)Nos movemos una posicin hacia la derecha (MoverDer). c)Vamos a la ltima lnea del bucle. (Fin Mientras), la cual nos manda a la primera lnea delbucle. d)Volvemos a mirar si se cumple la condicin. Vemos que ya nos encontramos en la terceraposicin. Ya no hace falta que entremos en el bucle. Ya podemos seguir con lasinstrucciones que tenemos despus del bucle.

    A este proceso que acabamos de realizar le llamaremos Traza. La traza, realizar paso porpaso un cdigo, es muy importante en el momento de poder detectar posibles erroresen nuestra implementacin del cdigo; ya que nos podemos dar cuenta si nuestrocdigo falla o realiza alguna accin que no deseamos. Es muy importante que al realizarla traza hagamos todos y cada uno de los pasos indicados y no demos nada por supuesto.En el momento de realizar la traza debemos actuar como si nosotros furamos la mquinaque realizar el cdigo.

    Descubre miles de cursos como ste en www.mailxmail.com 17

    mailxmail - Cursos para compartir lo que sabes

  • 12. Ejemplo 2 - Bucle infinito[http://www.mailxmail.com/curso-metodologia-programacion/ejemplo-2-bucle-infinito]Vamos a ver un pequeo ejemplo en el que el bucle sera infinito, con lo que nospodra provocar un error en el momento de ejecutar el programa.

    Imagine que tenemos el siguiente cdigo. (Este cdigo no tiene enunciado)

    Mientras Posicin > 1 hacer

    MoverDer Fin Mientras

    Imagine que nuestro Robot, en un principio, estuviera situado en la posicin 2, qupasara?.

    Pues muy sencillo, que comenzara a desplazarse hacia la derecha y como a partir deeste momento todas las posiciones son mayores de 1, l siempre se movera unaposicin a la derecha con el peligro de salirse del ral en el que est trabajando,produciendo as un ERROR. Si realizramos la traza correspondiente a nuestrocdigo veramos cul es el error y cmo lo podramos solucionar.

    Para realizar la traza imagine que estamos trabajando en un ral con 3 posiciones yque partimos de la primera posicin as, adems, se acostumbrar a ver cmofunciona el bucle.

    Ejemplo 3.Bloque sobre la plataforma.- En este ejemplo, vamos a utilizar las dosestructuras que hemos visto hasta este momento.

    El enunciado sera el siguiente: tenemos, otra vez, a nuestro Robot montado en laplataforma mvil pero un poco ampliada ya que, esta vez, tenemos 5 posiciones.Nosotros, inicialmente, podemos encontrar el Robot en una de las 4 posicionesiniciales y un bloque llamado A en una de ellas. (La colocacin del Robot y delbloque ser aleatoria). El bloque siempre estar situado en alguna posicin.Nosotros queremos encontrar ese bloque, est donde est, y llevarlo hasta la quintaposicin que siempre estar vaca.Antes de mirar la solucin que le propongo intente encontrar por si slo unasolucin correcta. Una vez la tenga realice una traza para ver si los pasos que hapensado realizan lo que le hemos planteado. Consulte, en todo momento, la lista deinstrucciones que se ha construido hasta este momento.

    Descubre miles de cursos como ste en www.mailxmail.com 18

    mailxmail - Cursos para compartir lo que sabes

  • 13. Posible solucin al ejemplo 3[http://www.mailxmail.com/curso-metodologia-programacion/posible-solucion-ejemplo-3-3]Antes de realizar una implementacin de nuestro problema, debemos tener en cuentaalgo que puede ser que se nos haya pasado por alto. Observe que en el enunciado delproblema se nos dice que el Robot puede estar en cualquiera de las 4 primerasposiciones al igual que el bloque A. Por lo tanto, puede ser que el bloque quedecolocado en la posicin 1 y el Robot en la 2. Con lo que tendremos que pensar algunamanera para hacer que ste, estando en cualquier posicin, pueda recorrer todas lasposiciones mirando si en ellas est el bloque A.

    Pasemos a la implementacin del cdigo y a su correspondiente explicacin. Esta noes la nica manera que tenemos para realizar la solucin.

    Enumeraremos las lneas para poder hacer una explicacin del funcionamiento denuestro cdigo.

    1 . - Mientras Posicin 1 hacer

    2 . - MoverIzq

    3 . -

    Fin Mientras

    4 . -

    Mientras Posicin 5 hacer5 . - Si BloqueEncima = "A" entonces

    6 . - CogerBloque

    7 . - Fin Si

    8 . - MoverDer

    9 . -

    Fin Mientras

    En la prxima leccin le explicaremos cada una de las lneas de este ejemplo.

    Descubre miles de cursos como ste en www.mailxmail.com 19

    mailxmail - Cursos para compartir lo que sabes

  • 14. Explicacin al ejemplo anterior[http://www.mailxmail.com/...curso-metodologia-programacion/explicacion-ejemplo-anterior-1]A continuacin le explicamos una a una las lneas del ejercicio de la leccin anterior.

    1.- Miramos si la posicin del Robot es diferente a 1. De esta forma, conseguiremos,estando en la posicin que estemos, situarnos en la primera posicin para tratarsiempre el problema de la misma forma. Esta preparacin del terreno es muy usualdentro de la programacin ya que nos ayuda a plantearnos todos los casos como uncaso nico.2.- Nuestro Robot se mover una posicin a la izquierda.3.- Indique el final del bucle y nos posicionar nuevamente en la lnea 1 para volvera mirar si se cumple o no la condicin.Despus de asegurarnos que nuestro Robot se encuentra en la posicin 1. Iniciamoslo que sera la resolucin del problema planteado. 4.- Inicio del bucle, el cual controlar el movimiento de nuestro Robot hasta laquinta posicin.5.- Miramos si en la posicin en la que nos encontramos actualmente est el bloque "A"A".

    6.- Si la respuesta a la condicin puesta en el Si es afirmativa pasaremos por estasexta lnea, con lo que cogeremos el bloque.7.- Finalizamos el Si. Seguro que en el momento en el que lo finalizamos tenemosel bloque A en nuestro poder.8.- Moveremos el Robot una posicin a la derecha. Fjese que nos moveremos tantoa la derecha sin haber encontrado el bloque, como en el caso que ya lo hayamosencontrado.

    9.- Pasamos otra vez a comprobar la condicin impuesta en el segundo Mientras. Elprograma finalizar siempre en el momento en el que estemos situados en la quintaposicin.

    En un principio, lo que hemos hecho ha sido mover el Robot a la posicin 1 con loque nos hemos asegurado que ninguna de las posiciones se quedase sin mirar.Puede ser que de esta forma hayamos pasado dos veces por la misma posicin peroas nos aseguramos de no dejarnos ninguna.

    Cuando ya nos encontramos en la posicin 1, vamos pasando posicin por posicinmirando en cada una de ellas si tenemos el bloque "A". Si en la posicin que nosencontramos est el bloque "A" lo cogemos y seguimos nuestro camino hasta laquinta posicin, donde dar por finalizada la ejecucin del programa.

    Descubre miles de cursos como ste en www.mailxmail.com 20

    mailxmail - Cursos para compartir lo que sabes

  • 15. Las variables[http://www.mailxmail.com/curso-metodologia-programacion/variables]Una variable es un "espacio" al cual se le puede asignar diferentes valores segn nosconvenga. Imaginemos que tenemos una caja a la que le ponemos un nombre parapoder hacernos referencia a ella; en la que podemos guardar dentro lo que mejornos convenga.

    En nuestro curso utilizaremos dos tipos de variables: numricas y de texto, msadelante veremos sus caractersticas. Piense que, segn el tipo de lenguaje queestemos utilizando para realizar nuestro cdigo, pueden existir muchos tipos devariables diferentes.

    Como definir una variable?.- Para definir (crear) una variable siempre necesitaremosun nombre con el que nos referiremos a ella durante nuestro "programa", seguidode dos puntos (:) y a continuacin el tipo de variable que utilizamos, en nuestrocaso: texto o nmero.

    Por ejemplo, podremos definir una variable llamada Escaln en la que guardaremosel nmero de escaln en el que se encuentra nuestro Robot en un momentodeterminado. Para definir esta variable deberemos escribir en nuestro cdigo: EscalEscaln: texto.

    Inicializar una variable.- Antes de empezar a utilizar las variables que hemosdefinido, es conveniente iniciarlas (darles valores conocidos por nosotros). Paraponer un valor a nuestras variables lo haremos de la siguiente manera.

    Para una variable donde almacenaremos un nmero lo nico que tendremos quehacer es escribir el nombre de la variable en la que deseemos almacenar el valor,seguido de un signo igual y, a continuacin, el nmero que deseemos almacenar:Escaln = 10

    Para una variable donde almacenaremos caracteres, lo nico que tendremos quehacer es escribir el nombre de la variable en la que deseemos almacenar el valor,seguido de un signo igual y a continuacin los caracteres que deseemos almacenar,pero en este caso deben ir entre comillas: NombreRobot = "Arint" (Aprovechandola ocasin vamos a bautizar a nuestro Robot, a partir de este momento lellamaremos Arint)Observe que una variable numrica y una de texto, slo se diferencian en que elvalor que deseamos guardar, uno no lleva comillas y el otro s.

    Mire detenidamente estos dos ejemplos: Valor = 10 y Valor = "10". Los dos, en unprincipio, tendran el mismo valor, pero en realidad no es as. En el primer ejemplo,tendramos un nmero con el cual podramos operar, mientras que en el segundotendramos dos caracteres, con los que no podramos operar.

    Descubre miles de cursos como ste en www.mailxmail.com 21

    mailxmail - Cursos para compartir lo que sabes

  • Descubre miles de cursos como ste en www.mailxmail.com 22

    mailxmail - Cursos para compartir lo que sabes

  • 16. Caractersticas de las variables numricas[http://www.mailxmail.com/...urso-metodologia-programacion/caracteristicas-variables-numericas]Con una variable de tipo numrica podremos hacer cualquier tipo de operacin, siempreteniendo presente, qu operaciones nos deja hacer nuestro lenguaje de programacin.

    En este pequeo curso slo utilizaremos las 4 operaciones bsicas (suma, resta,multiplicacin y divisin).

    Debemos tener en cuenta que estas operaciones tienen una prioridad. De una cadena deoperaciones siempre se realizar, en primer lugar, las divisiones y las multiplicaciones y, ensegundo lugar, las sumas y las restas. Si quisiramos que esta prioridad se viese alteradapodramos utilizar los parntesis. Las operaciones que aparezcan dentro de ellos serealizarn con una prioridad superior a las que estn fuera; sin tener en cuenta si estas sonmultiplicaciones, divisiones, sumas o restas.

    Observe estos dos ejemplos: 1+2*3 = 7 Mientras que (1+2)*3 = 9. En el primer ejemplohemos efectuado primero la multiplicacin y despus la suma. Mientras que en el segundo,primero se efecta la suma (por estar entre parntesis) y despus la multiplicacin.

    Esto es comn a la gran parte de lenguajes de programacin.

    Almacenar resultados en variables.- Nosotros podemos almacenar valores en nuestrasvariables de la misma manera que las inicializamos. Variable = Valor.

    Este "almacenamiento" de informacin la podemos hacer en cualquier lugar del cdigo.Debemos pensar que este Valor puede ser sustituido por una operacin y almacenar elresultado en la variable.

    Veamos un ejemplo: Variable = 5 + 3 de esta forma cuando nosotros consultemos elcontenido de Variable podremos observar que es un 8.

    Podemos utilizar una variable como un contador. Un contador no es ms que una variableque se va incrementado de forma que podemos contar, por ejemplo, las veces que pasamospor un lugar determinado, las veces que se realiza una funcin, etc. La estructura de uncontador sera la siguiente. Imagine que hemos definido una variable llamada Contador.Entonces, el ejemplo quedara de la siguiente forma: Contador = Contador + 1.

    Explicaremos cmo funcionara este contador. A la derecha del igual se produce laoperacin, que en este caso es Contador + 1, de esta forma se coge el valor que tiene Contador y se le suma 1. El resultado de la operacin se guarda en la variable que tenemosa la derecha del igual, que este caso es la misma variable Contador. Si esta lnea lapusiramos dentro de un bucle, podramos ver como la Variable va aumentando de 1 en 1hasta que se cumpliera la condicin del bucle.

    Descubre miles de cursos como ste en www.mailxmail.com 23

    mailxmail - Cursos para compartir lo que sabes

  • 17. Ejemplo 1 - Contador dentro de un bucle[http://www.mailxmail.com/...curso-metodologia-programacion/ejemplo-1-contador-dentro-bucle]Veamos un ejemplo en el que utilizaremos una variable, que har de contador, dentro de unbucle. Volvemos a tener nuestro pequeo Robot Arint, montado en una plataforma mvil deun total de 20 posiciones. Lo que queremos es lo siguiente: el Robot puede partir decualquiera de las 20 posiciones, queremos que cuando el Robot llegue a la ltima posicin,el programa nos devuelva el nmero de posiciones por las cuales NO ha pasado.

    Antes de mirar la posible solucin, intente hacerlo usted mismo.

    Vamos a definir una nueva instruccin:-Mostrar: Arint nos mostrar el valor de la variable o el mensaje que escribamos detrs deesta instruccin.

    Es conveniente que revise todas las instrucciones que hemos ido utilizando durante el cursopara poder resolver este ejemplo.

    Posible solucin al ejemplo 1.- Pasemos a la implementacin del cdigo y a sucorrespondiente explicacin. sta no es la nica manera que tenemos para realizar lasolucin.

    1.- Contador: Nmero

    2.- Faltan: Nmero

    3.- Contador = 1

    4.- Mientras Posicin 20 hacer

    5.- MoverDer

    6.- Contador = Contador +1

    7.- Fin Mientras

    8.- Faltan = Posicin - Contador

    9.- Mostrar Faltan

    En la prxima leccin explicaremos este ejemplo.

    Descubre miles de cursos como ste en www.mailxmail.com 24

    mailxmail - Cursos para compartir lo que sabes

  • 18. Explicacin del ejemplo anterior[http://www.mailxmail.com/...curso-metodologia-programacion/explicacion-ejemplo-anterior-2]Vamos a explicar el ejemplo anterior lnea a lnea.

    1.- Definimos la variable llamada Contador como numrica, la cual nos servir paracontabilizar las veces que se mueve Arint.2.- Definimos la variable Faltan como numrica, la cual nos servir para acumular laresta entre el total de posiciones que hay la cantidad de veces que se ha movido ArintArint.

    3.- Iniciamos la variable Contador a 1. Ya que interpretamos que la posicin en laque se encuentra Arint se debe contabilizar como posiciones por donde ha pasado.4.- Iniciamos el bucle, el cual nos servir para controlar cuando Arint llega a laposicin 20 (ltima posicin), lugar donde deber terminar de avanzar.5.- Mientras no lleguemos a la posicin 20, iremos moviendo Arint hacia la derecha.6.- Cada vez que realizamos un movimiento incrementamos en 1 la variablecontador. Fjese, por ejemplo, que la primera vez que entramos en el bucle el valorde la variable Contador es 1 . En esta lnea le sumamos 1 con lo que el resultado es2 y queda almacenado (sustituyendo el valor anterior), dentro de la misma variableContador. 7.- Ponemos el punto donde finaliza el bucle para as volver a evaluar la condicin.8.- Calculamos la cantidad de espacios por las que Arint no ha pasado. RestandoPosicin - Contador y almacenando el resultado dentro de la variable Faltan.9 . - Arint por fin nos mostrar por cuntas posiciones en total no ha pasado.

    Observe que, en este primer ejemplo, hemos definido dos variables para que laexplicacin del mismo fuera mucho ms claro; ya que, es el primer ejemplo en elque utilizamos variables. El mismo ejercicio que hemos visto se podra haberrealizado con una sola variable. Observe cmo se realizara.

    Contador: Nmero

    Contador = 1

    Mientras Posicin 20 hacer

    MoverDer

    Contador = Contador +1

    Fin Mientras

    Contador = 20 - Contador

    Mostrar Contador

    Intente realizar usted mismo la traza de este cdigo.

    A la hora de solucionar cualquier problema en el que pensemos que necesitamosutilizar variable, nos tenemos que plantear bien, cuntas utilizaremos y cmo las

    Descubre miles de cursos como ste en www.mailxmail.com 25

    mailxmail - Cursos para compartir lo que sabes

  • utilizaremos. No deberemos ir definiendo variables sin seguir un orden ya que;stas ocupan espacio y puede hacer que la aplicacin vaya ms despacio.

    Descubre miles de cursos como ste en www.mailxmail.com 26

    mailxmail - Cursos para compartir lo que sabes

  • 19. Estructuras condicionales (II)[http://www.mailxmail.com/curso-metodologia-programacion/estructuras-condicionales]Vamos a repasar la estructura condicional que conocemos hasta este momento "Si", con un pequeo ejercicio: vamos a hacer que nuestro ya conocido Robot "Arint" sevuelva a pasear entre las plataformas mviles. El robot lo situaremos en la primerade 10 posiciones posibles y encima de cada una de ellas habr o no colocado uno delos bloques con un nombre determinado (A, B C), lo que queremos es lo siguiente:el Robot debe pasearse por todas las posiciones hasta llegar a la ltima, mirandoqu bloque est en la posicin actual y contabilizando las veces que aparecen losbloques durante todo el recorrido. En la ltima posicin no existir ningn bloque.Cuando llegue a la ltima posicin nos debe indicar slo el nombre del bloque queha aparecido ms veces.Veamos una posible solucin de este problema, pero antes de ello y como siempre,es recomendable que intente solucionar por si solo el problema.

    BloqueA: texto

    BloqueB: texto

    BloqueC: texto

    Mientras Posicin 10 hacer

    Si BloqueEncima = "A" entonces

    BloqueA = BloqueA + 1

    Fin Si

    Si BloqueEncima = "B" entonces

    BloqueB = BloqueB + 1

    Fin Si

    Si BloqueEncima = "C" entonces

    BloqueC = BloqueC + 1

    Fin Si

    MoverDer

    Fin Mientras

    Si BloqueA > BloqueB entonces

    Si BloqueA > BloqueC entonces

    Mostrar "Hay ms bloques A"

    Si no

    Mostrar "Hay ms bloques C"

    Fin si

    Si no

    Si BloqueB > BloqueC entonces

    Mostrar "Hay ms bloques B"

    Si no

    Mostrar "Hay ms bloques C"

    Fin si

    Fin si

    No explico el funcionamiento del cdigo ya que es bastante sencillo de entender ysupongo que todos los que habis seguido el curso hasta este punto lo podriscomprender con facilidad. Es recomendable hacer una traza para poder entenderperfectamente el funcionamiento.

    Descubre miles de cursos como ste en www.mailxmail.com 27

    mailxmail - Cursos para compartir lo que sabes

  • Fjese que, en este ejemplo, para poder saber qu bloque es el que se encuentraencima e incrementar su variable hemos tenido que utilizar 9 lneas en las que haytres estructuras Si, una para cada bloque. Imagine que en lugar de existir tres tiposde bloques hubiramos podido encontrar 20, qu hubiera pasado con el nmerode lneas y el nmero de instrucciones Si?

    Para facilitar esto, existe una nueva estructura llamada En caso de, cuya estructuraveremos en la prxima unidad.

    Descubre miles de cursos como ste en www.mailxmail.com 28

    mailxmail - Cursos para compartir lo que sabes

  • 20. Nueva estructura condicional[http://www.mailxmail.com/curso-metodologia-programacion/nueva-estructura-condicional]Ahora veremos la estructura de la nueva estructura condicional, llamada En caso de.Esta estructura, como ya hemos dicho anteriormente, es muy til en el momento enel que debemos tomar diferentes decisiones de una misma condicin.

    En caso hacer ...

    Fin caso

    Vamos a explicar cmo funciona esta nueva estructura condicional.

    En el lugar donde aparece la palabra condicin pondremos lo que nosotros queremosevaluar: puede ser una variable, una instruccin o cualquier cosa que en nuestroprograma tome diferentes valores. Esta condicin funciona igual que en la estructuracondicional Si.

    En el lugar de ... pondremos los diferentes valores que pueden darse en la condicin.Observe que esta estructura no se suele utilizar cuando la respuesta a la condicin essolamente Verdadero o Falso, sino cuando esta condicin puede tomar diferentesvalores.

    Despus de estas lneas de valor, escribiremos las instrucciones que queramos que serealicen en cada caso. Piense que estas instrucciones pueden ser slo una operacin otoda una serie de instrucciones anidadas, tan complejas como lo requiera elprograma que estamos realizando.

    Descubre miles de cursos como ste en www.mailxmail.com 29

    mailxmail - Cursos para compartir lo que sabes

  • 21. Ejemplo de la nueva estructura condicional[http://www.mailxmail.com/...rso-metodologia-programacion/ejemplo-nueva-estructura-condicional]

    Vamos a aplicar esta estructura al ejemplo del principio de la leccin:

    BloqueA: texto

    BloqueB: texto

    BloqueC: texto

    En caso BloqueEncima hacer

    "A"

    BloqueA = BloqueA + 1

    "B" BloqueB = BloqueB + 1

    "C"

    BloqueC = BloqueC + 1

    Fin Caso

    Si BloqueA > BloqueB entonces

    Si BloqueA > BloqueC entonces

    Mostrar "Hay ms bloques A"

    Si no

    Mostrar "Hay ms bloques C"

    Fin si

    Si no

    Si BloqueB > BloqueC entonces

    Mostrar "Hay ms bloques B"

    Si no

    Mostrar "Hay ms bloques C"

    Fin si

    Fin si

    Observe detenidamente las lneas en las que aparece la nueva estructura y comprela con laslneas correspondientes del primer ejemplo. Observe que aqu, segn el valor que toma lacondicin BloqueEncima, se realizan unos u otros pasos. La diferencia de utilizacin entreuna y otra instruccin sera mucho ms evidente si los posibles valores que tomara lacondicin fueran ms numerosos.

    Descubre miles de cursos como ste en www.mailxmail.com 30

    mailxmail - Cursos para compartir lo que sabes

  • 22. Ejercicio prctico[http://www.mailxmail.com/curso-metodologia-programacion/ejercicio-practico]Vamos a realizar nuestro primer programa utilizando un lenguaje de programacinreal. Para ello, utilizaremos Visual Basic.

    Veremos cmo nos planteamos el programa en nuestro lenguaje y cmo loconvertimos despus a un leguaje real de programacin.

    Enunciado del ejercicio.- Vamos a hacer un programilla que se semejar un poco alo que hemos estado haciendo hasta este momento del Arint sobre el ral mvil,para que as, en el momento de hacer nuestro pseudo cdigo, no nos tengamos queinventar ninguna instruccin que no hallamos visto hasta el momento y nos seamucho ms fcil de entender.

    Primero explicaremos de qu va el ejemplo y despus, como buenos programadoresque somos, nos plantearemos cmo enfrentarnos a l realizando el pseudo cdigo.

    Antes de continuar explicaremos cul es el ejemplo real ante el que nos enfrentamosy despus haremos un paralelismo hacia nuestro gran amigo Arint.

    El ejemplo real es el siguiente: tendremos un espacio reservado para poderintroducir una frase de un tamao ilimitado (tampoco deber ser muy larga) quedebe acabar con punto, para que el programa sepa donde finaliza la frase. Elprograma se iniciar situando un puntero en la primera letra de la frase. Despus,dicho puntero se ir moviendo letra a letra hasta llegar al final de la frase, (hasta queel puntero encuentre el punto). Durante este recorrido el programa deber contarcuantas letras vocales encuentra. Cuando llegue al final nos deber mostrar lacantidad de vocales de cada tipo que ha encontrado.

    ste es el ejemplo real, ahora veamos el paralelismo con Arint: tenemos nuestraplataforma mvil con una cantidad de posiciones ilimitadas. En las diferentesposiciones, siempre desde el principio, pondremos una serie de bloques, cadabloque tendr una letra asignada. El ltimo de los bloques debe tener un punto paraque el Robot sepa donde se encuentra el final. El Robot lo que debe hacer esmoverse desde la primera a la ltima posicin contando los bloques que vaencontrando por su camino que contengan la letra: a, e, i, o, u. Una vez llegado alfinal deber mostrarnos cuntas letras de cada tipo ha encontrado por el camino.

    Con este ejemplo, es con el que realizaremos los primeros pasos de planteamientodel problema que veremos en la prxima leccin.

    Descubre miles de cursos como ste en www.mailxmail.com 31

    mailxmail - Cursos para compartir lo que sabes

  • 23. Planteamiento del problema[http://www.mailxmail.com/curso-metodologia-programacion/planteamiento-problema]Veamos, a continuacin, el planteamiento del problema del que hablbamos en laleccin anterior.

    1.- Cuando nos encontramos delante de un problema as lo que nos podemosplantear, en un principio, es cmo se finaliza la ejecucin del programa y cules sonlas estructuras e instrucciones que se repiten.

    En este ejemplo, el proceso que se repite es el movimiento de posicin en posicin,hasta que se encuentra un bloque con un punto (.). Con lo que nos podemosplantear que todo nuestro programa estar englobado dentro de esta estructura:

    Mientras BloqueEncima "." hacer

    ...

    MoverDer

    Fin Mientras

    Los puntos suspensivos se sustituirn por ms instrucciones despus de seguiranalizando el problema y la instruccin MoverDer sabemos que tambin estar yaque nos tenemos que ir desplazando por las diferentes posiciones.

    2.- Despus de analizar que es lo que se repite y cmo debe acabar el programa,debemos pensar en que es lo que se debe hacer en cada repeticin, dicho de otramanera, cules son las instrucciones que se deben hacer en cada una de lasposiciones.

    Veamos lo que realizar el Robot en cada uno de los pasos: -Mirar qu bloque tiene encima.-En caso de ser una de las letras (a, e, i, o, u), incrementar en 1 la variable quedeberemos crear para cada una de las letras. A estas variables vamos a llamarlasLetraA, LetraE, LetraI, LetraO, LetraU que definiremos como siempre al principiodel programa. Debemos acordarnos de definir e inicializar las variables que vamos autilizar en nuestro ejemplo. Esto lo haremos al principio del programa, fuera delbucle ya que sino, las variables siempre se iran reinicializando y no seincrementaran.-Una vez mirada la letra del bloque que tenemos encima pasaremos a movernos unaposicin hacia la derecha para volver a empezar los pasos hasta ahora indicados.

    Descubre miles de cursos como ste en www.mailxmail.com 32

    mailxmail - Cursos para compartir lo que sabes

  • 24. Cmo implementar lo que hemos aprendido[http://www.mailxmail.com/...rso-metodologia-programacion/como-implementar-que-hemos-aprendido]Veamos cmo implementaremos lo hasta aqu explicado.

    LetraA: Nmero

    LetraE: Nmero

    LetraI: Nmero

    LetraO: Nmero

    LetraU: Nmero

    LetraA = 0

    LetraE = 0

    LetraI = 0

    LetraO = 0

    LetraU = 0

    Mientras BloqueEncima "." hacer

    En caso BloqueEncima hacer

    "a"

    LetraA = LetraA + 1

    "e"

    LetraE = LetraE + 1

    "i"

    LetraI = LetraI + 1

    "o"

    LetraO = LetraO + 1

    "u"

    LetraU = LetraU + 1

    Fin Caso

    MoverDer

    Fin Mientras

    3.- Despus de esto, lo nico que nos queda es mirar qu es lo que debe hacer el programajusto antes de finalizar.

    En nuestro caso, lo nico que debe hacer cuando Arint encuentre el bloque con el punto esdecirnos cuntos bloques con la a, e, i, o, u ha encontrado por el camino.

    Ahora vamos a aadir las lneas que nos quedan, para completar todo el cdigo. Las lneasque aparecen a continuacin deber ponerlas despus del Fin mientras.

    Mostrar LetraA

    Mostrar LetraE

    Mostrar LetraI

    Mostrar LetraO

    Mostrar LetraU

    Despus de analizar y plantear un posible cdigo para nuestro pequeo problema vamos aimplementarlo en Visual Basic.

    Descubre miles de cursos como ste en www.mailxmail.com 33

    mailxmail - Cursos para compartir lo que sabes

  • 25. Implementacin en Visual Basic[http://www.mailxmail.com/curso-metodologia-programacion/implementacion-visual-basic]Una vez que ya tenemos estudiado cmo vamos a plantearnos nuestro problema,veremos cmo queda al traducirlo a Visual Basic.

    Visual Basic es un lenguaje de programacin en el cual se pueden generar ventanasiguales que la mayora de programas que se utilizan dentro del entorno Windows.

    Una de las primeras cosas que se hacen al realizan un programa en Visual Basic esgenerar un formulario donde ocurrir toda la "accin".

    Nuestro formulario sera ms o menos de este estilo, deber imaginarse elfuncionamiento ya que en este momento no disponemos de los suficientesconocimientos como para poder realizar este ejercicio realmente en Visual Basic.

    Vamos a ver los pasos que necesitamos para poder comenzar a trabajar con eseformulario en la siguiente leccin

    Descubre miles de cursos como ste en www.mailxmail.com 34

    mailxmail - Cursos para compartir lo que sabes

  • 26. Pasos a seguir para la implementacin[http://www.mailxmail.com/curso-metodologia-programacion/pasos-seguir-implementacion]Para poder entender todo lo que vamos a ver, sera mejor que tuviera a mano elcdigo que hicimos en las lecciones anteriores.

    Veamos cmo quedara el cdigo en Visual Basic:

    LetraA = 0 'Inicializamos todas las variables a 0.

    LetraE = 0

    LetraI = 0

    LetraO = 0

    LetraU = 0

    Posicin = 1 'Situamos el puntero en la primera posicin.

    Letra = LCase(Frase.Text, Posicin, 1) 'Almacenamos en la variable Letra la letraque hay en la posicin en la que nos encontramos. Para poder compararla.

    Do While Letra "." 'Comenzaremos con el bucle hasta que encontremos unpunto.

    Select Case Letra 'En caso...

    Case "a" 'En el caso que la letra sea una a...

    LetraA = LetraA + 1 'Sumaremos 1 a la variable LetraA.

    Case "e" 'En el caso que la letra sea una e...

    LetraE = LetraE + 1 'Sumaremos 1 a la variable LetraE.

    Case "i" 'En el caso que la letra sea una i...

    LetraI = LetraI + 1 'Sumaremos 1 a la variable LetraI.

    Case "o" 'En el caso que la letra sea una o...

    LetraO = LetraO + 1 'Sumaremos 1 a la variable LetraO.

    Case "u" 'En el caso que la letra sea una u...

    LetraU = LetraU + 1 'Sumaremos 1 a la variable LetraU.

    End Select 'Fin En caso...

    Posicin = Posicin + 1 'Instruccin equivalente a MoverDer, ya queincrementamos la posicin en 1.

    Letra = LCase(Frase.Text, Posicin, 1) 'Almacenamos en la variable Letra laletra que hay en la posicin en la que nos encontramos.

    Loop 'Finalizamos el bucle mientras.

    NumA.Caption = LetraA 'Mostramos la variable LetraA.

    NumE.Caption = LetraE 'Mostramos la variable LetraE.

    NumI.Caption = LetraI 'Mostramos la variable LetraI.

    NumO.Caption = LetraO 'Mostramos la variable LetraO.

    NumU.Caption = LetraU 'Mostramos la variable LetraU.

    Todo lo que aparece despus de 'son anotaciones para aclarar las instrucciones' sonanotaciones que se ponen en el Visual Basic. El programa no hace caso de ellas.

    Intente ver las similitudes con el cdigo que hemos planteado en esta leccin y el quehicimos en la leccin anterior. Seguramente no entiendan todas las instrucciones queaparecen en este cdigo, pero lo nico que pretendemos es que veis cmo hemos"traducido" el cdigo de un lenguaje que nos sirve para plantearnos el problema a

    Descubre miles de cursos como ste en www.mailxmail.com 35

    mailxmail - Cursos para compartir lo que sabes

  • otro real.

    Descubre miles de cursos como ste en www.mailxmail.com 36

    mailxmail - Cursos para compartir lo que sabes

  • 27. Bucles (II)[http://www.mailxmail.com/curso-metodologia-programacion/bucles-2]Como hemos visto hasta este momento, los bucles son una de las instrucciones msutilizadas dentro del mundo de la programacin ya que, muchos de los problemascon los que nos encontramos y queremos que resuelva un ordenador suelen serrutinas repetitivas.

    Hasta este momento, hemos visto la instruccin Mientras... Fin Mientras, pero estanos puede traer un pequeo problema que deberamos solucionar con lneasadicionales fuera del bucle, veamos esto con un ejemplo.

    Tenemos a Arint, subido en una plataforma con 10 posiciones, en algunas de estasposiciones tendremos puestos diferentes bloques, incluidas la primera y ltimaposicin. Arint, para facilitar la cosa, siempre partir de la primera posicin. ElRobot deber recorrer cada una de las posiciones mirando si hay un bloque llamado A en ella. Al llegar al final y despus de mirar si hay bloque en la posicin en la quese encuentra nos deber decir cuntos bloques ha encontrado por el camino.Recordemos que el Robot nunca podr salir de las 10 posiciones indicadas.

    Utilizando las instrucciones que hemos visto hasta el momento tendramos querealizar un cdigo parecido a ste:

    NumBloques: Nmero

    NumBloques = 0

    Mientras Posicin 10 hacer

    Si BloqueEncima = "A" entonces

    NumBloque = NumBloque + 1

    Fin Si

    MoverDer

    Fin mientras

    Si BloqueEncima = "A" entonces

    NumBloque = NumBloque + 1

    Fin si

    Mostrar NumBloque

    Mire detenidamente el cdigo anterior. Fjese que las instrucciones que tenemosdentro del Mientras, hacen que el brazo se mueva de la posicin 1 a la 1 0, peroslo miran los bloques que hay en las posiciones de la 1 a la 9 , ya que cuando llegaa la posicin 1 0 la condicin ya es VERDADERA, con lo que no entra. Por eso,hemos hecho que al final del bucle mirase nuevamente si el bloque que hay en laposicin 1 0 tiene la letra A.

    Descubre miles de cursos como ste en www.mailxmail.com 37

    mailxmail - Cursos para compartir lo que sabes

  • 28. Nueva estructura de bucles[http://www.mailxmail.com/curso-metodologia-programacion/nueva-estructura-bucles]Ahora vamos a ver el mismo ejemplo de esta leccin, pero utilizando una nuevaestructura repetitiva (bucle). Primero veamos la estructura y despus cmo lapodemos aplicar.

    Repetir

    ...

    Hasta que

    Esta es otra estructura de bucle pero tiene un pequeo matiz, que la hace diferentea la ya estudiada anteriormente.

    Observe que esta estructura primero ejecutara las instrucciones y despus mirara sise cumple o no la condicin, con lo que tenemos que tener mucho cuidado ya quelas instrucciones, como mnimo, se ejecutarn una vez (las veces restantes yadependern de la condicin). La condicin se evala despus de realizar lasinstrucciones y no antes, como pasaba en el caso del Mientras.

    Ejemplo.- vamos a aplicar esta estructura al ejemplo del principio de la leccin:

    NumBloque: Nmero

    NumBloque = 0

    Repetir

    Si BloqueEncima = "A" entonces

    NumBloque = NumBloque + 1

    Fin Si MoverDer

    Hasta que Posicin = 10

    Mostrar NumBloque

    Observe detenidamente las lneas en las que aparece la nueva estructura.

    Fjese que en un principio, despus de crear la variable e inicializarla a 0, lo nicoque ve el programa es que entra en una estructura repetitiva pero no lleva a caboninguna verificacin de ningn tipo, con lo que ejecuta las dos instrucciones queestn dentro de ella. Cuando llega a la lnea Hasta que... es cuando el programa miraa su alrededor para ver si se encuentra en la posicin 10. Observe tambin como eneste caso es necesario preguntar por si la posicin es IGUAL (=) y no DIFERENTE( ) como en el caso de la estructura Mientras. Por lo que, cundo Arint seencuentra en la posicin 10 terminar de ejecutarse el bucle, pero con la diferencia,de que aqu ya habr mirado si existe algn bloque A en la ltima posicin y nonecesitaremos volver a preguntar si en esa posicin existe un bloque llamado A.

    Descubre miles de cursos como ste en www.mailxmail.com 38

    mailxmail - Cursos para compartir lo que sabes

  • Ahora que hemos analizado y comparado este ejemplo, seguro que tiene muy claraslas dos estructuras repetitivas. Vuelvo a insistir en que analice bien cul de las dosestructuras deberemos utilizar en cada caso y si creemos que debemos utilizar unbucle.

    Descubre miles de cursos como ste en www.mailxmail.com 39

    mailxmail - Cursos para compartir lo que sabes

  • 29. Operadores lgicos[http://www.mailxmail.com/curso-metodologia-programacion/operadores-logicos]Hasta este momento hemos visto que tanto en una condicin (S... o En caso de...)como en un bucle (Mientras...) utilizamos una sola condicin para llevarla a cabo.Pero puede ser que nos interese valorar ms de una condicin. Me explico: puedeser que en un determinado momento nos interese mirar si el bloque que tenemosencima se llama A y nos encontramos en la posicin 5 , con lo que podramos tomaruna decisin determinada. Otra cosa que podramos mirar es si el bloque se llama Ao nos encontramos en la posicin 5 . Fjese que estos dos ejemplos tienen unapequea diferencia, uno esta planteado utilizando una o y otro una y, con lo que elresultado es diferente. A esta o y a esta y se les llama operadores lgicos.

    Analizando el operador lgico Y.- Para analizar el funcionamiento de este operadorlgico vamos a plantear un pequeo caso para ver qu es lo que ocurrira endiferentes momentos.

    Tenemos a Arint movindose libremente por nuestra pasarela con 10 posiciones yqueremos que mire si se encuentra en la posicin 5 y si el bloque que tiene encimase llama A. Si es as, deber cogerlo y llevarlo a la primera posicin.

    En un principio, podramos pensar en utilizar un Si dentro de otro, pero como yahemos dicho muchas veces, cuantas menos lneas tenga el cdigo, mejor. Veamosigualmente cmo sera el cdigo utilizando un Si anidado con otro. En un principio,en el primero de los "Si's" podemos preguntar por cualquiera de las condiciones quese deben cumplir y dentro por la que queda. Dentro de los dos "Si's" pondremos laslneas que se debe ejecutar en caso de que las dos condiciones sean Verdaderas.(Slo escribiremos las lneas en las que se utiliza la instruccin Si).

    Si Posicin = 5 entonces

    Si BloqueEncima = "A" entonces

    Instrucciones a realizar...

    Fin Si

    Fin Si

    ste sera el cdigo con un Si dentro de otro. Qu es lo que hara el programacuando llegara a estas lneas? Primero mirara la primera condicin si se cumple. Sies verdadera, pasara a la siguiente lnea, mirara si esta condicin se cumple. Encaso afirmativo, realizara las instrucciones que hubiera dentro. Si cualquiera de lasdos condiciones que tenemos en este ejemplo no se cumplieran el programa norealizara las instrucciones internas.

    Descubre miles de cursos como ste en www.mailxmail.com 40

    mailxmail - Cursos para compartir lo que sabes

  • 30. Cmo implementar funciones dentro de un mismo 'Si'[http://www.mailxmail.com/...todologia-programacion/como-implementar-funciones-dentro-mismo-si]Ahora vamos a ver cmo podemos implementar las mismas funciones pero todo dentro de unmismo Si. En un principio, la estructura del Si es exactamente igual, lo nico que debemospensar es que tendremos que separar las dos condiciones mediante un nexo. En este caso,como queremos que se cumplan las dos condiciones utilizaremos un nexo Y. Veamos cmoquedara el ejemplo y despus pasaremos a comentarlo viendo su funcionamiento en diferentescasos.

    Si Posicin = 5 Y BloqueEncima = "A" entonces

    Instrucciones a realizar...

    Fin Si

    Observe cmo el nmero de lneas se ha reducido. Ahora vamos a plantear las diferentesopciones con las que nos podemos encontrar y si realizara o no las instrucciones que seencuentran dentro del Si. Recuerde que las condiciones slo pueden ser Verdaderas o Falsas.

    Posicin = 5 BloqueEncima = "A" Se realizaran las instrucciones? Verdadero Verdadero S (Verdadero) Verdadero Falso No (Falso) Falso Verdadero No (Falso) Falso Falso No (Falso)

    Observe que el nico caso en el que se realizaran las instrucciones sera en el que se cumplenlas dos condiciones planteadas en el Si. Por el contrario, si una de las dos instrucciones no secumple las instrucciones no se ejecutaran. Fjese bien en el cuadro e intntelo entender.

    Descubre miles de cursos como ste en www.mailxmail.com 41

    mailxmail - Cursos para compartir lo que sabes

  • 31. Analizando el operador lgico O[http://www.mailxmail.com/curso-metodologia-programacion/analizando-operador-logico]Para analizar el funcionamiento, de este otro operador lgico vamos a plantear otropequeo caso para ver que es lo que ocurrira en diferentes momentos.

    Tenemos a Arint, otra vez, movindose libremente por nuestra pasarela con 10posiciones y queremos que mire si el bloque que tiene encima se llama A o si sellama B. Si es as, deber coger el bloque y llevarlo a la primera posicin.

    Para poder realizar este pequeo ejemplo sin utilizar los operadores lgicosdeberamos utilizar dos instrucciones Si de la siguiente manera:

    Si BloqueEncima = "A" entonces

    Instrucciones a realizar...

    Fin Si

    Si BloqueEncima = "B" entonces

    Instrucciones a realizar...

    Fin Si

    Que es lo que hara Arint cuando llegara a estas lneas? Primero mirara el primer Si, si se cumpliera la condicin, realizara las instrucciones que tenemos en elinterior, sino pasara al siguiente Si y mirara la siguiente condicin. Aqu, si estacondicin se cumple se realizan las instrucciones que tenemos en el interior. De talmanera, si una de las dos condiciones se cumple se realizaran las instrucciones.Piense que no podemos utilizar un Sino dentro del primer Si ya que podra ser quenos encontrsemos con un bloque llamado C, con lo que tambin se realizaran lasinstrucciones, cosa que no nos interesa. Por eso, ponemos dos Si para comprobarque el bloque de encima se llama A o se llama B.

    Ahora vamos a ver cmo podemos implementar las mismas funciones pero tododentro de un mismo Si. En un principio, la estructura del Si es exactamente igual, lonico que debemos pensar es que tendremos que separar las dos condicionesmediante un nexo. En este caso, como queremos que se cumpla una de las doscondiciones utilizaremos un nexo O. Veamos cmo quedara el ejemplo y despuspasaremos a comentarlo viendo su funcionamiento en diferentes casos.

    Si BloqueEncima = "A" O BloqueEncima = "B" entonces

    Instrucciones a realizar...

    Fin Si

    Observe como el nmero de lneas se ha reducido y ms pensando que tendramosque repetir las instrucciones internas dos veces en los dos Si's. Ahora vamos aplantear las diferentes opciones con las que nos podemos encontrar y si realizara ono las instrucciones que se encuentran dentro del Si. Recuerde que las condicionesslo pueden ser Verdaderas o Falsas.

    Descubre miles de cursos como ste en www.mailxmail.com 42

    mailxmail - Cursos para compartir lo que sabes

  • BloqueEncima ="A"

    BloqueEncima ="B"

    Se realizaran lasinstrucciones?

    Verdadero Verdadero S (Verdadero) Verdadero Falso S (Verdadero) Falso Verdadero S (Verdadero) Falso Falso No (Falso)

    Observe que el nico caso en el que no se realizaran las instrucciones sera en elque no se cumple alguna de las dos condiciones planteadas en el Si. De forma que siuna de las dos condiciones es verdadera las instrucciones se realizan. Fjese bien enel cuadro e intntelo entender.

    Descubre miles de cursos como ste en www.mailxmail.com 43

    mailxmail - Cursos para compartir lo que sabes

  • 32. Explicacin matemtica[http://www.mailxmail.com/curso-metodologia-programacion/explicacion-matematica]Vamos a ver cmo podemos entender estos conceptos de operadores lgicos deforma matemtica. Esto es interesante en el momento en el que nos podemosplantear una mezcla de Y y de O , dentro de un mismo Si u otra instruccin. Msadelante, ver a lo que me refiero exactamente.

    Antes de continuar explicaremos que un ordenador realiza los clculos en sistemabinario y no en sistema decimal como nosotros, slo utiliza dos dgitos: el 1 y el 0 .Con estos dos dgitos, representa cualquier nmero. Vamos a realizar unacomparacin entre el sistema decimal y el binario contando del 1 al 1 0.

    Decimal Binario 1 1 2 1 0 3 1 1 4 1 0 0 5 1 0 1 6 1 1 0 7 1 1 1 8 1000 9 1001 1 0 1010

    No vamos a comentar cmo funciona el cdigo binario al completo, ya que seraun poco largo y tedioso. Puede ser que ms adelante lo hagamos ya que es muyinteresante. Lo nico en lo que queremos hacer hincapi es en un par deoperaciones, la suma y la multiplicacin; ms adelante veremos para qu nospueden servir. En un principio, lo nico que nos interesara sumar y multiplicarseran 1 y 0 , por lo que el tema se convierte en un poco ms sencillo.

    Veamos primero la suma, cmo sera en decimal y cmo es en binario.

    Decimal Binario 1 + 1 = 2 1 + 1 = 10 1 + 0 = 1 1 + 0 = 1 0 + 1 = 1 0 + 1 = 1 0 + 0 = 0 0 + 0 = 0

    Descubre miles de cursos como ste en www.mailxmail.com 44

    mailxmail - Cursos para compartir lo que sabes

  • Observe que en la parte de la operacin en Binario lo nico que se ha visto afectadoes el nmero 2 que, como ya hemos visto en la tabla anterior, en Binario es un 1 0.Una vez hecha esta tabla, comprela con la tabla que realizamos del operador lgico OO y ver que si sustituimos los 1 por Verdadero y los 0 y los 1 0 por Falso, la tablaes exactamente igual.

    Descubre miles de cursos como ste en www.mailxmail.com 45

    mailxmail - Cursos para compartir lo que sabes

  • 33. La multiplicacin en decimal y en binario[http://www.mailxmail.com/...curso-metodologia-programacion/multiplicacion-decimal-binario]Veamos ahora la multiplicacin cmo sera en decimal y cmo es en binario.

    Decimal Binario 1 x 1 = 1 1 x 1 = 1 1 x 0 = 0 1 x 0 = 0 0 x 1 = 0 0 x 1 = 0 0 x 0 = 0 0 x 0 = 0

    Observe que en la parte de la operacin en Binario no se ha visto afectado deninguna manera ya que no se han utilizado dgitos que no sean el 1 y el 0 . Una vezhecha esta tabla, comprela con la tabla que realizamos del operador lgico Y y veraque si sustituimos los 1 por Verdadero y los 0 por Falso, la tabla es exactamenteigual.

    En definitiva, lo que queremos dar a entender con esto es que en el momento en elque nos veamos delante de la necesidad de utilizar una combinacin de Y y Odentro de una misma condicin, podemos utilizar la multiplicacin y la suma enbinario para poder ver cul es el resultado que nos dara.

    Descubre miles de cursos como ste en www.mailxmail.com 46

    mailxmail - Cursos para compartir lo que sabes

  • 34. Qu es una tabla?[http://www.mailxmail.com/curso-metodologia-programacion/que-es-tabla]En un principio, no vamos a poner una definicin, ya que lo que interesa es que seentienda el concepto de forma lgica. Para esto, slo hace falta hacer una pequeacomparacin con los ejemplos que hemos utilizado en todo este curso.

    Podemos decir que una tabla no es otra cosa que toda la estructura por la cual se haido moviendo nuestro incansable Arint. O sea, una serie de posiciones en las que sepodan "poner" cosas de un mismo tipo, que en nuestros ejemplos eran Bloques.Tambin podemos decir que esos bloques, a parte de por su nombre, sediferenciaban entre s por la posicin que ocupaban.

    Una tabla se define con un nombre y una serie de posiciones y un tipo de dato queir dentro de esta estructura. Haciendo la similitud con nuestro ejemplo estoquedara as: nuestro Arint se ha movido por una estructura que no tena nombrepero le podemos asignar uno llamndola Cinta. Despus, nosotros siempredefinamos cuantas posiciones tena esta estructura, pues esto es el tamao de latabla. Se puede decir que esta estructura tiene una posicin mnima y otra mxima,a esto le llamaremos Rango de la tabla. En los ejemplos, no definamos qu tipo dedatos se poda encontrar en la estructura pero normalmente trabajbamos con Bloques, pues bien, esto sera el tipo de dato que tenemos dentro de la tabla.

    Cmo creamos una tabla.- Antes de nada, veamos cmo definiremos una tabla.Recuerde los elementos que necesitamos para ello: el nombre, el tamao (nmerode posiciones), y el tipo que tendrn los datos que se almacenarn en el interior dela tabla.

    Imaginemos que queremos definir una tabla llamada: Nmeros con 10 posiciones yque sea de tipo Numrico. En este caso, la definicin sera de la siguiente forma NNmeros[10] : Nmero.

    Cada elemento de esta tabla se diferencia de otro elemento de la misma por el lugarque ocupa, o sea, por su posicin en la tabla, al igual que hacamos con Arint cuando le preguntbamos la posicin en la que se encontraba.

    De esta forma, el primer elemento sera Nmeros[1] y el ltimo Nmeros[10]. Enmuchos lenguajes de programacin el primer elemento de una tabla ocupa el lugar 00, pero nosotros, para facilitar el trabajo, empezaremos a contar desde el 1.

    Descubre miles de cursos como ste en www.mailxmail.com 47

    mailxmail - Cursos para compartir lo que sabes

  • 35. Operando con tablas[http://www.mailxmail.com/curso-metodologia-programacion/operando-tablas]Cada elemento de una tabla se comporta de forma independiente con respecto a losdems, con esto quiero decir que cada elemento podemos pensar que se trata, enun principio, de una variable diferente. De forma que, si nosotros queremos haceruna operacin entre el primer y el tercer elemento de nuestra tabla podramoshacerlo de la siguiente forma: podramos crear una variable llamada Operacin paraalmacenar el resultado de la operacin, siendo la instruccin de la siguiente forma:Operacin = Nmeros[1] + Nmeros[3].

    Primer Ejemplo.- Ahora vamos con el ejemplo antes mencionado: Imagnese quetenemos 200 nmeros al azar almacenados en variables y lo que deseamos esobtener el doble del valor que tienen actualmente.

    Piense que si en un principio tuviramos que definir 200 variables e ir multiplicandocada una de ellas por el doble sera un poco largo, y cuantas ms variablestuviramos, ms largo sera el cdigo. Pues bien, si utilizamos una tabla esto esalgo poco ms fcil.

    Enumeraremos las lneas para despus poder hacer la explicacin paso a paso. Elcdigo quedara de la siguiente manera:

    1 . - Valor[10]: Nmero

    2 . - Indice: Nmero

    3 . - Indice = 1

    4 . - Mientras Indice < 11 hacer

    5 . - Valor[Indice] = Random(100)

    6 . - Indice = Indice + 1

    7 . - Fin Mientras

    8 . - Indice = 1

    9 . - Mientras Indice < 11 entonces

    1 0 . - Valor[Indice] = Valor[Indice] * 2

    1 1 . - Indice = Indice + 1

    12 . - Fin Mientras

    En la prxima leccin le explicaremos cada una de las lneas del ejemplo

    Descubre miles de cursos como ste en www.mailxmail.com 48

    mailxmail - Cursos para compartir lo que sabes

  • 36. Explicacin al ejemplo anterior[http://www.mailxmail.com/...curso-metodologia-programacion/explicacion-ejemplo-anterior-3]Veamos a continuacin, la explicacin al ejercicio anterior.

    1.- Definimos una tabla llamada Valor con 10 posiciones de tipo nmero.2.- Definimos una variable llamada ndice que nos servir para movernos por elinterior de la tabla.

    3.- Inicializamos la variable a 1 para colocarnos en la primera posicin de la tablarecin creada.4.- Utilizaremos un bucle para llenar la tabla con unos valores iniciales. El bucle serepetir mientras el ndice sea menor de 1 1.5.- Gracias al bucle iremos pasando por cada una de las posiciones de la tablaintroduciendo un nmero, al azar del uno al 100, utilizando la nueva orden Random.6.- Incrementamos en 1 el ndice para poder pasar a la siguiente posicin.7.- Terminamos el bucle para el rellenado de datos.8.- Volvemos a inicializar la variable a 1 para colocarnos al principio de la tabla.9.- Volvemos a utilizar un bucle para recorrer toda la tabla. En esta ocasin loharemos para doblar el valor de cada una de las posiciones.10.- En esta lnea multiplicamos por dos el valor del lugar en el que nosencontramos.

    11.- Incrementamos en 1 el ndice para poder pasar a la siguiente posicin.12.- Terminamos el bucle.

    Intente comprender paso a paso este ejemplo. Plantese casos parecidos, hasta quecomprenda bien cmo nos movemos por las diferentes posiciones de una tabla.

    Nota importante.- debe tener mucho cuidado que en los programas en los queutilice tablas no acceda a una posicin que est fuera del rango de la tabla. Sisucediera esto nos dara un error y el programa terminara su ejecucin de formaincorrecta.

    Descubre miles de cursos como ste en www.mailxmail.com 49

    mailxmail - Cursos para compartir lo que sabes

  • 37. Segundo Ejemplo[http://www.mailxmail.com/curso-metodologia-programacion/segundo-ejemplo]Vamos a ver otro pequeo ejemplo para tratar con tablas. En esta ocasin, tenemosuna tabla con 25 elementos que suponemos que ya est llena. Lo que queremos esdar la "vuela" a la tabla, digmoslo de otra manera, el elemento que est en laprimera posicin ha de ocupar la ltima y el elemento de la ltima deber pasar a laprimera. Ej.: La tabla: 1, 2, 3, 4, 5 despus tendr este aspecto 5, 4, 3, 2, 1. Hemosaadido nmeros a las lneas para facilitar la explicacin.

    1 . - Tabla[25]: Nmero

    2 . - IndicePrimero: Nmero

    3 . -

    IndiceUltimo: Nmero

    4 . -

    Elemento: Nmero

    5 . -

    IndicePrimero = 1

    6 . -

    IndiceUltimo = 25

    7 . -

    Repetir

    8 . - Elemento = Tabla[IndicePrimero]

    9 . - Tabla[IndicePrimero] = Tabla[IndiceUltimo]

    1 0 . - Tabla[IndiceUltimo] = Elemento

    1 1 . - IndicePrimero = IndicePrimero + 1

    1 2 . - IndiceUltimo = IndiceUltimo - 1

    1 3 . -Hasta que IndicePrimero = IndiceUltimo

    1.- Definimos una tabla llamada Tabla con 25 posiciones de tipo Nmero.2.- Definimos una variable llamada IndicePrimero que nos servir para movernospor la tabla desde la primera posicin en adelante.3.- Definimos una variable llamada IndiceUltimo que nos servir para movernos porla tabla desde la ltima posicin hacia atrs.4.- Definimos una variable llamada Elemento para utilizarla de puente en elmomento de mover el contenido de una posicin a otra. Esta variable es necesariaya que si hacemos el cambio desde, por ejemplo, la primera a la ltima posicinperderamos el valor que tenamos en la primera posicin.5 y 6.- Inicializamos las variables IndicePrimero a 1 y IndiceUltimo a 25 ya quequeremos partir, respectivamente, desde la primera y la ltima posicin.7.- Entramos dentro del bucle.

    8.- Hacemos que la variable Elemento tome el valor del contenido de la tabla quenos indique IndicePrimero.9.- Hacemos que la posicin que nos indica IndicePrimero tome como valor el valorque tiene la posicin que nos indica IndiceUltimo.10.- Ahora la posicin que nos indica IndiceUltimo toma como valor el contenidode la variable Elemento.

    11.- Aumentamos IndicePrimero en 1 para adelantar en la tabla.

    Descubre miles de cursos como ste en www.mailxmail.com 50

    mailxmail - Cursos para compartir lo que sabes

  • 12.- Disminuimos IndiceUltimo en 1 para retroceder en la tabla.13.- Repetiremos el bucle hasta que los dos ndices se encuentren. ste ser elpunto en el que no se tendrn que mover ms elementos ya que, nos encontramosjusto en la mitad de la tabla.

    Hay que tener en cuenta que esta solucin es vlida en el caso que la cantidad deposiciones en la tabla sean impares. Para una cantidad par tendramos que buscarotra solucin. No estara plantearse esto como un nuevo ejercicio.

    Cuando salimos del bucle la ordenacin de la tabla ha concluido.

    Mrese el cdigo tantas veces como sea necesario, si no entiende algn punto nodude en preguntarlo.

    Descubre miles de cursos como ste en www.mailxmail.com 51

    mailxmail - Cursos para compartir lo que sabes

  • 38. Las matrices[http://www.mailxmail.com/curso-metodologia-programacion/matrices]En un principio, podemos decir que una matriz no es otra cosa que una tabla, comolas que hemos visto en la leccin anterior, pero en dos dimensiones.

    Si nosotros representamos una tabla de 10 posiciones lo podramos hacer as:

    En definitiva, en la tabla anterior tenemos 1 fila (horizontal) y 10 columnas (vertical),esto hace un total de 10 posiciones. Con lo que para referirnos a una posicin slohace falta indicar la columna a la que nos estamos refiriendo. Valor[3] Hacemosreferencia a la tercera posicin de la tabla llamada Valor.

    Ahora bien, en segn que caso, nos puede interesar tener lo que llamaremos matriz,una "tabla" pero con varias filas. Podramos representar, por ejemplo, una matriz de2 filas con 10 columnas de la siguiente manera:

    En esta matriz, tendramos 20 posiciones 2 x 10. Para referirnos a ellas tendremosque buscar una manera diferente a como lo hemos hecho con una tabla. En realidad,no es que la forma de llamar a cada una de las posiciones sea muy diferente, perose aade un elemento ms. Recuerde que cuando utilizbamos una tabla lo quehacamos era indicar la columna que ocupaba el elemento Datos[4], pues bien,ahora nosotros deberemos indicar la fila y la columna que ocupa. Esto lo haramosde la siguiente manera: para referirnos a una posicin siempre, al igual que en elcaso de una tabla, pondremos el nombre de la tabla entre corchetes [ ], primero lafila y despus la columna separados por una coma de la siguiente forma: Datos[1,4 ]. De esta manera, observe que los elementos que ocupan la cuarta columna sedeben diferenciar entre ellos por la fila en la que se encuentran.

    Observa este pequeo ejemplo en el que rellenaremos algunos campos de unamatriz de 3 filas por 4 columnas, llamada Valor en la que introducimos lossiguientes valores Valor[1,3] = "Excel", Valor[2,4] = "Word", Valor[3,2] = "VB". Latabla quedara de la siguiente manera, recuerde que siempre miraremos primero lafila (horizontal) y despus la columna (vertical):

    Le recomiendo que utilice ejemplos como este para que se acostumbres a utilizar

    Descubre miles de cursos como ste en www.mailxmail.com 52

    mailxmail - Cursos para compartir lo que sabes

  • tablas y a colocar los elementos en su lugar, piense que en programacin sicolocamos los elementos de una matriz de forma incorrecta o nos referimos a unaposicin fuera de la matriz nos puede dar error y "fastidiar" la ejecucin delprograma.

    Descubre miles de cursos como ste en www.mailxmail.com 53

    mailxmail - Cursos para compartir lo que sabes

  • 39. Cmo creamos una matriz[http://www.mailxmail.com/curso-metodologia-programacion/como-creamos-matriz]La forma de crear una matriz es exactamente igual que en el caso de una tabla, conel nico cambio que en este caso debemos indicar tambin cuntas filas formanparte de esta. Recuerde los elementos que necesitamos para ello: el nombre, eltamao (nmero de posiciones, tanto filas como columnas), y el tipo que tendrn losdatos que se almacenarn en el interior de la matriz.

    Imaginemos que queremos definir una tabla llamada Valores con 10 columnas y 5filas que sea de tipo Numrico, esto hace un total de 5 filas por 10 columnas untotal de: 50 posiciones. Pues bien, la definicin sera de la siguiente forma Valores[5, 10]: NValores[5, 10]: Nmero. Observa que en un principio todas las filas que definamosdentro de una misma matriz tendrn el mismo tipo de dato.

    Primer Ejemplo.- En muchos lenguajes de programacin las tablas, tanto en filascomo en columnas empiezan a contar desde la posicin 0, esto es importanteporque si definimos una tabla de 5 columnas nos debemos referir a ellas desde laposicin 0 a la 4 . En nuestro caso, para facilitar el entendimiento de los ejemplovamos a utilizar matrices cuya primera posicin es la nmero 1.

    Vamos con un ejemplo en el que utilizaremos una matriz: queremos un pequeoprograma que nos ordene unos nmeros, que obtenemos de forma aleatoria, enpares e impares. Vamos a definir una tabla con dos filas, de esta manera pondremosen la primera fila (fila 1) los nmero impares y en la segunda fila (fila 2) los nmeropares.

    Para saber si un nmero es par o impar lo nico que deberemos hacer es dividir lacantidad entre 2 y mirar el resto. Si este resto es 0 querr decir que el nmero es pary si el resto es diferente a 0 el nmero ser impar. Para mirar el resto utilizaremosuna nueva instruccin: Resto( ), poniendo dentro del parntesis la divisin a realizar.

    1 . -

    Tabla[2,10]: Nmero

    2 . -

    IndicePar: Nmero

    3 . -

    IndiceImpar: Nmero

    4 . -

    Cantidad: Nmero

    5 . -

    IndicePar = 1

    6 . -

    IndiceImpar = 1

    7 . -

    Mientras (IndicePar + IndiceImpar) < 21 hacer

    8 . - Cantidad = Random(100)

    9 . - Si Resto(Cantidad/2) = 0 y IndicePar < 11 entonces

    1 0 . - Tabla[2,IndicePar] = Cantidad

    1 1 . - IndicePar = IndicePar + 1

    1 2 . - Fin Si

    1 3 . - Si Resto(Cantidad/2) 0 y IndiceImpar < 11 entonces

    1 4 . - Tabla[1,IndiceImpar] = Cantidad

    1 5 . - IndiceImpar = IndiceImpar + 1

    1 6 . - Fin Si

    Descubre miles de cursos como ste en www.mailxmail.com 54

    mailxmail - Cursos para compartir lo que sabes

  • 1 7 . -

    Fin Mientras

    En la prxima leccin veremos la explicacin a este ejemplo.

    Descubre miles de cursos como ste en www.mailxmail.com 55

    mailxmail - Cursos para compartir lo que sabes

  • 40. Explicacin al ejemplo anterior[http://www.mailxmail.com/...curso-metodologia-programacion/explicacion-ejemplo-anterior-4]Veamos la explicacin correspondiente a la leccin de cmo crear una matriz.

    1.- Definimos una tabla llamada Tabla con 2 filas y 10 posiciones de tipo nmero.2 y 3.- Definimos una variable llamada IndicePar que nos servir para movernospor la fila de los pares y otra variable llamada IndiceImpar para movernos por la filade los impares.4.- Definimos una variable llamada Cantidad para almacenar el valor del nmerobuscado de forma aleatoria.

    5 y 6.- Inicializamos las variables IndicePar e IndiceImpar a 1 para empezar arellenar la matriz desde la primera columna.7.- Iniciamos un bucle que se repetir hasta que se llene completamente la matriz.Como nuestra matriz tiene 2 filas y 10 posiciones cada una de ellas en totaltenemos 20 posiciones. 8.- Almacenamos en la variable Cantidad un nmero aleatorio del 1 al 100.9.- Miramos si la Cantidad es par mediante la formula Resto(Cantidad/2) y si elndice que utilizamos para movernos por la fila de los nmeros par no est fuera derango, no sea ms grande de 10. Recordemos que si intentamos acceder a unaposicin fuera de la matriz nos dara un error de ejecucin.10.- Si la Cantidad es par y el IndicePar est dentro de los lmites almacenamos Cantidad en la matriz Tabla en la segunda fila, reservada para los nmeros pares, yen la posicin que indique el IndicePar.11.- Incrementamos en 1 el valor de la variable IndicePar, para avanzar unaposicin en la fila de los pares.12.- Lnea que nos indica el fin del primer Si.13.- Miramos si la Cantidad es impar mediante la formula Resto(Cantidad/2) y si elndice que utilizamos para movernos por la fila de los nmeros impares no estfuera de rango, no sea ms grande de 10. 14.- Si la Cantidad es impar y el IndiceImpar est dentro de los lmitesalmacenamos Cantidad en la matriz Tabla en la primera fila, reservada para losnmeros impares, y en la posicin que indique el IndiceImpar.15.- Incrementamos en 1 el valor de la variable IndiceImpar, para avanzar unaposicin en la fila de los impares.16.- Lnea que nos indica el fin del segundo Si.17.- Fin del bucle.

    Aqu llegamos al final de este curso de introduccin a la programacin. Todavafaltaran algunas cosas para ver, pero con lo visto hasta el momento nos podemoshacer una buena idea de qu es la programacin y cmo plantearnos muchos

    Descubre miles de cursos como ste en www.mailxmail.com 56

    mailxmail - Cursos para compartir lo que sabes

  • hacer una buena idea de qu es la programacin y cmo plantearnos muchosproblemas que nos puedan ir surgiendo.

    Recuerde la importancia de realizar bien las trazas ya que nos pueden facilitarmucho el trabajo y nos pueden ayudar a encontrar errores que podamoscometer y para plantearnos nuevas soluciones.

    Le recomiendo hacer muchos ejercicios para tener ms soltura en el momento deresolver los programas que nos puedan ir surgiendo.

    Visita ms cursos como este en mailxmail:[http://www.mailxmail.com/cursos-informatica][http://www.mailxmail.com/cursos-programacion]

    Tu opinin cuenta! Lee todas las opiniones de este curso y djanos la tuya:[http://www.mailxmail.com/curso-metodologia-programacion/opiniones]

    Cursos similaresCursos Valoracin Alumnos Vdeo

    SQLSQL (Structured Query Language) es un lenguaje de programacin para acceder ymanipular bases de datos. SQL surgi de un proyecto de IBM en el queinvestigaba e... [10 /05/04]

    43.949

    Manual de programacinEl objetivo de este curso consiste en ofrecer conocimientos bsicos deprogramacin. No pretender ensear cmo programar en un lenguaje especfico,ni utilizar ninguna te... [31 /01/08]

    2.801

    Primeros pasos con XML