Situación de aprendizaje 1. ¿Cómo pensamos de forma computacional?
Tras haber realizado al alumnado una presentación sobre el término de pensamiento computacional y las habilidades del pensamiento relacionadas, se propone un primer ejercicio para que puedan ser capaces de reconocerlas a la hora de afrontar la resolución de un problema. En esta primera situación de aprendizaje, no se trata de resolver el problema, sino solo de que el alumnado sea capaz de visibilizar y detectar estas habilidades del pensamiento. Se busca que el alumno afronte mejor la resolución de problemas detectando todas las claves, que como no puede ser de otra manera se encontraran dentro del enunciado.
Vamos a basarnos en el modelo británico y en las siguientes habilidades del pensamiento relacionadas con el pensamiento computacional que ya han sido comentadas en el apartado 1.3: razonamiento lógico, pensamiento algorítmico, descomposición, patrones, abstracción y evaluación sistemática.
A continuación planteamos el enunciado del problema a resolver, teniendo en cuenta que sólo hay que identificar algunas de estas habilidades del pensamiento. En el capítulo posterior diseñaremos el diagrama de flujo para este problema, y en el siguiente lo programaremos. Estas serán nuestras 3 fases a la hora de resolver cualquier problema de programación:
- Interpretación del enunciado
- Diagrama de flujo
- Codificación en lenguaje de programación
Enunciado
María es una alumna de 3º ESO que está muy interesada en simular el comportamiento de su calculadora y para ello quiere crear un programa que simule el funcionamiento de una calculadora básica donde introducimos 2 números y 4 operaciones posibles (+, -, /,*) teniendo en cuenta que la división tiene un caso especial (el segundo número no puede ser un cero). Tras cada operación matemática exitosa, la calculadora volverá a su estado inicial esperando realizar una nueva operación.
El trabajo a realizar es partiendo del enunciado, identificar todas las habilidades del pensamiento computacional vistas en clase para empezar a poner la solución como paso previo a la creación del diagrama de flujo.
Solución:
Seguramente no hay una única solución posible, pero una posible solución sería la siguiente:
Descomposición. El problema general tiene unos cuantos subproblemas a resolver:
- Pedir el primer número (e incluso a la hora de programar, asegurarnos que lo introducido sea un número)
- Pedir el segundo número (e incluso a la hora de programar, asegurarnos que lo introducido sea un número)
- Pedir la operación a realizar (e incluso a la hora de programar asegurarnos que sea una de las 4 operaciones posibles: + - * /)
- En el caso de que la operación sea la división asegurarnos que el segundo número no sea un 0
- Realizar la operación deseada y sacar datos por pantalla
Patrones. Operaciones que se van a repetir dentro de nuestro código:
- Hay un gran patrón que se repite tras realizar la operación de manera exitosa: el programa tiene que volver al principio para realizar una nueva operación. En programación esto habrá que programarlo con un bucle infinito a no ser que introduzcamos una condición de salida
- Después de este gran patrón, podemos encontrar otros patrones como podrían ser un bloque de código para asegurarnos que los números sean números, que sea una de las 4 operaciones posibles y por último que en el caso de la división, el segundo número no sea un cero. En cualquiera de estos 3 caso podríamos incluir un bucle para asegurarnos de que se cumple lo que esperamos en la introducción de datos
Abstracción. Información no relevante para resolver el problema
- La información referente a María y su interés no es relevante a la hora de resolver el problema
Pensamiento algorítmico. Secuencia de órdenes para resolver el problema en un orden en concreto:
- Pedir primero número y asegurarnos de que sea un número
- Pedir segundo número y asegurarnos de que sea un número
- Pedir una operación y asegurarnos de que sea una de las permitidas
- Si es una suma, realizo la operación de suma de los dos números y saco resultado por pantalla
- Si es una resta, realizo la operación de resta de los dos números y saco resultado por pantalla
- Si es una multiplicación, realizo la operación de multiplicación de los dos números y saco resultado por pantalla
- Si es una división, compruebo que el segundo número no sea un cero y en tal caso vuelvo a pedir segundo número hasta que sea distinto de cero. A continuación visualizo el resultado de la división
- Vuelvo al comienzo para esperar una nueva operación
Como podemos suponer, no hay una única solución muchas veces para el mismo problema, y es genial que el alumnado pueda darse cuenta de ello e incluso se pueda debatir en la pizarra y que cada uno argumente pros y contras. En este caso, una posible solución alternativa sería que antes de pedir el segundo número podría pedir la operación y a continuación pedir el segundo número de tal forma que puedo controlar en ese paso si es un cero o es un número correcto para realizar la división.
Por último, en esta serie de pasos para resolver un problema, podremos a su vez descomponerla en otras órdenes tal y como hemos visto en la parte de descomposición, llegando a hacer esta secuencia de órdenes más detallada.
Evaluación. Antes de ponernos a dar los siguientes pasos, asegurarnos que no nos hemos dejado nada clave en la resolución del problema
Lógica. Habremos aplicado razonamiento lógico para la detección de entender el enunciado, sus requisitos, las salidas esperadas, y por último, los aspectos a controlar y tener en cuenta.