18 de mayo de 2017

Diagramas de flujo.

   Un diagrama de flujo es una notación algorítmica de tipo gráfica.

   Un diagrama de flujo es una herramienta gráfica de descripción de algoritmos, que se caracteriza por utilizar un conjunto de símbolos gráficos para expresar simbólicamente los flujos de control o el orden lógico en el que se realizan las acciones de un algoritmo.

   Aunque existe en la literatura una amplia variedad de representaciones para los símbolos utilizados en los diagramas de flujo, en este blog se adoptarán sólo cinco, mismos que se presentan a continuación:

Elementos gráficos de los diagramas de flujo y su significado.

Estructuras de control.
   Esta sección muestra los diagramas de flujo de las estructuras de control, para más detalles respecto a las estructuras de control, refiérase por favor a la entrada Algoritmos (panorama general).

   Estructura secuencial.
   La siguiente figura muestra el diagrama de flujo que representa a la estructura de control secuencial. La estructura y su funcionamiento se explican por sí mismas:
Estructura secuencial en diagrama de flujo.

   Estructuras de selección.
   Las siguientes figuras muestran los diagramas de flujo de las estructuras de selección:

(a) Estructura de selección simple (if) en diagrama de flujo.
(b) Estructura de selección doble (if-else) en diagrama de flujo.
   
(c) Estructura de selección múltiple (switch-case) en diagrama de flujo.

   Puede observarse en la figura (a), que en la estructura de selección simple se evalúa la condición, y si ésta es verdadera, se ejecuta un determinado grupo de sentencias; en caso contrario, las sentencias son ignoradas.

   Por otro lado, en la estructura de selección doble (b), cuando la condición es verdadera se ejecutará un determinado grupo de sentencia(s) 1, y si es falsa se procesará otro grupo diferente de sentencia(s) 2.

   Por último, en la estructura de selección múltiple se ejecutarán unas sentencias u otras según sea el valor que se obtenga al evaluar una expresión representada por el indicador. Se considera que dicho resultado debe ser de tipo ordinal, es decir, de un tipo de datos en el que cada uno de los elementos que constituyen el tipo, excepto el primero y el último, tiene un único predecesor y un único sucesor.

   Estructuras de repetición.
Las siguientes figuras muestran las estructuras de repetición básicas.

(a) Estructura de repetición while en diagrama de flujo.
(b) Estructura de repetición do-while en diagrama de flujo.
 
    Lo que caracteriza a la estructura de repetición “mientras” (while) como puede apreciarse en la figura (a), es que las sentencias del cuerpo del ciclo se procesan cuando la condición es verdadera, además de que la condición es verificada al principio, de donde se deduce que las sentencias se podrán ejecutar de 0 a n veces.

   Por otro lado, en la estructura de repetición “hacer mientras” (do-while), las sentencias del cuerpo del ciclo se ejecutan al menos una vez, y continúan repitiéndose hasta que la condición sea falsa. La verificación de la condición se realiza al final del ciclo (figura (b)), por lo que se deduce que las sentencias se ejecutarán de 1n veces; i.e., al menos una vez.

Diagrama de flujo del algoritmo de Euclides
   La siguiente figura  muestra el diagrama de flujo para el problema propuesto en la sección Algoritmo de Euclides: definición del problema de la entrada Algoritmos (definición y conceptos). La solución a dicho problema está determinada por el algoritmo de Euclides, mismo que se presenta a continuación en su versión de diagrama de flujo:

Diagrama de flujo para el algoritmo de Euclides.
 
   Para ser congruentes con la propuesta de solución realizada en la sección Estructura de un algoritmo de la entrada Algoritmos (definición y conceptos), además del algoritmo, se ha indicado en recuadros de menor intensidad, las especificaciones del proceso de entrada, del proceso de salida, y del proceso general de solución.