PCPI Informática. Guido van Robot. PRIMEROS PASOS. 1.- Guido van Robot puede mirar en una de las cuatro direcciones: norte, sur, este u oeste. Sólo puede girar 90º cada vez, por lo que nunca podría 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 también se numeran desde 1, sin avenida 0 o avenidas negativas. La intersección de una calle y una avenida es una esquina. Cada movimiento simple de Guido le lleva de una esquina a otra. Como sólo puede mirar en una de las 4 direcciones, cuando se mueve cambia su posición 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 pestaña 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í: Tecnologías de la información y la comunicación. 1 PCPI Informática. Guido van Robot. C.- Vamos a crear nuestro primer programa GvR, para ello nos situamos en la pestaña Code editor y escribimos lo siguiente: Guardamos el programa como programa01, pinchamos en File / Guardar como: Estas instrucciones harán que Guido se mueva 4 espacios y luego se apague. Para comprobar el resultado pulsa en Ejecutar. Cierra la pantalla de información que aparece: D.- A continuación, pulsa en Reload para reiniciar. Vamos a ver la relación entre las instrucciones que hemos escrito y el comportamiento del robot. Abre la pestaña Code editor y ejecuta las instrucciones una a una pulsando el botón Paso. E.- Vuelve a pulsar Reload y sitúate en la pestaña World editor. Haz pruebas con los dos primeros números 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 número de la línea Robot 4 3 N 0? 2.- ¿Qué representa el segundo número de la línea Robot 4 3 N 0? 3.-¿Qué representa la letra de la línea 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. Grábalo como mundo02. Haz que Guido se mueva tres posiciones y se apague. Grábalo como programa02. Tecnologías de la información y la comunicación. 2 PCPI Informática. Guido van Robot. ¿QUÉ ES ÉSE SONIDO? Ya has descubierto que la posición inicial del robot se define con una línea como la siguiente: Robot 1 2 N 0 Robot nº fila – nºcolumna – sentido incial (N, S, E , O ) – nº zumbadores ¿Qué son los zumbadores?. Un robot pude llevar zumbadores, que son pequeños dispositivos de sonido. Guido puede escuchar uno de ésos zumbadores, cuando si se coloca en una esquina que tenga uno de ellos. Guido también puede coger ó dejar zumbadores, mediante las instrucciones tomarzumbador o ponerzumbador. Guido tiene una bolsa en la que lleva los zumbadores. Tienes que especificar el número 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.- Sitúa a un robot con 4 zumbadores en la esquina de la 1ª Avenida con la 5ª Calle mirando hacia el este. Grábalo como mundo03. Haz que el robot se mueva dos bloques hacia el este, deje uno de los zumbadores, continúe moviéndose hacia el este y dejando un zumbador en cada esquina hasta que se le acaben. Después que se mueva un bloque más y se apague. Resultado de la ejecución. GIRAR, GIRAR Y GIRAR. Si Guido sólo se pudiese mover hacia delante, estaría triste porque nunca podría volver a casa. Los diseñadores del robot se vieron atrapados por una crisis de presupuesto justo cuando estaban desarrollando los mecanismos de dirección. Sólo le dieron la habilidad de girar hacia la izquierda, manteniéndose en la misma esquina. El comando para esta acción 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 más, gire a la izquierda y repítelo hasta que llegue de nuevo al punto inicial mirando de nuevo hacia el este. Graba los archivos de este ejercicio como mundo04 y programa04. Tecnologías de la información y la comunicación. 3 PCPI Informática. 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 más interesante, vamos a añadir 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 ningún 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 intersección en la que hay una pared. Aquí tenéis un ejemplo de un archivo de un mundo con paredes: El formato de una “línea de pared” es: 1er número: Avenida mundo05.wrl 2º número: Calle 3er letra: Indica si la intersección queda cerrada por el norte (N), el sur (S), el este (E) o el oeste (W). 4º número (opcional): longitud de la pared (extendiéndose 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 crearíamos con las siguientes líneas de código: 3.- Modifica el archivo del mundo de Guido, de forma que aparezca un camino cerrado como el que se muestra en la figura. Guárdalo como mundo06.wrl Truco: Para ir “viendo” el camino que vas dibujando graba un programa vacío y pulsas en ejecutar cada vez que escribas una línea nueva en el archivo de mundo. Tecnologías de la información y la comunicación. 4 PCPI Informática. Guido van Robot. Fíjate que si utilizas un cuarto número para indicar la longitud de la pared, ésta siempre se extiende hacia el norte (arriba) ó hacia el este ( la derecha). Fíjate también 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. Diseña un programa en el que Guido se mueva dos bloques al este, deje un zumbador y continúe tres bloques más. Después, para no chocarse deberá girar a la izquierda, ir dos bloques hacia el norte, después tres hacia el oeste y dos más 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 más y terminar. Éste programa será programa06.grv HAZ LO QUE DEBAS. Para mantener los costes de fabricación bajos, la factoría construyó los robots sólo 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 enseñar a Guido a girar a la derecha, definiendo una nueva instrucción llamada girarderecha, que estará compuesta por tres instrucciones girarizquierda. La definción de esta nueva instrucción será algo así: define girarderecha: girarizquierda girarizquierda girarizquierda Esto es un ejemplo de lo que se llama una instrucción compuesta, que significa que está formada de dos partes: La primera parte es l apalabra define seguida por el nombre de la instrucción que estás creando, seguida de dos puntos. La segunda parte consiste en una o más instrucciones precedidas por el espacio correspondiente a la tecla tabulador. Es decir, la siguiente definición sería incorrecta: define girarderecha: girarizquierda girarizquierda girarizquierda Tecnologías de la información y la comunicación. 5 PCPI Informática. Guido van Robot. Tu turno: 1.- ¿Qué haría el siguiente programa? Sitúa a Guido mirando al este, en la esquina de la 3 Avenida con la 2 Calle y comprueba que efectivamente sucede lo que habías imaginado. Guárdalo todo como mundo07.wrl y programa07.grv Las tres instrucciones girarizquierda, forman lo que se llama un bloque de código, es decir, varias instrucciones juntas actuando como una sola. 2.- Pulsa Reload y ve pulsando el botón Paso para ejecutar el programa instrucción a instrucción. Fíjate que cuando llega a la instrucción girarderecha el robot se desplaza al bloque donde hemos definido esta nueva instrucción. 3.- Define una instrucción que se llame retroceder, que haga que Guido se mueva hacia atrás un bloque y quede mirando en la misma dirección. Después usa esta nueva instrucción, 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 PERIÓDICO “LA HORA DE LOS ROBOTS”. Cada mañana, Guido se despierta con el sonido del periódico “ La hora de los Robot” golpeando en el porche delantero. Guido quiere estar al día de lo que sucede en el mundo de los Robots, de modo que sale a por el periódico todas las mañanas. Aquí tenéis el diagrama que muestra a Guido durmiendo y el periódico, representado por un zumbador, golpeando en el porche. Escribe un programa llamado programa09.grv que incluya tu instrucción girarderecha y una nueva instrucción cambiarsentido, que haga que Guido vaya al porche, coja el periódico y vuelva a la cama, en donde le gusta leerlo. Necesitarás situar el zumbador en este mundo al que llamarás mundo09.wrl. Para ello utiliza la instrucción Zumbadores 4 4 1. Los dos primeros números indican la localización del zumbador (Avenida nº4 y Calle nº4) y el tercer número indica cuántos zumbadores se van a colocar en ésa intersección. Por supuesto, también tendrás que dibujar las paredes de la casa de Guido. Tecnologías de la información y la comunicación. 6 PCPI Informática. Guido van Robot. MENSAJE DE CUMPLEAÑOS. Guido acaba de cumplir 18 años y quiere que todo el mundo lo sepa. Como no puede hablar, ha decidido escribir el número 18 usando zumbadores. Guido es un robot y sólo conoce el sistema binario, por lo que 18 para él es el número 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 cumpleaños. Cuando el programa comience en la pantalla sólo 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 habían dicho siempre lo que tenía que hacer: cada pequeño 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 cómo lo iba a conseguir. Les habló sobre las expresiones booleanas, que sólo pueden ser verdaderas o falsas. Guido podía hacer diferentes cosas dependiendo de si ciertas condiciones eran verdaderas o falsas. Aquí tenemos el ejemplo que dio a sus padres: si próximo_a_zumbador: tomarzumbador Guido tenía la capacidad de fijarse en su entorno y actuar de acuerdo a ello. “¡Caramba, qué rápido estás creciendo!, dijeron sus padres. Le preguntaron qué cosas podía 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. Tecnologías de la información y la comunicación. 7 PCPI Informática. 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 posición en la que está Guido. Falso si no lo hay. 8. no_proximo_a_zumbador: Verdadero si no hay un zumbador en la posición actual de Guido. Falso si Guido está en una posición 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á vacía. 10. sin_zumbadores_en_bolsa: Verdadero si la bolsa está vacía. 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 dirección. 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 dirección. 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 dirección. 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 dirección. 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 más 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 intersección 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 decisión de recoger un zumbador cuando haya uno en la intersección. Una vez que llegue a la Avenida 12, debe volver con todos los zumbadores a la posición de salida, mirar de nuevo hacia el este y apagarse. Ejemplo: Tecnologías de la información y la comunicación. 8 PCPI Informática. Guido van Robot. ¿ECHAS DE MENOS ALGO? Acabas de escribir un programa en el que Guido recorría la Calle 2 recogiendo basura. Seguramente has escrito el código usando una sentencia Si (“Si hay basura, recógela), seguido de una sentencia Mover. Después habrás copiado y pegado ése fragmento de código 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 instrucción hacer. Esta instrucción permite repetir una serie de acción un número 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 tabulación delante de todas ellas. Por ejemplo: hacer 5: ponerzumbador mover hacer 5: ponerzumbador mover Tu turno: 1.- Guido es más inteligente ahora que conoce la instrucción de repetición hacer. De nuevo le piden que recoja la basura de la calle 2. Reescribe tu solución usando la nueva capacidad de Guido. BAILEMOS. Ahora vamos a realizar un proyecto que combina la instrucción hacer, con una instrucción definida por el programador que a su vez usa otra instrucción también definida por el usuario. La primera instrucción 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 definición de cambiarsentido la tenemos en el programa09.grv. Cargamos el programa09.grv, y copiamos la definición de cambiarsentido, girarderecha y retorceder en un programa que llamaremos definiciones.grv 2.- Guido vive en Colorado, donde la música country es muy popular. A él le gustaría que le enseñases a “bailar en línea”. El “baile en línea” implica una serie de pasos, adelante y atrás, con giros y rotaciones, donde cada una de las secuencias te deja mirando hacia una dirección distinta. Si se va repitiendo este patrón, al final el bailarín termina como empezó. El “baile en línea” que Guido quiere aprender es como sigue: Desde la posición inicial, se dan dos pasos hacia delante, te das la vuelta y tres pasos hacia atrás. Entonces repites tres veces: giras a la derecha y das un paso. Esto te deja en la posición inicial, pero mirando hacia otra dirección. Repite este patrón de baile 4 veces para hacer que Guido se divierta bailando. Tecnologías de la información y la comunicación. 9 PCPI Informática. Guido van Robot. Recuerda que tienes que colocar a Guido de forma que no se choque con las paredes: Robot 6 6 E 0. Guárdalo todo como mundo13.wrl y programa 13.grv ¿PASTEL DE MANZANA O GALLETAS? Ya conoces la instrucción Si, y la usas para tomar decisiones como en si próximo_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 gustaría tener una instrucción como esta: “Mamá, me gustaría tomar pastel de manzana, pero si no hay, entonces tomaré una galleta” Puedes utilizar la instrucción si … sino … para implementar estas tipo de decisiones con 2 opciones. Es como la instrucción si, pero añadimos una segunda parte opcional que nos da una alternativa si la condición no se cumple: si condición: instrucción sino: otra-instrucción Hay que recordar que donde escribo instrucción 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 código que haga que si hay un zumbador lo recojamos y si no simplemente continuamos desplazándonos: si próximo_a_zumbador: tomarzumbador mover sino: mover Tu turno: 1.- En este proyecto, Guido quiere recorrer un mundo vallado. No conoce las dimensiones del mundo, sólo 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 intersección 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 instrucción 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 podría ser algo como esto, aunque las dimensiones podrían variar. Tecnologías de la información y la comunicación. 10 PCPI Informática. Guido van Robot. SACAR LA BASURA. La instrucción hacer permite a Guido realizar una acción más de una vez, pero tiene una limitación: debes saber por adelantado cuántas veces tienes que realizar dicha acción. Si necesitas recoger varios zumbadores, pero no sabes cuántos hay en total, no puedes usar la orden hacer. La sentencia mientras puede realizar éste trabajo. El formato general de esta instrucción es: mientras condición_sea_verdadera: instrucción donde la expresión condición_sea_verdadera se refiere a alguna expresión booleana que sólo puede ser o verdadera o falsa. instrucción puede referirse a una orden simple o un bloque de instrucciones. Mientras la expresión de la condición sea verdadera la acción será realizada. Como vemos sucede algo muy similar a lo que pasa con la instrucción hacer, salvo que la instrucción hacer especifica el número de veces que se debe repetir la acción y la instrucción mientras especifica una condición. Mientras sea verdadera, la acción se repetirá una y otra vez. Por ejemplo, para recoger una pila de zumbadores, puedes escribir: mientras próximo_a_zumbador: tomarzumbador Esto significa que mientras siga habiendo zumbadores en la intersección, cogerá uno y volverá a mirar. Al final todos los zumbadores Guido. habrán 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 condición que debe cumplirse para que termine el ciclo. Esta será la CONDICIÓN DE FINALIZACIÓN del bucle. 2.- Escribir en nuestro bucle mientras la condición contraria a la de finalización. 3.- Asegúrate de que cuando el bucle comience, el programa tenga toda la información que necesite. Puede suceder que tengas que especificar el estado de ciertas variables o condiciones iniciales. 4.- Asegúrate que cada uno de las repeticiones del bucle, nos llevan hacia la finalización del mismo. Es decir, asegúrate que el bucle, alcanzará alguna vez su condición de finalización para que no se convierta en un bucle infinito. Tecnologías de la información y la comunicación. 11 PCPI Informática. Guido van Robot. 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 están en la esquina de la habitación como se indica en el gráfico. (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 más órdenes mientras, para conseguir que Guido saque todas las bolsas. Después de dejarlas todas en el contenedor, haz que Guido retroceda para mirar si han quedado bien depositadas, y luego guíale de regreso a su habitación. VIAJERO POR EL MUNDO. 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 ocasión, Guido sabía cuántos pasos le llevaría recorrer el mundo entero. En esta ocasión tendrá que confiar en que sabrá tomar la decisión correcta sobre qué camino tomar cuando detecte una pared. Como no conoce a priori el tamaño de su mundo, no sabe cuántos 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á más 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 rectángulo de las dimensiones que quieras. Utiliza una instrucción 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 cuántos pasos tendrá que dar para rodear su mundo. Cuando lo consigas guarda el programa como programa16.grv 2.- Vamos a crear un mundo más interesante para Guido, ya no será un simple rectángulo, sino que Guido estará dentro de un mundo cerrado con una forma cualquiera compuesta por segmentos de distintas tamaños. Tu misión será crear un mundo al que llamarás mundo17.wrl similar al de la figura y conseguir que el programa17.grv guíe a Guido en su gira alrededor de este nuevo mundo. De nuevo deberá dejar un zumbador en la posición inicial y recorrer el mundo siguiendo su borde, hasta encontrar de nuevo el zumbador. En esta ocasión será más difícil tomar la decisión adecuada para no chocar con el final de mundo. Tecnologías de la información y la comunicación. 12 PCPI Informática. Guido van Robot. VA A LLOVER. Guido es capaz de hacer más 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, basándose en esas comprobaciones realizar alguna acción. 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. Después escribirá el código concreto y el mundo que corresponda. Recuerda esta sencilla pero útil ecuación: Algoritmo + Estructura de datos = programa. En esta lección, 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. Después 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 después 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 dónde están las ventanas. No puedes escribir directamente el número 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 perímetro de la casa. Debes asegurarte de que todas las tareas se completarán con éxito. Por ejemplo, ¿cómo sabe Guido que ha llegado de nuevo a la puerta? El escenario inicial y final para este mundo (mundo18.wrl) sería algo así: UN TRABAJO QUE HACER. Ya has aprendido un montón sobre la programación de Guido. ¡Felicidades!. Lo que no sabes es que también has aprendido un montón sobre programación 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 más complicados, de forma que llegar a la solución que nos pedían nos ha costado cada vez algo más de trabajo. Tecnologías de la información y la comunicación. 13 PCPI Informática. Guido van Robot. Muchas veces entendemos el problema que nos proponen y la situación final a la que queremos llegar, pero entender cómo conseguir que Guido realice las tareas no es inmediato. A menudo, la mejor forma de llegar a imaginar cómo realizar una tarea es escribir los pasos con nuestras propias palabras en un papel. A esto se le llama pseudocódigo, porque realmente no son todavía las instrucciones que Guido entiende y puede usar. Pero ayuda mucho a entender el problema. Después tendrás que codificar, escribir las instrucciones que realmente entiende Guido, para crear el programa .gvr Asegúrate de llevar a cabo esta tarea antes de empezar a escribir el código definitivo. Primero imagina el algoritmo, una decisión con dos posibilidades, un bucle con un número ya conocido de repeticiones o un bucle gobernado por cierta condición, etc Después fijándote en el mundo concreto, intenta simular la ejecución 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 extensión 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 más bucles dentro de otro bucle. Escrito en pseudocódigo quedaría 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 también un bucle: repetir 6 veces: ( una por cada columna) recoge la cosecha si hay muévete una posición También podemos desglosar la orden vuelve al extremo izquierdo de la fila como: dáte la vuelta repetir 6 veces: muévete una posición Una vez que tenemos claro el algoritmo, con la ayuda del pseudocódigo, vamos a codificar el programa en lenguaje gvr. Será el programa19.gvr. ¿DÓNDE 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 Tecnologías de la información y la comunicación. 14 PCPI Informática. Guido van Robot. hambre, por suerte, junto al bocadillo había un zumbador. La situación inicial se muestra a continuación, 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. MÁS 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 localización, ni la cantidad de basura que habrá amontonada en cada posición. Pude haber varios trozos de basura en la misma localización. El trabajo de Guido consistirá en recoger toda ésa basura del parque y dejarla en la esquina superior derecha del parque. Después 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 cómo de grande era el mundo. No tenía forma de llevar un registro de la cuenta de los pasos. Cuando hablaba del viaje con sus padres y le preguntaban hasta dónde había ido, él no podía contestar. Tecnologías de la información y la comunicación. 15 PCPI Informática. Guido van Robot. En el proyecto de la lluvia, en el que Guido tenía que cerrar todas las ventanas, luego no tenía forma de recordar dónde empezó, donde estaba la puerta. Tenía que dejar un zumbador para saber que ya había dado la vuelta a la casa. Lo que a Guido le gustaría es poder recordar cosas. Ha leído en un libro de programación sobre un elemento de los programas llamado variable, que puede ser utilizado para almacenar números, letras o incluso palabras. Las variables pueden almacenar el valor de un número, este valor puede que se modifique durante el programa. Si tuviese una variable, podría ir aumentando su valor en una unidad cada vez que diese un paso y de ésa forma saber cuántos pasos ha dado en total. Si tuviese dos variables, podría almacenar el número de la calle y de la avenida en la que estaba delante de la puerta en el proyecto de la lluvia y no tendría que haber dejado un zumbador. Pero, Guido no tiene variables. Y lamentablemente, sabe que nunca podrá hacer esas cosas. Ha oído rumores sobre otros lenguajes de programación, que tienen todas esas capacidades y muchas otras más. 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 ( programación orientada a objetos, herencia.) Es hora de decir adiós a Guido y su mundo. Él esperará pacientemente a un nuevo grupo de estudiantes mientras vosotros seguís avanzando en el aprendizaje de la programación. 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 programación 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 introducción al arte de programar con Pascal, John Wiley & Sons, Inc, 1981. El lenguaje Python es una creación de Guido van Rossum y los miembros de la comunidad Python. Puedes encontrar más información 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 supervisión del profesor Steve Howell. Tecnologías de la información y la comunicación. 16