SICI 3011 El Robot Karel

28
KAREL EL ROBOT SICI-3011 Preparado por: Prof. Nelliud D. Torres

description

Karel el robot

Transcript of SICI 3011 El Robot Karel

Page 1: SICI 3011 El Robot Karel

KAREL EL ROBOTSICI-3011

Preparado por:

Prof. Nelliud D. Torres

Page 2: SICI 3011 El Robot Karel

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.

Page 3: SICI 3011 El Robot Karel

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

Page 4: SICI 3011 El Robot Karel

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.

Page 5: SICI 3011 El Robot Karel

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.

Page 6: SICI 3011 El Robot Karel

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

Page 7: SICI 3011 El Robot 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.

Page 8: SICI 3011 El Robot Karel

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

Page 9: SICI 3011 El Robot Karel

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

Page 10: SICI 3011 El Robot Karel

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.

Page 11: SICI 3011 El Robot Karel

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.

Page 12: SICI 3011 El Robot 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.

Page 13: SICI 3011 El Robot Karel

EJEMPLO DE UNA CORRIDA

Page 14: SICI 3011 El Robot Karel

EJEMPLO DE UNA CORRIDA

Page 15: SICI 3011 El Robot Karel

EJEMPLO DE UNA CORRIDA

Page 16: SICI 3011 El Robot Karel

EJEMPLO DE UNA CORRIDA

Page 17: SICI 3011 El Robot Karel

EJEMPLO DE UNA CORRIDA

Page 18: SICI 3011 El Robot Karel

EJEMPLO DE UNA CORRIDA

Page 19: SICI 3011 El Robot Karel

EJEMPLO DE UNA CORRIDA

Page 20: SICI 3011 El Robot Karel

EJEMPLO DE UNA CORRIDA

Page 21: SICI 3011 El Robot Karel

EJEMPLO DE UNA CORRIDA

Page 22: SICI 3011 El Robot Karel

EJEMPLO DE UNA CORRIDA

Page 23: SICI 3011 El Robot Karel

EJEMPLO DE UNA CORRIDA

Page 24: SICI 3011 El Robot Karel

EJEMPLO DE UNA CORRIDA

Page 25: SICI 3011 El Robot Karel

EJEMPLO DE UNA CORRIDA

Page 26: SICI 3011 El Robot Karel

EJEMPLO DE UNA CORRIDA

Page 27: SICI 3011 El Robot Karel

EJEMPLO DE UNA CORRIDA

Page 28: SICI 3011 El Robot Karel

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