Java Kara

14

description

Java Kara bot in use

Transcript of Java Kara

JAVA KARA

Juan Carlos VARGAS CAMACHO

Juan Carlos VARGAS CAMACHO

JAVA KARAProgramando en JAVAUno de los lenguajes de programacin ms usados es JAVA. Debido a la existencia de distintos tipos de CPUs y a los continuos cambios, era importante conseguir una herramienta independiente del tipo de CPU utilizada. Desarrollaron un cdigo neutro que no dependa del tipo de electrodomstico, el cual se ejecutaba sobre una mquina hipottica o virtual denominada Java Virtual Machine (JVM).Debido entonces a su importancia y como se ha aplicado este lenguaje hoy en da que el conocimiento de este lenguaje no es importante sino indispensable para los ingenieros de Sistemas.Muchas cosas que JAVA tiene en su lenguaje, lleva cierta similitud con el lenguaje C++, as como la estructuracin del lenguaje. Sin embargo los programas desarrollados en Java presentan diversas ventajas frente a los desarrollados en otros lenguajes como C/C++. La ejecucin de programas en Java tiene muchas posibilidades: ejecucin como aplicacin independiente (Stand-alone Application), ejecucin como applet, ejecucin como servlet, etc. Un applet es una aplicacin especial que se ejecuta dentro de un navegador o browser (por ejemplo Netscape Navigator o Internet Explorer) al cargar una pgina HTML desde un servidor Web. El applet se descarga desde el servidor y no requiere instalacin en el ordenador donde se encuentra el browser. Un servlet es una aplicacin sin interface grfica que se ejecuta en un servidor de Internet. La ejecucin como aplicacin independiente es anloga a los programas desarrollados con otros lenguajes.Programando la Mariquita Kara.Kara es un ambiente de programacin que tiene como meta principal la introduccin a la programacin por medio de las mquinas de estado finitas*. El uso de las mquinas de estado finito y su interfaz con el usuario tienen una gran ventaja, una mquina de estado finito puede ser construida fcilmente de una forma puramente grfica. En el mundo de Kara hay slo unos pocas clases de objetos: los inamovibles troncos que ocupan completamente una casilla, hongos los cuales Kara puede empujar, y las hojas de trbol, los cuales Kara puede levantar o simplemente abandonar en una casilla, repetidas veces; y por cierto Kara. Kara es ubicada en cualquier casilla libre o una slo ocupada por una hoja de trbol, encarando as a moverse en cualquiera de las cuatro direcciones, de frente, atrs, a la izquierda o a la derecha. As mismo Kara tiene sensores los cuales le dan la posibilidad de interactuar directamente con su ambiente. Estos sensores son prepuestos en la pantalla con preguntas, las cuales son cmo el estudiante afrontar su uso.

Hay un rbol en la casilla en frente de Kara?Hay un rbol en la casilla derecha de Kara?Hay un rbol en la casilla izquierda de Kara?Hay un hongo en frente de Kara?Hay una hoja debajo de Kara?

Tambin Kara pude ejecutar acciones primitivas, las cuales dependen de su comportamiento. Y son:Avanzar en la presente direccin.Doblar 90 a la derecha, en la presente casilla.Doblar 90 a la izquierda, en la presente casilla.Dejar una hoja de trbol.Levantar una hoja de trbol.

El mundo de Kara, y Kara en s misma, son intencionalmente tan simples como fueron descritas anterior mente. Son mantenidos la cantidad de comandos, y objetos del entorno, y los sensores, para distintos niveles de tareas. Usando estos comandos, sensores, etc. definimos el comportamiento de Kara para que pueda seguir un camino de hojas, JavaKara ofrece una fcil introduccin a la programacin en Java, as entonces programamos a una Mariquita cuyo nombre es Kara en Java. El mundo, es decir el entorno donde se trabaja es el mismo de Kara, uno puede ver directamente que es lo que su programa hace. Java Kara es un programa que har la transicin a aprender el real lenguaje Java, ms fcil.while (!kara.treeFront()) {if (kara.onLeaf()) {kara.removeLeaf();}kara.move();}

El cdigo anterior nos muestra lo que hace Kara cuando est cerca de un rbol y encima de una hoja.El compilador es sencillo y usa adems unas funciones pre-definidas en su memoria, con lo cual se desarrollan los eventos que programaremos, estos eventos ilustran los bsicos conceptos / programacin mediante procesos; mtodos simples de llamado, ramas, bucles, variables, tipos bsicos, matrices, as como implementacin de mtodos con parmetros simples y retorno de valores. En JAVA Kara se muestran, como se mencion anteriormente, funciones que pertenecen directamente al programa como por ejemplo la sentencia void putLeaf() la cual es una sentencia especial que hace que cuando el insecto Kara se encuentre posicionado encima de un espacio vaco, Kara deje un trbol sobre este. Su funcin inversa sera la de recoger una hoja cuando Kara se encuentre encima de una.Esta sera void removeLeaf() . Adems tambin que dentro JAVA Kara se puede programar directamente lo el ambiente para que su actualizacin se d de una forma automtica. Algunas sentencias en ejemplo son: void setSize (int newSizeX, int newSizeY), la cual sita el tamao del entorno en el cual Kara va a interactuar.Un ejemplo citado en este informe es el siguiente, en el cual se muestra una interaccin simple entre Kara y su entorno, haciendo que cada vez que est sobre una hoja, la levante, y si se encuentra en un espacio vaco deje una hoja en ese lugar. Adems de que previene que Kara se estrelle contra un rbol, ya que cada vez que est al frente de uno, Kara tomar otro camino.

// Note: Under Windows, do not save Java files to top-level directory (e.g. C:).// If compiling with JDK 1.4, you must remove the following line:import JavaKaraProgram;/* * COMMANDS: * kara.move() kara.turnRight() kara.turnLeft() * kara.putLeaf() kara.removeLeaf() * SENSORS: * kara.treeFront() kara.treeLeft() kara.treeRight() * kara.mushroomFront() kara.onLeaf() */public class FindTree extends JavaKaraProgram {void sobrelahoja() {if (kara.onLeaf()) { kara.removeLeaf();}else {kara.putLeaf();}}

public void myProgram() {if (treeFront()){if(treeLeft()){turnRight();}Else turnRight()

}Kara.move();sobrelahoja();

}

Eso har que cuando est en el siguiente entorno, Kara siga por el camino de hojas, evitando colisionar con los rboles.

Ilustracin 1Entorno donde Kara interactuar con el programa mostrado.Es posible tambin programar a Kara para que desenvuelva tareas ms complejas como seguir un patrn, lejos de encontrarse con objetos a colisionar. Es decir en un espacio vaco. El punto de esto es como por ejemplo si programamos un pequeo robot que siga una pista de lneas punteadas. A continuacin se muestra el programa hecho para tal caso, en donde Kara seguir el rastro de hojas.

Ilustracin 2Rastro de hojas que Kara debe seguir.// Note: Under Windows, do not save Java files to top-level directory (e.g. C:).// If compiling with JDK 1.4, you must remove the following line:import JavaKaraProgram;/* * COMMANDS: * kara.move() kara.turnRight() kara.turnLeft() * kara.putLeaf() kara.removeLeaf() * SENSORS: * kara.treeFront() kara.treeLeft() kara.treeRight() * kara.mushroomFront() kara.onLeaf() */public class PacMan extends JavaKaraProgram {

void turnAround() { kara.turnLeft(); kara.turnLeft(); } public void myProgram() { kara.removeLeaf();

while (!kara.treeFront()) { kara.move(); if (!kara.onLeaf()) { turnAround(); kara.move(); kara.turnRight(); kara.move(); if (!kara.onLeaf()) { turnAround(); kara.move(); kara.move(); if (!kara.onLeaf()) { break; } } } kara.removeLeaf(); } }}LEGOUna de las caractersticas bien resaltantes del programa JAVA Kara es que se puede programar mediante una interfaz Mindstorms Lego. Es decir, mediante este podemos programar en diagramas de flujo al cual le otorgaramos ciertas caractersticas para el desarrollo de eventos. Es til cuando se quiere programar y ver cmo el programa sigue su ruta.

Ilustracin 3 Modelo de programacin mediante la mquina LegoAqu mostramos un modelo del ejemplo de arriba el cual haca que Kara siga una ruta y que busque en esta, hojas.

Ilustracin 4Kara buscar hojas en el cuadro.Esta ltima programacin har que Kara busque hojas por el recuadro. No necesariamente la ruta puede estar definida. Simplemente los sensores programables har su trabajo.Entre otras caractersticas del programa, es un acercamiento al lenguaje de programacin que ofrece JAVA.

Programas instructivos de estado finito.Las mquinas de estado finito son perfectas para controlar procesos que alcancen condiciones locales. De hecho, teniendo un ambiente como el de Kara, esto se torna en un programa especificado de una forma ms concisa que un programa hecho en un compilador convencional.

Ilustracin 5Interfaz de trabajo LEGOConsidere una muralla de rboles de forma arbitraria, con apndices arbitrarios como los mostrados en la figura de abajo. Kara debe ser programada en un ciclo sin fin alrededor del permetro de la pared, tenindola siempre a su derecha. El presente programa de estado finito, presentado en la notacin del ambiente de Kara, soluciona el problema.

Ilustracin 6Muro de rboles. Y el comportamiento que le damos de muro siempre a la derecha.Kara comienza en un estado de bsqueda, sin saber nada acerca de su posicin. Hay un pedazo de pared en la derecha de Kara, o diagonalmente al costado inferior de la derecha. Tan pronto Kara no sienta la presencia de una pared (ni en frente ni a la derecha), ella avanzar de frente. Si siente una pared, adelante o a la derecha, ella inmediatamente buscar estar en la condicin de "Pared a la derecha", la cual que propusimos como comportamiento.

Ilustracin 7Estado de "Bsqueda"Bsqueda: Pre-condicin = Verdadera; Post-condicin = Pared siempre a la derecha.

Ilustracin 8Estado de "Camina" en el programa.Camina: Pre-condicin = Post-condicin = Pared siempre a la derecha.El lector inclinado matemticamente puede encontrar instructivo comprobar que el programa est correcto chequeando que el estado de avance mantenga la condicin "la pared a la derecha". Con esto Kara avanzar siempre a lo largo de la pared. Se deben de apuntar con esto, las varias ideas de la teora de la computacin, de algoritmos y programas que pueden ser ilustrados en un simple, verstil y "juguetn" set de reglas que pueden ser rpidamente entendidas.

Ilustracin 9 Hojas de trbol y casillas vacas que representan el tringulo de Pascal Modulo 2.La figura anterior muestra un patrn de hojas de trbol el cual representa los enteros que divididos entre 2 dan un residuo, del tringulo de Pascal, el cual corona a la esquina izquierda de la malla del mundo de Kara. Es remarcable que las cuatro mquinas de estado finito mostradas en la figura de abajo bastan para dibujar este intrincado patrn. Los estados "lleva 1" y "lleva 0" implementan la suma del mdulo 2. El estado "siguiente columna" dirige a la mariquita a lo largo de la malla en esta controversial forma.

Ilustracin 10 Detalle de la programacin Pascal mod 2.La figura de arriba muestra el detalle de las especificaciones de los estados "llevar 1". En este estado, Kara ya sabe el campo de la derecha est ocupado por una hoja de trbol. Y que ese campo tiene que aadirle el valor del campo actual. La mariquita consulta a sus sensores si va a tener un rbol enfrente, y si est o no sobre una hoja de trbol. Las cuatro respuestas posibles a estas cuestiones binarias hacen que se ejecuten diferentes secuencias de acciones, seguidas por las transiciones a los diferentes estados siguientes. Considerando como la primera transicin como un ejemplo, Kara no est en frente de un rbol, significando que no ha alcanzado an el fin de la columna actual. Y no est sobre una hoja de rbol, haciendo que su lectura sea cero.Cada vez que 1+0=1, entonces Kara deposita una hoja de trbol, as escribiendo el resultado de 1 de su suma mod 2. Kara debe "escribir" en la casilla correcta y debe posicionarse as misma apropiadamente para la siguiente adicin. Esto requiere una danza complicada expresada por 7 comandos de movimiento al rededor del comando "escribir".

Conclusiones

Es un programa divertido que ayudar a desarrollar esa parte de crear funciones y determinar eventos. El punto es que se puede trabajar con la mayor comodidad que se desee, como el modelo de Lego mostrando el diagrama de flujo del programa.El diseo de mundos de juguete para instrucciones de programacin es un esfuerzo popular, habiendo una antecesor grande llamado KAREL, la robot. Muchos de estos ambientes ofrecen varias ms opciones y posibilidades que Kara, y algunos de ellos no son expresadamente diseados para ser usados como introduccin a la programacin. Por otro lado, Kara fue diseada para ser tan simple como sea posible, para ofrecer las posibilidades y opciones que sean absolutamente necesarias, y que puedan ser usadas para la enseanza de los primeros pasos en programacin.Uno problema es que se pierde cierta naturalidad directamente asociada al lenguaje JAVA, sin embargo an podemos practicar sobre todo colocar funciones, declararlas y analizar cmo va ese trabajo.Otro problema es que no se puede tener de alguna forma de pasar del modo Lego al modo Consola o viceversa. Es decir, si uno comienza a programar en el modo Lego tiene que terminar la programacin en ese modo. Tambin carece de alguna forma exportar e archivo hacia otros afines. Al fin, y acabo es una bonita aplicacin con la que podremos aprender la forma de programacin JAVA y un poco de sus sintaxis.

10

9