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…)

Gamificación con ClassCraft

En esta entrada describo mi experiencia gamificando (ver término ludificación) utilizando ClassCraft con la clase de del CFGS DAMP en U-TAD durante 2 trimestres consecutivos del curso académico 2015/2016. Con 17 alumnos agrupados entorno al Proyecto Integrador creando un entorno similar al de un juego de rol.

ClassCraft

Los objetivos que me había planteado con esta herramienta están alienados con los que se nos planteamos los profesores que queremos gamificar nuestro aula. En  eran los siguientes:

  1. Fomentar la sensación de pertenencia a un grupo. Las acciones positivas o negativas de un alumno repercuten en su grupo.
  2. Disminuir el absentismo o los retrasos.
  3. Crear un ambiente distendido en clase
  4. Establecer una correlación positiva entre los resultados académicos y los logros en el juego.

El sistema llegó a mi conocimiento gracias al profesor Carlos Fernández-Tessier, quien lo había utilizado el año anterior y del que recibí la motivación suficiente como para empezar. Como profesor novato en este sistema, me sirvió de gran ayuda los tutoriales que tiene classcraft. Los pasos que tuve que dar fueron los siguientes:

  1. Crear las cuentas de los alumnos y configurar sus roles iniciales.
  2. Crear los equipos y distribuir los alumnos entre ellos.
  3. Establecer los comportamientos:
    1. Positivos: los que dan puntos de experiencia.Lo siguiente fue establecer las recompensas (por ejemplo, sacar la mejor nota en tu test)
    2. Negativos: los que quitan puntos de salud (por ejemplo, llegar tarde a clase).
  4. Definir los poderes: Cada perfil tiene sus propios poderes y es importante adaptarlos a lo que el profesor desea que los alumnos puedan tener como recompensa a su buen hacer dentro del juego (por ejemplo, poder entregar un día más tarde una tarea).
  5. Definir las penas: Cuando un jugador pierde toda su salud, de forma aleatoria le puede ocurrir algo negativo (por ejemplo, tener un día menos para entregar un trabajo).
  6. Definir los eventos del día: Al comienzo de cada clase y de forma aleatoria sucederán eventos positivos y negativos que darán dinamismo a la clase.

Esa es la parte más importante del juego, configurarlo de forma adecuada para alcanzar los objetivos planteados.

Resultados obtenidos:

  • Alta participación: Los alumnos solicitaban el evento del día y eran conscientes de las acciones positivas y negativas que tenían sus acciones.
  • Dinamismo: Algunos eventos del día eran bastante graciosos y obligaban a salir de la zona de confor tanto a alumnos como al propio profesor.

Posibles mejoras:

  • Pienso que es mejor iniciar un juego cada trimestre, en lugar de una única partida para un periodo tan largo.
  • Hay comportamientos que no he utilizado: ser participativo en clase o no atender en clase nunca las he utilizado por la dificultad de aplicar un criterio poco concreto.

Futuro

  • Volveré a utilizar este sistema y trataré de enriquecerlo con otros sistemas de gamificación.

 

A %d blogueros les gusta esto: