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

SICI 3011 El Robot Karel

Dec 23, 2015

Download

Documents

Mario Rinaldi

Karel el robot
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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