Anda di halaman 1dari 22

TECNOLOGA

E
INFORMTICA
Estudiante

Tomado de: http://www.blogspot.edu-tics

El hombre encuentra a Dios detrs de cada puerta que


la ciencia logra abrir.
Albert Einstein

TPICO GENERADOR
Qu relacin tienen las instrucciones repetitivas con los ciclos?
Meta de comprensin
Desarrolla comprensin acerca de las instrucciones de decisin. de GVR
Desempeos
Aplica decisiones de control de Guido de acuerdo a definiciones y lgica de uso.
Emplea condiciones en programas de GVR para reducir lneas de cdigo.
Meta de comprensin
Desarrolla comprensin sobre el uso de cdigos cclicos de GVR
Desempeos
Usa el ciclo mientras en ejercicios prcticos.
Disea programas y mundos en GVR con instrucciones cclicas.

HISTORIA DE GUIDO
2005-02-09
GvR 1.2 liberado! (Junto con un ligero rediseo del sitio web)
GvR
ahora
incluye
resalte
sintctico
y
buen
soporte
para
internacionalizacin, con versiones disponibles en francs, espaol, rumano,
cataln y dans.
2005-03-02
Se ha liberado GvR 1.2.1, que corrige un error que haca que GvR fallara en
algunas
computadoras
con
Windows
98.
GvR ha sido probado y se ha reportado su funcionamiento en
Win98/ME/2K/XP, Mac OS X, y varias distribuciones de GNU/Linux.
2005-04-04
GvR 1.2.1 ahora est disponible en Debian Sid!
2005-04-08
GvR 1.2.1 ahora est disponible en el depsito apt de Ubuntu Universe
("Hoary")!
2005-05-10
Se han liberado GvR 1.3.1 y las Lecciones GvR 0.4!
2005-09-30
GvR 1.3.2 ha sido liberado! Principalmente corrige errores de localizacin.
2005-11-02
Se ha liberado GvR 1.3.4. Esta versin agrega soporte para wxPython 2.6.
2006-02-04
Se agreg soporte para italiano, y se hicieron pequeas correcciones.

2006-04-17
GvR ha muerto, larga vida a GvRng!
GvRng, que quiere decir algo as como GvR prxima generacin, es un
rediseo de el gvr original para hacerlo ms fcil de mantener y ms
estable que el viejo.
Del punto de vista del usuario, el mayor cambio es que GvRng utiliza GTK
como GUI y GTK Sourceview como editor de mundos y programas.
La ltima versin es la 1.7.
La desventaja es que GvRng ya no es compatible con Windows.
Los usuarios de Windows pueden usar el viejo gvr, que est basado en
wxPython.
Hay planes para crear una interfaz en Windows para GvRng.
2006-07-14
GvRng funciona en Windows
Ahora GvRng est disponible tambin en la plataforma windows.
An no hay instalador, pero puedes probar el paquete zip una vez que
instales Python y GTK+.
El instalador estar disponible pronto.
2007-05-12
Ahora GvRng tiene un diseo con una ventana nica
GvRng est empacado en una ventana de manera que todo est al
alcance.
No ms extravos de las ventanas de edicin o de la ventana de
referencia, todo en un mismo lugar.

LOS PRIMEROS PASOS DE GUIDO


Guido Van Robot, es fundamentalmente un robot representado por un tringulo
en la pantalla, que se mueve en un mundo formado por calles y avenidas,
paredes y zumbadores que Guido puede recoger o poner. Sus acciones son
completamente guiadas por un programa escrito por el usuario.
Sin ayuda, Guido ya comprende cinco instrucciones primarias:
girarizquierda
mover
ponerzumbador
tomarzumbador
apagar
Por ejemplo, hagamos que Guido se mueva un cuadro (mover), gire a la
izquierda (girarizquierda), se mueva otro cuadro (mover), ponga un zumbador
(ponerzumbador), y se apague (apagar):
mover
girarizquierda
mover
ponerzumbador
apagar

Para crear un programa en GVR, primero se hace un


mundo y se ubica a Guido en l, luego, se carga el
mundo, posteriormente se escriben las instrucciones en
la ventana correspondiente y se ejecuta.

Cada archivo del mundo debe empezar con la lnea de ubicacin inicial del
robot de la forma
Robot 1 5 E 4
Donde los valores despus del comando Robot significan:
avenida (columna)
calle (fila)
direccin inicial (N, O, S, o E)
nmero de bocinas (opcional)
El formato de un descriptor de Pared(Wall) es:
Pared 4 4 N 2

primer valor : avenida


segundo valor: calle
tercer valor : interseccin bloqueada al (N)orte, (S)ur, (E)ste, u (O)este
cuarto valor : (opcional) longitud de la pared (extendida desde el Este o el Norte)

Actividad 1
1. Coloca un robot con cuatro bocinas en la esquina de la primera avenida y calle
quinta mirando al este. l debera avanzar dos cuadras al este, soltar una bocina, y
luego continuar yendo una cuadra y soltando una bocina en cada interseccin
hasta que se le acaben las bocinas. Luego deber avanzar un paso ms y
apagarse. Cuando haya terminado, la pantalla debera verse as:

2. Inicia a Guido en la esquina inferior izquierda, mirando al este. Haz que de tres
pasos, gire a la izquierda, de tres pasos ms, gire a la izquierda de nuevo, y as
sucesivamente hasta que l est de regreso al punto de inicio mirando al este de
nuevo.
3. Construye un mundo con la siguiente apariencia:

4. Modifica el anterior mundo para obtener uno similar a:

5. Construye un mundo similar al mostrado en la siguiente imagen y haz que Guido


recoja las bocinas:

ENSENANDO A GUIDO NUEVAS COSAS


DEFINIR
Guido puede aprender a realizar nuevos movimientos, basta con enserselos
mediante la instruccin definir, seguido del nombre de lo que va a aprender junto
con el conjunto de instrucciones anidadas.
Guido no sabe cmo girar a la derecha, as que le ensearemos:
definir girarderecha:
girarizquierda
girarizquierda
girarizquierda

Este es un ejemplo de una instruccin compuesta,


que significa que est hecha de por lo menos dos
partes. La primera parte consiste en definir
seguida del nombre de la instruccin que ests
definiendo, seguido por dos puntos (:). La segunda
parte se compone de una o ms instrucciones
anidadas el mismo nmero de espacios

Actividad 2
1. Define una instruccin devolver que hace que guido se devuelva un bloque
dejndolo mirando a la direccin inicial. A continuacin usa devolver en un
programa completo tal que Guido comience en la esquina de la segunda calle y
la tercera avenida, se mueva tres cuadras al norte, se devuelva una cuadra, gire
a la derecha y entonces se mueva dos bloques al este.
2. Cada da, Guido se despierta con el sonido del peridico "Tiempos Robticos"
golpeando el frente de la puerta de su casa. Guido desea mantenerse
actualizado en noticias acerca de robtica. Por lo tanto, sale y recoge el
peridico cada maana. Aqu hay una fotografa que muestra a Guido dormido
cuando el peridico, representado por una bocina, golpea la puerta. Escribe un
programa incluyendo la instruccin de girarderecha y una nueva instruccin de
giroalrededor, para hacerlo ir por el peridico y regresar a la cama, donde le
gusta leer.
Necesitars un lugar para colocar la bocina en el mundo, como se muestra en la
figura:

Haz que Guido empiece en la posicin mostrada hacia el oeste. Haz que
obtenga la bocina y despus regrese al mismo lugar, mirando a la misma
direccin donde comenz.
Instruccin para ubicar bocinas:

zumbador 4 4 1. Los primeros dos nmeros son el lugar y el ltimo es


la cantidad de bocinas que estn en la interseccin.

3. Guido acaba de cumplir 18 y desea que todos en el universo lo sepan. En vista


de que l no puede hablar, solamente puede escribir el nmero 18 usando
bocinas. Guido es un robot y slo conoce binarios. As 18 en decimal se
representa por 10010.
Define estas nuevas instrucciones :
dibujaruno para representar el 1 con bocinas
dibujarcero para representar el 0 con bocinas
Usa esas instrucciones en un programa GvR para crear su mensaje de
cumpleaos. Cada instruccin debera ubicar apropiadamente en la posicin
para orientar a Guido hacia el siguiente dgito. El programa principal debe usar
las instrucciones dibujaruno y dibujarcero para representar el binario 18.
Cuando el programa inicia la pantalla debera lucir exactamente as:

Cuando termine, la pantalla debe lucir exactamente de esta forma:

4. Realiza el siguiente programa:

5. Realiza nuevamente el siguiente escenario,pero enseandole a Guido ciertos

movimientos

Una vez que definas una nueva instruccin puedes usarla como si esta estuviera
incorporada en GvR

definir girarderecha:
girarizquierda
girariqzuierda
girariqzuierda
mover
girarderecha
mover
girarderecha
mover
girarderecha
mover
girarderecha
apagar

TOMANDO DECISIONES SI---SINO


Hasta ahora Guido hace exactamente lo que le digamos, como un buen robot
leal, pero de cuando en cuando, nos gustara que Guido tomara decisiones
propias. Escribamos un programa realmente pequeo para que Guido muestre su
habilidad de tomar decisiones. Queremos que l se mueva un cuadro, a menos
que haya una pared enfrente. Si hay una pared en frente sera preferible que no
corriera hacia ella, mejor que slo se apague.
si frente_libre:
mover
apagar

Guido comprende qu significa "si". Tambin sabe lo que significa "frente_libre". Ya


ha sido cableado para conocer esas palabras. Pero an te queda decirle qu
hacer "si" tiene el "frente_libre". Le estamos diciendo que "si" hay "frente_libre" se
puede "mover". Despus, independientemente de la situacin, el siguiente
comando es "apagar".
si frente_libre:
mover
tomarzumbador
tomarzumbador
tomarzumbador
sino:
girarizquierda
girarizquierda
apagar

Aqu le estamos diciendo que si el frente est libre, se puede mover y tomar tres
zumbadores. O "sino" (si su frente no est libre), entonces queremos que gire a la
izquierda dos veces. Despus que se apague.

frente_libre(front_is_clear)

Verdadero si no hay pared


frente a Guido. Falso si la hay.

frente_bloqueada(front_is_blocked)

Verdadero si hay una pared


directamente en frente de
Guido. De lo contrario, sera
falso.

izquierda_libre(left_is_clear)

Verdadero si no hay una pared


inmediatamente a la izquierda
de Guido. Falso si la hay.

izquierda_bloqueado(left_is_blocked)

Verdadero si hay una pared


inmediatamente a la izquierda
de Guido. De lo contrario sera
falso.

derecha_libre(right_is_clear)

Verdadero si no hay una pared


inmediatamente a la derecha
de Guido. Falso si la hay.

derecha_bloqueado(right_is_blocked)

Verdadero si hay una pared


inmediatamente a la derecha
de Guido. De lo contrario falso.

10

proximo_a_zumbador(next_to_a_beeper)

Verdadero
si
Guido
est
ubicado en una interseccin
que tiene una bocina. De lo
contrario falso.

no_proximo_a_zumbador(not_next_to_a_beep
er)

Verdadero si no hay un bocina


en la interseccin actual. Falso si
hay
una
bocina
en
la
interseccin actual.

zumbadores_en_bolsa(any_beepers_in_beepe
r_bag)

Verdadero si hay al menos una


bocina en la bolsa de Guido.
Falso si la bolsa de bocinas est
vaca.

sin_zumbadores_en_bolsa(no_beepers_in_bee
per_bag)

Verdadero si la bolsa de bocinas


de Guido est vaca. Falso si hay
por lo menos una bocina en la
bolsa de bocinas.

viendo_norte(facing_north)

Verdadero si Guido est mirando


al norte. De lo contrario falso.

no_viendo_norte(not_facing_north)

Verdadero si Guido no est


mirando al norte. Falso si l est
mirando al norte.

viendo_sur(facing_south)

Verdadero si Guido est mirando


al sur. De lo contrario falso.

no_viendo_sur(not_facing_south)

Verdadero si Guido no est


mirando al sur. Falso si l est
mirando al sur.

viendo_este(facing_east)

Verdadero si Guido est mirando


al este. De lo contrario falso.

no_viendo_este(not_facing_east)

Verdadero si Guido no est


mirando al este. Falso si l est
mirando al este.

viendo_oeste(facing_west)

Verdadero si Guido est mirando


al oeste. De lo contrario falso.

11

no_viendo_oeste(Not_facing_west)

Verdadero si Guido no est


mirando al oeste. Falso si l est
mirando al oeste.

Todos los condicionales pueden


ser usados con la palabra clave
"si".

Este trazado podra servirte para colocar paredes. Imprime esta


pgina, pinta las paredes que desees a lo largo de las lneas
punteadas, a continuacin lee los tres nmeros que estn encima o
a la derecha de la pared para colocarlos en tu archivo de mundo:

12

Actividad 3
1. Guido no ha completado su servicio comunitario para graduarse de la

secundaria, as que se le han asignado recoger la basura a lo largo de la calle


segunda. Construya un mundo que tenga bocinas esparcidas a lo largo de la
calle segunda entre la avenida primera y la pared, en la esquina este de la
duodcima avenida. A lo sumo puede haber una bocina en cualquier
esquina dada. Guido debera comenzar en la avenida primera con calle
segunda mirando al este.
Un mundo de inicio podra verse as:

Haz que Guido vaya por la calle segunda recogiendo todas las bocinas que
encuentre. Recuerda que si no hay una bocina en una interseccin y le pides
a Guido que recoja una, l se quejar y se apagar. Despus de llegar a la
duodcima calle, el debera regresar con todas las bocinas a su posicin
original, debera mirar al este de nuevo y apagarse.
Con la posicin de inicio anterior, al terminar debera lucir as:

13

REPITIENDO INSTRUCCIONES HACER


Como Guido tiene cerebro de computadora, hay un aspecto en el que es muy
bueno -- contar. Si le quieres decir que haga algo diez veces, slo dile que lo
haga 10 veces. Si quieres decirle que haga algo tres veces, slo dselo:

definir girarderecha:
hacer 3:
girarizquierda
definir
mover_diez_cuadros:
hacer 10:
mover
mover_diez_cuadros
girarderecha
mover_diez_cuadros
ponerzumbador
apagar

hacer 5:
mover
tomarzumbador
apagar

mover
tomarzumbador
mover
tomarzumbador
mover
tomarzumbador
mover
tomarzumbador
mover

14

Actividad 4
1. Guido vive en Colorado, donde la msica country es popular. A l le
gustara que le ensearas a bailar en lnea. Un baile de lnea se compone de
una serie de pasos, adelante y atrs, con giros y rotaciones. Cada secuencia
termina en una direccin diferente. Si el patrn de baile en lnea se repite,
eventualmente el bailarn acabar en el sitio inicial.
El baile en lnea que Guido quiere aprender es as: Desde la posicin inicial, da
2 pasos hacia delante, voltea, 3 pasos atrs. Entonces 3 veces: giro a la
derecha, paso. Guido queda en el punto de inicio, pero mirando en diferente
direccin. Se repite este patrn bsico de pasos 4 veces para que Guido baile
y se divierta un poco.

2. En este proyecto, Guido va a circunnavegar por un mundo limitado. l no


conoce las dimensiones del mundo (pero tu si, dado que lo vas a crear). Lo
que l si conoce es que hay una bocina que marca cada esquina del mundo
excepto en la que empez.

Guido empieza mirando hacia el este en la esquina inferior izquierda. Si l no


est cerca a una bocina, se mueve hacia adelante. Pero si hay una bocina, la
recoge, gira a la izquierda y se mueve. Crea un mundo donde tomar
exactamente 32 movimientos para circunnavegarlo. Puedes escoger las
dimensiones, pero no se lo digas a Guido! Pon las bocinas en tres de las
esquinas (sureste, noreste y noroeste). Luego usa una estructura hacer (32
veces) y un si...sino para ir alrededor del mundo.
Tu mundo inicial debe verse algo as, aunque las dimensiones pueden diferir:

3. Construye el siguiente escenario con la funcin hacer:

15

REPITIENDO -MIENTRASLa instruccin hacer le permite a Guido hacer una accin ms de una vez, pero
tiene una limitacin: debe saber previamente cuntas veces la accin debe
ejecutarse. Si est en una interseccin y necesita recoger varias bocinas pero no
sabe cuntos hay, no puede usar una estructura hacer. La estructura
mientras(while) puede funcionar en esta situacin.
El formato general de la instruccin mientras es:
mientras condicin-de-prueba-verdadera:
accin
Donde condicin-de-prueba-verdadera es un condicional que evala a
verdadero o falso, y la accin es un slo comando (como mover) o una
secuencia de comandos en bloque. Siempre y cuando la condicin evaluada
sea verdadera, la accin ser realizada. Por lo tanto mientras es similar a hacer
excepto que hacer especifica un nmero de veces para ejecutar una instruccin
y mientras especifica una condicin de prueba. Siempre y cuando la condicin
de prueba sea verdadera, las instrucciones sern ejecutadas una y otra vez.
Por ejemplo, para recoger una pila de bocinas puedes escribir:
mientras proximo_a_zumbador:
tomarzumbador
Esto dice que siempre y cuando hay bocinas en la interseccin, recoge uno y
revisa de nuevo. El resultado ser que no habr ninguna bocina en la interseccin
actual. Terminarn todos en la bolsa de bocinas de Guido.
Escribir un ciclo mientras es truculento; hay
muchos detalles para que est bien. Los pasos
generales son:
Identificar la condicin que debe ser verdadera,
cuando Guido termine con el ciclo.
Construir tu ciclo mientras con la condicin de
prueba opuesta a la cual debera terminar:
mientras condicin opuesta:
...instrucciones aqu...
Asegrate de que cualquier cdigo anterior est
completo antes de empezar el ciclo, para que
comiences en una condicin conocida. Si las
condiciones se especifican, se les llama
precondiciones.
Asegrate que cada iteracin del ciclo progresa
hacia la terminacin del mismo.
Asegrate de que la prueba para el ciclo
eventualmente sea falsa para que puedas salir.
Escribe cdigo para cualquier trabajo de limpieza
que necesite hacerse despus de ejecutar el
ciclo. Cuando sale del ciclo se especifican las
poscondiciones, se cumplirn si las precondiciones
eran vlidas cuando se entr al ciclo.

16

Actividad 5
1. Es lunes por la maana otra vez. Antes de ir al colegio. Guido tiene que sacar la
basura. No est seguro de cuantas bolsas de basura hay (representadas por
bocinas), pero l sabe que estn en el rincn de la habitacin representada en
esta vista del mundo:

l necesita recoger toda la basura y ponerla en el contenedor en un slo viaje.


Usa uno o ms estructuras mientras para conducir a Guido a sacar la basura.
Despus de depositar la basura, Guido tiene que dar un paso atrs para ver que
la basura est apropiadamente colocada en el bote de basura.
2. Guido quiere explorar su mundo de nuevo. La vez pasada, recogi las bocinas
de las esquinas de su mundo limitado y rectangular. Tambin conoca cuntos
pasos le tomara para completar el viaje. Esta vez necesitar confiar en detectar
las paredes alrededor de l para decidir en qu direccin girar.
En vista de que no se sabe el tamao de este mundo por anticipado, no sabr
cuantos pasos necesita para llegar a casa. Para resolver este problema l soltar
una bocina en su punto inicial. Sabe que no hay ms bocinas en el mundo.
Continuar su viaje hasta que llegue a casa. Sabe que llega a casa cuando
encuentre otra vez su bocina.
Guido inicia viendo al este en la esquina inferior izquierda de un mundo limitado y
rectangular con una sola bocina en su bolsa de bocinas. El mundo es de un
tamao no conocido - tu eleccin. Comienza su viaje y contina hasta que llegue
a casa. Usa una estructura mientras (buscando su bocina) y un si...sino para
hacer que complete su aventura. Nota: Guido no puede usar en ningn caso la
estructura hacer, debido a que no tiene idea de las dimensiones del mundo.
3. El mundo de guido se ha vuelto mucho ms interesante. Ha dejado de ser un
simple rectngulo. Guido ahora se encuentra a si mismo en un polgono. Si
todava no has visto nada de geometra, un polgono es una figura geomtrica
cerrada hecha de segmentos unidos entre punta y punta. Un mundo poligonal
podra lucir as:

17

Tu misin es hacer que Guido circunnavegue su nuevo mundo poligonal. l


debera soltar una bocina una vez ms en su punto de inicio y caminar por el
borde de su mundo hasta que encuentre su bocina otra vez. Permanecer esta vez
a lo largo de la pared, ser ms complicado, pero, este es el reto.
4. Guido est ubicado en la nica puerta mirando hacia afuera. Ve una tormenta
aproximndose y decide cerrar todas las ventanas de la casa. Primero cierra la
puerta, depositando una bocina donde est ubicado. A continuacin cerrar las
ventanas, depositando una bocina en cada ventana (representada por
aperturas en paredes). Ama las tormentas, as que despus de cerrar las
ventanas, saldr a mirar. Este es el mundo inicial de este escenario:

Debes imaginarte el algoritmo para codificarlo. Guido no ha vivido en esta casa


desde hace muchos aos. Por lo tanto, no sabe donde estn las ventanas
exactamente. No puedes codificar un nmero de pasos para llegar a una
ventana -- en cambio Guido debe verificar si hay una ventana abierta mientras
camina alrededor del permetro al interior de su casa. Como en cualquier
algoritmo, debes asegurarte que la tarea se complete, por ejemplo, cmo sabe
Guido que ha vuelto a la puerta?
El mundo final en este escenario debera verse as:

18

5. El pap de Guido es un granjero. Cuando Guido no est haciendo su tarea, le


ayuda en el campo. Hoy tiene que cosechar la siembra. El campo siempre tiene 6
filas y 6 columnas, pero las plantas no crecieron en todas las reas, como se
muestra. Crea un mundo con un campo a lo sumo de 6x6 as:

Recoge la siembra utilizando una estructura hacer anidada (una o ms


estructuras hacer dentro de una estructura hacer) para realizar la operacin de
cosecha. En un pseudocdigo, sera algo como:
{{{hacer seis veces
avanza, cosechando bocinas ve a la esquina izquierda sube uno
detenerse}}} pero el "avanza, cosechando bocinas" es un ciclo hacer por s
mismo.
6. Guido ha perdido su lonchera. Estaba jugando en un laberinto y la solt,
vagabunde por ah. Ahora tiene hambre, afortunadamente dej una bocina en
su lonchera. Su situacin se ve as:

Escribe un programa para ayudar a Guido a encontrar su lonchera. El secreto es

19

hacer que Guido siga por todo el borde derecho del laberinto, doblando a la
derecha si puede, o ir hacia adelante si no puede o girando a la izquierda como
ltimo recurso. Escribe un programa usando una estructura si...no si...sino, de
modo que Guido pueda comer su almuerzo.
7. Realiza el siguiente escenario con mientras:

8. El parque se representa por un rea rectangular limitada de dimensiones


desconocidas. Guido empieza en un lugar al azar en el parque. La basura
(representada por bocinas) est esparcida por todo el parque. Desconoce la
cantidad y la localizacin de la basura al comenzar la limpieza. Puede haber
varias piezas de basura en la misma posicin. El trabajo de Guido es recoger toda
la basura en el parque y depositarla en la esquina noreste del parque.
Posteriormente debe ir a la esquina suroeste del parque mirando hacia el norte y
apagarse para tomar un descanso bien merecido bajo un rbol, mientras espera
a que lo lleven a casa.
Un mundo de ejemplo para este problema podra verse as:

20

ZONA DE JUEGOS
1

10

11

12

13

14

15

16

17

18

21

19

20

21

22

23

24

25

26

27

28

29

30

22

Anda mungkin juga menyukai