Ya hemos visto cómo Scratch es una herramienta multidisciplinar, que podemos adaptar a diferentes materias tales como Física, Matemáticas, Ciencias Sociales o incluso Educación Física. La clave es proponer un proyecto que nos permita "jugar" con la herramienta a la vez que aprendemos determinados conceptos; por ejemplo, hoy vamos a aprender a dibujar funciones matemáticas en Scratch.
Avanzamos con nuestro Proyecto Scratch de los Viernes para ahondar en un tema curricular muy habitual en determinados cursos de Secundaria y Bachillerato. Este proyecto es, de hecho, muy sencillo si se tiene una pequeña base de manejo de la herramienta, y permitirá a nuestros alumnos crear su propio "pintor" de funciones matemáticas en Scratch que luego podrán personalizar a su gusto.

¿Qué es una función?

Es evidente que antes de programar el proyecto es necesario que nuestros alumnos sepan lo que es una función. Y, por tanto, esta idea está limitada a aquellos cursos en los que ya se haya explicado este concepto. Como siempre, Wikipedia es un interesante punto de partida.
Es necesario mencionar que Scratch no deja de ser un lenguaje de programación limitado en algunos aspectos, entre ellos el escenario. Si bien éste es un plano cartesiano de coordenadas x,y, puede quedarse corto para mostrar algunas funciones: sus coordenadas tienen un rango x [-240, 240] e y [-180, 180], de forma que sólo es capaz de mostrar las funciones dentro de este espacio.
Scratch Fondo De Coordenadas
También se dan otros problemas, y si bien algunos de ellos podemos solucionarlos con código (más o menos complejo) rápidamente nos daremos cuenta de que Scratch no es el mejor programa para dibujar funciones. Otros, como Geogebra, son mucho más potentes y versátiles.
Ahora bien, el objetivo de crear un programa que dibuje funciones matemáticas en Scratch no es que sea el mejor de todos; al contrario, este programa permitirá a los alumnos comprender qué son las funciones y ahondar en el funcionamiento a nivel matemático que éstas tienen.

La estructura de una función

Aunque existen innumerables tipos de funciones, en este proyecto nos vamos a centrar en aquellas que son comunes tanto en Secundaria como en Bachillerato: dibujaremos funciones cuadráticas, de segundo grado. Su estructura es la siguiente:
Función Cuadrática En Matemáticas
Así pues, tendremos que asignar tres constantes (a, b y c) en el momento inicial, y nuestro programa se encargará de determinar el valor tanto de x como de y. Para asignar las constantes lo más sencillo es preguntarle al usuario, y almacenar las respuestas en sendas variables de Scratch:
Funciones Matemáticas En Scratch
Nuestro programa ya "sabrá" qué función es la que debe pintar, así que podemos prepararnos para esta segunda fase. Antes mencionábamos que el escenario de Scratch se mueve entre las coordenadas x=-240 y x=240, con lo que por ejemplo podemos colocar nuestro objeto en la posición x=-220, y=0 para que comience a pintar ahí.

Dibujando funciones matemáticas en Scratch

Para ello vamos a utilizar el lápiz (categoría de piezas de color verde), de forma que iremos variando la posición en x del objeto (empezando en -220, sumando 1 cada vez) mientras nuestro programa calcula el valor de la posición y en cada iteración.
El código tiene muchas piezas de Scratch, pero en esencia es tremendamente sencillo: tendremos que fijar y al valor de la función, que es (a*x^2) + (b*x) + c. Inmediatamente después modificaremos la posición de x para que vaya un paso a la derecha (+1). Este proceso lo repetiremos hasta que la posición x alcance un determinado valor, en nuestro caso 220:
Funciones De Segundo Grado En Scratch
Con apenas una docena de piezas hemos creado un programa que dibuja funciones matemáticas sencillas. El resultado que obtenemos funciona, aunque puede pulirse para que sea mucho más potente y realista; estas mejoras las tratamos a continuación.

Hasta el infinito... y más allá

El trabajo está cumplido, y si probáis el programa veréis que ya dibuja algunas funciones. Probad, por ejemplo, con a=0, b=0, c=100; y con a=1, b=0, c=0. A continuación os proponemos algunas mejoras para ampliar este proyecto y conseguir un programa más robusto, con mejores resultados y mayores posibilidades:

  • Una de las limitaciones de usar el lápiz en Scratch es el espacio en el escenario: cuando el objeto toca el borde, el lápiz continúa dibujando. ¿Sabrías cómo hacer para que el objeto "pintor" sólo dibuje cuando no está tocando el borde?
  • Es posible que algunas funciones resulten demasiado pequeñas, ya que las unidades del escenario así lo son. En algunos casos es posible que necesites "hacer zoom", es decir, dibujar la función proporcionalmente para que aparezca más grande sobre el escenario.
  • Hemos dibujado una función cuadrática. Las funciones cúbicas o de mayor grado son triviales de implementar.
  • Sería una idea genial poder tener varias funciones dibujadas, idealmente con colores diferentes, para así poder compararlas.
  • Crea una variable que almacene qué función está dibujando, a través de unir cadenas de texto. O, en el caso de que tengas varias dibujadas, una lista que las muestre.

El proyecto Scratch de los viernes es la sección en la que, cada primer viernes de mes, proponemos una idea de proyecto y damos algunas pistas para llevarlo a cabo. Hemos hablado de movimientos, figuras geométricas, historias, juegos de preguntas y respuestas, relojes, videojuegos… ¿Quieres saber más? Échale un vistazo a las ideas recopiladas en este enlace o al estudio EDUCACIÓN 3.0 en la comunidad de Scratch donde estamos incluyendo nuestros proyectos de los Viernes. Y por supuesto, ¡cualquier propuesta o sugerencia que tengas será bienvenida!

Sobre el autor
Avatar De Pablo Espeso

Pablo Espeso

Ingeniero Informático, coordinador del Club de Jóvenes Programadores de la Universidad de Valladolid (CJP @ UVa) y apasionado por la docencia de las nuevas tecnologías, de la informática y, en particular, de la programación.