lunes, 9 de enero de 2012

Introducción a Karel

¿Qué es Karel?

Karel es una aplicación que consta de un simulador de robot integrado rayados para probar instrucciones de programación. Karel el Robot es comúnmente utilizado como una introducción simple a la programación para estudiantes de cómputo, pues aunque su lenguaje no es como el utilizado en realidad para programar, provee bases fuertes sobre lo que significa diseñar un programa de instrucciones aplicable a situaciones variables.


¿Cuál es su estructura?
Karel funciona con dos lenguajes que son java y Pascal, el que enunciaré a continuación es Java. La estructura básica de un programa en Karel es:


Class program {
          
          Definición de una nueva instrucción

          Program ( ) {
                    
                    Instrucción a ejecutar
                    Turnoff  ( );  }}


¿Cómo funciona?
Karel basicamente funciona con 5 comandos simples que son:
  • Move
  • Turnleft
  • Pickbeeper
  • Putbeeper
  • Turnoff
Las sentencias de control se usan para elegir qué hacer, y/o  cuantas veces hacerlo. Sin embargo, por si solos no causan que ocurra algo. Simplemente controlan la ejecución de otras sentencias o  fragmentos de código. A continuación se lista una serie de sentencias de control de Karel:
  • If
  • Iterate 
  • If/else
  • While
Siempre a continuación de las sentencias de control y después de la expresión booleana, se debe colocar una llave que abre "{" para iniciar el grupo de sentencias a ser realizado. El grupo de sentencias va seguido de una llave que cierra "}". Utilizamos el par "{ }" para un sólo parámetro o para varios, no importa el número de ellos. El compilador devolverá una advertencia en caso de que no se siga este estilo.

¿Qué son y cuáles son las condicionales?
Karel cuenta con tres sensores que son:

  • Sensor óptico
  • Sensor auditivo
  • Sensor direccional

Las condicional son las que Karel se pregunta si debe cumplir o no y son:

  1. frontIsClear es verdadero si el frente de Karel esta libre de pared 
  2. frontIsBlocked es verdadero si existe una pared frente a Karel 
  3. leftIsClear es verdadero si en el lado izquierdo de Karel no existe una pared 
  4. leftIsBlocked es verdadero si en el lado izquierdo de Karel existe una pared 
  5. rightIsClear es verdadero si en el lado derecho de Karel no existe una pared 
  6. rightIsBlocked es verdadera si en el lado derecho de Karel existe una pared 
  7. nextToABeeper es verdadero si existe un beeper donde Karel esta parado 
  8. notNextToABeeper es verdadero si no existe un beeper donde Karel esta parado 
  9. facingNorth es verdadero si Karel esta volteando hacia al Norte 
  10. notFacingNorth es verdadero si Karel no esta volteando hacia al Norte 
  11. facingSouth es verdadero si Karel esta volteando hacia el Sur 
  12. notFacingSouth es verdadero si Karel no esta volteando hacia el Sur 
  13. facingEast es verdadero si Karel esta volteando hacia el Este 
  14. notFacingEast es verdadero si Karel no esta volteando hacia el Este 
  15. facingWest es verdadero si Karel esta volteando hacia al Oeste 
  16. notFacingWest es verdadero si Karel no esta volteando hacia al Oeste 
  17. anyBeepersInBeeperBag es verdadero si existe algún beeper en a beeper_bag 
  18. noBeepersInBeeperBag es verdadero si no existes algún beepers en a beeper_bag
Instrucciones if, else y while

If:

Sintaxis:

If (Condición [bloque condicional])
     "Instrucción {bloque de instrucciones}

Ejemplo:

If (frontIsClear)
     move ();
If (frontIsClear)
    {move (); turn left ();}

Else:

Sintaxis:

If (Condición [bloque condicional])
     "Instrucción 1 {bloque de instrucciones 1}
Else instrucción 2 {bloque de instrucciones 2}

Ejemplo:

If (frontIsClear)
     move ();
Else tun left ();

While:

Sintaxis:

While (Condición [bloque condicional])
     "Instrucción {bloque de instrucciones}

Ejemplo:

While (frontIsClear)
     move ();

Bloque condicional:
Los  boques condicionales son grupos de condiciones que se aplican a una instrucción if o while y deben de ir ligadas con un operador lógico and o or.

Palabras Reservadas:
Define: Para generar una nueva instrucción.
Iterate: Para repetir una instrucción.