Blog de Pedro J. Camacho

Inicio » Uncategorized

Category Archives: Uncategorized

Prueba y Aprende

Los programadores nos pasamos la mayor parte de tiempo probando código, sin embargo es habitual no conocer bien las herramientas de depuración. Los famosos bugs son el resultado de alguna prueba no realizada. En esta entrada cuento como aprender a partir del error.

bug-magnifying-glass

Ya lo decía Oscar Wilde: “La experiencia es el nombre que damos a nuestras equivocaciones” y los programadores sabemos mucho de esto. Como profesor de Programación y de Entornos de desarrollo, en mis clases trabajo trabajo Java y doy teoría de pruebas, en dichas asignaturas.

El tema de Excepciones Java es muy importante y por eso le dedico una Unidad Formativa completa. En ella, aprendemos a gestionar los errores que se producen durante la ejecución un programa. En concreto vemos como se puede generar de forma accidental, como lanzarlas nosotros mismos, gestionarlas o incluso crear nuestras propias excepciones.

Podéis echar un vistazo al código con el que trabajo en: https://github.com/PedroCamacho/JavaDocyExcepciones.git y si ejecutáis el programa HolaMundo conseguiréis provocar el famoso “ArrayIndexOutOfBounds“, lo que significa que el índice del array se ha salido de los límites.

error1

Como programadores, debemos acostumbrarnos a los errores y lejos de ser “el enemigo”, tenemos que comprender que son muy beneficiosos en el proceso de aprendizaje. Por ejemplo en la imagen anterior nos indica que el índice se desbordó al alanzar el valor de “3”, que la línea donde se provocó fue la 11 y que se estaba ejecutando el método main del programa HolaMundo.

El siguiente paso es familiarizarse con el entorno de depuración que nos facilite en IDE con el que estemos trabajando. En mi caso, les muestro el debugger de Eclipse, que facilita la ejecución instrucción a instrucción mientras se observa la evolución de las variables y el camino que siguen nuestros programas.

Si ejecutamos el código “ProvocarExcepcion1” desde la perspectiva de depuración y poniendo un punto de interrupción en la línea 12, con F5 podemos avanzar hasta la ejecución de la línea 6, justo antes de hacerlo podemos observar como el valor de la variable “div” tiene el valor de 0 antes de realizar la división. Ese es el motivo del error que terminará provocando este código “/ by zero“.

error2

Afortunadamente Java tiene un buen amigo para evitar estos problemas, a los que yo habitualmente llamo “fuego“. Ese fiel compañero que nos ayuda a evitar que nuestro programa se rompa delante del usuario es la instrucción try-catch, a la que consecuentemente denomino “bombero“, porque apaga el fuego antes de que le llegue al usuario. Esto es lo que podéis observar en el código “ProvocarExcepcion2”

También os animo a que ejecutéis el resto de códigos, los de LanzarExcepción sirven para provocar nosotros el fuego, mientras que el de PropiaExcecpcion descubre cómo crear nuestros propios fuegos.

Por último, no podía dejar de hablar de la otra asignatura que imparto en relación a este tema, Entornos de Desarrollo. En ella vemos los diferentes tipos de pruebas, cómo planificar un buen plan de pruebas y como automatizarlas con JUnir. No podemos evitar todos los problemas de nuestro código, pero sí que es relativamente sencillo reducirlos aplicando algunas sencillas técnicas. Prueba, prueba y cuando creas que todo parece funcionar…vuelve a probar, así no dejarás nunca de aprender!

1DAM en Programame – Fantástico!

El 21 de diciembre, se organizó el calentamiento pre-navideño de Programame 2016 y el equipo de U-Tad quedó en una merecida séptima posición de 78 grupos participantes. Hay que añadir que los tres alumnos son estudiantes de primer curso del CFGS de Desarrollo de Aplicaciones Multiplataforma.

img_20161222_085001

Ayer la emoción fue máxima hasta el final, con grandes sensaciones entre los alumnos Sergio Redondo, Pablo Montiel y Carlos Rodríguez (de izquierda a derecha). Resolvieron 4 ejercicios de los 6 propuestos y además, se quedaron con la sensación de haber podido ganar (consiguieron resolver otro problema 10 minutos fuera de tiempo y eso les hubiera dado la victoria).

screenshot_2016-12-21-20-03-25

Ya hay tradición de realizar este tipo de concursos en la Universidad de Tecnología y Arte Digital. El año pasado, por ejemplo, realizamos esta fase de preselección en local en el centro:

Ya estamos preparados para la siguiente fase!!!!!!

Hilos en Java. Cómo utilizar la clase Semaphore

La programación concurrente requiere de una forma diferente de pensar. Cuando se comienza a programar, nuestra mente se estructura de forma secuencial y no es trivial el salto a la programación paralela. En este vídeo (20min) introduzco la programación de Hilos (comúnmente conocidos como Threads) en Java, utilizando la clase Semaphore como recurso básico de sincronización.

Como recurso metodológico he utilizado la Escenificación Teatral en la asignatura de Programación de Servicios y Procesos de la U-Tad. Gracias a los alumnos de 2º CFGS DAMP, hemos representado en clase el proceso por el que varios coches son atendidos por varios puestos a la hora de pasar una ITV.

(más…)

Proyecto Videojuego UEM

Presentación de un vídeojuego realizado por alumnos de los CFGS DAM de la UEM. Experiencia de Trabajo en Grupo en entorno Scratch, programando en bloques  y diseñando Sprites.

Como tarea final de la primera Unidad Didáctica del módulo de Programación del Ciclo Formativo de Grado Superior de Desarrollo de Aplicaciones Multiplaforma, los alumnos tenían una semana para organizarse internamente y ser capaces de crear un juego educativo para una editorial ficticia.

(más…)

Proyecto Videojuego U-tad

Presentación de un vídeojuego realizado por alumnos de los CFGS DAMP y AJEI de la U-TAD. Experiencia multidisciplinar de trabajo en Scratch, programando en bloques  y diseñando Sprites.

Como tarea final de la primera Unidad Didáctica del módulo de Programación del Ciclo Formativo de Grado Superior de Desarrollo de Aplicaciones Multiplaforma, los alumnos tenían una semana para organizarse internamente y con otros alumnos del ciclo de Animaciones 3D, juegos y Entornos Interactivos, para ser capaces de crear un juego educativo.

(más…)

A %d blogueros les gusta esto: