Si aparece un error del tipo sin espacio de entorno, ejecute a mano los dos comandos que aparecen en el archivo y ahora sí que debería funcionar (¡viva Windows!).
En particular, son primordiales las siguientes clases:
Calcule el número de apariciones de un string dentro de otro string. Para ello utilice el método indexOf(String, int).
Haga un programa que genere un arreglo de números reales aleatorios. El tamaño del arreglo y el rango de los números aleatorios debe obtenerse a partir de los argumentos suministrados en la línea de comandos. Utilice el procedimiento Math.random().
Calcule el máximo y mínimo del arreglo.
Determine si un número entero es palíndrome. El número es palíndrome si al invertir sus dígitos se obtiene el mismo número. Construya un arreglo intermedio para almacenar los dígitos.
Calcule la la frecuencia de tokens en un archivo.
Ejecute el comando java HiLoUI y descubra el secreto.
En este programa se utilizó el patrón de diseño fachada. Este patrón consiste en separar la interfaz gráfica de la lógica de la aplicación. La lógica de la aplicación ha sido encapsulada en una sola clase con nombre HiLoGame y la interfaz con el usuario en la clase HiLoUI. Ambas clases se comunican mediante invocaciones a métodos.
Copie el archivo u:\HiLoGame.java a su directorio de trabajo e implemente la clase HiLoGame de acuerdo a la especificación contenida en el archivo. Compile y ejecute. Cuando haya terminado su desarrollo, no se olvide de suprimir cualquier mensaje de debugging que pueda arruinar la eficacia del juego.
La solución del problema se encuentra en u:\Env\HiLoGame.java. Modifique esta solución de forma que el programa mienta con un 25% de probabilidad cuando el usuario no asertó en su intento (para darle más emoción al juego). La idea aquí es mostrar que es fácil cambiar aspectos que sólo atañen a la lógica de la aplicación sin tener que tocar (ni siquiera conocer) la interfaz con el usuario.
Estudie la clase HiLoUI.java que implementa el módulo intefaz con el usuario para el juego anterior.
Analice, diseñe e implemente ahora la versión en donde el computador adivina un número inventado por el usuario. Al diseñar su solución, separe la lógica de la aplicación de la interfaz con el usuario como se hizo en el problema anterior.
Yo prefiero partir con un enfoque más tradicional introduciendo conceptos como tipos de datos primitivos, variables, instrucciones, procedimientos e incluso variables globales, como si Java fuese un lenguaje procedural.
El problema es que Java posee asperezas que complican la enseñanza bajo este enfoque. Por ejemplo:
La idea básica es que el programa se escriba usando la siguiente plantilla:
class Nombre-Archivo extends Application { ... variables globales ... void main() { // también puede ser: void main(String[] args) ... éste es el procedimiento de partida ... } ... procedimientos varios... }Examine el programa Fib.java para ver el esquema funcionando. Ejecute el programa mediante:
java Run Fib 20El comando carga primero la clase Run que recibe como primer argumento el nombre de la clase que se desea ejecutar, seguido de los argumentos para Fib. Run carga dinámicamente la clase Fib entregando mensajes en castellano en caso de errores que impliquen no poder ejecutar el programa.
En realidad las variables globales son variables de instancia de la clase definida, pero esto no es necesario contárselo a los alumnos en una primera etapa. Es la clase Run la que se encarga de crear una instancia de la clase definida para que no sea necesario declarar el main y los demás procedimientos como static.
Observe que dentro de Fib se usó println, string2int y exit sin especificar ninguna clase u objeto porque tales procedimientos fueron heredados de Application. En esta clase se pueden agregar todos los procedimientos que uno desee que se invoquen directamente sin tener que especificar un objeto o una clase.