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 anterior:
Lógica: elrazonamiento lógicogico,nospensamientoayudaalgorítmico,a explicar por qué algo sucede. Por esta razódescomposición,podemos utilizar el razonamiento lógico para determinar exactamente lo que queremos que haga un algoritmo de forma exacta.Algoritmos: un algoritmo está escrito para ser entendidos por humanos y es una secuencia de instrucciones o conjunto de reglas para solucionar un problema.Descomposición: la capacidad que tenemos para poder fraccionar un problema en partes más pequeñas a través de las cuales nos ayuden a resolver problemas complejos y a gestionar proyectos grandes.Patrones: estamos rodeados de patrones. Ser capaces de identificar patrones nos permitirá hacer predicciones, crear reglas y resolver problemas más generalesAbstracción: lapatrones, abstraccióntieneyque ver con simplificar las cosas; identificando qué es importante sin preocuparnos demasiado por lo anecdótico o irrelevante. La abstracción nos permite manejar la complejidad.Evaluacióevaluación sistemática: la evaluación es sistemática y rigurosa; tiene que ver con juzgar la calidad, la efectividad y la eficiencia de las soluciones, sistemas, productos y procesos. La evaluación comprueba que las soluciones aportadas resuelve el problema que nos planteábamos inicialmente no solo de una forma exitosa, sino además la más optimizada. Esto tiene mucho que ver con enseñar a nuestro alumnado que el error no tiene que generar frustración, sino que la programación nos da la maravillosa oportunidad de solucionar un error al estar en nuestras manos, en nuestra comprensión.
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.