Anda di halaman 1dari 12

Juan Carlos VARGAS CAMACHO

JAVA KARA
Programando en JAVA
Uno 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

Juan Carlos VARGAS CAMACHO

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

Juan Carlos VARGAS CAMACHO

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.

Juan Carlos VARGAS CAMACHO

// 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.

Juan Carlos VARGAS CAMACHO

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:

Juan Carlos VARGAS CAMACHO


*
kara.treeFront()
kara.treeLeft()
*
kara.mushroomFront() kara.onLeaf()
*/
public class PacMan extends JavaKaraProgram {

kara.treeRight()

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();
}
}

LEGO

Una 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.

Juan Carlos VARGAS CAMACHO

Ilustracin 3 Modelo de programacin mediante la mquina Lego

Aqu 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.

Juan Carlos VARGAS CAMACHO

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 LEGO

Considere 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.

Juan Carlos VARGAS CAMACHO

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.

Juan Carlos VARGAS CAMACHO

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".

10

Juan Carlos VARGAS CAMACHO

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.

11

Anda mungkin juga menyukai