SICI 3011 El Robot Karel

Post on 23-Dec-2015

34 views 4 download

description

Karel el robot

Transcript of SICI 3011 El Robot Karel

KAREL EL ROBOTSICI-3011

Preparado por:

Prof. Nelliud D. Torres

Instrucciones para el Robot Karel

El propósito de estudiar a Karel en adición a Otto es para familiarizarnos más con la programación estructurada y facilitar la adaptación a estilos de programación mas avanzados de los que nos puede ofrecer Otto. Otra razón es que Karel tiene un compilador en donde el estudiante puede escribir las instrucciones, validarlas y ejecutarlas visualmente en la pantalla. De este modo se facilita la adaptación al mundo de la programación y del manejo de errores, tanto de sintaxis como de lógica. Otro punto importante es que estaremos tomando ejemplos de los comandos de Otto y Karel según nos adentremos más en los conceptos de programación.

Instrucciones de Karel

Las intrucciones de Karel se pueden dividir en los siguientes tópicos:

a) Vocabulario básico

b) Vocabulario extendido

c) Instrucciones condicionales

d) Instrucciones de repetición

FORMATO DEL LENGUAJE DE KAREL

EL lenguaje que se utiliza para programar a Karel, va a tener el siguiente formato:

{ Comentarios }begin

move

pickbeeper move

turnleft move

putbeeperend

Encabezamiento. Cada programa comenzará con

la instrucción begin

Conclusión. Cada programa terminará con

la instrucción end

Instrucciones

Lo que se ponga entre llaves ({})

se considera comentario, no

instrucción.

Vocabulario Básico

move - Karel puede moverse un paso hacia el frente. Si hay una pared, choca y el programa aborta.

turnleft - Karel vira 90 grados hacia la izquierda. Tiene el mismo problema de Otto con la diferencia de que es zurdo.

pickbeeper - Karel recoje un beeper y lo coloca en su bolsa. Tiene que haber un beeper la lado de el. De no ser así, el programa aborta.putbeeper - Karel saca un beeper de su bolsa y lo pone en el piso. De nuevo, si no hay beeper en la bolsa, el programa aborta y Karel detiene su ejecución.

VOCABULARIO EXTENDIDO

turnright turnleft turnleft turnlef

end

Podemos “inventarnos” instrucciones en Karel. Por ejemplo paracrear un comando que haga que Karel vire a la derecha, podemosescribir las siguientes intrucciones antes del begin.

Requiere un end al final.

Nueva instrucción para karel

INSTRUCCIONES CONDICIONALES

if predicate <then-instrucciones

end

if predicate <then-instrucciones>

else <else-clause statement(s)>

end

Karel posee una instrucción llamada if que le permite saber el status de ciertas condiciones. Con eso podemos especificarle que haga una cosa o la otra. El formato del if es el siguiente:

Predicate es la condición por la que se va a preguntar. En el próximo slide, se van a mostrar esas condiciones. Note que siempre termina con end. En el ejemplo tienen dos formatos distintos para la misma instrucción. En la clase se abundará más sobre eso.

Condiciones (Predicate)

front_is_clear not front_is_clear

left_is_clear not left_is_clear

right_is_clear not right_is_clear

facing_north not facing_north

facing_south not facing_south

facing_east not facing_east

facing_west not facing_west

next_to_a_beeper not next_to_a_beeper

any_beepers_in_beeper_bag not beepers_in_beeper_bag

INSTRUCCIONES DE REPETICIÓN

Tiene el siguiente formato:

iterate iteration-amount

<loop body statement(s)>

end

Nos permite ejecutar una o mas instrucciones en más de una ocasión. De este modo nos permite minimizar la cantidad de instrucciones a escribir cuando son repetitivas.

Ejemplo: Es similar a:

iterate 4 move

move move

end move

move

iterate

whileTiene el siguiente

formato:while predicate <loop body statement(s)> end

Ejemplo: while next_to_a_beeper pickbeeper move end Mientras Karel este parado al lado de un beeper, lo va a recoger y va a dar un paso adelante. Note que no coteja si al frente hay una pared o no.

Nos permite ejecutar una o más instrucciones en ninguna o varias ocasiones mientras una condición (predicate) se cumpla. A difirencia del iterate, no se puede saber con certeza cuantas veces se va ejecutar las intrucciones dentro del while. El rango es de cero (0) a indefinido (n) veces.

EL MUNDO DE KARELPermite rotar la dirección a la que Karel está mirando

Nos permite ver por donde Karel va. Es necesario ponerlo antes de correr el programa.

Nos permite editar el mapa. Poner paredes, los beepers y a Karel.

EJEMPLO DE UNA CORRIDADele click al mouse para que vea la simulación de la corrida del programa que se muestra en este slide.

EJEMPLO DE UNA CORRIDA

EJEMPLO DE UNA CORRIDA

EJEMPLO DE UNA CORRIDA

EJEMPLO DE UNA CORRIDA

EJEMPLO DE UNA CORRIDA

EJEMPLO DE UNA CORRIDA

EJEMPLO DE UNA CORRIDA

EJEMPLO DE UNA CORRIDA

EJEMPLO DE UNA CORRIDA

EJEMPLO DE UNA CORRIDA

EJEMPLO DE UNA CORRIDA

EJEMPLO DE UNA CORRIDA

EJEMPLO DE UNA CORRIDA

EJEMPLO DE UNA CORRIDA

EJEMPLO DE UNA CORRIDA

EJEMPLO DE UNA CORRIDAEste mensaje indica que el programa termino de ejecutarse