Archivos mensuales: Marzo 2017

El generador de frases, mucha actividad en AppInventor y próximos retos

Carreras de coches en AppInventor. Ideas para generar juegos en el dispositivo móvil en CoderDojo.

El generador de frases que queríamos programar sigue avanzando. Uno de los ninjas me ha dejado subir su aplicación a la galería de AppInventor y desde este enlace se puede ver cómo lo ha planteado. Se trata de generar un nombre modificado, que incluya un artículo, un sustantivo y un adjetivo calificativo. Y luego ir construyendo un nombre ultramodificado que emplee el anterior y que incluya predicado y más complementos. Este ninja está en primaria aunque ya ha empezado a acercarse a conceptos de Lengua que aplicará en secundaria y sobre los que podrá decir ¡ya hice una aplicación sobre eso!

Y muchos más proyectos. Siguen llegando nuevos ninjas y aunque no consigo diferenciar si conocen fundamentos de programación o no a todos les gusta poner las manos sobre el teclado y empezar a construir aplicaciones con AppInventor. Cuando además les dices que pueden ir viendo cómo evoluciona su trabajo en el dispositivo móvil se les iluminan los ojos y se ponen a la tarea con pasión e ilusión.

Algunos ninjas están utilizando la guía de AppInventor que publicó Raúl y que se puede encontrar en la página de Coder Dojo. Otros han aprendido a mover una pelota por un plano ¡las coordenadas x e y de secundaria ya practicadas por alumnos de primaria! con ocho movimientos: arriba, abajo, izquierda, derecha y las diagonales. Y aún se animan a incluir un botón de turbo para acelerar el movimiento.

Un ninja ha demostrado mucha capacidad de trabajo, se ha impulsado sobre su trabajo y ya se ha lanzado a crear algo parecido a una carrera de coches. Habrá que ayudarle aunque sus ideas son muy creativas. Y otro está haciendo un juego de bolos. ¡Lanzar la bola y que se caigan los bolos!

Creo que los ninjas están muy maduros para empezar a trabajar de forma colaborativa. Por ahora se animan a trabajar en solitario y tienen que soltarse para trabajar en grupo pidiendo ayuda, ofreciendo sus conocimientos y sobre todo uniéndose para crear. Las chicas lo están haciendo con ‘La pastelería’ y aunque parece que se han quedado un poco bloqueadas seguro que próximamente alcanzarán resultados.

Mi intención es animarles a trabajar en un proyecto en el que tengan que utilizar funcionalidades específicas. Su reto será construir una historia, un relato, una aplicación que de sentido a todo. Aunque las estoy valorando con mi hija, porque cuando ella me dice que lo que propongo es un fracaso absoluto ¡se cumple! Sí me gustaría que incluyese:

  • Que permita dibujar
  • Que identifique la posición y la dibuje en un mapa
  • Que permita hacer fotografías
  • Que incluya un juego
  • Que tenga música

Serán los retos a los que nos enfrentemos en las próximas semanas. Hasta entonces, felicito a todos los ninjas por su actitud, por su interés y por sus ganas de aprender.

¡Hasta la semana que viene!

Imagen | knockhill

La programación recursiva y el generador de frases

… en la imagen se puede ver una imagen que incluye que en la imagen se puede ver una imagen… ¿qué es la recursividad?

La semana pasada trabajamos la lógica con el acertijo MU. Esta sesión los ninjas han venido recordando su desarrollo y especialmente han traído un descubrimiento: ¡No se puede pasar de MI a MU!

Y entonces les hemos preguntado por qué no se puede y aunque no han sido capaces de responder, todavía, sí que han entendido la siguiente pregunta. ¿Creéis que una máquina se daría cuenta de que no es posible pasar de MI a MU con esas reglas? Y uno de ellos ha dado con la clave:

No se puede pasar de MI a MU porque lo busqué en Google y encontré que no se podía. ¿Y por qué no puede saberlo una máquina? ¡Porque la máquina no lo buscó en Google!

Esta semana les hemos propuesto un reto muy sencillo, o no. Se trata de generar frases utilizando un algoritmo recursivo. Qué es la recursividad, me preguntaba un ninja, y no estoy seguro de habérselo explicado bien. Aquí hay una definición de cómo se aplica la recursividad:

La recursividad es una técnica muy empleada en la programación informática y consiste en que una función se llame a sí misma.

El mejor ejemplo de la recursividad es que si buscas la palabra en Google el buscador te dice: quizás quisiste decir recursividad. Y así hasta el infinito.

Para construir las frases de nuevo he recurrido a un esquema que aparece en el libro de Gödel, Escher, Bach: Un eterno y grácil bucle y que incluye dos estructuras: nombre modificado y nombre ultramodificado. En la primera es donde están los artículos, los adjetivos y el nombre y en la segunda es donde, además de la primera y ella misma ¡la recursividad! están el verbo, los pronombres, las preposiciones, etc.

Nos ha faltado trabajar un poco más el proceso de generación así que volveremos la semana que viene a revisar. Es especialmente interesante elegir el interfaz para generar las frases además de cómo organizar los textos que el generador va a utilizar.

Y hemos seguido dando la bienvenida a nuevos ninjas. Como siempre, les hemos animado a dibujar pantallas, a validar sus prototipos y a construir aplicaciones para dispositivos móviles con AppInventor.

Una pareja de adolescentes de quince años ha venido interesada en la realización de aplicaciones que tengan que ver con el movimiento, una especie de ‘Subway Surfer’ y ya hemos empezado a trabajar con botones, las coordenadas (x, y) y el uso del reloj para facilitar el movimiento autónomo de imágenes. Lo que más me ha sorprendido de los dos jóvenes es que les costaba trasladar sus magníficos conocimientos teóricos y llevarlos a la práctica. ¡Con lo fácil que es trabajar aplicando los conocimientos adquiridos con herramientas como AppInventor! Así que ha habido que sentarse un rato para explicarles cómo moverse por los ejes cartesianos, cómo incrementar o decrementar los valores de las coordenadas ¡aplicando que menos por menos es más! o cómo utilizar el reloj para generar movimiento permanente con cada tic-tac.

Además hemos animado a los ninjas a incorporarse al trabajo en grupo y colaborativo y a elegir ideas sobre las que trabajar. Uno de ellos ha empezado a identificar lo que le gustaría hacer con Pokemon y estoy convencido de que van a salir grandes ideas. Además dos ninjas están trabajando en ‘La pastelería’ de la que también me parece que va a salir un producto fantástico.

Felicito a todos los ninjas por su actitud, por su interés y por sus ganas de aprender.

¡Hasta la semana que viene!

Más información | Gödel, Escher, Bach: Un eterno y grácil bucle
Imagen | Alexandre Duret-Lutz

En AppInventor trabajamos la lógica con el acertijo MU

En AppInventor hemos empezado el segundo cuatrimestre, que durará hasta el verano de 2017, y hemos dado la bienvenida a los nuevos ninjas. Como siempre, les hemos animado a dibujar pantallas, a validar sus prototipos y a construir aplicaciones para dispositivos móviles con AppInventor. Tenemos cuatro meses para ir desarrollando el modelo e ir construyendo juegos y aplicaciones que les aporten y con las que desarrollen muchas habilidades.

Y con los más veteranos hemos trabajado con el acertijo MU. El acertijo MU es un buen ejemplo de plantear, resolver y analizar un problema lógico. Consiste en convertir, dentro del sistema formado por los símbolos MIU, que la cadena MI pase a ser MU, utilizando cuatro sencillas reglas.

  • Si una cadena termina con una I se le puede agregar una U (xI –> xIU).
  • Cualquier cadena después de una M puede ser totalmente duplicada (Mx –> Mxx).
  • Donde haya tres ‘I’ consecutivas (III) se las puede reemplazar por una U (xIII –> xU).
  • Dos ‘U’ consecutivas pueden ser eliminadas o canceladas (xUU –> xy).

Para los ninjas fue un ejercicio al que se aplicaron con alegría y dedicación y eso que al principio preguntaban ¿Qué es eso de MIU? ¿Qué es eso de ir de MI a MU?

Junto con la ayuda de los mentores dos ninjas realizaron una aplicación, se pueden ver los enlaces a sus aplicaciones aquí y aquí. Sus aplicaciones lo que hacen es ejecutar las reglas y sobre una cadena generan transformaciones para intentar llegar a MU desde la inicial MI.

El libro del que he obtenido el acertijo se llama Gödel, Escher, Bach: Un eterno y grácil bucle que tiene más de 30 años de antigüedad y que tiene que ver con la inteligencia artificial. Y es que ¿es posible resolver el acertijo MU?

La respuesta es NO. Es imposible deducir MU con las reglas del juego, a partir de MI. La solución del acertijo consiste en entender que el acertijo MU no tiene solución. Cuando se lleva un tiempo intentando resolverlo rápidamente se puede observar que no es sencillo deducir MU. En vez de seguir deduciendo expresiones aplicando las reglas, utilizando por ejemplo un árbol de decisión como el la imagen, el reto es entender que es imposible conseguir MU.

Este problema permite entender que la máquina puede jugar calculando cadenas del juego de forma infinita. Su cálculo no tendría fin porque es imposible deducir MU. El autor Hofstadter ideó este acertijo como ejemplo bastante consistente de lo que diferencia a los seres humanos de las máquinas y nos da una idea del tipo de problemas que debería ser capaz de resolver una máquina para considerarla tan inteligente como los seres humanos. La cuestión radica en crear máquinas que sean capaces de saltar fuera del sistema y decidir que el problema que se le ha propuesto se puede realizar o no.

Y como curiosidad final, que he leído al buscar información del acertijo, Hofstadter tomó el nombre del acertijo del carácter japonés MU que significa ninguno y da respuesta a muchos Koan (un problema que el maestro plantea al alumno para comprobar sus progresos).

La semana que viene seguiremos haciendo trabajos y aplicaciones con AppInventor. Entre las funcionalidades que podemos realizar quizá nos animemos con un generador de frases con estructuras simples: sujeto, verbo y predicado, y que podremos ir sofisticando según deseen los ninjas.

¡Hasta la semana que viene!

Más información | Gödel, Escher, Bach: Un eterno y grácil bucle
Imagen | Cronoviajes