lunes, 17 de enero de 2011

Condicionales en el mundo de Karel

Karel es un robot, para que éste pueda moverse por su mundo es importante que primero le demos una serie de instrucciones y qu con base a esta él pueda avanzar sin tener necesidad de decirle que delnte hay una pared o que a lado hay un zumbador. Para esto se utilizan unos condicionales: "if, if else,while".
 
 if
La condicional puede ser verdadera o falsa, si la condicional es verdadera se ejecuta la intrucción.
 
if (condicional) . {bloque condicional}
instrucción {bloque de instrucciones}

if (frontIsClear || nextToABeeper)
{more();
turn left();}

if else
Si la condicional es verdadera se ejecuta la instrucción 1. Si la condicional es falsa se ejecuta la instrucción 2.

if (condicional) {bloque condicional}
instrucción1 {bloque de instrucciones1}
else instrucción 2 {bloque de instrucciones2}

if (frontIsClear)
move();
else turnleft();

while
Esta estructura de repetición le permite al programador especificar las veces que se repita una acción mientras una condición se mantenga verdadera.

while (condicional) {bloque condicional}
intrucción {bloque de instrucciones}

while (frontIsClear)
move();

Otras instrucciones:
frontIsClear: Es posible si no se encuentra ninguna pared enfrente.
frontIsBlocked: Si existe una pared enfrente.
leftIsClear: Si en el lado izquierdo no se encuentra pared alguna.
leftIsBlocked: Si en el lado izquierdo existe pared.
rightIsClear: Si en el lado derecho se encuentra pared alguna.
rightIsBlocked: Si en el lado derecho existe pared.
nextToABeeper: Si existe algún beeper en donde karel esta parado.
NotnextToABeeper: Si no existe beeper donde karel esta parado.
facingNorth: Si karel voltea hacia el norte
NotfacingNorth: Si karel no voltea hacia el norte.
facingSouth: Si karel voltea hacia el sur.
NotfacingSouth: Si karel no voltea hacia el sur.
facingEast: Si karel voltea hacia el este.
NotfacingEast: Si karel no voltea hacia el este.
facingWest: Si karel voltea hacia el oeste.
NotfacingWest: Si karel no voltea hacia el oeste.
anyBeepersInBeeperBag: Si existe algún beeper en beeper bag.
noBeepersInBeeperBag: Si no existe ningún beeper en beeper bag.

miércoles, 1 de diciembre de 2010

El Mundo de Karel!

Karel es un robot mediante el cual podemos aprender conceptos de programación de forma visual y creativa.

Karel puede orientarse en una de las cuatro direcciones: Este, Oeste, Norte y Sur, y sólo gira 90º. En el mundo de Karel, las calles van de oeste a este, y avenidas de norte y sur, y también están numeradas empezando por 1. Se le llama esquina a la intersección de una calle con una avenida. Karel va de una esquina a la siguiente en un solo movimiento.

En el mundo podemos poner muros (entre una esquina y otra, vertical u horizontal), y los zumbadores. Karel tiene una mochila que puede utilizar para poner los zumbadores que va recolectando o dejando.

  • Comandos básicos de Karel
Hay cinco comandos básicos para Karel, estos son:

1. move (avanza una esquina)
2. turnleft (gira a la izquierda)
3. pickbeeper (recoge un zumbador)
4. putbeeper (deja un zumbador)
5. turnoff (apaga al robot)

El robot no avanzará si tiene una pared enfrente o no recogerá un zumbador si no lo hay en la esquina indicada. Cuando el robot no realiza una acción envía una notificación al programador y se detiene la ejecución del programa.

Para poder trabajar en el mundo de Karel debemos ir a Programa, poner nuevo y en modo Java.

Ejemplo:

class program {
program() {
move();
pickbeeper();
turnleft();
putbeeper();
     ;
     turnoff();
}
}

Después le damos click en compilar y vamos a Ejecución y le damos correr para poder verlo seguir las instrucciones dadas.

Después tenemos la función de "iterate" que nos ayuda a realizar una instrucción más veces y la función "define" la cual la usamos para definir una nueva instrucción.

Ejemplo:

class program {
define recoge()
{iterate(4){pickbeeper();}}
define mover()
{iterate(4){move();}}
define gira()
{iterate(3){turnleft();}}
program() {
iterate(4){
recoge();
mover();
gira();}
    ;
    turnoff();
}
}

Es importante recordar que debemos compilar el programa en el que estemos trabajando antes de correr a Karel, pues de esta forma sabremos si algo anda mal en las instrucciones y podrémos evitar un mal funcionamiento en Karel. Así como no debemos olvidar colocar el punto y coma ";" después de cada instrucción y en cierto casos una llave "{".