Introducción a Karel el Robot y Programación
Introducción a Karel el Robot y Programación
Materiales de Apoyo
ESTADO DE VERACRUZ
Problemas de Guanajuato, Jalisco y Aguascalientes
Método D.F. y Estado de Mexico
Febrero 2010.
Karel el Robot
Índice de contenido
Introducción
1 Karel el Robot 6
1.1 Objetos en el Mundo de Karel 6
1.2 Componentes de Karel 7
1.3 Descripción del mundo de Karel 8
3 Mensajes de error 15
3.1 Errores de Sintaxis 15
3.2 Errores de lógica 16
6 Parámetros en funciones 48
Karel el robot es un programa que permite escribir algoritmos que resuelven problemas
dados en un ambiente gráfico simulado. El lenguaje que se utiliza para poner en practica los
algoritmos es el Pascal, que permite una programación estructurada con instrucciones de
repetición y de condicionamientos sencillos. Al ambiente gráfico simulado se le llama El
Mundo de Karel. Un mundo de Karel esta formado por calles, avenidas y objetos dentro del
mundo, estos objetos pueden ser muros por los que Karel no puede pasar; estos muros dan
forma a diferentes objetos en el mundo, ya sea, laberintos, escaleras, etc., obstáculos que
normalmente encontramos en nuestra vida cotidiana.
Estos elementos dan forma a simulaciones de situaciones que normalmente un robot como
ASIMO puede encontrar en su interacción con el ser humano. Para concluir, ASIMO y su
evolución es para muchos investigadores la Biblia de la robótica humanoide, otros
consideran que la robótica humanoide no es rentable, el tiempo y la propaganda que Honda
recibe gracias a su humanoide lo dirán, mientras tanto el que en otro tiempo fuera
fabricante de electrodomésticos y coches es ahora un componente vital de la historia de la
robótica. Y los simuladores como Karel el Robot nos permiten desarrollar aquellos
complejos algoritmos que estos robots tendrán que ejecutar para interactuar con nosotros.
Cada sensor es activado cuando detecta enfrente del mismo un muro, así que, un sensor
genera uno de dos valores dependiendo de una variable que pregunta si existe o no muro
frente al sensor. Ejemplo, si la variable es “frente-libre” y el sensor detecta que no existe un
muro enfrente, el sensor asigna el valor “verdadero” a la variable “frente-libre”
También Karel tiene un sensor que detecta cuando esta junto a un zumbador, de la misma
forma que los anteriores sensores genera uno de dos valores verdadero si esta junto a
zumbador o falso si no lo esta. La mochila de Karel también trabaja como sensor ya que
puede haber zumbadores en ella o no. por ejemplo, si en la mochila hay 5 zumbadores, la
variable “algún-zumbador-en-la-mochila” tendrá el valor de verdadero y falso en el caso de
que no existieran zumbadores en la mochila.
Karel tiene un brazo mecánico que recoge zumbadores colocados en las esquinas de su
mundo y coloca en la mochila. El brazo también puede tomar zumbadores de la mochila y
colocarlos en cualquier esquina de su mundo. Este brazo mecánico no cuenta con ningún
tipo de sensor, de manera que si le pedimos que recoja zumbadores de una esquina en
particular y en esa esquina no existieran zumbadores, Karel generará un error grave y se
apagará. Lo mismo pasaría si le pedimos que tome zumbadores de su mochila y la mochila
estuviera vacía, por lo tanto es responsabilidad del usuario de Karel usar el brazo mecánico
en situaciones que permitan su correcto funcionamiento.
El mundo de Karel también se complementa con otros objetos que llevan por nombre
zumbadores, estos zumbadores se representan por numero colocados en las esquinas del
mundo de Karel, cada esquina puede contener 0, 1, 2, ..., 99, 100,... o infinito número de
zumbadores que pueden ser recogidos o colocados por Karel en la ejecución del algoritmo.
Estos elementos permiten diseñar una representación grafica de una situación en particular
que presenta una problemática y de la cual tenemos que enseñarle a Karel a resolver.
Las otras dos instrucciones definidas, no producen errores graves, pero en el caso de ciclos
de repetición podrían generar resultados inesperados en la ejecución del programa:
Instrucción Acción
Crítica
gira-izquierda Provoca que Karel gire sobre su eje en un ángulo de 90° hacia la
izquierda de Karel.
apagate Esta instrucción le indica a Karel que se detenga apague sus sensores,
su brazo mecánico y que finalice toda actividad.
En el ámbito de la informática.- Forma correcta en que deben estar dispuestos los símbolos
que componen una instrucción ejecutable por el ordenador.
La sintaxis entonces es fundamental para que el ordenador, en este caso nuestro simulador
de un robot, funcione correctamente. Por lo tanto, todas las instrucciones del lenguaje que
maneja Karel deberán estar correctamente escritas.
“inicia-programa”
[Declaración de procedimiento”;”]
...
“inicia-ejecución”
Expresión General “;”
...
“termina-ejecución”
“finalizar-programa”
Declaración de un programa
inicia-programa
inicia-ejecución
avanza;
termina-ejecución
finalizar-programa
Programa 1
Nótese que al final de una “Expresión General” se coloca un punto y coma, el punto y coma
son fundamentales para indicarle al programa que hemos terminado de escribir una
instrucción completa. Existen instrucciones que se pueden escribir en más de una línea, sin
embargo el punto y coma no debería ir uno por línea, sino, uno solo hasta el final de toda la
instrucción.
En este ejemplo vemos tres punto y comas, avanza lleva punto y coma porque es una
instrucción completa, según su sintaxis no hay más que escribir “avanza”. Gira-izquierda
también lleva su punto y coma porque es una instrucción completa, como en el caso de
“avanza”. El punto y coma que esta en la ultima línea corresponde a la instrucción “si”
“entonces”. Este es un ejemplo de instrucciones que se escriben en más de una línea.
“inicia-programa”
[Declaración de procedimiento”;”]
...
“inicia-ejecución”
Expresión General “;”
...
“termina-ejecución”
“finalizar-programa”
Ejemplo:
Ahora estamos listos para usar una nueva instrucción que se llama gira-derecha y la forma
de usarla es invocándola en el sección de “Expresión General” de nuestro programa
principal.
inicia-programa
“define-nueva-instruccion” gira-derecha como inicio
gira-izquierda;
gira-izquierda;
gira-izquierda;
fin;
inicia-ejecución
gira-derecha;
termina-ejecución
finalizar-programa
Programa 2
Estas funciones booleanas solo pueden tener uno de dos valores, cierto o falso. Por lo tanto
frente-libre puede tener el valor verdadero o falso dependiendo del resultado que genere el
sensor que esta en la parte frontal de Karel. En las funciones booleanas al hablar de frente-
libre, izquierda-libre o derecha-libre significa que no existe muro bloqueando la señal del
sensor dado, es decir si frente-libre es verdadero, significa que el sensor de Karel no detecta
muro frente a él, si existiera un muro, entonces frente-libre sería falso.
Ejemplos:
Función Valor
derecha-libre Falso
derecha-bloqueado Verdadero
3 Función Valor
junto-a-zumbador Verdadero
no-junto-a-zumbador Falso
3 Mensajes de error
No existe programador alguno que no cometa algún tipo de error, de hecho es común
cometerlos, y necesitamos identificar cada error para poder corregirlo. Existen dos
principales tipos de error, los errores lógicos y los errores de sintaxis.
En seguida listaremos una serie de errores que común mente cometemos, su significado y la
posible solución.
Estos fueron algunos de los errores que comúnmente cometemos al codificar un algoritmo
en Karel, no son todos por supuesto, pero lo que tenemos que tener bien presente es que si
estamos en la sección de programa y compilamos y nos marca un error, este siempre será
un error de sintaxis y su corrección es tan simple, como ir a la pestaña de ayuda y ver la
forma en la que se debe escribir correctamente la instrucción, es decir, revisar su sintaxis.
Existen otros errores lógicos que aunque no son marcados por Karel, es evidente que
existen. Uno de ellos es cuando le pedimos a Karel que haga una acción y no consideramos
cuando se detenga en la ejecución de la misma, por ejemplo, si le pedimos a Karel que
avance mientras su frente este libre, debemos de tener en cuanta que debe haber una
condición que haga que Karel se detenga en algún momento, ya que de no hacerlos, Karel
podría avanzar indefinidamente.
iniciar-programa
inicia-ejecucion
avanza;
avanza;
avanza;
avanza;
apagate;
termina-ejecucion
finalizar-programa
iniciar-programa
inicia-ejecucion
repetir 4 veces inicio
avanza;
fin;
apagate;
termina-ejecucion
finalizar-programa
Que nos da el mismo resultado, pero si se exactamente donde esta el zumbador y cuantas
repeticiones de la instrucción avanza necesito para llegar a él, solo cambió el valor de la
ExpresiónEntera por el valor correcto y me habré ahorrado el escribir tanto código como en
el caso anterior, o en los casos donde el zumbador estuviera a una distancia más grande.
Donde
Donde:
Termino es una función booleana.
Y expresión es una instrucción o grupo de instrucciones.
Ejemplo:
Supongamos que queremos que Karel avance hasta llegar al zumbador, como en el
problema anterior, solo que el mundo ahora es el siguiente:
iniciar-programa
inicia-ejecucion
mientras no-junto-a-zumbador hacer inicio
avanza;
fin;
apagate;
termina-ejecucion
Finalizar-programa
Según el mundo, necesitamos que cuando Karel detecte su frente bloqueado, haga un giro a
la izquierda para esquivar el muro y continuar avanzando hasta el zumbador. Entonces,
necesitamos que Karel haga una acción (girar a la izquierda) si se cumple con la función
booleana es decir, cuando esta sea Verdadera.
iniciar-programa
inicia-ejecucion
mientras no-junto-a-zumbador hacer inicio
si frente-bloqueado entonces inicio
gira-izquierda;
fin;
avanza;
fin;
apagate;
termina-ejecucion
finalizar-programa
Instrucción Se ejecuta si
si frente-libre entonces El código A se ejecuta o no, dependiendo de si el frente este
inicio libre o no.
A;
fin;
si frente-libre entonces Se ejecuta el código A si el frente esta libre y si no lo esta, se
inicio ejecuta el bloque de código B.
A;
fin
sino
inicio
B;
fin;
Si usamos esta modalidad de la instrucción si entonces sino, nuestro código del problema
anterior lo podemos escribir así:
iniciar-programa
inicia-ejecucion
mientras no-junto-a-zumbador hacer inicio
si frente-bloqueado entonces inicio
gira-izquierda;
fin
sino inicio
avanza;
fin;
fin;
apagate;
termina-ejecucion
finalizar-programa
Como vemos obtenemos el mismo resultado, pero nuestro código esta escrito de una
manera más estructurada y se puede leer mejor.
Por otro lado, existen dos funciones que nos permiten sumarle 1 a un número y restarle 1.
Pero... ¿qué es una función? Una función es una instrucción que devuelve un valor, es
decir, reciben un parámetro (o más) que luego procesa, para al final regresar un valor; por
ejemplo, la función booleana junto-a-zumbador devuelve verdadero si Karel está parado
junto a un zumbador y falso si no lo está. En Karel no se pueden declarar funciones nuevas,
pero se pueden usar las que ya existen.
Las funciones sucede y precede son dos instrucciones que reciben un parámetro,
posteriormente, devuelven un número más y un número menos (respectivamente) que el
que le enviamos.
sucede(xxx);
donde xxx es un número o un parámetro, y la función precede se escribe así:
precede(xxx);
donde xxx es un número o un parámetro.
Debido a que devuelven un número, solo nos pueden servir poniéndolas en alguna
instrucción o sentencia que reciba un número, como repetir/veces, otro sucede o precede o
una instrucción personal que reciba un parámetro.
nota que n se "incrementa" (se le suma uno). Si en vez de sucede, pusiéramos precede,
Karel dejaría n - 1 zumbadores, porque la n se "decrementa" (se le quita uno) cuando se
pone dentro de una función precede.
Preparemos nuestras herramientas de trabajo: 3 hojas en blanco y nuestro lápiz bien afilado.
A continuación veremos el problema que debes de resolver y para el cual debemos llegar a
resolverlo en todos los casos, ó sea que nos dé 100 puntos. Sin más preámbulo, vamos a
leerlo.
Problema
El día de hoy Karel va a visitar el lago, y tú, como dueño de la trajinera Morpheus, tienes
que llevarlo por el recorrido.
Consideraciones
Karel inicia al principio del recorrido orientado hacia donde éste se dirige.
Karel no tiene zumbadores en la mochila.
Los canales del lago son muy angostos, y se representan con un camino de ancho de
1.
Mientras vas en el recorrido, recuérdale a Karel no tirar basura en el lago.
Puedes saber que llegaste al final del recorrido, porque encontrarás un beeper.
El camino sólo se cierra al final del recorrido, junto al beeper.
Karel debe de terminar en el final del recorrido.
Area
Área Promoción del Uso Educativo de las TIC’s -CITE Página 27
5.3. 2° Paso: Mundos
Una vez que tenemos una idea más clara de los que nos piden, es
bueno pensar en los diferentes mundos a los que aplica la
descripción del problema (te recuerdo que realizar esto cuenta entre
un 20% y un 40% de tu calificación final), ya que como se
mencionó anteriormente, si podemos pensar en las diferentes
posibilidades con que nos van a evaluar, seguramente nos llevará a
pensar una solución que satisfaga el 100% de los mundos con que
nos calificarán.
En la siguiente figura podemos apreciar que fuimos capaces de
encontrar 10 casos diferentes y si hacemos un programa que sea
capaz de resolver estos 10 casos, ten la seguridad de que tendrás una alta calificación.
Revisando los casos, puedes ver que no es necesario dibujar perfectamente el mundo de Karel,
sino que debemos escribirlos de una forma clara, sencilla y rápida. Por ejemplo, en el caso 10 que
mide 100x100, se indica el ancho y largo de 100 con unas señales de acotamiento similares a las
que se usan en planos.
Area
Área Promoción del Uso Educativo de las TIC’s -CITE Página 28
A continuación haremos algunas observaciones de los casos desarrollados:
Te aseguro que si tienes la suficiente paciencia y dedicación para trabajar de esta forma de ahora
en adelante en cada unos de tus problemas de programación, el resultado que obtendrás te llevará
a consolidarte como un verdadero ganador.
¿Esto me acerca a la solución, por qué?
Area
Área Promoción del Uso Educativo de las TIC’s -CITE Página 29
5.4. 3er. Paso: Idea de solución
Una vez que ya hemos comprendido el problema, debemos
pensar en alguna solución (más adelante se hablará más de
cómo ayudarse a tener ideas de solución). De una manera
simple nos podemos basar en las siguientes 3 ideas:
“Que propiedades tiene este problema”, “Otra forma de
plantearlo”, “subdividir en casos”, “se parece a algo ya
resuelto”.
En este caso propongo “otra forma de plantearlo” y “que
propiedades tiene este problema” debido a que podemos
ver el problema como hacer que Karel camine hasta que encuentre un zumbador. La idea es
hacer un programa que haga que Karel camine mientras no esté junto a un zumbador. Dentro
de las propiedades de este problema destaca el que Karel no debe regresar por un camino
que ya ando, si observamos bien a Karel solo podrá caminar hacia adelante, girar a la
izquierda o girar a la derecha, basados en esta propiedad del problema cuando el camino
presente algunos quiebres (variaciones de orientación hacia donde caminará Karel), Bastaría
con que Karel ajuste su orientación ya sea a la izquierda o la derecha (dependiendo de donde
tenga el camino libre) y hacer que Karel avance una vez que se ha orientado correctamente
(que el frente este libre), esto es, se debe ajustar la orientación de Karel con la finalidad de
lograr una posición en que pueda moverse (de ser posible, una posición de frente libre) y
avanzar. De los casos que construimos, podemos apreciar que cada vez que avanza Karel
pueden existir las siguientes 4 situaciones:
2. Que el frente esté libre. Para este caso no debemos hacer ningún
ajuste.
Area
Área Promoción del Uso Educativo de las TIC’s -CITE Página 30
Con lo que vemos, el problema se resume a un problema sencillo de hacer: que Karel camine y
ajuste su orientación mientras no esté junto a un zumbador.
Es importante que te des cuenta que todo esto se hace en la mente y, ayudado de nuestras
herramientas exclusivas (papel y lápiz); nosotros debemos anotar la idea para que no se nos
olvide como se muestra a continuación:
Nuestro programa se puede ver muy simple. Nos ayudaremos de un diagrama de bloques
(llamado de bloques porque usamos cuadros para representar las ideas generales). Como
podemos apreciar, la nube que rodea nuestros bloques representa el problema que una vez
habiéndolo dividido en 2, resulta más simple resolver 2 problemas
menores que uno mayor. Esta figura muestra el bloque de
control que hará que “Karel camine mientras no está junto a
un zumbador”, y el bloque de la nueva instrucción llamada
orientar que “ajustará la orientación de Karel en caso de
ser necesaria”.
En este momento, ya estamos listos para planificar el
problema de acuerdo a la idea de la sección anterior, es
decir, construir la escalera para llegar nuestra meta que
se ubica en la cima. Esto no lo debemos hacer; sin
embargo, en este apunte lo mostraré para ver cómo se
unen los conceptos teóricos de elaboración de un programa
con la práctica de hacer un programa. Como sólo se muestra de
una manera ilustrativa, utilizaremos los recuadros redondeados. Y el tipo de letra en
cursivas.
Area
Área Promoción del Uso Educativo de las TIC’s -CITE Página 31
5.5. 4° Paso: Codificación
En la parte de la orientación quedaría como lo muestra la siguiente figura. Una buena práctica es
hacerle una prueba de escritorio y ver que funciona en todos los casos.
Area
Área Promoción del Uso Educativo de las TIC’s -CITE Página 32
5.6. 5° Paso: Prueba
Area
Área Promoción del Uso Educativo de las TIC’s -CITE Página 33
Dejándonos en esta posición, se llamará a la rutina orientar, la cual pregunta si el frente está
bloqueado, cumpliéndose en este caso: por lo tanto, pregunta si la izquierda está libre, siendo
afirmativamente, haciendo que Karel haga un giro a la izquierda.
Area
Área Promoción del Uso Educativo de las TIC’s -CITE Página 34
Dejándonos, finalmente, en la posición correcta para que siga su recorrido.
Area
Área Promoción del Uso Educativo de las TIC’s -CITE Página 35
Ahora haremos la prueba que cumpla en el caso de que Karel se deba mover hacia la derecha.
Como se muestra a continuación, nuestra rutina de control hace que Karel camine un paso.
Dejándonos en esta posición, se llama a nuestra rutina orientar, la cual pregunta si el frente está
bloqueado, esto siendo afirmativo; entonces pregunta si la izquierda está libre, siendo negativo
para este caso; entonces, Karel hará 3 giros a la izquierda:
Area
Área Promoción del Uso Educativo de las TIC’s -CITE Página 36
Al final, nos dejará en la posición correcta.
Area
Área Promoción del Uso Educativo de las TIC’s -CITE Página 37
Area
Área Promoción del Uso Educativo de las TIC’s -CITE Página 38
En este punto ya estamos seguros que nuestro programa va a funcionar bastante bien.
Area
Área Promoción del Uso Educativo de las TIC’s -CITE Página 39
A continuación, te muestro las hojas de trabajo que se realizaron antes de hacer el programa en la
computadora.
Area
Área Promoción del Uso Educativo de las TIC’s -CITE Página 40
Area
Área Promoción del Uso Educativo de las TIC’s -CITE Página 41
5.7. 6° Paso: Entrega
Lo que vamos hacer ahora es escribir los casos en el Karel.
Recuerda que es importante guardar los mundos (casos), ya que
debemos evitar estar reconstruyendo mundos si nuestro programa
presenta una falla.
Una buena práctica es guardarlo con el nombre del problema
seguido de un número.
A continuación se muestran las figuras de 3 mundos construidos
(recuerda que debes hacer los 10 mundos y guardarlos):
Area
Área Promoción del Uso Educativo de las TIC’s -CITE Página 42
La siguiente figura representa el mundo 8 (canales_08.mdo). Este mundo representa todas las
posibles variantes que puede tener en cuanto a cambios de orientación: hacia el norte, hacia el
este, hacia el oeste y hacia el sur.
A continuación les muestro la imagen de abrir un mundo en donde vemos que ya están guardados
los 10 mundos del problema “Los canales del lago”.
Area
Área Promoción del Uso Educativo de las TIC’s -CITE Página 43
Posteriormente pasamos a escribir el programa en Karel, como se muestra en la siguiente figura.
Debes fijarte que el programa se escribe indentando las instrucciones y como verás se ve muy
claro (yo diría que hasta se ve elegante).
Area
Área Promoción del Uso Educativo de las TIC’s -CITE Página 44
Ahora sólo falta probarlo con todos los mundos (casos) que fuiste capaz de pensar. Si al llegar a
este punto descubres un error en tu idea de solución, te darás cuenta del tiempo que te ahorrarás
al haber guardado tus mundos, ya que no los volverás hacer cada vez que tengas que probar tu
programa. A continuación se muestran 2 mundos que fueron probados satisfactoriamente, tú sólo
debes hacer el programa en un solo lenguaje; aquí muestro un ejemplo en Java y el otro en
Pascal, porque este libro está dirigido a los profesores y alumnos de ambos lenguajes.
Por último, como podrás ver, tu programa funciona porque seguramente ya lo probaste con todos
los casos y no tuviste error alguno, así que ya lo puedes entregar o continuar haciendo el siguiente
problema, con la seguridad de que tu solución te dará los 100 puntos del problema. Te
recomiendo que vayas midiendo el tiempo de elaboración de un programa; en cuanto domines el
procedimiento para hacer un programa verás que es muy sencillo y rápido hacer un problema.
Area
Área Promoción del Uso Educativo de las TIC’s -CITE Página 45
5.8. Tips para alumnos
A continuación te hago una lista en importancia de los tips que nunca debes de brincarte y que te
ayudarán a lograr un mejor desempeño.
Area
Área Promoción del Uso Educativo de las TIC’s -CITE Página 46
5.9. Tips para profesores
A continuación te hago énfasis en lo que ayudará a mejorar el desempeño de tus
alumnos en las clases.
Area
Área Promoción del Uso Educativo de las TIC’s -CITE Página 47
6. Parámetros en funciones
Hemos visto ya la sentencia repetir/veces que nos ayuda a iterar un bloque de código un determinado
número de veces, pero siempre teníamos que colocar un número fijo en la sentencia, ¿te has puesto a
pensar que pasaría si por ejemplo necesitara una instrucción que volteara a Karel 180°? Pues la
respuesta natural sería "haz una instrucción que haga que Karel gire dos veces". Pero... ¿crees que sería
posible usar la instrucción que hicimos anteriormente gira-derecha? Si existiese alguna forma de que
en vez de poner 3 en la sentencia repetir/veces pusiésemos un número variable, podríamos usar la
instrucción tanto para girar a la derecha como para dar media vuelta.
Ahora, todas las nuevas instrucciones declaradas pueden además llevar un parámetro, ¿pero que es un
parámetro?, pues es un numerito que le podemos mandar a la instrucción cuando la llamamos, y como
cuando declaramos la instrucción no sabemos con qué número la vamos a llamar, reemplazamos el
número por una palabra. ¿Alguna vez has oído la frase "los primeros n números"?, pues precisamente
eso son los parámetros. Podemos en vez de n poner 1, 2 ó 3, quedando "los primeros 3 números" por
ejemplo. Este parámetro puede tener el nombre que sea, siempre y cuando la primer letra no sea un
número y el nombre del parámetro no sea el mismo que una palabra del lenguaje, por ejemplo no se
puede llamar si, repetir, avanza, etc.
Este parámetro se puede usar en cualquier lugar dentro de la definición de la instrucción, en cualquier
sentencia o instrucción que necesite un número (justo como la sentencia repetir/veces). Redefinamos
ahora la instrucción gira-derecha como la instrucción gira:
De esta forma si escribimos en nuestro código "gira(3);" Karel girará a la derecha, si escribimos
"gira(2);" dará media vuelta, si escribimos "gira(1);" girará a la izquierda y si escribimos "gira(0);" no
hará nada.
Aquí puedes ver como se escribe una instrucción con un parámetro en general:
define-nueva-instruccion xxx (yyy) como inicio
zzz
fin;
donde xxx es el nombre de la instrucción, yyy es el nombre del parámetro y zzz es cualquier número de
instrucciones.
Area
Área Promoción del Uso Educativo de las TIC’s-CITE Página 49
Guía de
Ejercicios
Area
Área Promoción del Uso Educativo de las TIC’s-CITE Página 50
Ejercicio 1: Ayudando a mamá
Karel ha crecido un poco y ahora su mamá le ha pedido que recoja la basura (zumbadores) de su casa y
se los tire al vecino.
Consideraciones
Karel puede empezar en cualquier posicion de su casa
No sabemos cuanta basura habra en cada lugar
Karel sabe que termino de recogerlos al llegar a la barda de su casa
La barda tiene una altura indeterminada.
Karel debera dejar la basura en el piso de la casa del vecino
No importa en donde ni hacia donde queda apuntando karel
Ejemplo
Mundo inicial Mundo final
Area
Área Promoción del Uso Educativo de las TIC’s-CITE Página 51
Ejercicio 2: Rekreo
Descripción
Después de 2 horas de estudio el maestro les ha dado a los alumnos tiempo de recreo, el cual acaba de
terminar, la campana del Colegio no sirve por lo que requerimos tu ayuda.
Problema
Deberás salir al patio y decirle a los alumnos que ha terminado el recreo y deben regresar al aula para la
segunda parte de la clase. El sol esta fuerte así que todos los alumnos se encuentran recargados en la
pared del salón que da hacia el patio de juego.
Los alumnos deberán hacer una fila en la puerta de entrada del salón
Consideraciones
Tu programa será evaluado con distintos casos de prueba
Karel inicia en la puerta del salón orientado hacia la salida
Los estudiantes están representados con 1 zumbador
Todos los alumnos se encuentran en la parte externa del salón pegados a la pared
El salón es rectangular o cuadrado
Desconoces las dimensiones del salón
Karel deberá terminar posicionado después del último alumno de la fila, sin importar su
orientación
Entrada Salida
Area
Área Promoción del Uso Educativo de las TIC’s-CITE Página 52
Area
Área Promoción del Uso Educativo de las TIC’s-CITE Página 53
Ejercicio 3: ¡Tache!
Descripción
Karel vive dentro de un cuadrado.
Problema
Tu tarea consiste en poner un tache dentro del cuadrado.
Consideraciones
Karel tiene la cantidad suficiente de zumbadores para hacer su tarea en la mochila.
No habrá paredes dentro del cuadrado.
No habrá zumbadores dentro del cuadrado.
La posición y orientación inicial de Karel es desconocida.
Al terminar no importa la orientación ni posición de Karel.
Ejemplo:
Entrada
Salida
Area
Área Promoción del Uso Educativo de las TIC’s-CITE Página 54
Ejercicio 4: Medias pirámides
Descripción
Es bien sabido que en la ciudad e Karelotitlán todos los habitantes tienen sus casas en forma de
pirámides, sin embargo, el excéntrico Karelerac quiere ser diferente a los demás y desea construir su
casa con sólo la mitad de una pirámide.
Problema
Ayuda a Karelerac a construir una media pirámide creciente hacia la derecha con los zumbadores que
lleva en la mochila.
Consideraciones
Karel empieza en la posición (1,1) orientado al norte.
Karel lleva en la mochila un número "triangular" de zumbadores, por lo que nunca se quedará
sin zumbadores durante la construcción.
Karelerac es un nombre palíndromo (o casi palíndromo).
No importa la posición ni la orientación final de Karel.
Ejemplo:
Area
Área Promoción del Uso Educativo de las TIC’s-CITE Página 55
Ejercicio 5: Cosecha de Baseball
Nuestro querido Karel sembro un campo de beepers despues de ir a un partido de Baseball. El trabajo
de Karel será hacer una cosecha de un campo en forma de rombo.
Area
Área Promoción del Uso Educativo de las TIC’s-CITE Página 56
Ejercicio 6: “Repartiendo juguetes”
Karel esta jugando con su amigo mando, tienen juguetes y los van a repartir, ayudale a karel
Ejemplo:
Area
Área Promoción del Uso Educativo de las TIC’s-CITE Página 57
Ejercicio 7: EduKarel
Descripción
En OMiJal nos hemos dado cuenta de la falta de material de estudio para aprender KAREL, por ellos
estamos preparando una serie de actividades que nos llevara a crear un sitio WEB exclusivo de Karel,
con tutoriales, ejercicios, problemarios, etc. Para ello, tu nos ayudaras en la planeación
Actualmente cada quien aprende Karel como puede, tu misión es buscar a los interesados en aprender
Karel y llevarlos a un aula donde se les dara un taller introductorio.
Problema
Ayuda a EduKarel a localizar a los interesados en aprender (2 zumbadores) y llévalos al aula!
Consideraciones
Area
Área Promoción del Uso Educativo de las TIC’s-CITE Página 58
Ejercicio 8: Siguiendo una llínea.
Para este problema el mundo de Karel constará de una línea formada por cuadros consecutivos con 1
zumbador, como el que se muestra en la figura.
La línea, como se muestra, puede tener vueltas. Las vueltas, en caso de que las haya, siempre serán de
90 grados. La línea nunca se cruza sobre si misma, y siempre tiene un ancho de una posición. En el
caso en que una línea diera vuelta en “U” siempre habrá al menos una casilla en blanco separando la
ida y la vuelta. La línea siempre tendrá un inicio y un final.
Independientemente de donde este situada la línea, Karel siempre estará posicionado en uno de los
extremos de la misma.
Deberás escribir un programa que haga que Karel recorra la línea y se sitúe en el otro extremo de la
misma.
Tu programa obtendrá puntos si Karel termina en la posición donde esta el otro extremo de la línea sin
importar hacia donde este orientado.
Por ejemplo, para la figura anterior, tu programa obtendrá puntos, si al final de la ejecución Karel esta
en la posición que se muestra en la figura 2. No importa la orientación, sólo la posición.
La línea puede estar en cualquier posición dentro del mundo, y nunca tendrá un largo mayor a 500
casillas.
Area
Área Promoción del Uso Educativo de las TIC’s-CITE Página 59
Ejercicio 9: Igualando las columnas
Descripción:
Incialmente Karel se encuentra orientado al ESTE en la posición (1,6) de su mundo. Comenzando por
la primera columna donde esta Karel y hacia la derecha hay 10 columnas de zumbadores de diferentes
alturas. Cada columna es una secuencia ininterrumpida de posiciones con 1 zumbador (ver figura de
ejemplo). Las columnas tienen alturas diferentes que pueden ir desde 1 hasta 20.
A la derecha de las 15 columnas hay una pared vertical que se eleva hasta la posición 30.
Debes escribir un programa que haga que Karel iguale la altura de todas las columnas pasando
zumbadores de una columna a otra.
Area
Área Promoción del Uso Educativo de las TIC’s-CITE Página 60
Ejercicio 10: Karel el conquistador
Area
Área Promoción del Uso Educativo de las TIC’s-CITE Página 61
Tarea 1: Karel Traviesa
Historia
El ciclista Karel Armstrong se inscribió a una carrera a Mundo-traviesa. Esta carrera la gana el que
llegue primero desde la primera avenida hasta la última avenida. La meta está formada por toda una fila
vertical de beepers (en la última avenida). En el camino desde la primera avenida hasta la meta hay
obstáculos (paredes verticales) que impiden el paso al ciclista Armstrong. Sin embargo, siempre existe
una forma de seguir avanzando (es decir, nunca hay una pared corrida desde la primera hasta la última
calle).
Problema
Escribe un programa que lleva a Karel desde su posición inicial (siempre volteando hacia el este) hasta
la avenida llena de beepers.
Consideraciones
Area
Área Promoción del Uso Educativo de las TIC’s-CITE Página 62
Tarea 2: DISTRIBUYE ZUMBADORES
DESCRIPCION
Karel tuvo una gran fiesta en su casa el fin de semana, y en varias partes de su casa quedaron restos de
basura, Karel esta preocupado que sus padres lo descubran, por lo que decidió recoger toda la basura y tirarla
en diferentes botes de basura de una manera equivalente.
PROBLEMA
Tu tarea consistirá en construir un programa que ayude a Karel a recoger la basura, que se representa con “n”
montones de zumbadores con “x” zumbadores cada uno, y distribuirlos equitativamente en los 4 botes de su
casa que se encuentran en las esquinas empezando por el bote de la esquina inferior izquierda y siguiendo por
el bote del norte.
Inicialmente, Karel se encuentra en la posición (1,1) orientado hacia el norte. La casa de Karel puede ser
cuadrada o rectangular con un tamaño desde (1,1) hasta (99,99)
Inicialmente no puede haber basura tirada (zumbadores), en los botes, no importa la orientación ni posición final
de Karel.
Area
Área Promoción del Uso Educativo de las TIC’s-CITE Página 63
Tarea 3: Diez Avenidas con Vallas
Karel se encuentra en una competencia de carrera. Es necesario que recorra un camino que tiene vallas
(obstáculos) hasta llegar al final donde se encuentra un beeper. El problema tiene las siguientes
ordenes:
Karel inicia siempre al principio de la pista mirando al Este (dirección a la que corre) y pegado
a la derecha.
Karel siempre debe ir lo más apegado que pueda a la pared derecha.
Las vallas siempre están sobre las avenidas (verticales), son de longitud uno y no hay dos que
estén en avenidas consecutivas.
El número de vallas no esta determinado (no puedes saber cual es la configuración de las
vallas).
La longitud de la pista no esta determinada.
La carrera termina cuando llega a un beeper.
EJEMPLO 1
Area
Área Promoción del Uso Educativo de las TIC’s-CITE Página 64
Tarea 4: “LA HUIDA”
EJEMPLO:
Area
Área Promoción del Uso Educativo de las TIC’s-CITE Página 65
Tarea 5: Pintando la ciudad
Historia
En la ciudad natal de Karel, siempre se han preocupado por la estética de las calles, por lo que
pintan cada dos meses algunas de ellas, no siempre son las mismas, sólo las más deterioradas, y
Don Karlopolus (el papá de Karel) es el encargado de hacerlo. En esta ocasión, por problemas de
salud ha pedido a Karel pintarlas, y solo le ha dejado una marca que señala la intersección de las
calles que tendrá que pintar por completo.
Problema
Karel tiene que pintar las calles y tienes que ayudarle. Una calle pintada esta llena de zumbadores
(una línea de zumbadores en 1), y las marcas que dejó el papa de Karel son dos zumbadores. La
ciudad siempre es de forma rectangular y está delimitada por paredes.
Consideraciones:
1. Karel inicia en la esquina inferior izquierda.
2. Karel tiene que dejar toda la calle pintada, no puede dejar las marcas que su papa puso.
3. Los zumbadores que están en la ciudad son siempre de tamaño uno o dos.
4. Karel lleva infinito número de zumbadores.
5. No sabes cuantos habitantes tiene la ciudad.
6. No existen paredes dentro de la ciudad.
7. No importa la posición ni orientación final de Karel
Area
Área Promoción del Uso Educativo de las TIC’s-CITE Página 66
Tarea 6: ZUMBADOR POR ZUMBADOR
Descripción
Karelandia ha tenido unas elecciones para reina de la primavera, pero han quedado dudas sobre el
conteo, ambas candidatas a reina de Karenlandia (Diana y Elba) han pedido una revisión ya que
sospechan que hubo votos “perdidos”
Problema
Ayuda a KarelIFE a localizar votos (zumbadores) perdidos y dárselos a la candidata correcta.
Los votos 1 son de Diana (esquina inferior izquierda), los Votos 2 son de Elba (esquina inferior
derecha)
Consideraciones
Tu programa será evaluado con 5 distintos casos de prueba
Karel inicia en la parte inferior izquierda, donde están los votos de Diana
Los votos perdidos (1) son de Diana, los (2) de Elba
No hay votos perdidos en la primera línea
El mundo está delimitado por paredes.
Los votos (1 o 2) valen lo mismo por lo que si encuentras votos de Elba (2) solo deberás
agregarle 1 a su votación.
Ejemplo:
Entrada Salida
Area
Área Promoción del Uso Educativo de las TIC’s-CITE Página 67
Tarea 7: Sumar.
Para este problema deberás hacer un programa que sume un conjunto de números, que puede tener
desde 2 hasta 10 elementos.
Karel esta posicionado inicialmente en la posición (1,1) orientado hacia el norte. La línea horizontal
que se muestra entre las filas 1 y 2 se extiende hasta el final del mundo.
Los números que se tienen que sumar se encuentran en las filas 2, 3, ... Todos los números tienen su
cifra menos significativa en la columna 9, y cada número nunca excederá a las 5 cifras. Los números
siempre estarán ordenados por número de cifras, con el número con más cifras hasta abajo.
Tu programa deberá hacer que Karel sume los números y escribir el resultado de la suma en la fila 2,
con el dígito menos significativo en la columna 9.
Por ejemplo para el mundo que se muestra en la figura anterior el resultado correcto sería
No importa en donde quede Karel, ni su orientación ni los zumbadores que existan en otras posiciones
del mundo, siempre y cuando en la fila 2, a partir de la columna 9 se encuentre la suma de los números.
Area
Área Promoción del Uso Educativo de las TIC’s-CITE Página 68
Ejercicio recursividad 1: Midiendo la distancia
Problema
Debes escribir un programa que permita que Karel mida la distancia entre su posición inicial y una
pared. Como resultado, Karel deberá dejar en la esquina inferior izquierda del mundo un beeper por
cada calle que este entre ésta y la pared.
Consideraciones
Inicialmente Karel se encuentra orientado hacia el ESTE en la esquina inferior izquierda de su
mundo.
A la derecha de Karel, a una distancia desconocida hay una pared vertical.
Karel Tiene 100 beepers en su Beeper Bag.
No importa la dirección y posición con la que termine Karel.
Ejemplo:
Area
Área Promoción del Uso Educativo de las TIC’s-CITE Página 69
Ejercicio Recursividad 2: Leyendo el periódico
Descripción
Después de una larga noche de sueño, Karel se ha levantado y se ha dirigido a su sala dispuesto a leer
el periódico.
Sin embargo, este día el repartidor no dejó el periódico en la puerta de su casa, esta vez, lo dejó en la
esquina de la calle porque Karel no le ha dado propina.
Problema
Escribe un programa que permita a Karel ir por el periódico y regresar a su sala a leerlo tranquilamente.
Consideraciones
La casa de Karel se encuentra en algún lugar del mundo, está representado por un rectángulo de
paredes de 3 X 3 y tiene una salida en la pared izquierda como se muestra en el mundo de
ejemplo.
La sala de la casa de Karel, se encuentra en la esquina inferior izquierda de su casa.
Karel está inicialmente en la sala de su casa.
El periódico se encuentra en la esquina (1,1) del mundo representado por un beeper.
Karel no tiene zumbadores en la mochila.
Karel está muy interesado en leer los anuncios clasificados.
Karel debe de tomar el periódico y regresar a su sala, en donde debe poner el periódico (beeper)
en el suelo.
No importa la orientación final de Karel.
Además de la casa de Karel y del periódico, no hay más paredes o beepers en el mundo.
Entrada Salida
Area
Área Promoción del Uso Educativo de las TIC’s-CITE Página 70
Ejercicio Recursividad 3: Karel Topografo
Karel debe calcular el perímetro de un terreno rectangular.
Especificaciones:
Entrada
Mundo: El rectángulo puede estar situado en cualquier parte del mundo.
Los lados del rectángulo son verticales y horizontales. El lado izquierdo estará después de la avenida 1
vertical, aunque no necesariamente en la avenida 2. El lado inferior estará después de la avenida 1
horizontal. Aunque no necesariamente en la avenida 2.
Mochila: Infinito zumbadores.
Posición: Karel se encontrara exactamente en la parte inferior izquierda del rectángulo.
Orientación: Este.
Salida
Mundo: En la casilla izquierda de la que inicio Karel tantos zumbadores como unidades sea el
perímetro.
Mochila: Infinito zumbadores
Posición: No importa.
Orientación: No importa.
Entrada Salida
Area
Área Promoción del Uso Educativo de las TIC’s-CITE Página 71
Ejercicio Recursividad 4: Multiplicando Por Dos
Nuestro querido Karel nos ha visitado en la FAMAT y como resultado aprendio a multiplicar
por 2, tristemente perdió el código donde le mostraba como multiplicar. Tu misión es escribir
un programa que multiplique por 2
Area
Área Promoción del Uso Educativo de las TIC’s-CITE Página 72
Ejercicio Recursividad 5: Kuenta Kuantos
Descripción
En el mundo de Karel hay un renglón, con varios platos de chicharos
(zumbadores). Su tarea es obtener la cantidad de platos que contienen un chicharo, dos chicharos,…,9
chicharos.
Problema
Dada una fila con celdas (platos) que contiene diversas cantidades de zumbadores (chicharos), dar la
cantidad de celdas (platos) que contienen, de 0 hasta 9 zumbadores.
Consideraciones
1) Los zumbadores están distribuidos en las celdas del renglón del 3.
En cada celda pueden haber desde 0 hasta 99 zumbadores.
2) Todos los zumbadores que hay en el mundo se encuentran en el renglón 3 y están limitados por
la derecha por una pared.
3) La única pared en el mundo es la que limita a los zumbadores.
4) No se sabe la posición ni orientación inicial de Karel.
5) Al inicio Karel no tiene zumbadores en la mochila.
6) Al final, en la celda (n,1), n>0, debe haber tantos zumbadores como cantidad de celdas existan
con n zumbadores. No importan las otras celas.
7) Karel debe terminar en la celda (1, 1).
Ejemplo de Entrada
Ejemplo de Salida
Area
Área Promoción del Uso Educativo de las TIC’s-CITE Página 73
Ejercicio Recursividad 6: Karel y sus juguetes
Karel dejo tirados sus juguetes, zumbadores, en dos montones distintos del renglón uno y su mama le
ordeno que los juntara y pusiera en un cajón que se encuentra exactamente a la misma distancia de los
dos montones.
Especificaciones:
Entrada
Mundo: No hay muros. Los zumbadores del mundo se encuentran distribuidos solamente en
dos montones. Estos se encuentran en el renglón uno a una distancia impar. La cantidad de zumbadores
en cada montón es desconocida.
Mochila: Sin zumbadores.
Posición: Cualquier posición del renglón uno entre los dos montones de zumbadores.
Orientación: Desconocida
Salida
Mundo: Todos los zumbadores del mundo inicial en la casilla que se encuentra exactamente a la
misma distancia de la posición original de los dos montones.
Mochila: Sin zumbadores
Posición: No importa.
Orientación: No importa.
Entrada
Salida
Area
Área Promoción del Uso Educativo de las TIC’s-CITE Página 74
Ejercicio Recursividad 7: Karelcuates
Karel quiere repartir dulces. Zumbadores, de manera equitativa a sus cuates quedándose el con los que
le sobren. Tu tarea es encontrar la cantidad de dulces con los que se quedara Karel.
Especificaciones:
Entrada
Mundo: No hay muros. En la casilla (2.2) estará la cantidad de dulces y en la (3.2) la cantidad
de amigos. Karel siempre tiene al menos un amigo.
Mochila: Cien zumbadores.
Posición: (1,1)
Orientación: Este
Salida
Mundo: La cantidad de dulces con la que se quedara Karel en la posición (4,2).
No importa el resto del mundo.
Mochila: No importa
Posición: No importa.
Orientación: No importa
Entrada Salida
Area
Área Promoción del Uso Educativo de las TIC’s-CITE Página 75
Ejercicio Recursividad 8: Karel Revoruja
Descripción
Karlitos y Karina son hermanos, y como buenos hermanos se la pasan molestándose uno al otro.
Karina, que es muy ordenada, apilo todos sus cuadernos (zumbadores), al ver esto, Karlitos los apilo
exactamente en orden inverso. Ayuda a Karen a reordenar sus cuadernos
Problema
Poner en orden inverso una lista de zumbadores ( cuadernos) limitados por dos paredes.
Consideraciones
1) Los zumbadores están distribuidos en las celdas de una columna de la 2 a la 98. En cada celda
puede haber de 0 hasta 99 zumbadores.
2) Los zumbadores están limitados por dos paredes, uno en la parte inferior y otra en la parte
superior.
3) Las únicas paredes en el mundo son las que limitan a los zumbadores.
4) Los únicos zumbadores en el mundo son los limitados por las paredes.
5) Karel se encuentra entre las dos paredes que limitan a los zumbadores.
6) Al final los zumbadores deben estar dispuestos en el orden inverso al que se presentaron
inicialmente.
7) Karel tiene al inicio dos zumbadores en su mochila.
8) Karel puede terminar en cualquier celda con cualquier orientación, de preferencia, la que más te
guste.
Entrada Salida
Area
Área Promoción del Uso Educativo de las TIC’s-CITE Página 76
Tarea recursividad 1: La pared
Descripción
Los suegros de Karel siempre le han impedido que él se vea con su novia, a tal grado que
edificaron una gran pared de forma irregular para que el no pueda verse con su novia.
Pero como todo buen galán, Karel ha buscado una forma de verse con su novia mediante un
pequeño agujerito que ha hecho a la pared que los divide a los dos. Sin embargo Karel debe de decirle a
su novia en que parte de la pared se encuentra tal agujero y es por eso que necesita de tu ayuda.
Problema
Ayuda a Karel a mostrarle a su novia en dónde está el agujero que él le hizo a la pared, poniendo
un zumbador del otro lado de la pared.
Consideraciones
Ejemplo
Area
Área Promoción del Uso Educativo de las TIC’s-CITE Página 77
Descripción
Ahora que Karel ha terminado la secundaria, ha presentado su examen único y para su agrado, ha
quedado admitido en uno de los CCH de la Universidad.
Sin embargo hay algo que no le agrada a Karel de la escuela que le tocó. Pese a que su casa está a
menos de 100 pasos de distancia de su escuela, el camino que tiene que seguir para llegar a ella, es de
lo más tétrico y sinuoso.
Afortunadamente, Karel se siente seguro cuando la longitud del camino es mayor a uno, sin embargo,
cuando se ve en la necesidad de pasar por tramos de camino de tamaño uno, se siente atemorizado.
Problema
Dada la forma del camino que Karel tiene que recorrer para ir a la escuela, determina el número de
pasos que Karel va a estar encerrado en caminos de tamaño uno.
Consideraciones
El camino de la escuela a la casa de Karel está representado de forma vertical donde la pared
superior es la casa de Karel y la pared inferior, la escuela.
Una avenida medida verticalmente, representa un paso que Karel tiene que dar.
Karel comienza en algún punto de su casa orientado al sur.
Karel lleva zumbadores infinitos en la mochila.
Karel debe colocar zumbadores en la esquina inferior izquierda del mapa (donde esta la
escuela), representando el número de pasos que Karel tiene que dar en caminos de tamaño uno.
En ningún punto del camino hay bifurcaciones, es decir, el camino es único.
No importa la posición ni la orientación final de Karel.
Ni en la casa, ni en la escuela, el tamaño del camino es de uno.
Area
Área Promoción del Uso Educativo de las TIC’s-CITE Página 78
Zumbadores en la mochila:
Area
Área Promoción del Uso Educativo de las TIC’s-CITE Página 79
Notas
Area
Área Promoción del Uso Educativo de las TIC’s-CITE Página 80
Notas
Area
Área Promoción del Uso Educativo de las TIC’s-CITE Página 81