UNIVERSIDAD MAYOR DE SAN SIMÓN FACULTAD DE CIENCIAS Y TECNOLOGÍA INGENIERÍA INFORMÁTICA/ SISTEMAS TEMA 1 Pensamiento computacional y Metodologías para la Resolución de Problemas Introducción a la Programación Tema 1- Pensamiento Computacional y metodologías para la resolución de problemas Corina Flores V. Unidad 2 Pensamiento computacional y metodologías para la resolución de problemas "Programar para no ser programados". Rushkoff, 2010 Introducción Estamos entrando a una nueva era cognitiva, donde los objetos1 y las personas pasan a estar conectados por defecto. Como afirma (Balaguer, 2017) “Las máquinas están aprendiendo, pero no todas las personas están aprendiendo a manejarlas. Saber manejarse eficientemente con los datos y los lenguajes programación puede hacer la diferencia”. Ante esta afirmación, salta inmediatamente la pregunta y ¿Cómo lograrlo?. Para responder recordemos que por las necesidades de la industrialización, surgió de la alfabetización en lectoescritura, asimismo, hoy nos encontramos frente a máquinas que necesitan ser programadas por los usuarios, lo cual significa enfrentarse a una alfabetizarse tecnológica/digital si deseamos para aprovechar su máxima potencia. El hombre desde su creación siempre ha vivido rodeado de problemas que requieren su solución, por lo que se ha visto enfrentado a desarrollar habilidades que le han permitido analizar, organizar, modelar y abstraer datos, así como, implementar soluciones, probar, generalizar y aplicar. Pero ¿Qué es un problema? Si se busca en el diccionario una definición de la palabra problema podrá hallarse alguna de las siguientes: “Cuestión o proposición dudosa, que se trata de aclarar o resolver”. “Enunciado encaminado a averiguar el modo de obtener un resultado cuando se conocen ciertos datos”. Y … ¿Qué se entiende por resolución de problemas? La resolución de problemas se define como “la capacidad de participar en un proceso cognitivo para entender y resolver problemas donde no hay un método de solución inmediatamente obvio” (OECD 2014 PISA in focus 38) 1 Por ejemplo, el denominado IoT o Internet de las cosas Introducción a la Programación Corina Flores V. Tema 1- Pensamiento Computacional y metodologías para la resolución de problemas De ahí que la resolución de problemas mediante una computadora consiste en dar una adecuada formulación de pasos precisos que debe seguir, para resolver un problema, pero para escribir estos pasos o instrucciones que la computadora podrá leer, interpretar y ejecutar ordenadamente, se precisa trabajar en un concepto muy importante que es el denominado Pensamiento Computacional El pensamiento computacional implica, modelos mentales que necesitamos para entender cómo resolver problemas a través de los computadores, (Bravo C. Bits p. 49) Unidad 2 ¿Qué entendemos por problema?. Existe consenso en considerar como "problemas" a situaciones que plantean interrogantes y dificultades para las cuales no hay una solución única y preestablecida (Hayes 1981, Bodner y M. Millan 1986). Objetivos El tema “conocer y comprender el problema” tiene por objetivos, que los estudiantes: Entiendan y utilicen terminología, conceptos y los elementos básicos de la programación en sus etapas tempranas Comprendan el proceso para la solución de problemas a través de diferentes técnicas Organizar y analizar la información de manera lógica Representar la información mediante abstracciones ya sea aplicando diagramas o modelos. Automatizar las soluciones mediante el pensamiento algorítmico Probar y analizar la solución a fin de mejorar y generalizar. Resolución de problemas Si se piensa en la forma en que una persona indica a otra como resolver un problema, se vería que habitualmente se utiliza un lenguaje común y corriente, quizá entremezclado con algunas palabras técnicas. Por ejemplo. Pongamos a pensar en el caso en el que una persona desea llegar a un lugar específico, por ejemplo un hospital, un banco, un colegio, etc. Seguramente, si nosotros estaríamos en pos de ayudarle daríamos algunas de estas instrucciones, camine más o menos 2 cuadras hacia el norte, cruce al frente doble la esquina y siga caminando unos metros, hasta encontrar un letrero verde, …. ¿Cómo resolver un problema? Esta forma de aplicar un lenguaje coloquial representa un riesgo muy grande, pues es ambiguo, lo genera con mucha frecuencia malinterpretaciones y en consecuencia las instrucciones y por lo tanto se “ejecuta incorrectamente" muchas veces no llegando al lugar deseado.. Cuando de una computadora se trata, no pueden utilizarse indicaciones ambiguas. Ante cada orden resulta fundamental tener una única interpretación de lo que hay que realizar. Una máquina no posee la capacidad de decisión del ser humano para resolver situaciones no previstas. Si al dar una orden a la computadora se produce una situación no contemplada, será necesario abortar esa tarea y recomenzar todo el procedimiento nuevamente. Además, para poder indicar a la computadora las ordenes que debe realizar es necesario previamente entender exactamente lo que se quiere hacer. Es fundamental conocer con qué información se cuenta y qué tipo de empezar por el enunciado, visualizar el problema como un todo. Lo natural es que primero se deba familiarizar con el problema, es decir, conocer el problema como un todo; esto estimula la memoria. Ya visualizado se tiene claro qué se tiene que resolver, y, una vez que suceda este proceso, se comprende el problema; aquí ya se aíslan las partes y se comienza a resolver por partes el problema. Introducción a la Programación Tema 1- Pensamiento Computacional y metodologías para la resolución de problemas Corina Flores V. Unidad 2 Antes de continuar, es importante conocer un concepto que es sumamente importante en el ámbito de resolución de problemas, nos referimos a Pensamiento computacional, ya que su conocimiento permite comprender que es lo que ocurre detrás de todo dispositivo tecnológico. Esto favorece que como usuarios no solo utilicemos la tecnología de forma más eficiente, sino también, nos permite ser creadores de esta. Pensamiento Computacional De acuerdo con la Sociedad Internacional para la Tecnología en la Educación. (ISTE por sus siglas en ingles) El pensamiento computacional es un proceso para la solución de problemas a través de diferentes técnicas como: organización y análisis de la información de manera lógica; representación de información mediante abstracciones tales como modelaciones y simulaciones o diagramas; formulación de problemas que permitan usar la computadora y otras herramientas; automatización de soluciones mediante el pensamiento algorítmico; identificación, análisis e implementación de posibles soluciones con el objetivo de lograr la combinación mas efectiva y eficiente de pasos y recursos; y generalización y transferencia de este proceso de resolución a una amplia variedad de problemas. Tecnicas que aplica el pensamiento computacional 1. Abstracción: es el proceso de eliminar lo que no nos sirve o la parte compleja de un problema que estamos analizando. Dicho de otra manera, abstraer nos permite generalizar y nos invita a observar únicamente la parte más esencial del mismo. Por ejemplo: nuestro cuerpo, visto como una sola unidad, mientras no tengamos ninguna dolencia no nos importa si el pulmón o el corazón están funcionando bien o están sufriendo algún problema otro ejemplo puede ser el celular un aparato que sirve para comunicarnos o incluso entretenernos, no nos interesan sus circuitos, chips, ni sus demás componentes que integran. 2. Descomposición: un problema dependiendo de su complejidad puede ser descompuesto en partes más pequeñas o manejables. Por ejemplo: sabemos que el cuerpo humano es complejo porque está constituido por un conjunto de sistemas que pueden descomponerse en vario, por citar: el sistema respiratorio, el sistema nervioso, el sistema digestivo, el sistema circulatorio, etc. 3. Simulación: se refiere al hecho de anticipar el resultado de un problema. Por ejemplo: ¿Cómo se propaga el coronavirus?. Una de las medidas que se están implementando en varias regiones del planeta es que las personas se queden en sus casas y guarden el distanciamiento social de al menos 1 ms., como se ejemplifica a través de las imágenes de los fósforos (Fig 1), el objetivo es minimizar el contacto y así el riesgo de contagio. Fig.1 cada fosforo quemado representa una persona contagiada por su cercanía al fosforo encendido que representa a la persona enferma, si se distancia al menos uno de los fósforos y el efecto de contagio disminuye considerablemente. 4. Desarrollo de algoritmos: consiste en escribir una serie de pasos ordenados que podemos replicar una y otra vez para automatizar procesos. Ejemplo: en estos tiempos de cuarentena, muchas empresas ofrecen sus productos a través de sus páginas web bajo el slogan “no salgas de casa, te lo llevamos”, para realizar un pedido los cliente simplemente tienen que realizar ciertos pasos de forma ordenada y secuencial que se describen a continuación en forma de algoritmo: Introducción a la Programación Corina Flores V. Tema 1- Pensamiento Computacional y metodologías para la resolución de problemas Unidad 2 Algoritmo para hacer un pedido de productos vía página web Inicio Paso 1: Ubicar la página web de la empresa a quien se solicitara el pedido Paso 2: Seleccionar el o los productos Paso 3: Añadir al carrito de compras Paso 4: Verificar los productos seleccionados para la compra Paso 5: Finalizar la compra Paso 6: Llenar formulario con datos personales del cliente Paso 7: Recibe los productos y paga Fin Definición de problema Continuamente nos enfrentamos a situaciones en las que hay necesidad de decidir, por ejemplo: que servicio de transporte tomar, a qué hora salir de casa, que desayunar, que actividades realizar, con quienes reunirnos, que estudiar, etc. Estas y otras tantas situaciones se tornan muchas veces fáciles e intuitivas de hacer o tal vez más complejas tornándose en problemas. Aquí viene la pregunta ¿Cuándo se convierten en problemas?. Según la Real Academia Española (RAE) se define problema como “el conjunto de circunstancias o hechos que dificultan la consecución de algún fin” (2015), según el diccionario Oxford un problema es un asunto o situación no bienvenida o placentera, dañina y que debe afrontarse y resolverse” (2015). De ahí que podemos concluir que, un problema es una situación que amerita una serie de acciones para pasar de un estado actual no deseado, a un estado futuro adecuado para nuestra vida. Por ejemplo: Juan se quedó dormido, se fija la hora y ve que esta sobre la hora para llegar a tiempo a su examen de introducción a la programación. Juan para resolver este problema tiene que tomar ciertas acciones: tomar un baño rápido y vestirse, pedir dinero a sus padres para el taxi, llamar a un radiotaxi o salir de prisa a tomar el taxi. De esta manera Juan podrá superar la situación actual y transformarla en una situación ideal. Tipos de problemas Una vez que se comprende un problema, se debe identificar el tipo de problema. De manera general se pueden distinguir dos tipos de problemas comunes: Los problemas que buscan respuestas: por ejemplo este es el caso cuando un ejercicio implica el cálculo del número de palabras que hay en un libro, se trata de un trabajo en que se debe encontrar algo que se desconoce. La forma en que esto se haga no es de particular importancia siempre y cuando se obtenga la respuesta correcta (aunque es deseable que sea por un medio fácil). Los problemas que buscan pruebas: cuando se pide que se pruebe que hay 720 formas de colocar seis libros en una fila, se está dando la respuesta. La tarea es distinta a la de encontrar una respuesta porque ya se sabe lo que se desea. Todo lo que se tiene que hacer es determinar la relación entre los datos y la respuesta e indicar si es verdad lo que afirma Introducción a la Programación Corina Flores V. Tema 1- Pensamiento Computacional y metodologías para la resolución de problemas Unidad 2 Es importante observar que en un problema en que se buscan respuestas se tiene que elaborar una solución, mientras que cuando se pide que se pruebe sólo es necesario demostrar que existe (o no existe) una solución sin crearla; o en otro caso, indicar si la solución es correcta o falsa. Los problemas de computación pertenecen a una tercera clase: los problemas que buscan métodos, aquí se busca un método o estrategia mediante el cual se pueda encontrar una respuesta. Metodologías para resolver problemas Una metodología general que describe el proceso de resolver problemas mediante computadoras se muestra en la figura que viene a continuación. Encontrar método Problema Humano Encontrar respuesta Computadora Fig2: Metodologia general para resolver problemas De acuerdo a Eilders (2014), la solucion de problemas pasa por cuatro etapas principales: Introducción a la Programación Corina Flores V. Tema 1- Pensamiento Computacional y metodologías para la resolución de problemas Etapa 1 Unidad 2 •Recoleccion de informacion, donde se realiza un analisis exhaustivo sobre el problema. ¿De que trata?, ¿Que se desea obtener?, ¿que datos se plantean?,¿Que restricciones debe cumplirse. Etapa 2 •Generacion de soluciones, en esta etapa se busca diferentes alternativas de solucion mediante estrategias, por ejemplo de prueba y error Etapa 3 •Implementacion de la solucion, en esta etapa se deben tomar decisiones para implementar la estrategia que nos parece la mas adecuada.En esta etapa se debe llevar a cabo el plan de accion. Etapa 4 Ejemplo Sea el problema: A Marisol, a su retorno de su viaje de Italia un buen día de golpe le empezó a doler la garganta, tenía tos seca, pasaron algunos días y de repente sintió mucha dificultad para respirar. Ella ahora se encuentra asustada y preocupada por su estado, pues no está segura si solo se trata de un resfrió o tal vez de algo más grave como el COVID-19, ¿Qué pasos deberá seguir Marisol para salir de este problema? Etapa 1: Recolección de información, lo primero que debe hacer Marisol es buscar toda la información posible acerca del COVID-19: sobre los síntomas, formas de contagio, llamar a emergencias médicas, solicitar prueba para detectar el COVID-19, que medidas de seguridad debe tomar, etc. . Etapa de evaluación, esta etapa se ocupa de revisar si el plan implementado logro llegar al objetivo buscado, es decir, dar solución al problema, de no ser así, se debe volver a la etapa 2. Introducción a la Programación Corina Flores V. Tema 1- Pensamiento Computacional y metodologías para la resolución de problemas Unidad 2 Etapa 2: Generación de soluciones, Marisol después de haber leído con atención toda la información encontrada sobre el COVID-19, hizo una rápida evaluación de su estado de salud, que le llevaron a tomar ciertas decisiones, entre ellas: primero, descartar que se trataba de un resfrió común. Segundo, aislarse de manera inmediata de las personas que se encuentran en su hogar, tercero, llamar a emergencias médicas y solicitar la prueba del COVID-19 Etapa 3: Implementación de la solución, Marisol, después de recibir los resultados de la prueba del COVID-19 supo con certeza de que estaba infectada, entonces tomo las medidas de seguridad con mayor cuidado, siguiendo paso a paso todos los protocolos dictados por los médicos Etapa 4: Evaluación, después de 16 días de estar aislada completamente de otras personas, habiendo cumplido el protocolos de bioseguridad y estando bajo vigilancia médica permanente, Marisol dio al test del COVID-19 negativo, de esta manera pudo salvarse de una pesadilla con la que vivió y recogió experiencias de vida. Veamos otra metodologia propuesta por George Polya en su libro “Como resolverlo”, propone resolver los problemas siguiendo 4 fases, las que a continuacion se detallan: 1. Entender el problema y familiarizarse con la situación Entender el problema significa analizar con cuidado su enunciado, haciendo una lectura de comprensión una y otra vez para reconocer y familiarizarnos con los términos que emplea. Es desmenuzar cada frase del enunciado de manera que se tenga claro: ¿Qué te piden o qué es lo que se desea obtener?. Por ejemplo: si tienes que calcular los grados de un triángulo, o la medición de la temperatura ¿de quién?, de una persona?, del ambiente. ¿Qué se necesita? Para resolver el problema, por ejemplo las medidas de los lados… ¿Cuáles son los datos y las condiciones que presenta? ¿de qué tipo de triangulo?, Se necesita recopilar todos los datos posibles, Realizar un esquema que ayude a recopilar toda la información, mediante un esquema o dibujo. Un factor clave de esta fase es la habilidad de discriminar la información relevante de aquella que no lo es. 2. Buscar estrategias y diseñar un plan Para resolver un problema no existe un único método, es más debemos examinar una serie de estrategias y técnicas que se ajusten mejor al problema y nos ayuden a encontrar su solución. A continuación, se citan algunas estrategias útiles para proceder esta fase: Buscar semejanzas con otros problemas y estudiar cómo fueron resueltos. Consultar apuntes, libros, páginas web. Empezar por lo fácil e ir aumentando gradualmente la dificultad. Tal vez el problema te resulte difícil por la cantidad de datos o elementos presentes, Comienza resolviendo un problema semejante con menos datos. Buscar patrones que se repiten. Mira si el problema puede resolverse aplicando conceptos como series, combinaciones, secuencias, Introducción a la Programación Tema 1- Pensamiento Computacional y metodologías para la resolución de problemas Corina Flores V. Unidad 2 Realizar un esquema y si es posible pintarlo con colores. El adagio dice “una imagen vale mas que mil palabras”. Muchos pensamos mejor con imágenes que con palabras Aplicar la estrategia ensayo y error: de manera sistemática, escribiendo los resultados, examinando los intentos fallidos para elegir el siguiente ensayo. Mediante algoritmos, o planteamiento de ecuaciones 3. Elegir una estrategia y ejecutar el plan Poner a prueba las ideas de la fase anterior que parezcan más prometedoras, comenzando por la técnica que tiene más opciones de funcionar, puesto que, algunos problemas pueden resolverse de más de una forma, llevando a platear soluciones unas mejores que otras ya sea porque ocupan menos tiempo en ejecutarse o utilizan menos recursos. Tomar decisiones 4. Examinar la solución obtenida Probar la solución y ver si el objetivo buscado se ha cumplido, de no ser así insistir utilizando la estrategia prueba y error, en la que se intenta aplicar una solución y, si no funciona, se prueba una segunda y a, entender por sí sucesivamente hasta resolver la situación. Esto amerita analizar los pasos seguidos, entender porque la estrategia aplicada no funciona. Ejemplo Sea el problema: Hallar un número de dos cifras sabiendo que la suma de las cifras es 12 y que la primera de ellas es el triple de la segunda. Procedemos a resolver aplicando la metodología fase a fase. Fase 1: Entender el problema y familiarizarse con la situación Comenzamos con la lectura del problema e intentamos responder a las siguientes preguntas: ¿Qué pide?: Hallar un número de dos cifras ¿Cuáles son los datos?: la primera cifra es el triple de la segunda ¿Qué condiciones presenta el problema?: la suma de las cifras es 12 la primera cifra es el triple de la segunda. Luego procedemos a Reconocer los Términos, que están descritos en el enunciado del problema, es decir, ponemos nuestra atención en los sustantivos a fin de conocer su significado o su representación. Para el ejemplo: en el enunciado del problema hace referencia a cifras, nosotros debemos preguntarnos inmediatamente, ... ¿Qué entendemos por cifra de un numero?, ¿Cómo se representa el triple de una cifra? Fase 2: Buscar estrategias y diseñar un plan Comenzamos con la búsqueda de estrategias para dar solución al problema. Por sus características responde a un tipo de problema que busca una respuesta, “hallar un número de dos cifras”. En esta fase, comenzamos a Introducción a la Programación Tema 1- Pensamiento Computacional y metodologías para la resolución de problemas Corina Flores V. Unidad 2 indagar acerca de si: ¿El problema es semejante a otro resuelto en una ocasión anterior?: ¿Hay algún patrón que se repite?: ¿Se puede aplicar ensayo y error?: Diseñamos el plan Una de las estrategias que podría ser tomada para dar solución al problema podría ser la estrategia ensayo y error, podríamos probar de con algunos números de manera sistemática: Valor de la primera cifra Valor de la segunda El numero buscado Solución cifra 3 1 31 X 4 la suma es menor que12 6 2 62 X 8 la suma es menor que12 9 3 93 12 la suma es igual a 12 Fase 3: Elegir una estrategia y ejecutar el plan Representamos un número de dos cifras con “x” e “y”. Donde “x” representa a la primera cifra y “y” a la segunda cifra. Intentamos representar la ecuación, siguiendo al enunciado: “la suma de las cifras es 12, la primera cifra es el triple de la segunda” X + Y = 12 3Y + Y = 12 4Y = 12 Y = 12/4 Y=3 Reemplazando en X = 3Y X = 3*3 X=9 De ahí que el número es 93 Fase 4: Examinar la solución obtenida El resultado obtenido comparamos con el de la tabla, vemos que ambos coinciden. Por tanto la respuesta correcta es 93. Introducción a la Programación Corina Flores V. Tema 1- Pensamiento Computacional y metodologías para la resolución de problemas Unidad 2 Resumen Resumen El contenido de este tema gira alrededor del concepto problema, dado que es un aspecto central en torno al cual se trabajara este y los siguientes temas. Por otra parte, se ha visto importante también mencionar el concepto de Pensamiento Computacional, dado que como estudiantes de las carreras de ingeniería informática y sistemas, nos involucraremos con situaciones o problemas que deben ser resueltos utilizando la computadora como herramienta, pero la computadora por sí misma no podrá resolver ningún problema aunque este sea muy fácil, sino es mediante un programa, y para programar hace falta saber más que un lenguaje de programación, algunas técnicas, de las que mencionados a: Abstracción, descomposición, simulación, desarrollo de algoritmos. Posteriormente, se abordó sobre dos metodologías, una plateada por Eilders (2014) y la otra por George Polya (1945). Ambas metodologias estan destinadas a resolver problemas de diferentes tipos, sin embargo, siguen un mismo patron aunque bajo diferentes denominativos, pero en el fondo pretenden el mismo objetivo. Por otro lado, cada una de estas metodologías emplea estrategias y técnicas tales como: prueba y error, uso de abstracciones, diseño de ecuaciones, descomposición, desarrollo de algoritmos entre otros. En el siguiente tema, profundizaremos en la metodología propuesta por Polya para solucionar problemas mediante algoritmos. Para terminar, te invito a practicar con los ejercicios que ya están dispuestos en plataforma en la sección de ACTIVIDADES. Referencias Bibliográficas BACHELARD G., 1972, La Formación del espiritu científico”. De. Siglo XXI. Bs. Aires. BODNER G. M., MC MILLEN T. L. B., 1986, ”Cognitiva restructuring as an aerly stage in solv. prob.”. Jom of Res in Science Teach 23(8) 727-737. BRAVO C., 2015. “Pensamiento computacional: una idea a la que le llegó el momento” Bits de ciencia. Consultado en https://www.dcc.uchile.cl/Bitsdeciencia12.pdf HAYES J. R. . 1981, “The complet problem solver” The Franklin Inst. Prevs. Philadelphia. Joyanes Aguilar L., “Fundamentos de Programación. Algoritmos, Estructuras de datos y objetos”, Tercera Edición, Mc Graw Hill, Madrid. 2003. Maldonado, M. et al. “Cartilla de la Asignatura Fundamentos de la Programación”. Universidad Nacional de Santiago del Estero. 2006. Pólya, G. (1990). "Cómo plantear y resolver problemas". México: Trillas. Pólya, G. (1966). Introducción a la Programación Corina Flores V. Tema 1- Pensamiento Computacional y metodologías para la resolución de problemas Unidos G. Artecona F., Bonetti E, Darino C, Mello F, Rosa M, Scopise M, “Pensamiento computacional un aporte a la educación de hoy” & et all Consultado en https://issuu.com/eduticpe/docs/pensamientocomputacionalfte Unidad 2