FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
Este trabajo ha sido realizado por: JUAN DAVID CASTRO
SANTIAGO GOMEZ NIÑO
1)FUNCIONES Y ESTRUCTURAS DE SELECCIÓN:
1. Ejercicio: Rain 0
1. Análisis:
Descripción: Está lloviendo mucho. El agua entrará por la ventana abierta a
menos que Reeborg la cierre.
Condición inicial: Reeborg está ubicado en la puerta de la casa. En la
posición (X, Y)=(4,6) y mira al este.
Condición final: Después de haber cerrado la ventana, Reeborg se ubica en
la entrada nuevamente. En la posición (4,6) y mira al Oeste
Casos de prueba:
Caso 1
Caso 2
1
FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
Caso 3
2. Diseño:
Solución de alto nivel
Cerrar ventana
Repetir 6 veces:
2
FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
Mover
Construir pared
Media vuelta
Repetir 5 veces
Mover
Solución detallada
3. Implementación:
from library import *
def cerrarVentanas():
repeat 6:
move()
3
FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
build_wall()
mediaVuelta()
repeat 5:
move()
#Inicio de la función
cerrarVentanas()
library
def mediaVuelta():
repeat 2:
turn_left()
4
FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
4. Pruebas:
5
FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
2. Ejercicio: Tokens 1
1. Análisis:
Descripción: Reeborg debe tomar la ficha, llevarla al siguiente cuadro y
continuar moviéndose hasta que alcance su objetivo.
Condición inicial: Reeborg está en ubicado en el punto( x,y) = (1,1) y mira al
este.
Condición final: Después de haber tomado las fichas, Reeborg debe quedar
parado en la meta en el punto (x,y) = (4,1).
Casos de prueba:
Caso 1
Caso 2
2. Diseño:
Solución de alto nivel
Movimiento token
6
FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
Mover hasta la ficha
Tomar primera ficha
Dejar la ficha
Llegar a la meta
7
FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
Solución detallada
8
FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
3. Implementación:
def movimientoToken():
move()
take()
move()
put()
move()
movimientoToken()
4. Pruebas:
9
FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
3 Ejercicio: Around 1
1. Análisis:
Descripción: Haga que Reeborg dé la vuelta al mundo en el sentido
contrario a las agujas del reloj una vez y se detenga en su posición inicial.
Reeborg no debe pisar el césped.
Condición inicial: Reeborg está en ubicado en el punto (x,y)=(1,1) y mira al
este.
Condición final: Después de haber dado la vuelta al mundo Reeborg debe
quedar parado en el punto donde inicio el camino (x,y)=(1,1) y mira al sur.
Casos de prueba:
Caso 1
10
FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
2. Diseño:
Solución de alto nivel
Vuelta mundo
Repetir 9 veces
Correr
Girar
Repetir 9 veces
Correr
Girar
Repetir 9 veces
Correr
Girar
Repetir 9 veces
Correr
Girar
Solución detallada
11
FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
12
FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
3. Implementación:
def vueltaMundo():
repeat 9:
move()
turn_left()
repeat 9:
move()
turn_left()
repeat 9:
move()
turn_left()
repeat 9:
move()
turn_left()
vueltaMundo()
4. Pruebas:
13
FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
4. Ejercicio: Home 4
1. Análisis:
Descripción: Haga que Reeborg vuelva a casa.
Condición inicial: Reeborg está ubicado en el punto (x,y)=(4,1) y mira al
norte.
Condición final: Reeborg debe estar en la casa al final del camino en la
posición (x,y) = (5,1) y mira al sur.
Casos de prueba:
14
FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
2. Diseño:
Solución de alto nivel
Llegar a casa
Repetir 3 veces
Recorrido en L
Repetir 3 veces
Mover
Girar
Repetir 3 veces
Mover
Solución detallada
15
FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
16
FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
3. Implementación:
from library import *
def llegarCasa():
repeat 3:
recorridoL()
repeat 3:
move()
turn_left()
repeat 3:
move()
llegarCasa()
Library
def girarDerecha():
repeat 3:
turn_left()
def recorridoL():
repeat 3:
move()
turn_left()
repeat 3:
move()
girarDerecha()
move()
girarDerecha()
17
FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
4. Pruebas:
5 Ejercicio: Tokens 2
18
FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
1. Análisis:
Descripción: Reeborg debe tomar la ficha, llevarla al siguiente cuadro y
continuar moviéndose hasta que alcance su objetivo.
Condición inicial: Reeborg está en ubicado en el punto (x,y)=(1,1) y mira al
este.
Condición final: Después de haber tomado las fichas, Reeborg debe quedar
parado en la meta en el punto (x,y)=(7,1) y mira al este.
Casos de prueba:
2. Diseño:
Solución de alto nivel
Movimiento token
Repetir 4 veces
Mover
Tomar primera ficha
Dejar la ficha
Llegar a la meta
19
FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
Solución detallada
20
FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
3. Implementación:
def movimientoToken():
repeat 4:
move()
take()
move()
put()
move()
movimientoToken()
4. Pruebas:
6. Ejercicio: Around 2
21
FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
1. Análisis:
Descripción: Reeborg debe dar la vuelta al mundo en el sentido contrario a
las agujas del reloj una vez y se detenga en su posición inicial. Reeborg no
debe pisar el césped y debe seguir la ruta indicada.
Condición inicial: Reeborg está en ubicado en el punto (x, y) =(4,1) y mira al
este.
Condición final: Después de haber dado la vuelta al mundo, Reeborg debe
quedar posicionado en el punto desde el cual inicio (x, y)=(4,1).
Casos de prueba:
Caso 1
22
FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
2. Diseño:
Solución de alto nivel
Alrededor mundo
Dejar objeto
Mientras no haya pared en frente
Moverse
Si hay una pared al frente
girar a la izquierda
Si a la derecha esta libre
girar a la derecha
Si hay un objeto
tomar objeto
23
FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
Solución detallada
24
FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
3. Implementación:
from library import *
def alrededorMundo():
put()
while not wall_in_front():
move()
if wall_in_front():
turn_left()
if right_is_clear():
girarDerecha()
if object_here():
take()
done()
alrededorMundo()
4. Pruebas:
25
FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
7. Ejercicio: Around 3
1. Análisis:
Descripción: Reeborg debe dar la vuelta al mundo en el sentido contrario a
las agujas del reloj una vez y se detenga en su posición inicial. Reeborg no
debe pisar el césped y debe seguir la ruta indicada.
Condición inicial: Reeborg está en ubicado en el punto (x,y)=(4,1) y mira al
este.
Condición final: Después de haber dado la vuelta al mundo, Reeborg debe
quedar posicionado en el punto desde el cual inicio (x,y)=(4,1) y mira al
este.
Casos de prueba:
Caso 1
26
FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
2. Diseño:
Solución de alto nivel
Alrededor mundo
Dejar objeto
Girar a la izquierda
Moverse
Girar a la derecha
Mientras no haya pared en frente
Moverse
Si hay una pared al frente
girar a la izquierda
Si a la derecha esta libre
girar a la derecha
27
FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
Si hay un objeto
tomar objeto
28
FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
Solución detallada
29
FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
3. Implementación:
from library import *
def alrededorMundo():
put()
turn_left()
move()
girarDerecha()
while not wall_in_front():
move()
if wall_in_front():
turn_left()
if right_is_clear():
girarDerecha()
if object_here():
take()
done()
alrededorMundo()
4. Pruebas:
8 Ejercicio: Around 4
30
FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
1. Análisis:
Descripción: Reeborg debe dar la vuelta al mundo en el sentido contrario a
las agujas del reloj y una vez se detenga en su posición inicial.
Condición inicial: Reeborg está en ubicado en el punto (x,y)=(4,1) y mira al
este.
Condición final: Después de haber dado la vuelta al mundo, Reeborg debe
quedar posicionado en el punto desde el cual inicio (x,y)= (4,1) y mira al
este.
Casos de prueba:
Caso 1
31
FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
2. Diseño:
Solución de alto nivel
Alrededor mundo
Dejar objeto
Dar media vuelta
Moverse
Girar a la derecha
Mientras no haya pared en frente
Moverse
Si hay una pared al frente
girar a la izquierda
Si a la derecha esta libre
girar a la derecha
Si hay un objeto
tomar objeto
32
FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
Solución detallada
33
FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
3. Implementación:
from library import *
def alrededorMundo():
put()
mediaVuelta()
move()
girarDerecha()
while not wall_in_front():
move()
if wall_in_front():
turn_left()
if right_is_clear():
girarDerecha()
if object_here():
take()
done()
alrededorMundo()
Library
def girarDerecha():
repeat 3:
turn_left()
def mediaVuelta():
repeat 2:
turn_left()
34
FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
4. Pruebas:
9 Ejercicio: Harvest 1
35
FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
1. Análisis:
Descripción: El jardín de Reeborg está listo para cosechar. Haz que Reeborg
recoja todas las zanahorias de su jardín.
Condición inicial: Reeborg está en ubicado en el césped en el
punto(x,y)=(1,1) y mira al este.
Condición final: Reeborg debe haber cosechado todas las zanahorias al
final del recorrido del mundo.
Casos de prueba:
Caso 1
Caso 2
36
FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
Caso 3
37
FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
2. Diseño:
Solución de alto nivel
Cosechar
Moverse hasta las cosechas
Girar a la derecha
Si hay objetos
Iniciar la primera vuelta de la cosecha
Iniciar la segunda vuelta de la cosecha
Iniciar la tercera vuelta de la cosecha
Cosechar la ultima vuelta
38
FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
Solución detallada
39
FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
3. Implementación:
from library import *
def harvest_one_row():
turn_left()
move()
move()
girarDerecha()
move()
move()
if object_here():
cosecharVuelta1()
cosecharVuelta2()
cosecharVuelta2()
cosecharUltimaVuelta()
else:
done()
harvest_one_row()
Library
def cosecharVuelta1():
repeat 5:
take()
move()
take()
turn_left()
move()
turn_left()
def cosecharVuelta2():
repeat 5:
take()
move()
40
FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
take()
girarDerecha()
move()
girarDerecha()
cosecharVuelta1()
def cosecharVuelta3():
repeat 5:
take()
move()
take()
turn_left()
move()
turn_left()
def cosecharUltimaVuelta():
repeat 5:
take()
move()
take()
done()
41
FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
4. Pruebas:
10 Ejercicio: Newspaper 0
42
FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
1. Análisis:
Descripción: Reeborg debe entregar el periódico The Northern Star.
Condición inicial: Reeborg está ubicado en el piso 1 en el punto(x,y)=(1,1) y
mira al este.
Condición final: Reeborg debe quedar ubicado en el piso 1 desde donde
inicio la entrega. En el punto (x,y)=(1,1) y mira al oeste.
Casos de prueba:
Caso 1
2. Diseño:
Solución de alto nivel
Entregar periodico
Moverse hasta el cuarto piso
Dejar entrega
Dar media vuelta
Regresar al punto de inicio
43
FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
Solución detallada
44
FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
45
FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
3. Implementación:
from library import *
def entregarPeriodico():
take()
turn_left()
move()
girarDerecha()
move()
move()
turn_left()
move()
girarDerecha()
move()
move()
turn_left()
move()
girarDerecha()
move()
move()
put()
regresar()
def regresar():
mediaVuelta()
move()
move()
turn_left()
move()
girarDerecha()
move()
move()
turn_left()
move()
girarDerecha()
46
FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
move()
move()
turn_left()
move()
entregarPeriodico()
47
FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
4. Pruebas:
48
FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
2)VARIABLES LOCALES Y GLOBALES:
49
FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
2. Ejercicio: Acomodación de ítems.
1. Análisis:
Descripción: Reeborg debe poner filas de cuadrados y triángulos de manera
intercalada en un mundo.
Condición inicial:
-Un mundo de 5x5.
- Un robot ubicado en (x, y) = (1, 1) con dirección Este.
- El robot lleva objetos de tipo “Triangulo” y objetos de tipo “cuadrado”.
Condición final: La posición final del robot debe ser (x, y) = (5, 5) con
dirección Este.
Casos de prueba:
Caso 1
2. Diseño:
Solución de alto nivel
Solución detallada
3. Implementación:
Incluya el código fuente de su solución
def …
4. Pruebas:
Impresión de pantalla del mundo resuelto (recorte únicamente el mundo)
Incluya tanta evidencias como casos de prueba haya identificado
3. Ejercicio: nombre del mundo
50
FUNDAMENTOS EN1:
Solución Guía PROGRAMACIÓN
Actividad 2
51