miércoles, 30 de septiembre de 2009

Diagramas De Flujo


Diagrama de flujo

Un diagrama de flujo es una forma de representar gráficamente los detalles algorítmicos de un proceso multifactorial. Se utiliza principalmente en programación, economía y procesos industriales, pasando también a partir de estas disciplinas a formar parte fundamental de otras, como la psicología cognitiva. Estos diagramas utilizan una serie de símbolos con significados especiales y son la representación gráfica de los pasos de un proceso. En computación, son modelos tecnológicos utilizados para comprender los rudimentos de la programación lineal o estructurada.



Símbolos usados en los Diagramas de Flujo.
Estos varían de acuerdo al gusto del consumidor, Nosotros usaremos los siguientes




























Características que debe cumplir un diagrama de flujo
En los diagramas de flujo se presuponen los siguientes aspectos:

• Existe siempre un camino que permite llegar a una solución (finalización del algoritmo).
• Existe un único inicio del proceso.
• Existe un único punto de fin para el proceso de flujo (salvo del rombo que indica una comparación con dos caminos posibles).



Desarrollo del Diagrama de Flujo

Las siguientes son acciones previas a la realización del diagrama de flujo:

• Identificar las ideas principales a ser incluidas en el diagrama de flujo.
Deben estar presentes el dueño o responsable del proceso, los dueños o responsables del proceso anterior y posterior y de otros procesos interrelacionados, otras partes interesadas.
• Definir qué se espera obtener del diagrama de flujo.
• Identificar quién lo empleará y cómo.
• Establecer el nivel de detalle requerido.
• Determinar los límites del proceso a describir.





Los pasos a seguir para construir el diagrama de flujo son:

• Establecer el alcance del proceso a describir. De esta manera quedará fijado el comienzo y el final del diagrama. Frecuentemente el comienzo es la salida del proceso previo y el final la entrada al proceso siguiente.
• Identificar y listar las principales actividades/subprocesos que están incluidos en el proceso a describir y su orden cronológico.
• Si el nivel de detalle definido incluye actividades menores, listarlas también.
• Identificar y listar los puntos de decisión.
• Construir el diagrama respetando la secuencia cronológica y asignando los correspondientes símbolos.
• Asignar un título al diagrama y verificar que esté completo y describa con exactitud el proceso elegido.




Recomendaciones

A su vez, es importante que al construir diagramas de flujo, se observen las siguientes recomendaciones:

• Evitar sumideros infinitos, burbujas que tienen entradas pero no salidas.
• Evitar las burbujas de generación espontánea, que tienen salidas sin tener entradas, porque son sumamente sospechosas y generalmente incorrectas.


Ventajas de los diagrama de flujo

• Favorecen la comprensión del proceso a través de mostrarlo como un dibujo. El cerebro humano reconoce fácilmente los dibujos. Un buen diagrama de flujo reemplaza varias páginas de texto.
• Permiten identificar los problemas y las oportunidades de mejora del proceso. Se identifican los pasos redundantes, los flujos de los re-procesos, los conflictos de autoridad, las responsabilidades, los cuellos de botella, y los puntos de decisión.
• Muestran las interfaces cliente-proveedor y las transacciones que en ellas se realizan, facilitando a los empleados el análisis de las mismas.
• Son una excelente herramienta para capacitar a los nuevos empleados y también a los que desarrollan la tarea, cuando se realizan mejoras en el proceso.


Tipos de diagramas de flujos
• Formato vertical: En él el flujo o la secuencia de las operaciones, va de arriba hacia abajo. Es una lista ordenada de las operaciones de un proceso con toda la información que se considere necesaria, según su propósito.
• Formato horizontal: En él, el flujo o la secuencia de las operaciones, va de izquierda a derecha.
• Formato panorámico: El proceso entero está representado en una sola carta y puede apreciarse de una sola mirada mucho más rápido que leyendo el texto, lo que facilita su comprensión, aun para personas no familiarizadas. Registra no solo en línea vertical, sino también horizontal, distintas acciones simultáneas y la participación de más de un puesto o departamento que el formato vertical no registra.
• Formato Arquitectónico: Describe el itinerario de ruta de una forma o persona sobre el plano arquitectónico del área de trabajo. El primero de los flujogramas es eminentemente descriptivo, mientras que los utilizados son fundamentalmente representativos.



Ejemplo de Diagrama de flujo para un sencillo programa que resta al número mayor un número menor. Ambos números so ingresados por el usuario y el resultado se muestra en la pantalla.


Los números en rojo no forman parte del DFD, son usados para explicar paso a paso la lectura de este diagrama.


1. Inicio (Todo DFD debe tener uno y solo un inicio

2. Se leen (del teclado o de otro Sitio) dos números cualesquiera que nosotros llamaremos a y b (el computador los guardará en algún sitio pero nos devolverá su valor cuando nosotros se lo indiquemos

3 Preguntamos si el valor de a es mayor que el valor de b.

4 El flujo hará que se ejecute la resta del menor al número mayor (si la respuesta es Si, a la variable Res se le asignará el valor de a menos el valor de b en caso contrario a la variable Res se le asignará el valor de b menos el valor de a)

5 Se imprime el valor deRes

6 Fin del Programa





Ejercicios de TAREA OBLIGADA y traer resuelta para el sábado 3 /10 /2009

0 Indique alguna desventaja del uso de Diagramas de flujo.

1 Haga el diagrama de flujo que imprima el valor absoluto del producto de a por b

2 Haga el diagrama de flujo que IMPRIMA el cuadrado de a menos el cuadrado de b

3 Haga el diagrama de flujo que imprima el menor de los dos números a y b

4 Haga el diagrama de flujo que solamente permita valores positivos para a y para b

5 Haga el diagrama de flujo que permita leer elementos a y b de signos contrarios

6 Suponga que existe la función MOD(a,b) tal que Mod(a,b) devuelve el residuo de dividir a entre b (ejemplo Mod(14,5) devuelve el valor 4). Entonces haga un programa que solamente permita elementos de a que son múltiplos de 3 y elementos b tales que b sean múltiplos de 5 y muestre la división de a / b.



Diagrama de Flujo para ciclos

Hay muchas formas de hacer Diagramas de ciclos, nosotros usaremos preferiblemente tres(3) tipos de ciclos

• Ciclo Mientras

condición que primero pregunta por la condición y si se cumple entonces ejecuta el ciclo

• Ciclo Hasta condición que primero ejecuta y después pregunta por la condición

• Ciclo Para valor donde el ciclo se ejecuta cambiando el valor de valor desde un valor inicial hasta un valor final


Los tres tipos de ciclos pueden, la mayoría de las veces, intercambiarse una por cualquiera de las otras; generalmente se elige la última si se desea hacer un barrido completo de todos los valores que pueda asumir una variable y estos valores son incrementales positivos o negativos. Las otras dos se eligen dependiendo de si el primer valor a procesar “sabemos” que “tenemos” que procesarlo entonces elegimos Mientras en caso contrario podemos elegir Hasta. Sin embargo, debemos insistir, generalmente todas se pueden intercambiar.


Un punto de mucha atención es el hecho de estar seguro que el ciclo debe tener un fin, de lo contrario, “El computador colapsará”


Veamos que significa Mientras, Hasta y Para:

Mientras condición se ejecuta mientras la condición sea verdadera. Condición tiene un valor booleano (aquellos que solamente pueden tener los valores verdadero o falso)


Ejemplo de Mientras. Sumemos los números del 1 al 10

Razonamiento:

Como necesitamos sumar, necesitamos un acumulador de la suma que debemos inicializar en cero (porque todo número sumado a cero es el mismo número). Por conveniencia llamaremos a ese acumulador Suma

Necesitamos un contador que se incremente en 1 cada vez, (inicialmente vale 1) y va a tomar los valores 1, 2, 3, … , 8,9,10

A ese contador lo llamaremos Contador

Veamos el diagrama siguiente




1
Inicio del programa (debe ser único)

2 Se definen dos variables:
Suma con el valor inicial de 0 (cero) y Contador con el valor inicial 1(El computador los guardará el algún sitio pero nos los devolverá en el momento que se lo pidamos)


3 Preguntamos si Contador es mayor que 10, si es así Imprimimos (7) y termina. En caso contrario
4 Si Contador es menor o igual a 10 (lo contrario de >10 es menor o igual a 10) luego se suma a Suma el valor que esa variable tenía al valor actual de Contador de esta forma sumamos todos los números en la variable Suma

5 Se le suma uno(1) al contenido de la variable Contador y el resultado se guarda en la variable Contador. Se retorna al paso 3




Ejercicios de TAREA OBLIGADA y traer resuelta para el sábado 3 /10 /2009




1 Haga un DFD que sume los números pares del 2 al 10000000

2 Haga un DFD que sume los números 1,-2,+3,-4,+5, …, -(2*n) +(2*n+1) donde n es un número ingresado a la computadora.

3 Indicar que hace el siguiente DFD si asignamos a N el valor 9
























4 Que hace el siguiente DFD (suponga que a N se le asigna 3 y a P se le asigna el valor 4)

































Algoritmo
En matemáticas, ciencias de la computación y disciplinas relacionadas, un algoritmo (del latín, dixit algorithmus y éste a su vez del matemático persa Al Juarismi ) es una lista bien definida, ordenada y finita de operaciones que permite hallar la solución a un problema. Dado un estado inicial y una entrada, a través de pasos sucesivos y bien definidos se llega a un estado final, obteniendo una solución. Los algoritmos son objeto de estudio de la algoritmia.


En la vida cotidiana se emplean algoritmos en multitud de ocasiones para resolver diversos problemas. Algunos ejemplos se encuentran en los instructivos (manuales de usuario), los cuales muestran algoritmos para usar el aparato en cuestión o inclusive en las instrucciones que recibe un trabajador por parte de su patrón. También existen ejemplos de índole matemática, como el algoritmo de la división para calcular el cociente de dos números, el algoritmo de Euclides para calcular el máximo común divisor de dos enteros positivos, o el método de Gauss para resolver un Sistema lineal de ecuaciones.




Medios de expresión de un algoritmo
Los algoritmos pueden ser expresados de muchas maneras, incluyendo al lenguaje natural, pseudocódigo, diagramas de flujo y lenguajes de programación entre otros. Las descripciones en lenguaje natural tienden a ser ambiguas y extensas. El usar pseudocódigo y diagramas de flujo evita muchas ambigüedades del lenguaje natural. Dichas expresiones son formas más estructuradas para representar algoritmos; no obstante, se mantienen independientes de un lenguaje de programación específico.




La descripción de un algoritmo usualmente se hace en tres niveles:

1. Descripción de alto nivel. Se establece el problema, se selecciona un modelo matemático y se explica el algoritmo de manera verbal, posiblemente con ilustraciones y omitiendo detalles.

2. Descripción formal. Se usa pseudocódigo para describir la secuencia de pasos que encuentran la solución.

3. Implementación. Se muestra el algoritmo expresado en un lenguaje de programación específico o algún objeto capaz de llevar a cabo instrucciones.


Diagrama de flujo que expresa un algoritmo para calcular la raíz cuadrada de un número x por aproximaciones sucesivas