¿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:
- Sensor óptico: sirve para que Karel observe si tiene una pared al frente o a sus lados.
- Sensor Auditivo: para detectar un zumbador donde está parado.
- Sensor de Dirección: permite detectar hacia dónde Karel está orientado.
2.-INSTRUCCIONES BÁSICAS
Karel maneja 5 comandos básicos que son:
- move(); (avanza una esquina)
- turnleft(); (gira a la izquierda)
- pickbeeper(); (coge un zumbador)
- putbeeper(); (deja un zumpador)
- turnoff(); (desconéctate)
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();