lunes, 10 de diciembre de 2012

Lección 7. Nuestro primer juego: la escoba

En esta séptima lección vamos a realizar nuestro primer programa completo de cierta entidad. Y va a ser un juego de cartas: la escoba.
Es un juego de cartas muy simple, de los primeros que se les enseña a jugar a los niños para que practiquen la suma, por lo que nos va a servir de ejemplo de juego en el que el ordenador tiene que simular una cierta inteligencia para jugar sus cartas. Un primer paso a la inteligencia artificial.
En el plano teórico introduciremos dos conceptos muy importantes: los interfaces en la herencia de Java y la clase Vector como almacenamiento de objetos.
Como ya es una aplicación de verdad, seguiremos un proceso de desarrollo de verdad, dividiendo el trabajo en dos apartados, como veremos, bastante independientes entre sí.
En primer lugar, en esta lección, desarrollaremos el alma del juego creando una aplicación de consola completamente funcional con la que podremos jugar a la escoba con nuestro ordenador usando el teclado.
En la próxima lección incorporaremos al juego programado la interfaz gráfica que hará que lo que parecía un jeroglífico de un hacker de película se transforme en un luminoso juego de cartas.
He intentado seguir en el texto el proceso de creación de la aplicación tal y como yo lo realizo además de describir la ejecución de diversas sentencias para que nos vayamos acostumbrando a ver cómo ejecuta la máquina virtual Java nuestros programas.
Además de eso seguimos empleando los elementos que cada vez se nos harán más amigables: bucles, comparaciones y arrays.

PDF con la lección

Escoba.pdf

Vínculos de interés

viernes, 14 de septiembre de 2012

Lección 6. Ventanas

Algunos pensarán ¡al fin!
Ventanas funcionando en un manejador de ventanas
que no es Windows
Pues sí. Como todo lo bueno se ha hecho esperar pero al fin ha llegado. Nuestro primer interfaz gráfico.
Estoy convencido que es en este aspecto, aparte de la exoticidad de poder ejecutar las aplicaciones en cualquier entorno sin necesitar de un cambio ni de volver a compilar la aplicación siquiera, en el que es verdaderamente fuerte Java. En mi modesta opinión es el mejor lenguaje para construir interfaces gráficos.
Java es un lenguaje desarrollado desde el principio siendo un lenguaje orientado a objetos, por lo que no ha necesitado de añadidos para adaptarse a esta evolución y eso se nota.
Ha abandonado conceptos complicados de la herencia, como la herencia múltiple, sustituyéndolos por conceptos más sencillos, como los Interface (que aún no hemos visto y que tampoco vamos a ver en esta lección) que ofrecen una versatilidad a los objetos impresionante.
Pues con la misma filosofía ha abordado Java la implementación del manejo de las ventanas gráficas: manteniéndose en la sencillez, de la que tan alejada se encuentran lenguajes como el C++ sobre todo en la implementación de Windows, pero permitiendo la versatilidad, el sentir que podemos hacer lo que deseemos con las clases de Java.
Sumando a esta sencillez se encuentra el IDE que estamos manejando, que nos facilita las cosas cuando se trata de ir colocando todos los controles con la mayor sencillez posible pero mostrándonos el código con el que lo hace, lo que nos permite aprender y emplearlo para automatizar la colocación de, por ejemplo, un conjunto enorme de controles del mismo tipo programáticamente.
Termómetro de ventana.
¿Alguien coge el doble sentido?
Finalmente hacer ver que aunque la lección sea la más larga en cuanto a la cantidad de páginas no es por su complejidad sino por una, quizás exagerada, obsesión por mi parte de que nadie se pierda en ningún paso de estos primeros con los controles y formularios y por eso hay una profusión tan grande de imágenes muchas de ellas, seguramente, superfluas. Pero prefiero que muchos pienses que sobran explicaciones a que uno se pierda en estos primeros pasos en lo que, considero, es la parte más agradecida del mundo de la programación donde con muy poco esfuerzo se consiguen vistosos resultados.
En cuanto lo que es el nivel de dificultad del ejercicio presentado ha bajado con respecto al de las anteriores lecciones. La idea es que la sencillez del problema a resolver nos centre en el punto de interés de esta lección: presentar los fundamentos de la programación de aplicaciones orientadas a formularios.
Vamos a realizar una pequeña utilidad para convertir temperaturas entre dos escalas, la Celsius y la Farenheit.

PDF con la lección


Vínculos de interés

domingo, 29 de julio de 2012

Lección 5: Manejo de errores en Java

Esta lección, al igual que la primera, es un poco teórica. No vamos a realizar un ejercicio específico sobre el tema sino que vamos a mejorar el que realizamos en la lección anterior en el que ya tuvimos que emplear lo que vamos a conocer en este tema.
Igual que en la primera lección de teoría sobre el lenguaje Java indiqué que no era importante comprender todos los elementos porque los iríamos desgranando en las lecciones sucesivas, en este caso sí  es importante entender la filosofía del manejo de errores en Java porque es una pieza importante en la programación.
No vamos a agotar el tema, se completará en lecciones posteriores, pero las bases sí van a quedar completamente explicadas. Y es importante comprenderlas bien porque no dejaremos de usarlas de aquí en adelante. Iremos recordando, no obstante, los conceptos en lecciones posteriores conforme se empleen. Pero es mejor no fiarse de mí ni de mi paciencia para explicar las cosas varias veces.
Si algo no entiende para eso están los comentarios (entre otras cosas), no sólo para hacerme la pelota. No dudéis de plantear en ellos cualquier duda que se os presente, trataré de resolverla en la medida de mis posibilidades.

PDF con la lección:

domingo, 22 de julio de 2012

Lección 4: Ordenar listas


Seguimos construyendo aplicaciones de consola (ya no tardaremos mucho en crear ventanas) y esta vez el reto va a ser combinar datos de dos archivos en uno manteniendo un orden, alfabético en este caso.
Ordenar listas va a ser una tarea recurrente en la vida de un programador. En infinitas versiones nos encontraremos con problemas en los que haya que ordenar datos una y otra vez, cuanto antes comencemos con este problema mejor.
El ejercicio propuesto está derivado de un ejercicio real de un curso de programación de la escuela de ingenieros así que no es un ejercicio sencillo. Si lo resuelves es que vas por el buen camino y dentro de ti está creciendo un alma de programador. ¡Bienvenido al club!

Pdf con la lección:

OrdenarListas.pdf

Vínculos de interés

sábado, 14 de julio de 2012

Lección 3: Java hasta en la sopa (programación de filtros)

A principios de este año participé en un curioso concurso de programación organizado por la red social Facebook: La Facebook Hacker Cup. El concurso se organizaba en rondas sucesivas en las que se proponían tres problemas que había que resolver mediante programación en el lenguaje que se desease (con la única condición de emplear sólo herramientas libres). Yo lo hice en C, pero ahora vamos a intentar uno de ellos de la fase clasificatoria, creo que el más sencillo de los tres de esta ronda, y lo vamos a resolver en Java.
Realmente el algoritmo es independiente del lenguaje en el que se programe y las líneas de programa van a ser muy similares, tan sólo se van a diferenciar algunos detalles en que las librerías standard de ambos lenguajes difieren y hacen que las instrucciones que leen los datos resultasen mucho más sencillas en C.
Vamos a comenzar a emplear comparaciones, bucles y muchos de los elementos que fueron presentados en la primera lección.
Al final de esta lección estará capacitado para pasar la fase clasificatoria de la próxima Hacker Cup puesto que el requerimiento que exigían en esta ronda previa era remitir uno de los problemas correctamente solucionados.
¡Nos encontraremos el próximo año en la fase final, en California! ¡Seguro!

lunes, 9 de julio de 2012

Lección 2: Hello world (Funcionamiento IDE)

Ya es hora de entrar en materia y de darse cuenta que programar puede ser una tarea sencilla, si te gusta lo suficiente para olvidar todos los disgustos que te va a dar.
Como este curso de programación no intenta ser rompedor y desde luego pretender ser cortés, vamos a empezar con la conocida aplicación con la que comienza cualquier curso de programación que se precie (aunque sea de una base de datos): Hello world! ¡Hola mundo!
Como la aplicación es tan sencilla aprovecharemos para aprender el funcionamiento básico del IDE que emplearemos a lo largo del curso (Netbeans IDE).
Si eres nuevo en el mundo de la programación experimentarás por primera vez la sensación de que tu ordenador hace exactamente lo que le ordenas... Disfrutad.

PDF con la lección:


Vínculos útiles:

domingo, 8 de julio de 2012

Lección 1: Ladrillos de Java (teoría)

Normalmente en los cursos de programación se van presentando los elementos del lenguaje de una forma casual, con una falsa naturalidad que seguramente pretenda que el curso completo parezca una sucesión de mágicos momentos en los que van apareciendo nuevos elementos que completan el lenguaje como si de una ley de la evolución de los lenguajes darwinista se tratara.
Como este curso no pretende ser un método sino unas simples clases no voy a intentar seguir este proceso, en parte porque me obligaría a un esfuerzo adicional, en la selección de los ejemplos, para intentar que sólo necesitasen un elemento más que el ejemplo anterior en su programación.
Por ello en esta primera lección voy a presentar todos los elementos del lenguaje, casi todos al menos, para que cuando los usemos en los distintos ejemplos ya sepamos cómo funcionan. No pretendo que se entienda su funcionamiento con la simple lectura de esta lección (los iremos empleando en los distintos retos que nos vayamos proponiendo) pero al menos ya sabremos con qué contamos para la tarea.
He intentado ser lo más preciso posible sin recaer en formulaciones clásicas y, aunque sea una misión imposible, intentando exponerlos de forma amena.
No lo dije en la presentación pero, obviamente, pueden usarse los comentarios del blog no sólo para animarme a continuar en el trabajo sino para preguntar cuestiones sobre la lección o sobre la vida misma si se tercia. Contestaré lo que sepa y lo que no me lo inventaré (¿o qué esperabais?).
He aquí el resultado:

PDF con la lección:

viernes, 6 de julio de 2012

Introducción. ¿Qué es esto?

Pues esto es (o va a tratar de ser) un curso de programación. Y usaremos Java para este viaje por ser, sin lugar a dudas, el lenguaje con mayor desarrollo en los próximos años sobre todo en Internet.
¡Me encanta programar! Y he intentado transmitir esta afición a mis más allegados (mi mujer y mis hijos) con resultados profundamente negativos: ninguno de ellos ha aprendido conmigo y tan sólo el mayor, estudiante de ingeniería, ha aprendido a programar en Pascal.
Calculadora programable
Texas Instruments
(finales años 70)
Sin embargo es una de mis grandes aficiones. Comencé a programar a los 13 años, en las postrimerías de la década de los 70, junto con mi gran amigo Juan y su calculadora programable Texas Instruments. Con esta máquina, que ni siquiera tenía un verdadero lenguaje de programación sino que era poco más que una lista de pulsaciones de sus teclas, hicimos programas tan divertidos como una carrera de coches, que se jugaba en un tablero aparte, obviamente, puesto que la calculadora sólo tenía el display normal numérico. De ahí pasamos a una calculadora Sharp con lenguaje BASIC de programación, al Sinclair, el ZX81 primero y el Spectrum y el QL después, y del infinito al más allá.
Así que me he llevado una gran alegría cuando mi sobrino Daniel (cuyo blog recomiendo) me pidió unas clases de programación. ¡Aquí las tienes!
Sinceramente, el lenguaje de programación que se elija no es importante. Si fuera posible lo ideal sería primero aprender a programar, y luego ir aprendiendo lenguajes. Pero yo no sé hacer eso, así que he elegido Java como herramienta de programación porque es moderna y divertida y se emplea un montón.
Todo el trabajo está por hacer, así que las entregas se irán extendiendo por el tiempo conforme mi tiempo libre me lo permita y mientras no me abandone la energía extra que me aporta la ilusión de este proyecto, por lo que si estás interesado por él HAZMELO SABER poniendo un comentario en el blog y diciéndome que lo vas a intentar, lo que te gustaría aprender o lo que quieras, incrementarás esas ganas de seguir adelante que ahora tengo.
Quiero organizarlo en forma de lecciones escritas en un archivo PDF que se pueda descargar y conservar. Quizás cuando esté terminado (o tenga una entidad suficiente) recoja estas lecciones y las publique en un libro digital en la biblioteca en la que suelo publicar mis escritos (de momento uno sólo).

PDF con la lección:

Y aunque esta entrada sea sólo una introducción al curso, quiero que presente el mismo formato que las restantes. Así que ahí va el enlace a la lección de hoy: Introduccion

Vínculos útiles:

IDE (herramienta de programación) empleada en el curso Integrated development environment (ambiente de desarrollo integrado) gratuito y con versiones para los más importantes sistemas operativos (Windows, Linux, Mac, etc) para aprovechar la libertad que nos brinda Java.
SDK Java. Conjunto de herramientas mínimo Java Para los que no les gusta emplear ayudas. Herramientas de ventana de comandos necesarias para programar en Java (incluidas en el IDE anterior).