P. 1
Tutorial de Karel

Tutorial de Karel

|Views: 1|Likes:
Publicado porabelsu

More info:

Published by: abelsu on May 07, 2013
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

07/29/2015

pdf

text

original

 

Tutorial de Karel
Autor: Dra. Karina Mariela Figueroa Mora Fecha de modificación: 28 de octubre 2012 Introducción El robot Karel es una herramienta de aprendizaje que presenta los conceptos de programación de una forma visual además de tener un nivel de abstracción 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 intersección esta rotulada con un número solo para fines visuales y se le llama esquina. Karel puede orientarse en una de las cuatro direcciones: Este, Oeste, Norte y Sur. Sólo gira 90º cada vez y va de una esquina a la siguiente en un solo movimiento. En el mundo de Karel sólo existen los muros (entre una esquina y otra, vertical u horizontal), y los zumbadores. Un zumbador es una marca que Karel puede escuchar sólo 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 número inicial de zumbadores en la mochila. En el lenguaje del robot Karel no hay distinción entre mayúsculas y minúsculas. Comandos básicos de Karel Hay cinco instrucciones básicas 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, después de cada instrucción básica, se debe usar un ;(punto y coma). También 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 instrucción envía una notificación al programador y se detiene la ejecución del programa. Un programa básico de Karel sería 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

   

Karel puede detectar si hay o no algún zumbador en la esquina en la que se encuentra actualmente. como su nombre lo indica. dichas condiciones se listan a continuación: <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 orientación> 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. simplemente controlan la ejecución de otras sentencias o fragmentos de código. A continuación se lista una serie de sentencias de control (también pueden considerarse instrucciones) de Karel y después se describirán: • • • • si/entonces repite/número 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. y saber que instrucción realizar y/o cuantas veces hacerla.   . mientras que "bloqueado" significa que hay un muro en esa dirección. También tiene una brújula para detectar hacia qué dirección está orientado. así como detectar si tiene algún zumbador en la mochila o no.   Sentencias de Control de KAREL Las sentencias de control se usan para tomar decisiones en el programa.

                Definiciones de nuevas instrucciones En este lenguaje es posible definir nuevas instrucciones por ejemplo.          termina-­‐ejecucion     finalizar-­‐programa         Este ejemplo escenifica que para recoger un zumbador sin obtener un error de Karel. Karel. es necesario revisar si existe un zumbador en el suelo utilizando la condición junto-a-zumbador.            fin.   Decisiones simples Karel puede hacer una serie de instrucciones. Por ejemplo:     Si  <condición>    entonces     incio    <instrucciones>   fin.   Programa  Muestra   iniciar-­‐programa        inicia-­‐ejecucion            si  junto-­‐a-­‐zumbador  entonces              inicio      coge-­‐zumbador. puede llevar a cabo otra serie de instrucciones diferentes. La sintaxis es la siguiente:     Si  <condición>    entonces     incio    <instrucciones>   fin   Sino   inicio   <instrucciones>   fin. que puede ser cualquiera de las que se mencionaron anteriormente. al ejecutar esta instrucción. girar a la derecha es una tarea muy habitual para el robot. puede hacer una serie de instrucciones si se cumple la condición y si no se cumple. A continuación se muestra un ejemplo de cómo puede ser   . La sintaxis es la que se muestra a continuación: Decisiones en otro caso En este tipo de decisiones.            apagate. si es que se cumple con la condición establecida.

girar a la derecha implica 3 giros a la izquierda. Si se desea que Karel ejecute la misma instrucción varias veces se puede utilizar la instrucción repetir x veces Programa  Muestra Repetir  #  veces   Inicio     <instrucciones>   fin. repetir  3  veces     inicio   gira-­‐izquierda.       Repeticiones condicionadas Si necesitas que Karel repita una serie de instrucciones mientras se cumpla una condición se usa la sentencia mientras…. Esto es: Por  ejemplo.   fin. y debe ser definida antes de ser utilizada.     . A una repetición se le llama ciclo.  si  se  desea  que  Karel  avance  hasta  el  siguiente  muro. Mientras  <condición>  hacer   Inicio     <instrucciones>   fin.       Repeticiones Muchas veces. Karel necesita repetir una serie de instrucciones varias veces.  entonces  se   puede  escribir.   gira-­‐izquierda. La definición de cualquier instrucción (cero o mas) debe ir entre iniciar-programa e inicia-ejecución.    mientras  frente-­‐libre  hacer      inicio   avanza. La  sintaxis  para  declarar  una  nueva  instrucción  es  la  siguiente:       define-­‐nueva-­‐instrucción  derecha  como   Define-­‐nueva-­‐instrucción  <nombre>  como   inicio   Inicio     gira-­‐izquierda.   definida esta nueva instrucción. hacer. por ejemplo.   fin.     <instrucciones>     gira-­‐izquierda.     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 código. el caso base y el caso recursivo. suponga que Karel debe avanzar hasta la siguiente pared.     fin. Por ejemplo.     sino     inicio       avanza.       avanza-­‐tope.     fin. Los comentarios son líneas de texto (marcadores) del programador que no interfieren con el programa.      fin. También tiene 2 secciones básicamente. Programa  Muestra   iniciar-­‐programa      define-­‐nueva-­‐instrucción  avanza-­‐tope  como      inicio     si  frente-­‐bloqueado  entonces     inicio       apágate. La sintaxis es : paréntesis-asterisco COMENTARIO asterisco-paréntesis. es decir.   Recursividad La parte mas poderosa de Karel es la recursividad. Por ejemplo. la definición de una nueva instrucción en términos de sí misma. (* ESTE COMENTARIO NO INTERVIENE EN EL CODIGO *)   .

You're Reading a Free Preview

Descarga
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->