Está en la página 1de 5

Tutorial de Karel

Autor: Dra. Karina Mariela Figueroa Mora


Introduccin
El robot Karel es una herramienta de aprendizaje que presenta los conceptos de programacin
de una forma visual adems de tener un nivel de abstraccin bajo. El robot Karel fue introducido
por Richard Pattis en 1981, en el libro Karel the Robot: A Gentle Introduction to the Art of
Programming with Pascal, John Wiley & Sons, Inc.
El mundo de Karel
El mundo de Karel esta representado por calles (verticales) y avenidas (horizontales), la
interseccin esta rotulada con un nmero solo para fines visuales y se le llama esquina. Karel
puede orientarse en una de las cuatro direcciones: Este, Oeste, Norte y Sur. Slo gira 90 cada
vez y va de una esquina a la siguiente en un solo movimiento.
En el mundo de Karel slo existen los muros (entre una esquina y otra, vertical u horizontal), y
los zumbadores. Un zumbador es una marca que Karel puede escuchar slo cuando se
encuentra en la misma esquina que el zumbador. Karel tiene una mochila que puede utilizar para
poner los zumbadores que va recolectando o dejando. Es posible ajustar el nmero inicial de
zumbadores en la mochila.
En el lenguaje del robot Karel no hay distincin entre maysculas y minsculas.
Comandos bsicos de Karel
Hay cinco instrucciones bsicas para Karel, estas son:
<instrucciones>
1. avanza
(avanza una esquina)
2. gira-izquierda (gira a la izquierda)
3. coge-zumbador (recoge un zumbador)
4. deja-zumbador (deja un zumbador)
5. apagate (desconecta al robot)

En el programa, despus de cada instruccin bsica, se debe usar un ;(punto y coma). Tambin
se consideran instrucciones a las sentencias de control.
Karel realiza solo instrucciones sea exitosas, es decir, el robot no avanzar si tiene una pared
enfrente o no recoger un zumbador si no lo hay en esa esquina. Cuando el robot no puede
realiza una instruccin enva una notificacin al programador y se detiene la ejecucin del
programa.
Un programa bsico de Karel sera el siguiente:

Iniciar-programa

Inicia-ejecucion


<instrucciones>


apagate;

termina-ejecucion
finalizar-programa

Ejemplo, programa Muestra



iniciar-programa
inicia-ejecucion

gira-izquierda;

apagate;
termina-ejecucion
finalizar-programa

Sentencias de Control de KAREL


Las sentencias de control se usan para tomar decisiones en el programa, y saber que instruccin
realizar y/o cuantas veces hacerla, como su nombre lo indica, simplemente controlan la
ejecucin de otras sentencias o fragmentos de cdigo. A continuacin se lista una serie de
sentencias de control (tambin pueden considerarse instrucciones) de Karel y despus se
describirn:

si/entonces
repite/nmero de veces
si/entonces/sino
Mientras/hacer

Toma de decisiones
Muchas veces Karel necesita tomar decisiones, de acuerdo a las situaciones en las que se
encuentre, dichas condiciones se listan a continuacin:
<condiciones de pared>
frente-libre
frente-bloqueado
izquierda-libre
izquierda-bloqueada
derecha-libre
derecha-bloqueada

<condiciones de zumbadores>
junto-a-zumbador
no-junto-a-zumbador
algun-zumbador-en-la-mochila
ningun-zumbador-en-la-mochila

<condiciones de orientacin>
orientado-al-norte
orientado-al-sur
orientado-al-este
orientado-al-oeste
no-orientado-al-norte
no-orientado-al-sur
no-orientado-al-este
no-orientado-al-oeste
"libre" significa que no hay ninguna pared entre una esquina y otra, mientras que "bloqueado"
significa que hay un muro en esa direccin. Karel puede detectar si hay o no algn zumbador en
la esquina en la que se encuentra actualmente, as como detectar si tiene algn zumbador en la
mochila o no. Tambin tiene una brjula para detectar hacia qu direccin est orientado.

Decisiones simples
Karel puede hacer una serie de instrucciones, si es que se cumple con la condicin establecida,
que puede ser cualquiera de las que se mencionaron anteriormente. Por ejemplo:


Si <condicin> entonces
incio
<instrucciones>
fin;

Programa Muestra
iniciar-programa
inicia-ejecucion
si junto-a-zumbador entonces
inicio
coge-zumbador;
fin;
apagate;
termina-ejecucion
finalizar-programa


Este ejemplo escenifica que para recoger un zumbador sin obtener un error de Karel, es
necesario revisar si existe un zumbador en el suelo utilizando la condicin junto-a-zumbador, al
ejecutar esta instruccin. La sintaxis es la que se muestra a continuacin:

Decisiones en otro caso


En este tipo de decisiones, Karel, puede hacer una serie de instrucciones si se cumple la
condicin y si no se cumple, puede llevar a cabo otra serie de instrucciones diferentes. La
sintaxis es la siguiente:


Si <condicin> entonces
incio
<instrucciones>
fin
Sino
inicio
<instrucciones>
fin;

Definiciones de nuevas instrucciones


En este lenguaje es posible definir nuevas instrucciones por ejemplo, girar a la derecha es una
tarea muy habitual para el robot. A continuacin se muestra un ejemplo de cmo puede ser
definida esta nueva instruccin. La definicin de cualquier instruccin (cero o mas) debe ir entre
iniciar-programa e inicia-ejecucin, y debe ser definida antes de ser utilizada.

La sintaxis para declarar una nueva instruccin es la siguiente:




define-nueva-instruccin derecha como
Define-nueva-instruccin <nombre> como
inicio
Inicio

gira-izquierda;

<instrucciones>

gira-izquierda;
fin;

gira-izquierda;
fin;


Repeticiones
Muchas veces, Karel necesita repetir una serie de instrucciones varias veces, por ejemplo, girar
a la derecha implica 3 giros a la izquierda. A una repeticin se le llama ciclo. Si se desea que
Karel ejecute la misma instruccin varias veces se puede utilizar la instruccin repetir x veces

Programa Muestra
Repetir # veces
Inicio

<instrucciones>
fin;

repetir 3 veces
inicio
gira-izquierda;
fin;

Repeticiones condicionadas
Si necesitas que Karel repita una serie de instrucciones mientras se cumpla una condicin se
usa la sentencia mientras. hacer. Esto es:
Por ejemplo, si se desea que Karel avance hasta el siguiente muro, entonces se
puede escribir.

Mientras <condicin> hacer


Inicio

<instrucciones>
fin;

mientras frente-libre hacer


inicio
avanza;
fin;

Recursividad
La parte mas poderosa de Karel es la recursividad, es decir, la definicin de una nueva
instruccin en trminos de s misma. Tambin tiene 2 secciones bsicamente, el caso base y el
caso recursivo. Por ejemplo, suponga que Karel debe avanzar hasta la siguiente pared.
Programa Muestra
iniciar-programa
define-nueva-instruccin avanza-tope como
inicio

si frente-bloqueado entonces

inicio


apgate;

fin;

sino

inicio


avanza;


avanza-tope;

fin;
fin;

inicia-ejecucion
avanza-tope;

termina-ejecucion
finalizar-programa

Caso base

Caso recursivo

También podría gustarte