Representación de algoritmos
Introducción
¡Hola!
¡Qué alegría encontrarte! Espero que sientas mucha motivación por continuar en este curso pues te garantizo que vas a aprender mucho. En ese sentido, te doy una calurosa bienvenida a la segunda clase que la disfrutes.
Como ya te diste cuenta, requerimos de echar mano de diversas habilidades para poder construir soluciones a problemas que llegan a presentarse en la vida cotidiana, en una primera instancia a través de un algoritmo, como lo vimos en la clase digital 1.
Para poder resolver los problemas planteados en la sesión pasada seguro tuviste que realizar procesos mentales de análisis, reflexión, toma de decisiones, creatividad, innovación y una lógica de pensamiento para poder estructurar una solución, este proceso está incidiendo de forma transversal en tu formación integral y es aplicable en todas las UDA que cursas y también tiene un impacto importante en tu vida personal.
Tal vez, el lograr ese proceso de pensamiento te está costando un poco, probablemente observes que a otro compañero le cuesta más o menos lograrlo, ¡no te desanimes!, al final todos pueden establecer diferentes soluciones al mismo problema planteado, esto se debe a que cada uno pensamos de forma distinta y podemos resolver las cosas de manera diferente, sin perder de vista el propósito y los resultados deseados, de ahí la importancia de validar todo algoritmo.
Continuando con este proceso de aprendizaje, en esta clase digital 2 abordaremos dos herramientas que nos ayudarán a representar los algoritmos a través de una forma gráfica y una forma detallada de instrucciones usando un lenguaje máquina. Dichas herramientas se abordarán de la siguiente manera:
Representación de algoritmos
- * Fases en la resolución de problemas
- * Análisis del problema, diseño de algoritmo
- * Diagramas de flujo (Programa DFD)
- * Pseudocódigo
Sin más preámbulos, ¡Comencemos este trayecto formativo!
Desarrollo del tema
Representación de algoritmos
Recordando de la clase digital 1, el algoritmo es un conjunto ordenado y finito de operaciones que permite hallar la solución de un problema. Es importante hacer un paréntesis y observar cómo resolver un problema.
Resolución de problemas
Si bien, no existe una receta de cocina para poder resolver un problema, podemos hacer uso de la metodología general para resolver un problema.
Los caminos para llegar a una solución no son necesariamente los mismos, debido a que cada individuo es distinto. Por lo que no se puede establecer una misma vía para solucionarlo. De ahí la necesidad de aprender a resolver problemas.
Polya (1945), define cuatro fases en la resolución de problemas, como se observan a continuación:
Imagen 1. Fases para la solución de problemas. Tomada de Polya (1945).
En este sentido, cada fase tiene un proceso de reflexión respecto al problema, esto haciendo distintas preguntas como lo muestra la figura 1 haciendo referencia a un ciclo entre estas fases, ya que las veces necesarias puedes regresar a la fase inicial de comprender el problema, hasta que se llegue a una solución funcional. A continuación, se detallan cada una de las fases:
Comprender el problema:
- ¿Cuál es la incógnita?
- ¿Cuáles son los datos?
Concebir un plan:
- ¿Se ha encontrado con un problema semejante?,
- ¿Conoce un problema relacionado con este?
- ¿Podría enunciar el problema de otra forma?
- ¿Ha empleado todos los datos?
Ejecutar el plan:
- ¿Son correctos los pasos dados?
Examinar la solución obtenida:
- ¿Puede verificar el resultado?
- ¿Puede verificar el razonamiento?
Además, retomando el concepto de algoritmo y cada una de las fases para solucionar podremos plantear una solución que responda a las necesidades establecidas en el problema. Ahora bien, un algoritmo puede ser representado por dos herramientas: diagramas de flujo y los pseudocódigos. Por lo que a continuación vamos a ver cada herramienta.
Diagrama 2. Diagramas de flujo.
Los diagramas de flujo pueden representarse a través de diferentes software que permiten verificar si las instrucciones se ejecutan correctamente. Tal es el caso del software libre DFD, un editor que permite incorporar cada una de las instrucciones representándolas con su respectiva simbología y comprobando a través de la computadora el funcionamiento de la solución.
Vamos a ver cómo funciona DFD.
El siguiente ejemplo muestra la solución en diagrama de flujo para definir si una persona es niño o adulto a partir de la edad. El algoritmo consiste en:
INICIO
- Solicitar el nombre y la edad
- Comparar si la edad es mayor o igual a 18
2.1 Si lo es se considera adulto
2.2 Sino se considera niño
FIN
Diagrama 3. Diagrama de flujo: ejemplo.
Pseudocódigo
El pseudocódigo es un lenguaje de especificación (descripción) de algoritmos. Es el paso para la codificación final antes de pasar las instrucciones a un lenguaje de programación.
El pseudocódigo (o falso lenguaje) es comúnmente utilizado por los programadores para omitir secciones de código o para dar una explicación del paradigma que tomó el mismo programador para hacer sus códigos, esto quiere decir que el pseudocódigo no es programable sino facilita la programación.
Las características principales de un pseudocódigo son:
- Se puede ejecutar en un ordenador.
- Es una forma de representación sencilla de utilizar y de manipular.
- Facilita el paso del programa al lenguaje de programación.
- Es independiente del lenguaje de programación que se vaya a utilizar.
- Es un método que facilita la programación y solución al algoritmo del programa.ç
La estructura que debe establecerse en el pseudocódigo es la siguiente:
1. Cabecera
a. Programa (nombre).
b. Tipos de datos.
i. Constantes.
ii. Variables.
2. Cuerpo
a. Inicio.
b. Instrucciones.
c. Fin.
Al igual que en los diagramas de flujo, existe software libre para poder editar el pseudocódigo, tal es el caso de PSeInt. Te invito a que veamos cómo se usa.
Así mismo es necesario conocer sobre el desarrollo de un pseudocódigo en el siguiente ejemplo práctico, que sería importante replicar de forma personal.
Un ejemplo de pseudocódigo del ejercicio del algoritmo anterior es el siguiente:
PROGRAMA MAYOR_EDAD
Escribe “Ingresa el nombre”
Leer nombre
Escribe “Ingresa la edad”
Leer edad
Si edad >= 18 entonces
Escribir “adulto”
Sino
Escribir “niño”
FIN PROGRAMA
Conclusión
En esta sesión 2, pudimos identificar que existe una metodología general para poder hacer una reflexión del problema a través de diferentes cuestionamientos que nos permiten ser más analíticos, críticos y reflexivos, ya que en muchas ocasiones cuando nos enfrentamos a un problema que resolver no sabemos cómo hacerlo, cómo abordarlo, cómo plantear una solución, y esto se debe principalmente a la falta de análisis y comprensión del mismo. Lo anterior esta abonando de forma transversal al cúmulo de habilidades necesarias para el perfil de egreso.
Por otro lado, comenzamos a incorporar otras herramientas como el diagrama de flujo y el pseudocódigo, que a partir del algoritmo pueden emplearse para conocer cómo es que la solución trabaja y puede llegar a convertirse en nuestro caso, en una solución informática. En el caso de los diagramas de flujo es una herramienta de corte transversal que es utilizada en diversas áreas para conocer el flujo que debe seguir un proceso. El pseudocódigo es una herramienta más especializada a las soluciones informáticas, ya que como viste es lo más cercano al desarrollo del programa que se utilizará para su codificación.
Gracias al interés de muchas comunidades académicas por todo el mundo, es que hoy en día podemos contar con software libre para estas dos herramientas, que nos permite utilizar la computadora como medio de comprobación del funcionamiento de la solución que estamos planteando.
La importancia que tiene el desarrollar el algoritmo primero, antes de pensar en el diagrama de flujo y/o pseudocódigo es fundamental, ya que marca un proceso detallado de análisis y comprensión del mismo, y que al hacerlo muy seguramente el éxito que tengas al comprobar tu solución con las otras herramientas se deberá a la realización de un buen algoritmo.
Hasta aquí se termina la sesión, no dudo en que su contenido te será de gran utilidad. Por lo que te invito a realizar las actividades de esta clase, en caso de dudas consulta a tu asesor. Te espero en la tercera lección.
Fuentes de información
- Albert, R., y Breedlove, T. (2009). C++: An active learning approach. Jones and Bartlett Publishers
- Cairo Battistutti, O. (2005). Metodología de la Programación, Algoritmos Diagrama, de Flujo y Programas. Alfaomega.
- Deitel, P., y Deitel, H. (2008). Cómo Programar en C++. Pearson Prentice Hall.