Guido van Robo

Anuncio
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
Descargar