Grupo 401

Carlos Alfredo Campos De La Garza
Profesor: Ing. Pablo Góngora Gutiérrez

Buscar este blog

KAREL EL ROBOT


¿QUÉ ES KAREL?
INTRODUCCIÓN


"Karel el Robot" es un lenguaje de programación para programar a un robot (Karel) mediante instrucciones sencillas y bien estructuradas, fáciles de entender y utilizar sin la necesidad de manejar algún otro lenguaje de programación.
Karel vive en su propio mundo, formado por calles, avenidas y bardas por las que deberá trasladarse para recoger trompos, guardarlos y llevarlos a otro lugar, dependiendo de cuál sea su objetivo.
Karel es una herramienta que promueve la creatividad y la lógica de una manera ordenada. Lo que crea una base fuerte para el aprendizaje de la programación. Las instrucciones que utiliza son sencillas, por lo que no requieren un estudio profundo para su comprensión.
El programa Karel lo puedes descargar desde el siguiente link: http://www.olimpiadadeinformatica.org.mx/archivos/programas/karelomi_copy.zip
En este blog encontrarás tutoriales y consejos para usar Karel.

1.-KAREL Y SU MUNDO
Mundo de Karel, inicialmente Karel se ubica a la izquierda mirando al Norte
El programa Karel se desarrolla en un mundo que está formado por calles (horizontales) y avenidas(verticales). El mundo de Karel puede tener paredes y pueden estar colocados en las calles y avenidas algunos zumbadores que interarticular con Karel.
Karel cuenta con tres sensores:

  1. Sensor óptico: sirve para que Karel observe si tiene una pared al frente o a sus lados.
  2. Sensor Auditivo: para detectar un zumbador donde está parado.
  3. Sensor de Dirección: permite detectar hacia dónde Karel está orientado.

2.-INSTRUCCIONES BÁSICAS

Karel maneja 5 comandos básicos que son:

  1. move();                      (avanza una esquina)
  2. turnleft();             (gira a la izquierda)
  3. pickbeeper();          (coge un zumbador)
  4. putbeeper();           (deja un zumpador)
  5. turnoff();                     (desconéctate)
Es importante mencionar que Karel no puede moverse hacia la derecha, por lo que se tendrá que definir la instrucción como el conjunto de de tres comandos turnleft();


3.-ESTRUCTURA DE LA PROGRAMACIÓN EN KAREL (JAVA)
Ahora veremos cómo se pueden programar diversas acciones para Karel con el lenguaje de programación Java. Para esto, debemos seleccionar la pestaña programa, dar clic en el círculo de selección de Java y después seleccionar NUEVO.

Nos aparecerá un texto con las siguientes características:
classprogram{
aquí se introducirán todas las nuevas instrucciones que se utilizarán en el programa
}
program(){
En este apartado se escriben los comandos, sentencias y condicionales necesarias para realizar la acción
;}
turnoff();{
es el término de la acción, quiere decir apagar
}


4.-PALABRA RESERVADA DEFINE
Esta instrucción es muy útil ya que con ella podemos ahorrar tiempo repitiendo un bloque de instrucciones  y en su lugar poner una instrucción con un nombre asignado.
La instrucción define permite crear una nueva instrucción al usuario.
Ejemplo:
class program{
define giroaladerecha() { turnleft(); turnleft(); turnleft();}}

Así, ya definida la instrucción giroaladerecha, cuando queramos introducir la instrucción, lo debemos hacer de la siguiente manera:

class program{
define giroaladerecha() { turnleft(); turnleft(); turnleft();}}
program() {
move(2);
giroaladerecha();
}
turnoff();{
}
5.-PALABRA RESERVADA ITERATE
Permite repetir el número de veces elegidas una cierta instrucción, por ejemplo:
iterate(3){ turnleft();}


Entonces nuestra instrucción realizada en class program anteriormente también se puede realizar así:

class program{
define giroaladerecha() { iterate(3){ turnleft();}}
program() {
iterate(2){move(1);
giroaladerecha();
}
turnoff();{
}
6.-CONDICIONALES
Este es uno de los temas más interesantes de Karel pues con ellos le daremos a Karel, un cierto grado de autonomía, por lo que ahondaremos profundamente en este tema.

La condición es una función de la situación actual de Karel, a medida que se ejecuta el programa. Si Karel está actualmente orientado hacia el Sur, el valor de la función facingSouth será verdadero, y el conjunto de sentencias entre las llaves "{ }", se ejecutará.
En muchas ocasiones no queremos que Karel realice una serie de instrucciones ya definida, sino que queremos que Karel sea capaz de discernir qué hacer dependiendo del estado actual del mundo. Esto amplía enormemente el poder de Karel, ya que puede interaccionar con el mundo en el que se encuentra.
En particular, si queremos que Karel evite un apagón, podemos hacer que cada vez que intente recoger un beeper, observe primero si puede hacerlo, o que cada vez que queremos que de un paso, revisar que no haya una pared enfrente de él.
Existen 18 posibles condicionales para usarse en Karel:
frontIsClear es verdadero si el frente de Karel esta libre de pared
frontIsBlocked es verdadero si existe una pared frente a Karel
leftIsClear es verdadero si en el lado izquierdo de Karel no existe una pared
leftIsBlocked es verdadero si en el lado izquierdo de Karel existe una pared
rightIsClear es verdadero si en el lado derecho de Karel no existe una pared
rightIsBlocked es verdadera si en el lado derecho de Karel existe una pared
nextToABeeper es verdadero si existe un beeper donde Karel esta parado
notNextToABeeper es verdadero si no existe un beeper donde Karel esta parado
facingNorth es verdadero si Karel esta volteando hacia al Norte
notFacingNorth es verdadero si Karel no esta volteando hacia al Norte
facingSouth es verdadero si Karel esta volteando hacia el Sur
notFacingSouth es verdadero si Karel no esta volteando hacia el Sur
facingEast es verdadero si Karel esta volteando hacia el Este
notFacingEast es verdadero si Karel no esta volteando hacia el Este
facingWest es verdadero si Karel esta volteando hacia al Oeste
notFacingWest es verdadero si Karel no esta volteando hacia al Oeste
anyBeepersInBeeperBag es verdadero si existe algún beeper en la mochila
noBeepersInBeeperBag es verdadero si no existe algún beepers en la mochila
Ejemplo de la sintaxis correcta en la compilación de un programa con Java en Karel

SINTAXIS DE LOS CONDICIONALES.
Ejemplos:
If(facingSouth){turnleft();}
While(nextToABeeper){pickbeeper(); move();}
If(frontIsClear)
    move();
else turnleft();