Durante mi etapa escolar, recuerdo que las únicas competencias que tuve fueron aquellas vinculadas al área de educación física. Había tres “casas” (azul, rojo y blanco) entre las cuales nos repartíamos todos los alumnos de la institución y teníamos que disputar premios anuales dentro de los espacios de atletismo y voley. La casa roja, que azarosamente había logrado reunir a los mejores atletas del cole, solía quedar siempre en la cima del podio. ¡Confío en que han logrado revertir la historia, mi querido equipo azul! ¡Sean grandes!
Actualmente, los establecimientos educativos han evolucionado mucho y suelen organizarse varias competencias a lo largo de todo el ciclo lectivo. Concursos de literatura, arte, olimpiadas de matemática, deportes, feria de ciencias y, por qué no, “Olimpíadas de Tecnología”. Por ello, está bueno que estemos preparados para una exigencia de dichas características dado que es algo que nos aporta valor tanto a nosotros como profesionales como a la institución en sí misma. ¡Bienvenidos a una nueva actividad!
La plataforma Vexcode, que trabaja con la metodología de “programación en bloques” y a la cual ya le he dedicado otras dos publicaciones, posee dos campos / zonas de juego (“playgrounds”) ideales para organizar competencias escolares: “Movedor de discos” y “Transporte de discos”. Allí, mediante la programación de un robot, deberemos recoger y transportar diferentes tipos de rodajas metálicas hacia sus respectivas “casitas”. Tres colores de disco, tres casas/equipos escolares. Quien complete la tarea primero, gana.
La elección de un mapa sobre otro, radicará en la cantidad de tiempo que se disponga para la competencia y en la experiencia que posean los estudiantes. Desde mi punto de vista, no hay tanta diferencia entre un escenario y otro en términos de dificultad. Ambos involucran - prácticamente - las mismas instrucciones (avanzar, rotar, energizar y desenergizar imán). Por otra parte, en lo referido al tiempo, tenemos que tener en cuenta la cantidad de discos para cada equipo y en la distribución de los mismos. Aquí, claramente, el escenario “Transporte de Discos” es un poquito más prolongado.
Veamos un ejemplo de cómo agarrar y transportar un disco:
Si bien no estamos ante una tarea por demás complicada, podría ser que el código final resulte extenso y vertiginoso. Aquí también el ingenio y la creatividad entran en escena. Podríamos crear funciones o módulos que repitan tareas comunes y de esta forma economizar la cantidad de instrucciones final o, incluso, sólo centrarnos en dividir las tareas a fin de obtener más claridad en el proceso. Veamos un ejemplo con módulos en donde cada función se encarga de un disco en particular:
(Las funciones las crean en la categoría "Mis bloques")
Tenemos una función destinada al proceso de recolección y transporte de cada disco, además de módulos que se encargan de reutilizar instrucciones comunes para ambos casos. En ambos transportes, el robot tiene que ir desde su “casa” hasta la parte centro-izquierda del mapa; así como tomar el mismo camino de manera inversa. Economizamos esfuerzo y el código nos queda mucho más prolijo. La modularización es una habilidad clave en el mundo de la programación y, siempre que se pueda, debemos de enséñarla.
Espero, profes queridos, esta publicación pueda aportarles valor. Sus escuelas, más que seguro, estarán felices de poder contar con ustedes ante la posibilidad de una olimpiada estudiantil. Las competencias siempre son buenas cuando están bien orientadas; dado que impulsan la superación personal, el reconocimiento de debilidades donde trabajar, el manejo de la frustración y la valoración del esfuerzo y triunfo ajeno.
Éxitos a todos con VexCode.
~ Marcos.
Posdata: Si organizan una competencia, intenten comprar alguna medallita o trofeo (o, incluso, hasta podrían imprimir algo personalizado en 3D). Es un lindo reconocimiento.