Es un gráfico lógico del plan de trabajo que se ejecutara para la solución de un determinado problema. A través de él, se planifica la solución del problema independiente del lenguaje de computación a usar.
Las capacidades humanas necesarias para elaborar un diagrama de flujo correcto son: Lógico, Prácticas, y Atención.
El empleo de la maquina en las funciones del procediendo de datos han hecho necesario un flujo ordenado de la información. La secuencia en que deberán ejecutarse las operaciones tendrá que definirse claramente, y cuando se combine con los datos a los que debe aplicarse, esa secuencia creara el flujo de información.
No puede hacerse mucho hincapié en documentación, ósea el registro de Información .Sin Instrucciones escritas y sin representación gráfica del flujo de trabajo sería muy difícil de llevar una tarea de procediendo de datos en forma apropiada. Hay varios métodos más eficientes organizados y normalizados, es el de los diagramas de Flujo que el Futuro programador comprenda la necesidad de los diagrama de flujo.
Características de los flujo gramas
De uso, permite facilitar su empleo. De destino, permite la correcta identificación de actividades. De comprensión e interpretación, permite simplificar su comprensión. De interacción, permite el acercamiento y coordinación. De simbología, disminuye la complejidad y accesibilidad. De diagramación, se elabora con rapidez y no requiere de recursos sofisticados.
SIMBOLOGÍA DE LOS DIAGRAMAS DE FLUJO
Las diversas organizaciones usan distintos símbolos, pero el comité sobre computadoras y procesadores de información de la Asociación Norteamericana de Normas ha hecho un gran esfuerzo para normalizar los símbolos de los diagramas de flujo. Esa normalización permite comprender cualquier diagrama de flujo que use los símbolos recomendados. Cada símbolo normal de diagrama de flujo tiene un significado especial.
Conector dentro de página.
Representa resultado mediante un reporte impreso
Conector fuera de página.
Expresa Inicio o Fin de un Programa.
Expresa operación algebraica o de Asignación.
Almacenamiento en línea Disco Magnético.
Expresa condiciones y asociaciones alternativas de una decisión lógica
Expresa condición y acciones alternativas de una decisión numérica.
Entrada / Salida: Representa cualquier tipo de Fuente de entrada y salida
Entrada: Lectura de datos por tarjeta perforadas.
Expresa operación cíclica repetitiva.
Expresa proceso de llamada a una subalterna.
Representa datos grabados en una cinta magnética.
Tipos de Diagramas de flujo
Hay varios tipos distintos de flujogramas que pueden usarse. Flujograma de primer nivel o de dirección descendente. Un flujograma de primer nivel muestra los pasos principales de un proceso y puede incluir también los resultados intermedios de cada paso (el producto o servicio que se produce) y los subpasos correspondientes. Este tipo de flujograma se usa por lo general para obtener un panorama básico del proceso e identificar los cambios que se producen en el proceso. Es sumamente útil para identificar los miembros correctos para el equipo (aquellas personas que participan en el proceso) y para elaborar indicadores para observar y seguir el proceso por su concentración en los resultados intermedios.
La mayoría de los procesos pueden graficarse en 4 ó 5 recuadros que representan los principales pasos o actividades del proceso. En realidad, es buena idea usar solamente 4 ó 5 recuadros, porque no obliga a tener en cuenta los pasos más importantes. Los demás pasos son normalmente subpasos de los más importantes.
Flujograma de segundo nivel o detallado
Un flujograma detallado indica los pasos o actividades de un proceso e incluye, por ejemplo, puntos de decisión, períodos de espera, tareas que se tienen que volver a hacer con frecuencia (repetición de tareas o tareas duplicadas) y ciclos de retroalimentación. Este tipo de diagrama de flujo es útil para examinar áreas del proceso en forma detallada y para buscar problemas o aspectos ineficientes.
Flujograma de ejecución o matriz
Un flujograma de ejecución representa en forma gráfica el proceso en términos de quién se ocupa de realizar los pasos. Tiene forma de matriz e ilustra los diversos participantes y el flujo de pasos entre esos participantes. Es muy útil para identificar quién proporciona los insumos o servicios a quién, así como aquellas áreas en las que algunas personas pueden estar ocupándose de las mismas tareas.
REGLAS PARA ESTRUCTURAR UN DIAGRAMA DE FLUJO
El sentido de un diagrama de flujo generalmente es de arriba hacia abajo. Es un símbolo solo puede entrar una flecha de flujo si varias líneas se dirigen al mismo símbolo, se deben unir en una sola flecha.
Las líneas de flujo no deben cruzarse, para evitar los cruces se utilizan los conectores. De un símbolo excepto el de decisión, solo puede salir una línea de flujo. Los símbolos Terminal, Conector dentro de página y conector fuera de página solo pueden estar conectados al diagrama por una sola flecha, ya que por su naturaleza es imposible que tenga una entrada y una de salida. Los émbolos de decisión tendrán siempre una sola flecha de entrada y dos o tres flechas de salida según la cantidad de alternativas que se presentan. Un diagrama de flujo debe estar complemente cerrado, teniendo una continuidad de principio a fin, no pueden quedar flechas en el aire ni símbolos sin conexión al diagrama pues el flujo seria interrumpido.
Ejercicios de diagrama de flujo
01) Búsqueda de un elemento en un conjunto:
_ se sabe que el elemento está
_ no se sabe si el elemento está
Problema: Buscar una carta
Se tiene un mazo de cartas inglesas, el cual no está completo, pero se sabe que tiene .n. cartas, y está desordenado. Se desea determinar si una carta determinada está o no en el mazo, y si está, en qué posición
En este caso no sabemos si la carta está o no en el mazo. Solución usando bandera para señalar que la carta está:
Inicio Entrada: n % total de cartas en el mazo
Entrada: buscado % carta que quiero buscar contador _ 1
bandera _ 0
entrada: carta % valor de la carta mientras (contador < n)
{entrada: carta
contador _ contador +1 si (carta = buscado)
{ bandera _ 1 pos_buscado _ contador
}
}
}
si ( bandera = 0)
{ salida: .la carta no está en el mazo.
}
sino
{ salida: .la carta está en la posición:., contador
} Fin
Otro algoritmo: Inicio
Entrada: n % total de cartas en el mazo Entrada: buscado % carta que quiero buscar
contador _ 1
entrada: carta % valor de la carta
mientras (buscado != carta & contador < n)
{entrada: carta
contador _ contador +1
}
si ( buscado = carta)
{ salida: .la carta está en la posición:., contador
}
sino
{ salida: .la carta no está en el mazo.
}
fin
02) Problema:
Si sabemos que la carta está en el mazo ¿Cómo puede variar los algoritmos Anteriores? ¿Es mejor el algoritmo en este caso? ¿Por qué? Problema:
Problema anterior, pero que despliegue un mensaje .encontrado. cada vez que encuentre la carta, y la cantidad de veces que la ha encontrado hasta ese momento.
Problema:
Como puede variar el problema si los números se ingresan ordenados. Problema: Buscar la carta mayor de un mazo no completo, que tiene .n. cartas. Indicar la posición en que se encuentra En este caso, la carta buscada está en el mazo, pero no sabemos cual es. Debe de todas maneras mirar el mazo hasta la última carta
Inicio
Entrada: n
Entrada: carta mayor _ carta pos_mayor _ 1 contador _ 1
mientras (contador
si (carta > mayor)
{mayor _ carta
pos_mayor _ contador +1
}
contador _ contador +1
}
salida: .La carta mayor es.,mayor
salida: .la posición del mayor es:.,pos_mayor fin
03) Problema:
Buscar la menor, y la cantidad de veces que esta carta se repite
Problema:
Dada como entrada una hora en formato hh:mm, [24], genere como salida la misma hora pero en formato hh:mm [am/pm]
Para ello considere:
0 hrs --> 12 pm
1 --> 1 am
12 --> 12 am
13 --> 1 pm
23 --> 11 pm
Problema: factorial
Dado un entero positivo, .n., calcule el factorial de .n. Inicion
Entrada: n factorial _ 1 mientras (n > 1)
{ factorial _ factorial * n n _ n -1
} salida: factorial fin
Problema: serie de ulam
Dado un valor inicial .x., se pide generar los términos de la serie de Ulam. Se dice que cualquier número menor que 1800 converge a 1 si se calcula cada término siguiendo las reglas de la serie de Ulam.
La regla para calcular el término siguiente a .x.es:
_ Si x par, el siguiente término se obtiene dividiendo x por 2
_ Si x es impar, el siguiente término se obtiene multiplicando x por 3 y sumando 1 al resultado.
Por ejemplo:
x = 45
x_1 = (45*3)+1 = 136 x_2 = (136/2) = 68 x_3 = (68 /2) =34 x_4= (34/2) = 17
x_5 = (17*3)+1 =52
...
26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1
Inicio Entrada: x salida: x mientras (x>1)
{ si (x % 2 =0)
{ x _ x/2 salida: x
}
sino
{ x _ x*3+1 salida: x
}
} fin
04) Diseñar un diagrama de flujo que permita ingresar al usuario un primer elemento de la serie y luego un segundo elemento de tal manea que ambos elementos definen un grupo de elementos de la serie(rango) y luego calcular la suma acumulada de la serie:
1+2+3+4+5+ 6 +………+ n.. Solución.
a).- Se define un Contador (Cont_I) para que defina lado izquierdo de la serie y Lado_d, lado derecho como segundo elemento de la serie. Ambos elementos definen un intervalo, bajo el cual se calcula la suma. Asimismo se define el acumulador (Acum) que va acumulando los valores según como avance el contador.
b).- La condición de terminación esta controlado por: Cont_I <= Lado_d , ambos deben leerse desde el teclado
c).- Se debe inicializar el acumulador en 0 Mediante un Programa Pseudo código.
Inicio
Imprimir(‘ Ingrese lado izquierdo y derecho de la serie:’), leer(Cont_I, Lado_d) acum.=0
Mientras (Cont_I<=Lado_d) hacer
Inicio
Acum = acum.+ Cont_I Cont_I = Con t_I+ 1
Fin
Imprimir (‘La suma es =: ’,Acum). Fin
05) Problema: máquina de sencillar
Se tiene una máquina que permite de sencillar dinero. La máquina está diseñada para que, dado un monto cualquiera, indique cuantos billetes de 1000 y monedas de 100, 10 y 1 debe entregar, a cambio de ese monto. Una característica de esta máquina es que siempre intentará dar la menor cantidad de monedas.
Construya el algoritmo que permita que la máquina funcione de la forma descrita. Es decir, un algoritmo que reciba como entrada un monto de dinero, entero, positivo y entregue como salida la cantidad de billetes y de monedas de las distintas denominaciones que equivalen a dicho monto.
Inicio
Entrada: monto b1000 _ 0 m100 0 m10 0
m1 _ 0
Mientras (monto >= 1000)
{ b1000 _ b1000 +1 monto monto . 1000
} Salida: . de 1000:.
, b1000
Mientras (monto >= 100)
{ m100 m100 +1
Otra solución:
Inicio
Entrada: monto total 0 denominación _ 1000
Mientras (monto >= 10)
{ Mientras (monto >= denominacion)
{ total total + 1
monto monto . denominacion
} Salida: . de.
,
denominacion , total
monto _ monto . 100
} Salida: . de 100:.
, m100
Mientras (monto >= 10)
{ m10 _ m10 +1 monto monto . 10
} Salida: . de 10:.
, m10
Salida: .de 1:., monto
Fin
total _ 0
denominacion _ denominacion / 10
} Salida: . de 1:.
, monto Fin
CONCLUSIÓN
Los diagramas de flujos de datos (como herramienta), son de gran relevancia e importancia para la programación de computadoras y diseño de software, ya que son un instrumento fundamental para el desarrollo de habilidades y destrezas lógicas, logrando así ejercitar la creatividad del pensamiento humano. Igualmente su utilización es tan importante, porque nos facilita la manera de representar visualmente el flujo de datos por medio de un sistema de tratamiento de información, en este realizamos un análisis de los procesos o procedimientos que requerimos para realizar un programa o un objetivo.