SlideShare uma empresa Scribd logo
1 de 22
Baixar para ler offline
Programación II

Extendiendo el Lenguaje de Karel
 Ing. José Rubén Campos Alfaro

     Company
     LOGO
Extendiendo el Lenguaje

 Podemos enseñar nuevas instrucciones
  que ejecutan intrucciones mas simples.
 Imagine que queremos que Karel gire a la
  derecha    entonces     tendríamos     que
  indicarle que diera tres giros a la
  izquierda.
 Entonces sería de gran utilidad contar con
  una instrucción turnright (gira a la
  derecha).
Extendiendo el Lenguaje

 Subiendo la escalera
 Karel se encuentra
  frente a una escalera
  como se muestra en la
  figura 3.1 compuesta
  por tres escalones de
  subida. Lleva a karel
  hasta     el    último   Figura 3.1
  escalón.
Extendiendo el Lenguaje

 Para que karel caminara sobre la
  escalera, nuestro código para subir un
  escalón sería el siguiente:

 move();       Este código lo tendremos que repetir
 turnleft();   3 veces ya que es el número de
               escalones que Karel va a subir.
 turnleft();
 turnleft();
 move();
Extendiendo el Lenguaje
class program {
                    Programa completo
program()
{
      move();
      turnleft();
      turnleft();
      turnleft();
      move() ;
      turnleft();
      move();
      turnleft();
      turnleft();
      turnleft();
      move();
      turnleft();
      move();
      turnleft();
      turnleft();
      turnleft();
      move();
  turnoff();
}

}
Definición de una Nueva Instrucción.


Sintaxis para definir una nueva instrucción
                para Karel
                                             La palabra reservada define la
Define <nombre_nueva_instrucción>()          empleamos para decirle a Karel
                                             que le enseñamos una nueva
{
                                             instrucción.
<instrucciones>
<instrucciones>                       Posteriormente viene el nombre de
.                                     la nueva instrucción, la cual no debe
.                                     ser igual al nombre de alguna otra
.                                     Instrucción nativa o ya definida.
<instrucciones>
}                  Por último, viene el código que deseamos que Karel
                       Ejecute a través de la nueva instrucción. Nota: No hay
                       ; después de la primera línea.
Definición de una Nueva Instrucción.


 Las instrucción puede ser una sola
  instrucción o un bloque de instrucciones
  creado con “{“ y “}”. Esto crea lo que se
  conoce como una entrada al diccionario
  de karel, que es donde está todo lo que
  karel puede y sabe ejecutar.
Definición de una Nueva Instrucción.


 Definamos la instrucción turnright.

 define turnright()
 {
 turnleft()
 turnleft()
 turnleft()
 }
Definición de una Nueva Instrucción.


•Empleemos la instrucción turnright en la
definición de la instrucción subeEscalon()

         define
         subeEscalon()
         {
         turnleft();
         move();
         turnright();
         move();
         }
Definición de una Nueva Instrucción.

class program
{
                           program()
define turnright()
                                    {
     {
                                    subeEs;calon()
     turnleft();
                                     subeEs;calon()
     turnleft();
                                     subeEs;calon()
     turnleft();
                           turnof()
     }
                           }
define subeEscalon()
                           }
     {
     turnleft();
     move();
     turnright();
     move();
     }
Razones para crear
                 nuevas instrucciones
 Es un buen hábito de programación de
  programación, el tener las nuevas
  instrucciones definidas en forma más
  clara y concisa posible.
 Posibilidad de reutilización en futuros
  programas escritos.
 Contar con una biblioteca de múltiples
  funciones de uso variado.
Razones para crear
                  nuevas instrucciones
 La claridad en el código es de suma
  importancia cuando estamos
  programando.
 Una aplicación sencilla es renombrar las
  instrucciones nativas (move, putbeeper,
  etc), para tenerlas de manera más clara y
  evitar errores a la hora de escribirlas.
Razones para crear
                               nuevas instrucciones
  Ej.
   Redefiniendo                  define ponBiper()
   una                                {
   Instrucción de
   Karel.
                                      putbeeper();
                                      }


La claridad en un código nos ayuda a comprender que estamos haciendo y
cómo estamos dividiendo nuestra tarea en tareas más pequeñas.
Razones para crear
                nuevas instrucciones
                                                       Ok, I got
                                                          it!

program ()              What!!   program ()
      {                                {
      tr();                            iniciaPosicion();
      move();                          move();
      pon();                           colocaPila();
      c();                             cambiaDeAvenida();
      pon();                           colocaPila();
      c();                             cambiaDeAvenida();
      rb();                            recogeBeepers();
      }                                }

  Programa poco claro                 Programa entendible
Ambientes de Karel




Posible estado inicial del mundo     Posible estado final del mundo
Razones para crear
                         nuevas instrucciones
 Al crear nuevas instrucciones con una
  labor específica, podemos reutilizar esa      move();
  misma instrucción en nuevos programas.        turnleft();
 Ej                                            turnleft();
    Pensemos que deseamos construir
                                                turnleft();
     escalones de beepers sobre el mismo        move();
     mundo de la fig.2.1.1 Entonces nuestro
     programa solo estaría levemente             Fig. 2.1.1
     modificado en la función principal de la
     siguiente manera:
Razones para crear
                          nuevas instrucciones
                              Podemos modificar la función
program()                    subeEscalon agregándole al final
      {                         La instrucción pubbeeper.
      putbeeper();
      subeEscalon();
                               program()
      putbeeper();
                                     {
      subeEscalon();
                                     turnleft();
      putbeeper();
                                     move();
      turnoff();
                                     turnright();
      }
                                     move();
                                     putbeeper();
   Modificación de un                }
programa para una nueva
         tarea.
Razones para crear
                   nuevas instrucciones
 Siempre es aconsejable seccionar nuestro
  problema en pequeñas tareas. La
  creatividad de un programador se basa en
  poder dividir una tarea en varias tareas de
  menor complejidad.
 Esto se llama top-down .- tratamos de
  llevar a cabo una tarea por medio de
  realizarla desde lo general, seccionándola
  y simplificándola hasta llevarla a las
  instrucciones más simples (nativas) de
  Karel.
Ejercicios
 Re escribir los siguientes problemas. Deberá utilizar las nuevas
  instrucciones creadas.
      1. Karel debe ir al norte coordenadas (14,2) durante su camino deberá
       recoger los zumbadores(beepers) que encuentre a su paso y llevarlos a su
       destino.




                                                        Recuerda que los
                                                        mundos
                                                        están en el blog de
                                                        la clase.
                                                           Descargarlos.
Ejercicios
 2. Karel tiene como actividad recoger un zumbador que se
  encuentra en las coordenadas (9,2) regresar con el
  zumbador(beeper) y depositarlo en el lugar donde inicio su
  recorrido.
Ejercicios
   3. Karel tiene la siguiente actividad. Karel debe recoger los
    zumbadores (beepers) que están en el laberinto. Karel debe iniciar a
    recoger los zumbadores iniciando su recorrido hacia el Norte y
    terminando su recorrido para recoger los zumbadores hacia el Este.
    Una vez levantado el último zumbador debe colocar los zumbares uno
    a uno desde las coordenadas (1,10 hasta la 1,3). Karel debe llegar a su
    punto de partida y quedar mirando hacia el Norte.
Tarea

Mais conteúdo relacionado

Mais procurados

Manual De Pascal
Manual De PascalManual De Pascal
Manual De Pascal
MANUELRSG
 
Ciclos C++
Ciclos C++Ciclos C++
Ciclos C++
tacubomx
 
Estructuras de ciclo: while,for,do while
Estructuras de  ciclo: while,for,do whileEstructuras de  ciclo: while,for,do while
Estructuras de ciclo: while,for,do while
Alfredo Huamani Escobar
 
Creacion de scripts en linux
Creacion de scripts en linuxCreacion de scripts en linux
Creacion de scripts en linux
Gabriel Calderon
 
Michell instrucciones de ontrol
Michell instrucciones de ontrolMichell instrucciones de ontrol
Michell instrucciones de ontrol
royimar
 

Mais procurados (19)

Programacion
ProgramacionProgramacion
Programacion
 
Ppiosprogramacion 090925153826-phpapp01[1]Principios de Programación
Ppiosprogramacion 090925153826-phpapp01[1]Principios de Programación Ppiosprogramacion 090925153826-phpapp01[1]Principios de Programación
Ppiosprogramacion 090925153826-phpapp01[1]Principios de Programación
 
While y do while c++
While y do while c++While y do while c++
While y do while c++
 
Manual De Pascal
Manual De PascalManual De Pascal
Manual De Pascal
 
Aprendiendo de la sintaxiss
Aprendiendo de la sintaxissAprendiendo de la sintaxiss
Aprendiendo de la sintaxiss
 
Ciclos C++
Ciclos C++Ciclos C++
Ciclos C++
 
While do while
While do whileWhile do while
While do while
 
LibreríAs De Java
LibreríAs De JavaLibreríAs De Java
LibreríAs De Java
 
Estructuras de control repetitivo
Estructuras de control repetitivoEstructuras de control repetitivo
Estructuras de control repetitivo
 
Estructuras de ciclo: while,for,do while
Estructuras de  ciclo: while,for,do whileEstructuras de  ciclo: while,for,do while
Estructuras de ciclo: while,for,do while
 
Principios programacion
Principios programacionPrincipios programacion
Principios programacion
 
Shell script en linux
Shell script en linuxShell script en linux
Shell script en linux
 
Creacion de scripts en linux
Creacion de scripts en linuxCreacion de scripts en linux
Creacion de scripts en linux
 
Michell instrucciones de ontrol
Michell instrucciones de ontrolMichell instrucciones de ontrol
Michell instrucciones de ontrol
 
Programacionestructurada
ProgramacionestructuradaProgramacionestructurada
Programacionestructurada
 
CICLOS
CICLOSCICLOS
CICLOS
 
Cómo y para qúe usar un ciclo do while en c++
Cómo y para qúe usar un ciclo do while en c++Cómo y para qúe usar un ciclo do while en c++
Cómo y para qúe usar un ciclo do while en c++
 
100 1
100 1 100 1
100 1
 
Printf23
Printf23Printf23
Printf23
 

Destaque (8)

Ejercicios karel
Ejercicios karelEjercicios karel
Ejercicios karel
 
Mis practicas karel
Mis practicas karelMis practicas karel
Mis practicas karel
 
Ejercicios karel
Ejercicios karelEjercicios karel
Ejercicios karel
 
Ciclos y Condicionales - Iterate
Ciclos y Condicionales - IterateCiclos y Condicionales - Iterate
Ciclos y Condicionales - Iterate
 
Mis Practicas karel 404
Mis Practicas karel 404Mis Practicas karel 404
Mis Practicas karel 404
 
Mis practicas de karel
Mis practicas de karelMis practicas de karel
Mis practicas de karel
 
STEAM IT Up with the 8Cs
STEAM IT Up with the 8CsSTEAM IT Up with the 8Cs
STEAM IT Up with the 8Cs
 
Science Experiments on Tablets
Science Experiments on TabletsScience Experiments on Tablets
Science Experiments on Tablets
 

Semelhante a Extendiendo el Lenguaje (20)

Instrucciones Básicas
Instrucciones BásicasInstrucciones Básicas
Instrucciones Básicas
 
Jf 3 9_sg_esp(2)(3)
Jf 3 9_sg_esp(2)(3)Jf 3 9_sg_esp(2)(3)
Jf 3 9_sg_esp(2)(3)
 
Jf 3 9_sg_esp(2)(3) 9
Jf 3 9_sg_esp(2)(3) 9Jf 3 9_sg_esp(2)(3) 9
Jf 3 9_sg_esp(2)(3) 9
 
Greenfoot 9
Greenfoot 9Greenfoot 9
Greenfoot 9
 
Pra9
Pra9Pra9
Pra9
 
Jf 3 9_sg_esp(2)(3)
Jf 3 9_sg_esp(2)(3)Jf 3 9_sg_esp(2)(3)
Jf 3 9_sg_esp(2)(3)
 
CAPITULO 9 GREENFOOT
CAPITULO 9 GREENFOOTCAPITULO 9 GREENFOOT
CAPITULO 9 GREENFOOT
 
CAPITULO 9 DE GREENFOOT
CAPITULO 9 DE GREENFOOTCAPITULO 9 DE GREENFOOT
CAPITULO 9 DE GREENFOOT
 
Greenfoot 9
Greenfoot 9Greenfoot 9
Greenfoot 9
 
Capitulo9 greenfoot
Capitulo9  greenfootCapitulo9  greenfoot
Capitulo9 greenfoot
 
Jf 3 9_sg_esp(2)(3)
Jf 3 9_sg_esp(2)(3)Jf 3 9_sg_esp(2)(3)
Jf 3 9_sg_esp(2)(3)
 
Greenfoot 9
Greenfoot 9Greenfoot 9
Greenfoot 9
 
Capitulo 9
Capitulo 9Capitulo 9
Capitulo 9
 
Capitulo 9
Capitulo 9Capitulo 9
Capitulo 9
 
leccion 9
leccion 9leccion 9
leccion 9
 
Greenfoot 9
Greenfoot 9Greenfoot 9
Greenfoot 9
 
Greenfoot 9
Greenfoot 9Greenfoot 9
Greenfoot 9
 
Presentación de matlab electromagnetismo ...
Presentación de matlab electromagnetismo                                     ...Presentación de matlab electromagnetismo                                     ...
Presentación de matlab electromagnetismo ...
 
Bucles for next step do while loop loop while visual basic ejemplo
Bucles for next step do while loop loop while visual basic ejemploBucles for next step do while loop loop while visual basic ejemplo
Bucles for next step do while loop loop while visual basic ejemplo
 
Manual Practico de Pascal
Manual Practico de PascalManual Practico de Pascal
Manual Practico de Pascal
 

Mais de Lincoln School (14)

Introduccionalasbasesdedatos
IntroduccionalasbasesdedatosIntroduccionalasbasesdedatos
Introduccionalasbasesdedatos
 
Creando diagramas de flujo con dfd
Creando diagramas de flujo con dfdCreando diagramas de flujo con dfd
Creando diagramas de flujo con dfd
 
Tema 4 -_introduccion_a_razonamiento_algoritmico
Tema 4 -_introduccion_a_razonamiento_algoritmicoTema 4 -_introduccion_a_razonamiento_algoritmico
Tema 4 -_introduccion_a_razonamiento_algoritmico
 
Tema 3 metodología para la solución de problemas
Tema 3  metodología para la solución de problemasTema 3  metodología para la solución de problemas
Tema 3 metodología para la solución de problemas
 
Tema 1 introducción a la computadora
Tema 1   introducción a la computadoraTema 1   introducción a la computadora
Tema 1 introducción a la computadora
 
Historia de los lenguajes de programación
Historia de los lenguajes de programaciónHistoria de los lenguajes de programación
Historia de los lenguajes de programación
 
Html
HtmlHtml
Html
 
Ciclos y Condicionales
Ciclos y CondicionalesCiclos y Condicionales
Ciclos y Condicionales
 
Programación 2
Programación 2Programación 2
Programación 2
 
Programación 2 - karel1
Programación 2 - karel1Programación 2 - karel1
Programación 2 - karel1
 
03 algorithm properties
03 algorithm properties03 algorithm properties
03 algorithm properties
 
Algorithms and flowcharts1
Algorithms and flowcharts1Algorithms and flowcharts1
Algorithms and flowcharts1
 
Collaborative work with google docs
Collaborative work with google docsCollaborative work with google docs
Collaborative work with google docs
 
Movie maker
Movie makerMovie maker
Movie maker
 

Último

EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
FagnerLisboa3
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 

Último (11)

EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 

Extendiendo el Lenguaje

  • 1. Programación II Extendiendo el Lenguaje de Karel Ing. José Rubén Campos Alfaro Company LOGO
  • 2. Extendiendo el Lenguaje  Podemos enseñar nuevas instrucciones que ejecutan intrucciones mas simples.  Imagine que queremos que Karel gire a la derecha entonces tendríamos que indicarle que diera tres giros a la izquierda.  Entonces sería de gran utilidad contar con una instrucción turnright (gira a la derecha).
  • 3. Extendiendo el Lenguaje Subiendo la escalera  Karel se encuentra frente a una escalera como se muestra en la figura 3.1 compuesta por tres escalones de subida. Lleva a karel hasta el último Figura 3.1 escalón.
  • 4. Extendiendo el Lenguaje  Para que karel caminara sobre la escalera, nuestro código para subir un escalón sería el siguiente: move(); Este código lo tendremos que repetir turnleft(); 3 veces ya que es el número de escalones que Karel va a subir. turnleft(); turnleft(); move();
  • 5. Extendiendo el Lenguaje class program { Programa completo program() { move(); turnleft(); turnleft(); turnleft(); move() ; turnleft(); move(); turnleft(); turnleft(); turnleft(); move(); turnleft(); move(); turnleft(); turnleft(); turnleft(); move(); turnoff(); } }
  • 6. Definición de una Nueva Instrucción. Sintaxis para definir una nueva instrucción para Karel La palabra reservada define la Define <nombre_nueva_instrucción>() empleamos para decirle a Karel que le enseñamos una nueva { instrucción. <instrucciones> <instrucciones> Posteriormente viene el nombre de . la nueva instrucción, la cual no debe . ser igual al nombre de alguna otra . Instrucción nativa o ya definida. <instrucciones> } Por último, viene el código que deseamos que Karel Ejecute a través de la nueva instrucción. Nota: No hay ; después de la primera línea.
  • 7. Definición de una Nueva Instrucción.  Las instrucción puede ser una sola instrucción o un bloque de instrucciones creado con “{“ y “}”. Esto crea lo que se conoce como una entrada al diccionario de karel, que es donde está todo lo que karel puede y sabe ejecutar.
  • 8. Definición de una Nueva Instrucción.  Definamos la instrucción turnright. define turnright() { turnleft() turnleft() turnleft() }
  • 9. Definición de una Nueva Instrucción. •Empleemos la instrucción turnright en la definición de la instrucción subeEscalon() define subeEscalon() { turnleft(); move(); turnright(); move(); }
  • 10. Definición de una Nueva Instrucción. class program { program() define turnright() { { subeEs;calon() turnleft(); subeEs;calon() turnleft(); subeEs;calon() turnleft(); turnof() } } define subeEscalon() } { turnleft(); move(); turnright(); move(); }
  • 11. Razones para crear nuevas instrucciones  Es un buen hábito de programación de programación, el tener las nuevas instrucciones definidas en forma más clara y concisa posible.  Posibilidad de reutilización en futuros programas escritos.  Contar con una biblioteca de múltiples funciones de uso variado.
  • 12. Razones para crear nuevas instrucciones  La claridad en el código es de suma importancia cuando estamos programando.  Una aplicación sencilla es renombrar las instrucciones nativas (move, putbeeper, etc), para tenerlas de manera más clara y evitar errores a la hora de escribirlas.
  • 13. Razones para crear nuevas instrucciones  Ej. Redefiniendo define ponBiper() una { Instrucción de Karel. putbeeper(); } La claridad en un código nos ayuda a comprender que estamos haciendo y cómo estamos dividiendo nuestra tarea en tareas más pequeñas.
  • 14. Razones para crear nuevas instrucciones Ok, I got it! program () What!! program () { { tr(); iniciaPosicion(); move(); move(); pon(); colocaPila(); c(); cambiaDeAvenida(); pon(); colocaPila(); c(); cambiaDeAvenida(); rb(); recogeBeepers(); } } Programa poco claro Programa entendible
  • 15. Ambientes de Karel Posible estado inicial del mundo Posible estado final del mundo
  • 16. Razones para crear nuevas instrucciones  Al crear nuevas instrucciones con una labor específica, podemos reutilizar esa move(); misma instrucción en nuevos programas. turnleft();  Ej turnleft();  Pensemos que deseamos construir turnleft(); escalones de beepers sobre el mismo move(); mundo de la fig.2.1.1 Entonces nuestro programa solo estaría levemente Fig. 2.1.1 modificado en la función principal de la siguiente manera:
  • 17. Razones para crear nuevas instrucciones Podemos modificar la función program() subeEscalon agregándole al final { La instrucción pubbeeper. putbeeper(); subeEscalon(); program() putbeeper(); { subeEscalon(); turnleft(); putbeeper(); move(); turnoff(); turnright(); } move(); putbeeper(); Modificación de un } programa para una nueva tarea.
  • 18. Razones para crear nuevas instrucciones  Siempre es aconsejable seccionar nuestro problema en pequeñas tareas. La creatividad de un programador se basa en poder dividir una tarea en varias tareas de menor complejidad.  Esto se llama top-down .- tratamos de llevar a cabo una tarea por medio de realizarla desde lo general, seccionándola y simplificándola hasta llevarla a las instrucciones más simples (nativas) de Karel.
  • 19. Ejercicios  Re escribir los siguientes problemas. Deberá utilizar las nuevas instrucciones creadas.  1. Karel debe ir al norte coordenadas (14,2) durante su camino deberá recoger los zumbadores(beepers) que encuentre a su paso y llevarlos a su destino. Recuerda que los mundos están en el blog de la clase. Descargarlos.
  • 20. Ejercicios  2. Karel tiene como actividad recoger un zumbador que se encuentra en las coordenadas (9,2) regresar con el zumbador(beeper) y depositarlo en el lugar donde inicio su recorrido.
  • 21. Ejercicios  3. Karel tiene la siguiente actividad. Karel debe recoger los zumbadores (beepers) que están en el laberinto. Karel debe iniciar a recoger los zumbadores iniciando su recorrido hacia el Norte y terminando su recorrido para recoger los zumbadores hacia el Este. Una vez levantado el último zumbador debe colocar los zumbares uno a uno desde las coordenadas (1,10 hasta la 1,3). Karel debe llegar a su punto de partida y quedar mirando hacia el Norte.
  • 22. Tarea