Smartick Pruébalo gratis Abrir el Menú Móvil ¡Pruébalo gratis!
Acelera el aprendizaje de tus hijos
Smartick les ayuda a aprender de manera divertida

01Jul

Descubre el juego de programación avanzado de Smartick Coding: Tableros

Hoy queremos hablarte de nuestra actividad más avanzada llamada Tableros. Se trata de una nueva actividad dentro de nuestro juego de programación, con la que trabajaremos problemas y programas más avanzados. Esta actividad está disponible en unidades avanzadas de Smartick Coding.

Cuando hablamos de programación para niños, pensamos a menudo en un coche y una meta, o un conejo y una zanahoria: un elemento que podemos mover y un objetivo que debemos alcanzar. En Smartick Coding también tenemos nuestra propia versión, Explora. Este tipo de juegos son típicos para introducir a los más jóvenes en la programación al plantear un problema muy sencillo de entender. Eso es lo que son estos juegos: el problema a resolver.

Juego de programación avanzado

Cuando hablamos de diseñar un juego de programación, los alumnos deben entender el juego -el problema- completamente:

  • El funcionamiento de todos sus elementos.
  • La misión o el objetivo a cumplir.
  • Las acciones que pueden realizar para cumplir dicho objetivo.

Con los juegos de iniciación: debemos llevar al robot (o la abeja o el conejo) hasta la bandera (o la flor o la zanahoria), realizando distintos movimientos para sortear obstáculos.

Con Robby Explora (o cualquier juego similar) tenemos un problema espacial que incluso los mas pequeños pueden comprender.

Pero la cosa se complica cuando queremos trabajar problemas y programas más con una mayor complejidad: un juego más sofisticado, que permita más elementos, más misiones y más acciones. Buscamos conseguir mayor complejidad, pero sin renunciar a que el «problema» sea entendido. Buscamos un «juego de programación» avanzado, variado y divertido pero fácil de entender.

A continuación te contamos cómo funciona Tableros, nuestra nueva actividad después del Laboratorio.

Nuevas misiones

Queremos que nuestro alumnado aprenda programación enfrentándose a escenarios y situaciones diferentes:

  • Buscar y categorizar residuos en una playa.
  • Organizar o inventariar un almacén.
  • Gestionar los pedidos de una cocina, calcular el importe de un pedido o llevar un registro de ganancias.
  • Implementar el comportamiento de un juego de mesa o cartas sencillo.
  • Encriptar/des-encriptar información.

Tener multitud de misiones no solo aporta variedad, aporta la riqueza y complejidad que buscamos para nuestro juego de programación avanzado. Una de las partes más importantes de resolver problemas radica en comprender el objetivo. Y resolver problemas está en el centro del aprendizaje de la programación.

Una imagen de nuestro juego de programación avanzado

Para poder modelizar una variedad amplia de contextos, necesitamos flexibilidad. Tableros tiene un planteamiento modular que gira alrededor de tres elementos fundamentales: el Tablero, los Robots y los Objetos. Estos elementos se combinan para generar distintas situaciones (problemas), regulando la carga cognitiva que cada uno requiere. Veamos cada uno de estos elementos por separado.

El tablero

Con casillas distribuidas en filas y columnas donde se ubicarán el resto de elementos. Son ideales para presentar situaciones de una forma clara. Las casillas pueden agruparse en zonas, para delimitar subconjuntos del tablero que sean relevantes para el problema.

Tienen una ventaja adicional, nos permiten además trabajar exhaustivamente con coordenadas cartesianas, un tipo concepto recurrente en programación y en matemáticas. En nuestro juego de programación, constantemente nos moveremos por estos tableros cartesianos, o los recorreremos total o parcialmente con bucles, bucles anidados, o localizaremos elementos con condiciones de parada o de búsqueda…

Robots

Los robots siguen fielmente las instrucciones de nuestro alumnado. Tendremos distintos robots, con funciones comunes y específicas:

  • Nuestros robots básicos tienen ruedas y nos permiten añadir una dosis de espacialidad a nuestros problemas.
  • Los drones pueden volar libremente por los tableros, y suelen encargarse de la parte logística.
  • Las grúas son similares a los drones, pero se encargan de los objetos más pesados como cajas o muros.
  • Más adelante nuevos robots se unirán al equipo. ¿Un barco?, ¿un cocinero?

Ciertos escenarios requerirán además coordinar las acciones de varios de estos robots para alcanzar los todos los objetivos. Como no todos los robots pueden hacer todas acciones, al programar la solución, deberemos repartir entre ellos las tareas u objetivos a cumplir.

Algunos de los robots de nuestro juego de programación

Objetos

Cajas, frutas, cartas, monedas, dados, puertas, muros, notas, contadores… Son solo algunos de los objetos que podremos encontrar. Combinando estos objetos podemos crear problemas muy diversos que cuya solución requiera un programa interesante y retador.

Cada tipo de objeto (dado, carta…) tiene distintas propiedades y pueden tener algún tipo de función. Así:

  • Los dados y las monedas tienen un valor numérico.
  • Las notas contienen texto.
  • Las cajas permiten almacenar otros objetos, las cartas pueden apilarse…

Como nuestro juego de programación es modular, podemos seguir añadiendo elementos a la fórmula general, sin complicar la actividad en su conjunto. Cada objeto dispone de una ayuda contextual, que incluye información de todas sus propiedades y particularidades.

Estos primeros objetos son solo el principio, y de manera regular diseñamos y añadimos nuevos objetos: fichas de domino, ficheros, terminales…

Incertidumbre

Con «incertidumbre» nos referimos a la información que no está disponible para el programador en el momento de programar. Consideramos que la incertidumbre es un punto crucial en la presentación, comprensión y resolución de los problemas:

  • Nos permite definir problemas más interesantes y retadores.
  • Es, además, crítica para el trabajo con condicionales y operadores lógicos, que son parte esencial de la programación.

El alumnado debe enfrentarse a esta incertidumbre, incorporando bloques condicionales a su código para detectar y tratar adecuadamente las distintos casos que puedan presentarse. ¿Detectar dados con valores mayores que 3? ¿Cambiar de dirección cuando hay un obstáculo? ¿Contar solo las manzanas?

Sin embargo, es también necesario acotar y dejar claro cual es el ámbito del problema, las casuísticas que pueden darse y deben tratarse. Para que la incertidumbre se entienda y funcione adecuadamente, deben cumplirse algunas reglas:

  • Tener una semántica clara y lógica, de forma que se entienda qué información es fiable, cual no y por qué.
  • La incertidumbre consiste en ocultar parte de la información, pero es necesario revelar información suficiente para resolver el ejercicio. A esto lo llamamos la muestra, una primera selección de información, parcial pero representativa.
  • La selección de datos debe incluir al menos un caso de cada casuística a tratar. De esta forma, una ejecución exitosa mostrará que la solución satisface la misión en todos los casos. Por ejemplo, si un ejercicio pide distribuir elementos pares e impares, la selección debe incluir tanto pares como impares.
  • Por último, es necesario aleatorizar los datos entre ejecuciones. De lo contrario, una primera ejecución (exitosa o no) podría revelar los datos que tanto interés tenemos en ocultar.

Veamos algunos ejemplos de formas de incertidumbre de que disponemos en nuestro juego de programación.

Oscuridad

Una forma muy literal de “ocultar” parte de la información es… apagar las luces, literalmente. Pero no todas, nuestros robots pueden ver unas pocas casillas alrededor (muestra). ¿Qué habrá mas adelante…? ¿Un muro? ¿Una llave?

Coding-oscuridad. Juego de programación.

Objetos «enterrados»

Los objetos pueden ser enterrados bajo tierra. Sabremos que algunas casillas tienen un objeto enterrado, pero no sabremos qué es (ni su tipo, ni sus propiedades) ¡hasta que lo desenterremos!

Coding-playa. Juego de programación.

Específica por objeto

Algunos objetos, por su naturaleza, tienen asociada algún tipo de incertidumbre asociada. El ejemplo más sencillo son las cartas (o naipes). Como las cartas que todos conocemos, pueden estar boca-abajo. Sabemos que se trata de una carta, pero ¿Cuál es su valor? ¿Cuál es su palo? Hora de programar para averiguarlo.

Coding-cartas. Juego de programación.

Entregas

Nuestra forma más versátil de incertidumbre. En algunos de los problemas, el robot repartidor entrega nuevos objetos en las casillas designadas (zona rayada).
Mediante el código, solicitaremos nuevas entregas con el bloque “pedir entrega” y deberemos atender todas las entregas para que nuestra solución sea correcta.

El enunciado y la primera entrega son la información de que disponemos pero ¿Qué objetos serán repartidos en las siguientes entregas siguientes?

Coding-entregas. Juego de programación.

Lenguaje de programación

En Coding usamos programación por bloques: es práctico para todo tipo de dispositivos y construir código sigue siendo tan sencillo como siempre. Concretamente usamos Blockly, la librería de Google que es la referencia en la programación por bloques.

Con cada juego de programación, definimos un nuevo repertorio de bloques que forman el lenguaje de programación que usaremos para resolver los problemas. Para resolver problemas mayores necesitamos herramientas adecuadas. Para esto hemos creado un lenguaje más sofisticado, más expresivo y más flexible.

Tolerancia al fallo y tolerancia a la frustración

Los problemas de un juego de programación como Tableros pueden llegar a ser bastante complejos. Las soluciones que estos problemas requieren también son mas sofisticadas.
Por desgracia, hoy día se estigmatiza el fallo hasta el punto de sentirnos incómodos, culpables e intolerantes con él. Lo cierto es que fallar, y más concretamente aprender del fallo es la forma más natural y poderosa de mejorar en cualquier materia, no solo en programación.

Nadie crea un programa “a la primera” (ni jóvenes, ni adultos, ni aficionados, ni profesionales). Programar es un proceso iterativo y aún el más sencillo de los códigos tiene una dosis de complicación suficiente como para requerir varias pruebas e intentos. Incluso cuando conseguimos un código que soluciona un problema, es muy posible que pueda mejorarse o que presente algún error, aún por materializarse.

Dicen que Thomas Edison dijo sobre la invención de la bombilla: “No fueron mil intentos fallidos, fue un invento de mil pasos”.

Es verdad que intentar algo varias veces sin conseguirlo, puede resultar frustrante. Pero aprender a gestionar la frustración es parte de aprender a programar. En este sentido, programar podría parecerse a otras disciplinas como tocar el piano o dibujar: siempre se puede mejorar y seguir aprendiendo. Desde cierto punto de vista, para aprender a programar, sólo hay que aprender una única cosa: a gestionar la frustración y no rendirnos.

Si quieres seguir aprendiendo programación y mucho más, adaptado a tu nivel, entra en Smartick, regístrate y pruébalo gratis.

Para seguir aprendiendo:

La diversión es la forma favorita de aprender de nuestro cerebro
Diane Ackerman
Smartick ayuda a tus hijos a aprender de manera divertida
  • 15 minutos diarios
  • Se adapta al nivel de cada niño
  • Millones de estudiantes desde 2009
Share on FacebookTweet about this on TwitterShare on LinkedIn
Fernando Aguayo
Últimas entradas de Fernando Aguayo (ver todo)

Añade un nuevo comentario público en el blog:

Los comentarios que escribas aquí serán moderados y visibles para el resto de usuarios.
Para consultas privadas escribe a [email protected]

El e-mail se mantiene privado y no se mostrará publicamente.

He leído y acepto la política de privacidad y cookies