Vous êtes sur la page 1sur 16

PCPI Informtica. PRIMEROS PASOS.

Guido van Robot.

1.- Guido van Robot puede mirar en una de las cuatro direcciones: norte, sur, este u oeste. Slo puede girar 90 cada vez, por lo que nunca podra mirar hacia el noreste, por ejemplo. En el mundo de Guido, las calles van de este a oeste, y se numeran empezando desde 1. No existe la calle 0 calles negativas. Las avenidas van de norte a sur, y tambin se numeran desde 1, sin avenida 0 o avenidas negativas. La interseccin de una calle y una avenida es una esquina. Cada movimiento simple de Guido le lleva de una esquina a otra. Como slo puede mirar en una de las 4 direcciones, cuando se mueve cambia su posicin de una avenida o la siguiente, o de una calle a otra, pero nunca ambas cosas a la vez. Es decir, se mueve de esquina a esquina en horizontal o en vertical, no en diagonal. En este primer ejercicio, vamos a crear nuestro primer mundo, vamos a colocar un Guido van Robot y vamos a hacer que de sus primeros pasos. A.- Abrimos el programa y nos situamos en la pestaa World editor. Escribimos Robot 4 3 N 0

Pinchamos en File / Guardar como. Escribimos mundo01 y pulsamos Guardar.

B.- De esta forma, hemos creado un mundo con un Robot Guido situado en la esquina de la 4 Avenida con la 3 Calle, mirando hacia el norte. Para cargar este mundo, pulsamos en File /Abrir y buscamos el archivo mundo01.wld que hemos creado. Pulsamos Abrir y aparece algo as:

Tecnologas de la informacin y la comunicacin.

PCPI Informtica.

Guido van Robot.

C.- Vamos a crear nuestro primer programa GvR, para ello nos situamos en la pestaa Code editor y escribimos lo siguiente: Guardamos el programa como programa01, pinchamos en File / Guardar como:

Estas instrucciones harn que Guido se mueva 4 espacios y luego se apague. Para comprobar el resultado pulsa en Ejecutar.

Cierra la pantalla de informacin que aparece: D.- A continuacin, pulsa en Reload para reiniciar. Vamos a ver la relacin entre las instrucciones que hemos escrito y el comportamiento del robot. Abre la pestaa Code editor y ejecuta las instrucciones una a una pulsando el botn Paso. E.- Vuelve a pulsar Reload y sitate en la pestaa World editor. Haz pruebas con los dos primeros nmeros y con la letra. Ej: Cambianos Robot 4 3 N 0 por Robot 1 3 N 0. Pulsa Reload. Cambianos Robot 1 3 N 0 por Robot 1 1 N 0. Pulsa Reload. Cambianos Robot 1 1 N 0 por Robot 1 1 S 0. Pulsa Reload. Tu Turno: 1.- Qu representa el primer nmero de la lnea Robot 4 3 N 0? 2.- Qu representa el segundo nmero de la lnea Robot 4 3 N 0? 3.-Qu representa la letra de la lnea Robot 4 3 N 0? 4.- Con qu letra se representa cada una de las cuatro direcciones? 5.- Haz un mundo en el que Guido empiece mirando hacia el este en la esquina inferior izquierda. Grbalo como mundo02. Haz que Guido se mueva tres posiciones y se apague. Grbalo como programa02.

Tecnologas de la informacin y la comunicacin.

PCPI Informtica. QU ES SE SONIDO?

Guido van Robot.

Ya has descubierto que la posicin inicial del robot se define con una lnea como la siguiente:
Robot 1 2 N 0

Robot n fila ncolumna sentido incial (N, S, E , O ) n zumbadores Qu son los zumbadores?. Un robot pude llevar zumbadores, que son pequeos dispositivos de sonido. Guido puede escuchar uno de sos zumbadores, cuando si se coloca en una esquina que tenga uno de ellos. Guido tambin puede coger dejar zumbadores, mediante las instrucciones tomarzumbador o ponerzumbador. Guido tiene una bolsa en la que lleva los zumbadores. Tienes que especificar el nmero inicial de zumbadores que Guido llevar en su bolsa en el archivo que define tu mundo. Si queremos que lleve 3 zumbadores escribiremos algo as: Robot 1 2 N 3 Tu turno: 1.- Sita a un robot con 4 zumbadores en la esquina de la 1 Avenida con la 5 Calle mirando hacia el este. Grbalo como mundo03. Haz que el robot se mueva dos bloques hacia el este, deje uno de los zumbadores, contine movindose hacia el este y dejando un zumbador en cada esquina hasta que se le acaben. Despus que se mueva un bloque ms y se apague.

Resultado de la ejecucin.

GIRAR, GIRAR Y GIRAR. Si Guido slo se pudiese mover hacia delante, estara triste porque nunca podra volver a casa. Los diseadores del robot se vieron atrapados por una crisis de presupuesto justo cuando estaban desarrollando los mecanismos de direccin. Slo le dieron la habilidad de girar hacia la izquierda, mantenindose en la misma esquina. El comando para esta accin es girarizquierda. Guido puede rotar en el sentido de las agujas de reloj:

Tu turno: 1.- Comienza con Guido en la esquina inferior izquierda, mirando hacia el este. Haz que de tres pasos, gire a la izquierda, tres pasos ms, gire a la izquierda y reptelo hasta que llegue de nuevo al punto inicial mirando de nuevo hacia el este. Graba los archivos de este ejercicio como mundo04 y programa04.

Tecnologas de la informacin y la comunicacin.

PCPI Informtica.

Guido van Robot.

JUST ANOTHER BRICK IN THE WALL Ya puedes programara a Guido para que se mueva y coja o deje zumbadores en cualquier sitio del mundo. Para hacer este mundo ms interesante, vamos a aadir paredes que Guido tendr que esquivar. Si Guido choca con una de estas paredes, se produce un error y el programa se para. Este comportamiento est grabado en el Robot. Si le pides que haga algo que no puede hacer, como por ejemplo si le dices que coja un zumbador de una esquina en la que no existe ningn zumbador, se produce un error y el programa se para. Lo mismo suceder si el mandas dejar un zumbador y no tiene ninguno en su bolsa. Por lo tanto, debemos ser cuidadosos y no pedirle al robot que vaya a una interseccin en la que hay una pared. Aqu tenis un ejemplo de un archivo de un mundo con paredes: El formato de una lnea de pared es: 1er nmero: Avenida mundo05.wrl 2 nmero: Calle 3er letra: Indica si la interseccin queda cerrada por el norte (N), el sur (S), el este (E) o el oeste (W). 4 nmero (opcional): longitud de la pared (extendindose hacia el este o el norte). Ejemplos:

Tu turno: 1.- Qu sucede si escribo pared 4 5 S 3? y si escribo pared 4 4 N 3? 2.- Dibuja los mundos que crearamos con las siguientes lneas de cdigo:

3.- Modifica el archivo del mundo de Guido, de forma que aparezca un camino cerrado como el que se muestra en la figura. Gurdalo como mundo06.wrl Truco: Para ir viendo el camino que vas dibujando graba un programa vaco y pulsas en ejecutar cada vez que escribas una lnea nueva en el archivo de mundo.

Tecnologas de la informacin y la comunicacin.

PCPI Informtica.

Guido van Robot.

Fjate que si utilizas un cuarto nmero para indicar la longitud de la pared, sta siempre se extiende hacia el norte (arriba) hacia el este ( la derecha). Fjate tambin que hay varias formas de dibujar una misma pared, por ejemplo: pared 3 7 N 4 es lo mismo que pared 3 8 S 4 4.- Coloca un robot en la esquina de la 1 Avenida con la 5 Calle mirando hacia el este. Disea un programa en el que Guido se mueva dos bloques al este, deje un zumbador y contine tres bloques ms. Despus, para no chocarse deber girar a la izquierda, ir dos bloques hacia el norte, despus tres hacia el oeste y dos ms al sur para regresar a la esquina donde dej el zumbador. Entonces tendr que recoger el zumbador y llevarlo tres bloques hacia el sur, depositarlo all, avanzar un bloque ms y terminar. ste programa ser programa06.grv

HAZ LO QUE DEBAS.


Para mantener los costes de fabricacin bajos, la factora construy los robots slo con la capacidad de moverse hacia delante y girar a la izquierda. Pero Guido tiene la habilidad de aprender a hacer otras cosas. Por ejemplo, si Guido gira a la izquierda tres veces, ser como si hubiese girado una vez a la derecha. Podemos ensear a Guido a girar a la derecha, definiendo una nueva instruccin llamada girarderecha, que estar compuesta por tres instrucciones girarizquierda. La defincin de esta nueva instruccin ser algo as: define girarderecha: girarizquierda girarizquierda girarizquierda Esto es un ejemplo de lo que se llama una instruccin compuesta, que significa que est formada de dos partes: La primera parte es l apalabra define seguida por el nombre de la instruccin que ests creando, seguida de dos puntos. La segunda parte consiste en una o ms instrucciones precedidas por el espacio correspondiente a la tecla tabulador. Es decir, la siguiente definicin sera incorrecta: define girarderecha: girarizquierda girarizquierda girarizquierda

Tecnologas de la informacin y la comunicacin.

PCPI Informtica. Tu turno: 1.- Qu hara el siguiente programa?

Guido van Robot.

Sita a Guido mirando al este, en la esquina de la 3 Avenida con la 2 Calle y comprueba que efectivamente sucede lo que habas imaginado. Gurdalo todo como mundo07.wrl y programa07.grv Las tres instrucciones girarizquierda, forman lo que se llama un bloque de cdigo, es decir, varias instrucciones juntas actuando como una sola. 2.- Pulsa Reload y ve pulsando el botn Paso para ejecutar el programa instruccin a instruccin. Fjate que cuando llega a la instruccin girarderecha el robot se desplaza al bloque donde hemos definido esta nueva instruccin. 3.- Define una instruccin que se llame retroceder, que haga que Guido se mueva hacia atrs un bloque y quede mirando en la misma direccin. Despus usa esta nueva instruccin, junto con girarderecha, en un programa que haga que Guido empiece en la esquina de la 2 Calle con la 3 Avenida, se mueva tres bloques hacia el norte, retroceda un bloque, gire a la derecha y por ltimo se mueva dos bloques al este. Este ejercicio ser el mundo08.wrl y el programa08.grv. EL PERIDICO LA HORA DE LOS ROBOTS. Cada maana, Guido se despierta con el sonido del peridico La hora de los Robot golpeando en el porche delantero. Guido quiere estar al da de lo que sucede en el mundo de los Robots, de modo que sale a por el peridico todas las maanas. Aqu tenis el diagrama que muestra a Guido durmiendo y el peridico, representado por un zumbador, golpeando en el porche. Escribe un programa llamado programa09.grv que incluya tu instruccin girarderecha y una nueva instruccin cambiarsentido, que haga que Guido vaya al porche, coja el peridico y vuelva a la cama, en donde le gusta leerlo. Necesitars situar el zumbador en este mundo al que llamars mundo09.wrl. Para ello utiliza la instruccin Zumbadores 4 4 1. Los dos primeros nmeros indican la localizacin del zumbador (Avenida n4 y Calle n4) y el tercer nmero indica cuntos zumbadores se van a colocar en sa interseccin. Por supuesto, tambin tendrs que dibujar las paredes de la casa de Guido.

Tecnologas de la informacin y la comunicacin.

PCPI Informtica. MENSAJE DE CUMPLEAOS.

Guido van Robot.

Guido acaba de cumplir 18 aos y quiere que todo el mundo lo sepa. Como no puede hablar, ha decidido escribir el nmero 18 usando zumbadores. Guido es un robot y slo conoce el sistema binario, por lo que 18 para l es el nmero 10010. Tu turno: 1.- Define estas nuevas instrucciones: dibujaruno: dibujar un uno usando zumbadores. dibujarcero: representar un cero usando zumbadores. Usa estas dos nuevas instrucciones en un programa ( programa10.grv), que dibuje su mensaje de cumpleaos. Cuando el programa comience en la pantalla slo debe aparecer Guido en la esquina inferior izquierda mirando hacia el norte. Al finalizar el programa en la pantalla debe aparecer: mundo10.wrl

DECISIONES. Cuando Guido era un adolescente, era un poco rebelde. Sus padres le haban dicho siempre lo que tena que hacer: cada pequeo paso que daba o cada cambio de sentido. Finalmente se plant y dijo: Yo puedo tomar mis propias decisiones!, fue a explicarles a sus padres cmo lo iba a conseguir. Les habl sobre las expresiones booleanas, que slo pueden ser verdaderas o falsas. Guido poda hacer diferentes cosas dependiendo de si ciertas condiciones eran verdaderas o falsas. Aqu tenemos el ejemplo que dio a sus padres: si prximo_a_zumbador: tomarzumbador Guido tena la capacidad de fijarse en su entorno y actuar de acuerdo a ello. Caramba, qu rpido ests creciendo!, dijeron sus padres. Le preguntaron qu cosas poda notar, y l les dio esta lista: 1. frente_libre: Verdadero si no hay una pared justo en frente. Falso si la hay. 2. frente_bloqueado: Verdadero si hay una pared justo en frente. Falso si no la hay. 3. izquierda_libre: Verdadero si no hay una pared justo a la izquierda. Falso si la hay. 4. izquierda_bloqueado: Verdadero si hay una pared justo a la izquierda. Falso si no la hay. 5. derecha_libre: Verdadero si no hay una pared justo a la derecha. Falso si la hay.

Tecnologas de la informacin y la comunicacin.

PCPI Informtica.

Guido van Robot.

6. derecha_bloqueado: Verdadero si hay una pared justo a la derecha. Falso si no la hay. 7. proximo_a_zumbador: Verdadero hay un zumbador en la posicin en la que est Guido. Falso si no lo hay. 8. no_proximo_a_zumbador: Verdadero si no hay un zumbador en la posicin actual de Guido. Falso si Guido est en una posicin en la que hay un zumbador. 9. zumbadores_en_bolsa: Verdadero si Guido tiene al menos un zumbador en su bolsa. Falso si la bolsa est vaca. 10. sin_zumbadores_en_bolsa: Verdadero si la bolsa est vaca. Falso si hay al menos una zumbador en la bolsa. 11. viendo_norte: Verdadero si Guido mira hacia el norte. Falso si mira hacia cualquier otra direccin. 12. no_viendo_norte: Verdadero si Guido no mira hacia el norte. Falso si mira hacia el norte. 13. viendo_sur: Verdadero si Guido mira hacia el sur. Falso si mira hacia cualquier otra direccin. 14. no_viendo_sur: Verdadero si Guido no mira hacia el sur. Falso si mira hacia el sur. 15. viendo_este: Verdadero si Guido mira hacia el este. Falso si mira hacia cualquier otra direccin. 16. no_viendo_este: Verdadero si Guido no mira hacia el este. Falso si mira hacia el este. 17. viendo_oeste: Verdadero si Guido mira hacia el oeste. Falso si mira hacia cualquier otra direccin. 18. no_viendo_oeste: Verdadero si Guido no mira hacia el oeste. Falso si mira hacia el oeste. Tu turno. 1.- Guido necesita completar sus horas de servicios a la comunidad para terminar el instituto, de forma que le han asignado la limpieza de la 2 Calle. Construye un mundo ( mundo11.wrl), que tenga zumbadores desperdigados a lo largo de la 2 Calle, entre la 1 Avenida y la pared de la Avenida n 12. No puede haber ms de un zumbador por esquina, pero en una esquina dada puede haber o no zumbador. Guido debe comenzar en la 1 Avenida con la mirando hacia el este. Escribe un programa ( programa11.grv) que haga que Guido vaya por la 2 Calle recogiendo los zumbadores que vaya encontrando. Recuerda que si no hay un zumbador en una interseccin y le pides a Guido que recoja uno, se quejar y el programa se parar. Usa una de las sentencias de test para tomar la decisin de recoger un zumbador cuando haya uno en la interseccin. Una vez que llegue a la Avenida 12, debe volver con todos los zumbadores a la posicin de salida, mirar de nuevo hacia el este y apagarse. Ejemplo:

Tecnologas de la informacin y la comunicacin.

PCPI Informtica.

Guido van Robot.

ECHAS DE MENOS ALGO? Acabas de escribir un programa en el que Guido recorra la Calle 2 recogiendo basura. Seguramente has escrito el cdigo usando una sentencia Si (Si hay basura, recgela), seguido de una sentencia Mover. Despus habrs copiado y pegado se fragmento de cdigo hasta que tuvieses suficientes copias para que Guido recorriese toda calle 2. Hay una forma mejor de hacer que un grupo de instrucciones se repita varias veces: la instruccin hacer. Esta instruccin permite repetir una serie de accin un nmero dado de veces. Por ejemplo, para hacer que Guido se mueva 5 veces hacia delante: hacer 5: mover Si quieres que se repitan varias acciones, las tienes que agrupar dejando un espacio de tabulacin delante de todas ellas. Por ejemplo: hacer 5: ponerzumbador mover hacer 5: ponerzumbador mover Tu turno: 1.- Guido es ms inteligente ahora que conoce la instruccin de repeticin hacer. De nuevo le piden que recoja la basura de la calle 2. Reescribe tu solucin usando la nueva capacidad de Guido. BAILEMOS. Ahora vamos a realizar un proyecto que combina la instruccin hacer, con una instruccin definida por el programador que a su vez usa otra instruccin tambin definida por el usuario. La primera instruccin definida por el usuario ser la de cambiarsentido, que ser llamada por otra que realice una secuencia de pasos de baile. Esta secuencia se repetir 4 veces. 1-. La definicin de cambiarsentido la tenemos en el programa09.grv. Cargamos el programa09.grv, y copiamos la definicin de cambiarsentido, girarderecha y retorceder en un programa que llamaremos definiciones.grv 2.- Guido vive en Colorado, donde la msica country es muy popular. A l le gustara que le enseases a bailar en lnea. El baile en lnea implica una serie de pasos, adelante y atrs, con giros y rotaciones, donde cada una de las secuencias te deja mirando hacia una direccin distinta. Si se va repitiendo este patrn, al final el bailarn termina como empez. El baile en lnea que Guido quiere aprender es como sigue: Desde la posicin inicial, se dan dos pasos hacia delante, te das la vuelta y tres pasos hacia atrs. Entonces repites tres veces: giras a la derecha y das un paso. Esto te deja en la posicin inicial, pero mirando hacia otra direccin. Repite este patrn de baile 4 veces para hacer que Guido se divierta bailando.

Tecnologas de la informacin y la comunicacin.

PCPI Informtica.

Guido van Robot.

Recuerda que tienes que colocar a Guido de forma que no se choque con las paredes: Robot 6 6 E 0. Gurdalo todo como mundo13.wrl y programa 13.grv

PASTEL DE MANZANA O GALLETAS? Ya conoces la instruccin Si, y la usas para tomar decisiones como en si prximo_a_zumbador, tomarzumbador. Pero a veces las decisiones que hay que tomar se complican. A Guido le gusta el pastel de manzana, pero no siempre su madre tiene. Lo que s que tiene siempre, sin embargo, son galletas. A Guido le gustara tener una instruccin como esta: Mam, me gustara tomar pastel de manzana, pero si no hay, entonces tomar una galleta Puedes utilizar la instruccin si sino para implementar estas tipo de decisiones con 2 opciones. Es como la instruccin si, pero aadimos una segunda parte opcional que nos da una alternativa si la condicin no se cumple: si condicin: instruccin sino: otra-instruccin Hay que recordar que donde escribo instruccin puede ir una orden simple (como mover) o un bloque de rdenes ( como tomarzumbador y luego mover ). Por ejemplo, vamos a escribir un fragmento de cdigo que haga que si hay un zumbador lo recojamos y si no simplemente continuamos desplazndonos: si prximo_a_zumbador: tomarzumbador mover sino: mover Tu turno: 1.- En este proyecto, Guido quiere recorrer un mundo vallado. No conoce las dimensiones del mundo, slo sabe que hay un zumbador marcando cada una de las esquinas del mundo, salvo en la que l comienza su recorrido. Guido empezar en la esquina inferior izquerda mirando hacia el este. Si no hay un zumbador en la interseccin en la que se encuentra, seguir hacia delante, en caso contrario, recoger el zumbador, torcer a la izquierda y continuar su recorrido. Crea un mundo que necesite exactamente 32 movimientos para ser circunvalado. Puedes elegir las dimensiones que quieras, pero no se lo digas a Guido! Coloca 3 zumbadores en las 3 esquinas (sureste, noreste y noroeste). ste ser el mundo14.wrl. Usa una instruccin hacer (con 32 repeticiones) y la orden si sino para realizar el viaje alrededor del mundo. Graba este programa como programa 14.grv. Tu mundo inicial podra ser algo como esto, aunque las dimensiones podran variar.

Tecnologas de la informacin y la comunicacin.

10

PCPI Informtica.

Guido van Robot.

SACAR LA BASURA. La instruccin hacer permite a Guido realizar una accin ms de una vez, pero tiene una limitacin: debes saber por adelantado cuntas veces tienes que realizar dicha accin. Si necesitas recoger varios zumbadores, pero no sabes cuntos hay en total, no puedes usar la orden hacer. La sentencia mientras puede realizar ste trabajo. El formato general de esta instruccin es: mientras condicin_sea_verdadera: instruccin donde la expresin condicin_sea_verdadera se refiere a alguna expresin booleana que slo puede ser o verdadera o falsa. instruccin puede referirse a una orden simple o un bloque de instrucciones. Mientras la expresin de la condicin sea verdadera la accin ser realizada. Como vemos sucede algo muy similar a lo que pasa con la instruccin hacer, salvo que la instruccin hacer especifica el nmero de veces que se debe repetir la accin y la instruccin mientras especifica una condicin. Mientras sea verdadera, la accin se repetir una y otra vez. Por ejemplo, para recoger una pila de zumbadores, puedes escribir: mientras prximo_a_zumbador: tomarzumbador Esto significa que mientras siga habiendo zumbadores en la interseccin, coger uno y volver a mirar. Al final todos los zumbadores Guido.

habrn pasado a la bolsa de

Escribir un bucle mientras es complicado, hay que tener en cuenta ciertos detalles. En general, daremos los siguientes pasos: 1.- Identificar la condicin que debe cumplirse para que termine el ciclo. Esta ser la CONDICIN DE FINALIZACIN del bucle. 2.- Escribir en nuestro bucle mientras la condicin contraria a la de finalizacin. 3.- Asegrate de que cuando el bucle comience, el programa tenga toda la informacin que necesite. Puede suceder que tengas que especificar el estado de ciertas variables o condiciones iniciales. 4.- Asegrate que cada uno de las repeticiones del bucle, nos llevan hacia la finalizacin del mismo. Es decir, asegrate que el bucle, alcanzar alguna vez su condicin de finalizacin para que no se convierta en un bucle infinito.

Tecnologas de la informacin y la comunicacin.

11

PCPI Informtica. Tu turno. 1.- Es lunes por la noche, antes de irse a acostar, Guido tiene que sacar el papel al contenedor azul. No est seguro de cuantas bolsas tiene (representadas aqu por zumbadores), pero sabe que estn en la esquina de la habitacin como se indica en el grfico. (mundo15.wrl) Escribe un programa llamado programa15.grv que consiga que Guido lleve todas las bolsas de papel al contenedor en un solo viaje. Utiliza una o ms rdenes mientras, para conseguir que Guido saque todas las bolsas. Despus de dejarlas todas en el contenedor, haz que Guido retroceda para mirar si han quedado bien depositadas, y luego guale de regreso a su habitacin. VIAJERO POR EL MUNDO.

Guido van Robot.

Guido quiere explorar su mundo de nuevo. La ltima vez, fue recogiendo los zumbadores de las esquinas de su acotado y rectangular mundo. En aquella ocasin, Guido saba cuntos pasos le llevara recorrer el mundo entero. En esta ocasin tendr que confiar en que sabr tomar la decisin correcta sobre qu camino tomar cuando detecte una pared. Como no conoce a priori el tamao de su mundo, no sabe cuntos pasos tendr que dar antes de volver a su casa. Para solucionar esto, tendr que colocar un zumbador en el punto de partida, Sabiendo que no habr ms zumbadores en todo el mundo, continuar su viaje, hasta que de nuevo llegue a su casa. Sabr que ha terminado cuando vuelva a encontrar el zumbador. 1.- Crea un mundo (mundo16.wrl) en el que Guido comience situado en la esquina inferior izquierda mirando al este y con un zumbador en su bolsa. Dibuja un rectngulo de las dimensiones que quieras. Utiliza una instruccin mientras para buscar el zumbador que le indica que ya est de vuelta en su casa e instrucciones si sino para conseguir que de la vuelta a su mundo. Recuerda que Guido no puede utilizar el bucle hacer porque no tiene ni idea de cuntos pasos tendr que dar para rodear su mundo. Cuando lo consigas guarda el programa como programa16.grv 2.- Vamos a crear un mundo ms interesante para Guido, ya no ser un simple rectngulo, sino que Guido estar dentro de un mundo cerrado con una forma cualquiera compuesta por segmentos de distintas tamaos. Tu misin ser crear un mundo al que llamars mundo17.wrl similar al de la figura y conseguir que el programa17.grv gue a Guido en su gira alrededor de este nuevo mundo. De nuevo deber dejar un zumbador en la posicin inicial y recorrer el mundo siguiendo su borde, hasta encontrar de nuevo el zumbador. En esta ocasin ser ms difcil tomar la decisin adecuada para no chocar con el final de mundo. Tecnologas de la informacin y la comunicacin. 12

PCPI Informtica.

Guido van Robot.

VA A LLOVER. Guido es capaz de hacer ms tareas complejas, incluso aunque no conozca muy bien el mundo en el que vive. Debe ser capaz de conseguir su objetivo comprobando su entorno y, basndose en esas comprobaciones realizar alguna accin. Los pasos que Guido debe dar para resolver un problema dado se llaman algoritmo. Antes de escribir un programa .gvr, el desarrollador tiene que haber comprendido el algoritmo que necesita. Despus escribir el cdigo concreto y el mundo que corresponda. Recuerda esta sencilla pero til ecuacin: Algoritmo + Estructura de datos = programa. En esta leccin, la estructura de datos ser un mundo que dibuje la casa de Guido. Nuestro robot estar situado en la nica puerta de su casa mirando al exterior. Guido se da cuenta de que se aproxima una tormenta y decide cerrar todas las ventanas de la casa. Primero cierra la puerta depositando un zumbador en donde l mismo se encuentra. Despus cerrar todas las ventanas dejando zumbadores delante de cada una de las ventanas (representadas por huecos en las paredes). A Guido le encantan las tormentas, por lo que despus de cerrar las ventanas, saldr al porche a mirar la tormenta. Primero tienes que pensar el algoritmo. Guido lleva viviendo poco tiempo en esta casa y no sabe exactamente dnde estn las ventanas. No puedes escribir directamente el nmero de pasos que hay que dar para llegar a cada una de las ventanas. En lugar de eso, Guido tiene que ir comprobando si hay una ventana en la pared mientras recorre todo el permetro de la casa. Debes asegurarte de que todas las tareas se completarn con xito. Por ejemplo, cmo sabe Guido que ha llegado de nuevo a la puerta? El escenario inicial y final para este mundo (mundo18.wrl) sera algo as:

UN TRABAJO QUE HACER. Ya has aprendido un montn sobre la programacin de Guido. Felicidades!. Lo que no sabes es que tambin has aprendido un montn sobre programacin con cualquier otro lenguaje. Muchos programas son una secuencia de pasos intercalados con estructuras condicionales y grupos de rdenes que se repiten. Hemos realizado proyectos cada vez ms complicados, de forma que llegar a la solucin que nos pedan nos ha costado cada vez algo ms de trabajo.

Tecnologas de la informacin y la comunicacin.

13

PCPI Informtica.

Guido van Robot.

Muchas veces entendemos el problema que nos proponen y la situacin final a la que queremos llegar, pero entender cmo conseguir que Guido realice las tareas no es inmediato. A menudo, la mejor forma de llegar a imaginar cmo realizar una tarea es escribir los pasos con nuestras propias palabras en un papel. A esto se le llama pseudocdigo, porque realmente no son todava las instrucciones que Guido entiende y puede usar. Pero ayuda mucho a entender el problema. Despus tendrs que codificar, escribir las instrucciones que realmente entiende Guido, para crear el programa .gvr Asegrate de llevar a cabo esta tarea antes de empezar a escribir el cdigo definitivo. Primero imagina el algoritmo, una decisin con dos posibilidades, un bucle con un nmero ya conocido de repeticiones o un bucle gobernado por cierta condicin, etc Despus fijndote en el mundo concreto, intenta simular la ejecucin del programa que tienes que escribir. Si crees que suceder lo que t esperas, entonces puedes empezar a codificar tu programa. Tu turno: 1.- El padre de Guido es granjero. Cuando Guido termina sus deberes, le ayuda en el campo. Hoy tiene que recoger la cosecha. El campo tiene una extensin de 6 filas por 6 columnas, pero el grano no crece en todo el campo. Crea un mundo (mundo19.wrl) similar al que se muestra: Vamos a recoger la cosecha utilizando una estructura anidada, es decir, una o ms bucles dentro de otro bucle. Escrito en pseudocdigo quedara algo as: repetir 6 veces ( una por cada fila) recorre la fila, recogiendo la cosecha si la hay. vuelve al extremo izquierdo de la fila sube una fila terminar La orden recorre la fila, recogiendo la cosecha si la hay, es tambin un bucle: repetir 6 veces: ( una por cada columna) recoge la cosecha si hay muvete una posicin Tambin podemos desglosar la orden vuelve al extremo izquierdo de la fila como: dte la vuelta repetir 6 veces: muvete una posicin Una vez que tenemos claro el algoritmo, con la ayuda del pseudocdigo, vamos a codificar el programa en lenguaje gvr. Ser el programa19.gvr. DNDE EST MI ALMUERZO? 1.- Guido ha perdido su bolsa del almuerzo. Estaba jugando en un laberinto y lo dej en el suelo mientras daba una vuelta. Ahora tiene

Tecnologas de la informacin y la comunicacin.

14

PCPI Informtica.

Guido van Robot.

hambre, por suerte, junto al bocadillo haba un zumbador. La situacin inicial se muestra a continuacin, en el mundo20.wrl. Escribe el programa20.grv para ayudar a Guido a encontrar su bocadillo. El secreto est en hacer que Guido siga el borde del laberinto. Usa las instrucciones si sino para que Guido pueda tomar su almuerzo.

MS SERVICIOS A LA COMUNIDAD. Guido aprendi mucho cuando tuvo que hacer servicios a la comunidad, de modo que se ha apuntado como voluntario para recoger la basura de Central Park. El parque est representado por un rea vallada rectangular de dimensiones desconocidas. Guido comenzar su trabajo en un sitio cualquiera del parque. La basura, estar esparcida por todo el parque. Cuando empezamos a limpiar no conocemos ni la localizacin, ni la cantidad de basura que habr amontonada en cada posicin. Pude haber varios trozos de basura en la misma localizacin. El trabajo de Guido consistir en recoger toda sa basura del parque y dejarla en la esquina superior derecha del parque. Despus ir a la esquina inferior izquierda del parque y se tumbar mirando al norte debajo de un rbol a descansar. Tienes un ejemplo del mundo Central Park en el archivo mundo21.wrl:

Y AHORA QU? Guido ha empezado a darse cuenta de que hay ciertas cosas que l no podr hacer. En los proyectos en los que Guido viajaba, luego no recordaba cmo de grande era el mundo. No tena forma de llevar un registro de la cuenta de los pasos. Cuando hablaba del viaje con sus padres y le preguntaban hasta dnde haba ido, l no poda contestar.

Tecnologas de la informacin y la comunicacin.

15

PCPI Informtica.

Guido van Robot.

En el proyecto de la lluvia, en el que Guido tena que cerrar todas las ventanas, luego no tena forma de recordar dnde empez, donde estaba la puerta. Tena que dejar un zumbador para saber que ya haba dado la vuelta a la casa. Lo que a Guido le gustara es poder recordar cosas. Ha ledo en un libro de programacin sobre un elemento de los programas llamado variable, que puede ser utilizado para almacenar nmeros, letras o incluso palabras. Las variables pueden almacenar el valor de un nmero, este valor puede que se modifique durante el programa. Si tuviese una variable, podra ir aumentando su valor en una unidad cada vez que diese un paso y de sa forma saber cuntos pasos ha dado en total. Si tuviese dos variables, podra almacenar el nmero de la calle y de la avenida en la que estaba delante de la puerta en el proyecto de la lluvia y no tendra que haber dejado un zumbador. Pero, Guido no tiene variables. Y lamentablemente, sabe que nunca podr hacer esas cosas. Ha odo rumores sobre otros lenguajes de programacin, que tienen todas esas capacidades y muchas otras ms. Como por ejemplo, incluir variables y la capacidad de escuchar y hablar (instrucciones de entrada y salida), e incluso la capacidad de crear un nuevo tipo de robots ( programacin orientada a objetos, herencia.) Es hora de decir adis a Guido y su mundo. l esperar pacientemente a un nuevo grupo de estudiantes mientras vosotros segus avanzando en el aprendizaje de la programacin. Reconocimientos: Esta serie de ejercicios han sido escritas por Roger Frank. Los comentarios y sugerencias sobre estas lecciones pueden ser enviados a Jeffrey Elkner, quien los adapt a partir de los originales basados en el Robot original Karel. El lenguaje de programacin de Guido Van Robot desciende de dos lenguajes: Karel el Robot y Python. Karel el Robot fu desarrollado por Richard Pattis en su libreo Karel the Robot: una agradable introduccin al arte de programar con Pascal, John Wiley & Sons, Inc, 1981. El lenguaje Python es una creacin de Guido van Rossum y los miembros de la comunidad Python. Puedes encontrar ms informacin sobre python en http://www.python.org Guido van Robot fue desarrollado por los estudiantes de la Escuela Superior de Ciencias computacionales de la Yorktown High School en Arlington, VA, bajo la supervisin del profesor Steve Howell.

Tecnologas de la informacin y la comunicacin.

16