Algoritmos: Diagramas de Flujo Algoritmo
Transcription
Algoritmos: Diagramas de Flujo Algoritmo
UNIVERSIDAD DE TALCA FACULTAD DE INGENIERÍA ESCUELA DE INGENIERÍA CIVIL INDUSTRIAL Algoritmos: Diagramas de Flujo Ya sabemos que cuando se ejecuta un programa, tanto el programa, como los datos que éste utiliza, se almacenan en la memoria. También tenemos una idea de cómo opera la máquina, en este bajo nivel, cuando se ejecutan las instrucciones de un programa para resolver un problema determinado. Sin embargo, los problemas que vamos a resolver son un poco más complejos que los que hemos visto hasta ahora, por lo cual un enfoque de más alto nivel, resulta más conveniente, para desarrollar la solución a un problema. Dentro de este enfoque de alto nivel, emplearemos algunas herramientas, como diagramas de flujo, tablas de decisión, seudocódigo entre otras, y un lenguaje en su forma simplificada, Python, para construir y especificar los algoritmos que den solución a un problema dado. Algoritmo Un algoritmo consiste en la definición de las operaciones a realizar para resolver un problema determinado en un número finito de pasos y siguiendo un orden específico. Como estudiamos previamente, empleamos algoritmos en la vida la real todo el tiempo. Consideremos por ejemplo el problema de cómo clavar un clavo. Usted podría dar las siguientes indicaciones: 1. Tome el clavo y colóquelo perpendicularmente a la pared, sujetándolo con la mano izquierda. 2. Coja el martillo con la mano derecha y sitúelo a unos 20 cm perpendicularmente al clavo. 3. Golpee la cabeza del clavo con el martillo, tantas veces como sea necesario. Las operaciones anteriores concuerdan con la definición previa de algoritmo, por lo tanto hemos definido un algoritmo que permite resolver el problema de cómo clavar un clavo. Una definición un poco más específica de algoritmo sería: “Procedimiento o método no ambiguo para resolver un problema de tal forma que después de la ejecución de una serie finita de acciones se obtiene una solución si existe, o informa que no tiene solución” Consideremos el problema de determinar el valor de la hipotenusa en un triángulo rectángulo, dado los valores de los catetos. Un algoritmo que resuelve este problema podría ser el siguiente: Tome el valor de un cateto y multiplíquelo por sí mismo Tome el valor del otro cateto y multiplíquelo por sí mismo Tome los resultados anteriores y súmelos Determine la raíz del resultado de la suma anterior. Este es el valor de la hipotenusa buscada. El algoritmo definido pareciera funcionar. Sin embargo alguien podría pensar que no es muy preciso. ¿Qué se entiende por tomar? ¿Se necesitará un vaso? Para hacer más preciso un algoritmo, de forma que, independientemente de quien lo lea, la interpretación sea la misma, se han definido herramientas para especificarlo. Las dos herramientas más utilizadas son los Diagramas de flujo. Diagrama de Flujo Un diagrama de flujo es la representación gráfica de un algoritmo, de forma tal que mediante ciertos símbolos se indican los tipos de operaciones que componen el algoritmo y el orden en que éstas se ejecutan está dado por la dirección de las conexiones. Un diagrama de flujo parte con un símbolo de inicio, como el que se muestra en la siguiente figura e indica el comienzo del algoritmo y debe aparecer una única vez en el diagrama de flujo. Inicio Inicio del Programa A continuación, conectados mediante flechas, se dibujan los símbolos que representen entrada o salida de datos, operaciones según sea la forma del algoritmo. Estos símbolos pueden contener algún texto que indique la naturaleza de la operación. Las flechas van a indicar la secuencia de ejecución de las distintas operaciones. Por ejemplo, en el símbolo de entrada se puede indicar la(s) variable(s) que reciben valor en tiempo de ejecución, por parte del usuario, tal como se muestra en la siguiente figura: var1, var2 Entrada de datos Por ejemplo, en el símbolo de operación como se muestra a continuación, se puede indicar la asignación de un valor en la memoria. También utilizando este símbolo se puede indicar la ejecución de una operación aritmética cuyo resultado se almacene en la memoria. x ← 4 Procesamiento de datos Finalmente en el símbolo de salida, se pueden colocar las variables cuyo valor queremos mostrar por pantalla. En este caso también es posible colocar textos (cadenas de caracteres), como se muestra en la siguiente figura: ‘total’, suma Salida de datos Para terminar el diagrama de flujo se dibujo el símbolo fin, el cual puede aparecer una única vez en el algoritmo e indica el fin del algoritmo. Fin Fin del programa En la siguiente figura representamos el diagrama de flujo de un algoritmo para calcular el valor de la hipotenusa, para un triángulo rectángulo, dado que se conocen los lados: Inicio lado1, lado2 l1_cuadrado ← lado1^2 l2_cuadrado ← lado2^2 suma ← l1_cuadrado + l2_cuadrado hipotenusa ← sqrt( suma ) hipotenusa Fin En este caso se inicia el algoritmo con el símbolo para inicio, luego se realizan las operaciones de entrada de datos, en este caso, de los lados del triángulo. A continuación se ejecutan las operaciones: elevar al cuadrado cada uno de los lados, sumarlos y calcular la raíz cuadrada de la suma. Finalmente se muestra el valor encontrado para la hipotenusa y termina la ejecución del algoritmo con el símbolo fin Observe que en cada proceso operación de datos, el resultado de la operación –lado derecho de la expresión– queda almacenado en la variable, la cual aparece a la izquierda. Observe como la secuencia de las flechas indican el orden en que se ejecutan las operaciones. Características Algunos requisitos que deben cumplir los diagramas de flujo para que estén correctamente dibujados y algunas recomendaciones se listan a continuación: debe tener un comienzo al inicio del diagrama, debe tener un final al final del diagrama los símbolos de inicio y fin aparecen sólo una vez en el programa las operaciones van en el centro, entre los símbolos de inicio y fin. las secuencias de ejecución de las operaciones se representan por flechas. Estas deben ir de izquierda a derecha, y de arriba hacia abajo en lo posible. a un punto puede llegar más de una línea pero debe salir solo una. se debe evitar el cruce de líneas utilizando los conectores. Se deben usar conectores solo cuando sea necesario. No deben quedar líneas de flujo son conectar. Todo texto escrito dentro de un símbolo deberá ser escrito claramente, evitando el uso de muchas palabras Se deben trazar los símbolos de manera que se puedan leer de arriba hacia abajo y de izquierda a derecha. Los símbolos que utilizaremos han sido normalizados por el instituto norteamericano de normalización (ANSI).