miércoles, 16 de abril de 2008

Diagramas de Flujo



DIAGRAMA DE FLUJO

Un diagrama de flujo es la forma más tradicional de especificar los detalles algorítmicos de un proceso. Se utiliza principalmente en programación economía y procesos industriales; estos diagramas utilizan una serie de símbolos con significados especiales.


Los diagramas de flujo (o flujogramas) son diagramas que emplean símbolos gráficos para representar los pasos o etapas de un proceso. También permiten describir la secuencia de los distintos pasos o etapas y su interacción. Las personas que no están directamente involucradas en los procesos de realización del producto o servicio, tienen imágenes idealizadas de los mismos, que pocas veces coinciden con la realidad.


La creación del diagrama de flujo es una actividad que agrega valor, pues el proceso que representa está ahora disponible para ser analizado, no sólo por quienes lo llevan a cabo, sino también por todas las partes interesadas que aportarán nuevas ideas para cambiarlo y mejorarlo.



Ventajas de los Diagramas 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 reprocesos , los conflictos de autoridad, las responsabilidades, los cuellos de botella, y los puntos de decisión.

  • Muestran las interfases 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. ¿Qué Símbolos se Emplean en los Diagramas de Flujo? Los símbolos tienen significados específicos y se conectan por medio de flechas que indican el flujo entre los distintos pasos o etapas.

Las Siguientes son Acciones Previas a la Realización del Diagrama de Flujo :



  1. Definir que se espera obtener del día grama de flujo.

  2. Identificar quién lo empleará y cómo.

  3. Establecer el nivel de detalle requerido.

  4. 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 destalle 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. Ejemplo: Reparación de la PC MACRO Cuando se desarrolla el diagrama de flujo es importante considerar el tipo y cantidad de información requerida por el usuario del mismo. Probablemente la dirección de la empresa no esté interesada en los detalles y le sea suficiente una descripción genérica del proceso. Este es el caso del ejemplo anterior, un diagrama de flujo a nivel macro. En cambio, si el objetivo del diagrama es la capacitación de nuevos empleados o la búsqueda de oportunidades de mejora, será necesario disponer de una descripción detallada del proceso y hablamos de un diagrama de flujo a nivel micro, como muestra el ejemplo siguiente. Entre ambos niveles, el macro y el micro, se ubican los diagramas con una cantidad media de detalles. MICRO Conclusiones Los diagramas de flujo son una herramienta valiosa para la mejora de los procesos, permiten detectar las actividades que agregan valor y aquéllas que son redundantes o innecesarias. También son de gran utilidad durante el desarrollo de la documentación de los Sistemas de Gestión, pues proveen una descripción de los procesos y un detalle de las operaciones mucho más amigable que los procedimientos e instructivos basados en texto. Contribuyen a resolver uno de los principales problemas, que es la resistencia del personal a emplear los documentos como referentes para el desempeño de las tareas. Una copia ampliada del diagrama de flujo al alcance de los operadores del proceso facilita la consulta y promueve la creatividad. Es conveniente emplear programas específicos para la confección de los diagramas de flujo. En general, estos programas son de manejo sencillo y facilitan notablemente la tarea.






SÍMBOLOS DEL DIAGRAMA DE FLUJO






CARACTERÍSTICAS QUE DEBE DE CUMPLIR UN DIAGRAMA DE FLUJO


En los diagramas de flujo se presuponen los siguientes aspectos:


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


TIPOS DE DIAGRAMA DE FLUJO


1.-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.


2.-Formato Horizontal: En él el flujo o la secuencia de las operaciones, va de izquierda a derecha.


3.-Formato Panorámico: El proceso entero está representado en una sola carta y puede apreciarse de una sola mirada mucho más rápidamente 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.


4.-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 últimos son fundamentalmente representativos.



ALGORITMO


El concepto de algoritmo, aunque similar y obviamente relacionado, no debe confundirse con el concepto de programa. Mientras el primero es la especificación de un conjunto de pasos (operaciones, instrucciones, órdenes,...) orientados a la resolución de un problema, el segundo es ese conjunto de operaciones especificadas en un determinado lenguaje de programación y para un computador concreto, susceptible de ser ejecutado (o compilado o interpretado).


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-Jwarizmi) 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, y su definición queda formalizada por el modelo computacional de la Máquina de Turing.


Su importancia radica en mostrar la manera de llevar a cabo procesos y resolver mecánicamente problemas matemáticos o de otro tipo. Al igual que las funciones matemáticas, los algoritmos reciben una entrada y la transforman en una salida, comportándose como una caja negra. Sin embargo, para que un algoritmo pueda ser considerado como tal, debe ser determinista, tener un número finito de instrucciones y debe acabar. Por determinista se entiende que, si se sigue el mismo proceso más de una vez, se llega siempre al mismo resultado.


El concepto de algoritmo, aunque similar y obviamente relacionado, no debe confundirse con el concepto de programa. Mientras el primero es la especificación de un conjunto de pasos (operaciones, instrucciones, órdenes,...) orientados a la resolución de un problema, el segundo es ese conjunto de operaciones especificadas en un determinado lenguaje de programación y para un computador concreto, susceptible de ser ejecutado (o compilado o interpretado). Un algoritmo, estrictamente hablando, no puede ejecutarse hasta que se implementa, ya sea en un lenguaje de programación, en un circuito eléctrico, en un aparato mecánico, usando papel y lápiz, o en algún otro modelo de computación.


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.


CARACTERÍSTICAS DEL ALGORITMO:


El científico de computación Donald Knuth ofreció una lista de cinco propiedades, que son ampliamente aceptadas como requisitos para un algoritmo:


1.-Carácter finito. "Un algoritmo siempre debe terminar después de un número finito de pasos".

2.-Precisión. "Cada paso de un algoritmo debe estar precisamente definido; las operaciones a llevar a cabo deben ser especificadas de manera rigurosa y no ambigua para cada caso".

3.-Entrada. "Un algoritmo tiene cero o más entradas: cantidades que le son dadas antes de que el algoritmo comience, o dinámicamente mientras el algoritmo corre. Estas entradas son tomadas de conjuntos específicos de objetos".

4.-Salida. "Un algoritmo tiene una o más salidas: cantidades que tienen una relación específica con las entradas".

5.-Eficacia. "También se espera que un algoritmo sea eficaz, en el sentido de que todas las operaciones a realizar en un algoritmo deben ser suficientemente básicas como para que en principio puedan ser hechas de manera exacta y en un tiempo finito por un hombre usando lápiz y papel".

MEDIOS DE EXPRESIÓN DE UN ALGORITMO


Los algoritmos pueden ser expresados de muchas maneras, incluyendo al lenguaje natural, pseudocodigo, 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.
También es posible incluir un teorema que demuestre que el algoritmo es correcto, un análisis de complejidad o ambos.


PSEUDOCODIGO


Un pseudocódigo (falso lenguaje), es una serie de normas léxicas y gramaticales parecidas a la mayoría de los lenguajes de programación, pero sin llegar a la rigidez de sintaxis de estos ni a la fluidez del lenguaje coloquial. Esto permite codificar un programa con mayor agilidad que en cualquier lenguaje de programación, con la misma validez semántica, normalmente se utiliza en las fases de análisis o diseño de Software, o en el estudio de un algoritmo. Forma parte de las distintas herramientas de la ingeniería de software.


DEFINICION DE DATOS DEL PSEUDOCODIGO


La definición de datos se da por supuesta, sobre todo en las variables sencillas, si se emplea formaciones: pilas, colas, vectores o registros, se pueden definir en la cabecera del algoritmo, y naturalmente cuando empleemos el pseudocódigo para definir estructuras de datos, esta parte la desarrollaremos adecuadamente.

El principal objetivo del pseudocódigo es el de representar la solución a un algoritmo de la forma más detallada posible, y a su vez lo más parecida posible al lenguaje que posteriormente se utilizara para la codificación del mismo.

Las principales características de este lenguaje 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.

Todo documento en pseudocódigo debe permitir la descripción de:

  • Instrucciones primitivas
  • Instrucciones de proceso
  • Instrucciones de control
  • Instrucciones compuestas
  • Instrucciones de descripción

Estructura a seguir en su realización:

Cabecera:

  • Programa:
  • Modulo:
  • Tipos de datos:
  • Constantes:
  • Variables:

Cuerpo:

  • Inicio
  • Instrucciones
  • Fin

Para comentar en pseudocódigo se le antepone al comentario dos asteriscos (*)

Ejemplos

* Programa que calcula el área de un cuadrado a partir de un lado dado por teclado.

Programa: area_cuadrado

Modulo: main **( también se puede llamar principal)

Variables:

lado: natural

area: natural

Inicio

Visualizar "Introduce el lado del cuadrado"

Leer lado

Area<- lado * lado

Visualizar "El área del cuadrado es", area

Fin

* Programa que visualice la tabla de multiplicar del numero introducido por teclado

Programa: Tabla multiplicar

Modulo: main

Variables:

t: entero

num : entero

Inicio

Visualizar "Introduce un número"

Leer num

Desde t=1 hasta t=10 repetir

Visualizar num, " X", t, "=", num*t

Fin desde

Fin

Una vez que tenemos preparado un diagrama de flujos (ordinograma u organigrama) y un pseudocódigo ya podemos comenzar con la codificación del programa en nuestro ordenador. A partir de aquí todo varía dependiendo del lenguaje de programación que utilicemos, pero en todos los programas tendremos que definir los tipos de datos que utilizaremos. De todo esto hablaré en el siguiente artículo.

DEFINICIÓN DE ESTRUCTURAS DEL CONTROL


Como se había mencionado antes, cada autor usa su propio pseudocódigo con sus respectivas convenciones.


Por ejemplo, considere la instrucción "Reemplace el valor de la variable x por el valor de la variable y"; algunas de las posibles sintaxis para indicar lo anterior podrían ser:


Asigne a X el valor de Y



1.- x ---- Y


2.- X := Y


3.- X = Y










1 comentario:

Freddy E. Aguado Vasquez dijo...

Todo esta bien amplificado, has hecho un blogger bien esquematizado