Trivial de matemáticas

21 de octubre de 2022

Durante estas últimas semanas hemos estado trabajando en la programación junto con las matemáticas. Para ello, hemos planteado un juego a nuestras familias: el Trivial de las matemáticas. Puesto que el Trivial Pursuit es muy complejo y trata muchas materias, nosotros lo hemos simplificado bastante y nos hemos centrado en las mates. A continuación, vamos a describir el enunciado tal y como se lo hemos entregado a las familias y la solución detallada paso a paso. Si eres miembro del club, significará que ya has leído el enunciado y has trabajado en el ejercicio. Si es así, puedes pasar directamente a ver la solución detallada. Si no eres miembro o es la primera vez que lo ves, te recomendamos que reflexiones sobre el enunciado para tratar de encontrar por ti mism@ la solución. ¡Adelante!

Enunciado

Nuestro amigo Gato se encuentra en la biblioteca y nos plantea un reto de matemáticas. El reto consiste en que nos va a realizar, de forma aleatoria, 10 preguntas de operaciones matemáticas: sumas, restas y multiplicaciones. Para cada una de las preguntas, nos pedirá que demos la respuesta y, una vez que la demos, nos dirá si es correcta o no. Si es correcta, se incrementará el número de aciertos. Si es incorrecta, se incrementará el número de errores. Al final de la ronda de preguntas, Gato nos dirá cuántos aciertos y cuántos fallos hemos tenido. Dependiendo del número de aciertos y errores, nos dirá si somos excelentes (al menos 8 correctas), buenos (al menos 6 correctas) o necesitamos estudiar más (en otro caso).

En cuanto a las operaciones:

  • En el caso de las sumas, serán de números de, como máximo, dos dígitos, es decir, los dos sumandos serán números entre 1 y 99.

  • En el caso de las restas, el minuendo será un número de, como máximo, dos dígitos (entre 1 y 99) y el sustraendo será siempre menor que el minuendo (entre 1 y el minuendo).

  • En la multiplicación uno de los factores será un número de, a lo sumo, dos dígitos (entre 10 y 99) y el otro factor será un número de un dígito (entre 1 y 9).

Pistas:

  • El bloque para pedir información al usuario es el siguiente:

  • Para poder acceder después a la respuesta introducida, utilizar el bloque siguiente:

  • Para unir textos (concatenar textos, en el mundo del desarrollo), se utiliza el siguiente bloque:

  • El bloque para generar un número aleatorio entre, por ejemplo, entre el 1 y el 10, es el siguiente:

  • Intentad usar Mis bloques para cada operación

Solución por pasos

Lo primero que tenemos que hacer es crear un nuevo proyecto en Scratch al que le vamos a llamar "Trivial de matemáticas". ¿Y qué es lo mínimo que va a tener siempre un proyecto de Scratch? Como de costumbre, un fondo y algún personaje. Como fondo, podemos usar el llamado "Room 1", dentro de la sección de los fondos de Interiores, que es similar a una biblioteca. En cuanto al personaje, vamos a usar a Gato (tal y como decíamos en el enunciado), pero, por supuesto, cada uno podría usar su personaje favorito. El fondo es el siguiente:

Fondo principal

Una vez que tenemos el fondo y el personaje, ahora toca remangarse y ponerse a programar. ¿Por dónde empezamos? De momento, vamos a simplificar el problema y vamos a comenzar haciendo que Gato nos pregunte una suma de la forma "¿Cuánto es X + Y?", dónde X e Y son dos números distintos cada vez. ¿Y cómo lo hacemos? Si tenemos que tener dos números distintos cada vez, necesitaremos generarlos mediante el bloque "número aleatorio entre 1 y 10", dentro de la sección de "Operadores". Y si tenemos que generarlos y guardarlos en algún sitio, vamos a tener que tener dos variables. Pues bien, lo primero será crear las variables, a las que llamaremos "sumando1" y "sumando2". Una vez creadas las variables, tendremos que guardar en ellas los números aleatorios que generemos. ¿Y qué hay del resultado? Pues también tendremos que crear otra variable para poder calcular el resultado y después compararlo con nuestra respuesta. Nuestro programa va tomando este aspecto:

Una vez que tenemos guardados los sumandos y el resultado, ahora toca que Gato nos haga una pregunta. Para que un personaje nos haga una pregunta y espere por nuestra respuesta, hay que usar el bloque "preguntar ¿Cómo te llamas? y esperar", en la sección "Sensores". Este bloque lo que hace es que el personaje haga la pregunta y nos abra una caja de texto en la parte inferior de la pantalla de Scratch para que introduzcamos nuestra respuesta. En ese momento, el programa se queda esperando hasta que la introduzcamos. Para ello, deberemos escribir nuestra respuesta en la caja y pulsar el tick (o la tecla "intro", lo cual es más rápido). Cuando lo hagamos, el programa continuará y podremos utilizar nuestra respuesta dentro del programa mediante el bloque "respuesta" dentro de la sección Sensores. Perfecto, nos vamos acercando a la solución. Pero, ¿cómo hacemos para que Gato pregunte "¿Cuánto es sumando1 + sumando2?" sin que aparezca las palabras sumando1 y sumando2? Si utilizamos directamente el bloque "preguntar ¿cuánto es sumando1 + sumando2? y esperar", la pregunta que nos sale no tiene buena pinta:

¿Y cómo lo solucionamos? El bloque "unir manzana plátano", dentro de la sección "Operadores" viene en nuestra ayuda. ¿Qué hace este bloque? Lo que hace es generar un texto con el resultado de unir dos textos más (en el bloque tal y como aparece en la sección Operadores lo que haría es unir las palabras manzana y plátano, generando un texto "manzana plátano", todo junto. Si os dais cuenta, el bloque de unir recibe dos valores, pero uno de ellos bien podría ser otro bloque de unir, pues tienen la misma forma (redondeada). Pues ya casi lo tenemos, a base de "anidar" bloques de unir, podemos llegar a la solución que necesitábamos:

Vale, pues ahora lo que necesitamos es comprobar si el resultado que demos es el correcto. En caso de que lo sea, sumaremos un acierto. Si no lo acertamos, sumaremos un error. ¿Y dónde guardamos los aciertos y los errores? Sí, lo estáis pensando bien, tendremos que crearnos dos variables más. ¿Cómo las llamamos? ¡Cuánto más simple, mejor! ¡Llamémoslas "aciertos" y "errores"!. ¿Y cómo sabemos si hemos acertado el resultado? Para ello, están los bloques que nos permiten hace comparaciones, en la sección de "Operadores". Si queremos saber si el resultado es correcto, deberemos usar el bloque "_ = 50". De momento, nuestro programa, tiene esta pinta:

Perfecto, pues ya podríamos empezar a jugar. ¡Probadlo ahora!, pero aseguraros de que las variables "aciertos" y "fallos" estén seleccionadas en la sección "Variables" para que su valor se pueda ver en la pantalla. ¿Veis algún problema? ¡Exacto!, el número de aciertos y de fallos no empieza cada vez que pulsamos la bandera verde. ¿Y eso por qué? Pues porque nos hemos olvidado de un paso muy importante, la inicialización. Por tanto, lo primero que debemos hacer al pulsar la bandera verde es poner "aciertos" y "fallos" a 0. ¡Ahora sí! Pero, sólo nos hace una pregunta y el resultado decía que nos debía hacer 10. Ah, es verdad, se nos ha olvidado una cosa, ¡el bucle! ¡Introduzcámoslo!

Ahora ya sí que podemos empezar a jugar. Gato nos hará 10 preguntas, pero cuando acabe de hacerlas no nos dirá nada. Dijimos en el enunciado que al final nos tiene que decir el número de aciertos y fallos y, en función de los aciertos, decidnos si lo hemos hecho genial (8 aciertos o más), si lo hemos hecho simplemente bien (6 aciertos o más) o si tenemos que trabajar más (5 aciertos o menos). Pues a base de comparadores (mayor qué y menor qué) y de unir textos, podemos hacer todo esto. Añadamos el siguiente bloque al programa anterior:

¡Genial! Nuestro trivial ya funciona. Pero, un momento, sólo nos pregunta sumas. Dijimos que nos iba a preguntar por restas y por multiplicaciones. Ummmmm, tiene pinta de que las sumas y las restas van a ser muy parecidas... Nuestro programa está empezando a ser un poco largo, ¿qué os parece si creamos un bloque "Mis bloques" para preguntar una suma, otro para preguntar una resta y otro para preguntar una multiplicación? De esta forma, nos va a quedar mucho más corto. ¡Vamos a verlo! A partir del bloque de código que había en el bucle que se repetía 10 veces, podríamos crear el bloque "preguntar suma". Para ello, utilizando el botón "Crear un bloque" que está en la sección "Mis bloques" creamos un nuevo bloque, le damos el nombre y metemos la siguiente parte de código:

Perfecto, ya tenemos la suma. Hagamos lo mismo con la resta. Para ello, creamos el bloque "preguntar resta" y, puesto que va a ser muy similar, podemos duplicar todo el código de "preguntar suma", con el botón derecho y la opción "Duplicar". ¿Qué diferencias hay entre la suma y la resta? Pues que habrá que restar en vez de sumar y la pregunta tendrá que llevar el símbolo - en vez del símbolo +. Ah, y el nombre de las variables, ahora no son sumando1 y sumando2, sino minuendo y sustraendo. Y otra cosa, si resulta que el sustraendo es mayor que el minuendo, ¿qué ocurre? Pues que el resultado sería un número negativo. Para evitar esto, podemos crear el sustraendo como un número aleatorio entre 1 y el minuendo. Todo esto quedaría así (quizás tampoco fue tan útil el usar duplicar... ;-)):

Nos quedan sólo la multiplicación, en el que hablamos de factores, en vez de sumando, minuendo o sustraendo, por lo que tendremos que crear dos variables más: "factor1" y "factor2". Y recordad que queríamos hacer multiplicaciones de números de dos cifras por números de una cifra (para intentar hacerlas de forma mental, principalmente), por tanto, factor2 deberá ser un número entre 1 y 10.

Perfecto, pues ya tenemos casi todo. Sólo nos falta nuestro programa principal (el que empieza con la bandera). Dijimos que queríamos que nos preguntara, de forma aleatoria, sumas, restas o multiplicaciones. ¿Cómo hacemos esto? ¿Y si generamos un número aleatorio entre el 1 y el 3 y, según sea ese número, hacemos una pregunta? Por ejemplo, con el 1, una suma, con el 2, una resta, y con el 3, una multiplicación. ¡Anda, qué buena idea! Para ello, por supuesto, necesitamos una variable más, llamada "operación". Veamos como queda entonces:

¡Anda, nos ha quedado genial! ¡Y funciona! ¡Pues a practicar con las mates y a divertirse!

¡Nos vemos a la próxima, seguramente con la música!

Solución completa

A continuación se muestran todos los scripts del programa completo, para que no haya confusión al haberlo hecho antes paso a paso:

Juego funcionando

Si quieres ver el proyecto completo de Scratch para analizar el código o probarlo, pulsa aquí.

Y si queréis ver una versión más avanzada, en la que hay un tiempo para responder a cada pregunta, podéis pulsar aquí. No os preocupéis de cómo está hecho, pues es bastante complejo, ¡limitaos a jugar y a mejorar vuestro cálculo mental!