You are on page 1of 5

Tutorial de Karel

Autor: Dra. Karina Mariela Figueroa Mora Fecha de modificacin: 28 de octubre 2012 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: Ejemplo, programa Muestra iniciar-programa inicia-ejecucion gira-izquierda; apagate; termina-ejecucion finalizar-programa

Iniciar-programa Inicia-ejecucion <instrucciones> 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 frente-libre hacer inicio avanza; fin;

Mientras <condicin> hacer Inicio <instrucciones> 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

COMENTARIOS Una herramienta muy til cuando se programa son los comentarios dentro del cdigo. Los comentarios son lneas de texto (marcadores) del programador que no interfieren con el programa. La sintaxis es : parntesis-asterisco COMENTARIO asterisco-parntesis. Por ejemplo. (* ESTE COMENTARIO NO INTERVIENE EN EL CODIGO *)