Karel & OMI

Les presento a nuestro amigo Karel: Karel

Karel es más bien un programa informatico diseñado para que jovenes de secundaria o de nivel medio superior compitan en la llamada Olimpiada Méxicana de Informatica.

Clic aqui para descargar el programa

Nuestro objetivo es poder hacer que esta flechita, cumpla con las ordenes que le demos programandolo mediante Java o Pascal (nosotros utilizamos el primero).

Karel entiende estas funciones básicas:

turnleft(); - con la cual se mueve una vez a la izquierda

move(); - con la cual avanza una casilla

putbeeper(); - con esta función deja un zumbador (es un marcadorBeeper pero nosotros le conocemos con el nombre de zumbadores, mas tarde aclarare el porque) en una casilla.

pickbeeper(); - recoge un zumbador de la casilla.

Les explicare de forma más detallada el uso de estas instrucciones con el siguiente problema:

Mundo 1

Karel debe llegar hasta la posición de ese zumbador y recogerlo. Por lo tanto escribiremos el siguiente programa:

Codigo 1

Según esto, lo que Karel hará es que se moverá primero dos veces, girara a la izquierda tres, volverá a avanzar dos casillas más y recogerá el zumbador. Este es un problema que no cuesta nada de trabajo entender y hacer, sin embargo hay que advertir un detalle. ¿Que pasaría si el zumbador estuviera colocado en la fila 80, columna 59? habría que escribir un programa largo que hiciera todo esto, lo que implicaría una gran perdida de paciencia y tiempo, sin contar todas las lineas de código que se gastarían. Llego la hora de hacer instrucciones más claras y cortas.

Empezaremos por”declarar un metodo”. Un metodo es una “tira” de instrucciones que se ha hecho a gusto del usuario, y se vuelve una instrucción. Por ejemplo, si queremos que Karel avance “n” veces que queramos escribimos:

Codigo 2

Esta es la explicacion. “void” declara o hace saber a Karel que ahora existe una instruccion llamada avanzar y que esta nueva instruccion hara lo que este despues del corchete “{”. Despues, no encontramos con la palabra “iterate” cuya funcion es repetir “n” veces (puede ser 3,4,5, cualquier numero de) la instrucción o serie de instrucciones despues del siguiente “{”. Asi Karel empieza a leer primero la linea 8, ve que hay una instruccion que se llama avanzar y revisa arriba cual es la misión de esta nueva instruccion. Va a la linea 3, ve que en efecto hay una nueva instruccion que se llama avanzar y ahora quiere saber que es lo que hace. Pasa a la linea 4 donde observa que esta colocado el iterate, se da cuenta entoces que tendra que repetir 2 (imaginemos un dos en vez de la n) veces una instrucción y se pregunta ahora cual sera esa función. Pasa a la siguiente linea y se encuentra con la funcio basica “move”, por lo que ahora, ya que sabe cuantas veces tenia que repetor esa instrccuin se mueve dos veces. Ahora les mostrare como hacer un como hacer que Karel gire a la derecha. Sabiendo lo anterior, escribimos este codigo:

Codigo 3

Karel interpretara lo mismo que cuando hicimos el metodo avanzar. Intentenlo.

Esto es todo por ahora. Volveré con más, ya que estamos preparandonos para los examenes.


Volvemos con la siguiente parte del Karel. Para realizar tambien esta parte, he invitado a uno de mis unicos amigos en la escuela y un actual miembro de la pre-selección de la escuela, sin embargo, no ha podido. .Esta vez les dejare un problema para que le piensen un rato (no se preocupen, falta un año para que el concurso se vuelva a hacer). Traten de resolver el primero, pero claro, si quieren continúen con los otros. Estos problemas fueron realizados hace 3 años en un examen estatal.

Problema Examen Karel

La soluciòn, dentro de poco.

Un comentario a “Karel & OMI”

29 06 2008
zara (21:45:55) :

Deja un comentario

Puedes usar estas etiquetas : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>