martes, 3 de julio de 2007

Diagramas de Flujo

República Bolivariana de Venezuela
Ministerio de Educación Superior
Universidad Nacional Experimental de Guayana
Vicerrectorado Académico
Ingeniería en Informática
Cátedra: Introducción a la Informática.






Diagramas de Flujo












Puerto Ordaz, julio de 2007.
ÍNDICE

Introducción
4
Desarrollo
5
Diagrama de flujo
5
Importancia del diagrama de flujo
6
Ventajas del diagrama de flujo
6
Desarrollo de un diagrama de flujo
7
Símbolos que se usan en la solución de problemas con diagramas de flujo.
8
Otros símbolos de diagramas de flujo.
9
Problemas resueltos de diagramas de flujo.
14
Ejercicio nº 1
14
Ejercicio nº 2
16
Ejercicio nº 3
17
Método de ordenación por burbuja.
18
Ventajas y desventajas del método de ordenación por burbuja.
21
Método de búsqueda secuencial y binaria
21
Método de búsqueda
21
Método de búsqueda secuencial
23
Método de búsqueda binaria
24

Diferencias fundamentales entre método de búsqueda secuencial y binaria.
27
Ventajas y desventajas entre método de búsqueda secuencial y binaria.
27

Conclusión
29
Recomendaciones
30
Bibliografía y referencias electrónicas
31
Anexos
32
Anexo 1
33
Anexo 2
33















INTRODUCCIÓN

El diagrama de flujo además de ser una representación gráfica es la secuencia o rutina simple que tiene como finalidad facilitar la comunicación entre personas.

Son de gran importancia ya que ayudan a designar cualquier representación gráfica de un procedimiento o parte de este; el diagrama de flujo como su nombre lo dice representa el flujo de información de un procedimiento.

La técnica de este es trazar un plan en si mismo las instrucciones de la computadora y da a conocer a las demás con el objetivo de eliminar una confusión.

Existen diversos métodos para llevar a cabo un procedimiento, puede ser de forma de ordenación o búsqueda.

El método de ordenación procesa los datos, clasifica y ordena los mismos.

El método de búsqueda localiza un elemento dentro de una estructura de datos.




Diagrama de flujo:

Un diagrama de flujo o flujograma o flowchart es una representación gráfica de lo que se desea que la computadora haga.

Un diagrama de flujo es una de las técnicas de representación de algoritmo más antigua y a la vez más utilizada, aunque su empleo ha disminuido considerablemente, sobre todo desde la aparición de los lenguajes de programación estructurado. Un diagrama de flujo es un diagrama que utiliza los símbolos (cajas) estándar.

Un ejemplo muy simple puede ser: supongamos que se desea que la computadora calcule dos veces 3 y a continuación imprime la respuesta: el diagrama sería el siguiente:


El lector no debe dejarse engañar por la simplicidad de nuestro ejemplo. Los diagramas de flujo son virtualmente siempre más complejos que el mostrado anteriormente. En la práctica, de un diagrama de flujo cubre muchas páginas.
Importancia del diagrama de flujo:

Los diagramas de flujos son de gran importancia debido a las grandes ventajas que esta brinda.

La representación de algoritmos ayuda al usuario a tomar en cuenta más rápidamente de las relaciones que existen entre los procedimientos, se puede descomponer en partes detalladas para su mejor estudio. Además muestran el sistema como una red de procesos funcionales conectados entre sí por las llamadas “Tuberías" y "Depósitos" de datos que describen el movimiento de los datos a través del Sistema, la cual describirá los Lugares de Origen y Destino de los datos, Transformaciones a las que son sometidos los datos, Lugares en los que se almacenan los datos dentro del sistema, los canales por donde circulan los datos. Además de esto podemos decir que este es una representación reticular de un Sistema, en el cual lo contempla en términos de sus componentes indicando el enlace entre los mismos.

Y si es correctamente construido, el paso del Diagrama de Flujo a un Lenguaje de Programación es relativamente simple y directo.

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 reproceso, 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.
Desarrollo de un Diagrama de Flujo
Las siguientes son acciones previas a la realización del diagrama de flujo:
Identificar a los participantes de la reunión donde se desarrollará 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 que 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 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.

Símbolos que se utilizan en la solución de problemas con diagramas de flujo:


NOMBRE
SÍMBOLO
FUNCIÓN
Terminal

Representa el inicio y fin de un programa. También puede representar una parada o interrupción programada que sea necesaria realizar en un programa.
Entrada / salida

Cualquier tipo de introducción de datos en la memoria desde los periféricos o registro de información procesada en un periférico.
Proceso

Cualquier tipo de operación que pueda originar cambio de valor, formato o posición de la información almacenada en memoria, operaciones aritméticas, de transformaciones, etc.
Decisión

Indica operaciones lógicas o de comparación entre datos (normalmente dos) y en función del resultado de la misma determina (normalmente si y no) cual de los distintos caminos alternativos del programa se debe seguir
Conector Misma Página

Sirve para enlazar dos partes cualesquiera de un diagrama a través de un conector en la salida y otro conector en la entrada. Se refiere a la conexión en la misma pagina del diagrama
Indicador de dirección o línea de flujo

Indica el sentido de la ejecución de las operaciones.
Documento

Se utiliza en ocasiones en lugar del símbolo de salida. El dibujo representa un pedazo de hoja. Es usado para mostrar datos o resultados.

Otros símbolos utilizados en los diagramas de flujo
Proceso predefinido: es un módulo independiente del programa principal, que recibe una entrada procedente de dicho programa, realiza una tarea determinada y regresa, al terminar, al programa principal.


Línea conectora: sirve de unión entre dos símbolos.

Conector a otra página: conexión entre dos puntos del organigrama situados en páginas diferentes.



Pantalla: se utiliza en ocasiones en lugar del símbolo de E/S.



Teclado: entrada manual de datos desde un Terminal o consola del computador. En ocasiones se utiliza en lugar el símbolo de E/S.



Registro o en tarjeta perforada: para instrucciones de lectura o perforación.


Archivo en Disco Magnético: para instrucciones de lectura, grabación o actualización (regrabar).



Archivo en cinta magnética: para instrucciones de lectura o grabación.



Estructura Repetir: para plantear instrucciones que se repiten un número controlado de veces.



Selección múltiple: (en función del resultado de la comparación se seguirá uno de los diferentes caminos de acuerdo con dicho resultado.



Comentarios: se utiliza para añadir comentarios clasificadores a otros símbolos del diagrama de flujo. Se pueden dibujar a cualquier lado del símbolo.



el programador debe asegurarse de que se le indique a la computadora lo que debe hacer en el orden correcto. En el diagrama de flujo siguiente esta hecho de manera incorrecta:







Como se mencionó anteriormente este diagrama esta hecho de manera incorrecta debido a que se está pidiendo que se imprima la respuesta antes de calcularla. Esto es, desde luego, absurdo. Los programadores inadvertidamente hacen cosas que van mucho más allá de lo que pueden admitir.
Un punto importante es: el conocimiento de cómo escribir diagramas de flujo no implica el conocimiento de cómo programar.
Cuando se tiene un problema, el programador debe seguir a fin de resolver el problema. En consecuencia, deberá estudiar el método usado, debido a que dará todas las indicaciones acerca de cómo proceder en el futuro cuando se presenten problemas similares.
Los diagramas anteriores son muy simples, ellos muestran varias clases de símbolos conectados por flechas. Además en otros ejemplos las operaciones indicadas en los símbolos se ejecutan una sola vez, es decir, que nunca se repiten.
Sin embargo, un diagrama de flujo puede regresar sobre sí mismo. Por ejemplo:












Problemas resueltos de diagramas de flujo:

Ejercicio nº 1:

Calcular el valor de la suma 1 + 2 + 3 + 4… + 100

Solución:
Variables
Contador (números leídos)
Suma (totalizador de sumas)
Inicio
Establecer contador a 1.
Establecer suma a 0.
Mientras contador a suma.
Sumar contador a suma.
Incrementar contador en 1.
Visualizar suma.
Fin


El diagrama se representa de esta manera:


















Ejercicio nº 2:
Definir el algoritmo necesario para intercambiar los valores de dos variables numéricas.
Variables
A Primer valor
B Segundo valor
AUX Variable auxiliar
Inicio
Leer A, B
AUX ← A
A ← B
B ← AUX
Escribir A, B

Fin








Ejercicio nº 3:

Calcular el área de un triángulo

Entrada: base * altura
Proceso: base * altura / 2
Salida: área

Inicio
Algoritmo _ área _triángulo;
Declarar base, altura y área de tipo real;
Escribir ("Ingrese el valor de base y altura respectivamente");
Leer (base, altura);
A = base*altura/2;
Escribir ("El resultado es", área);
Fin
El diagrama se representa de esta manera:


















MÉTODO DE ORDENACIÓN POR BURBUJA
Bubble Sort es un sencillo algoritmo de ordenamiento. Funciona revisando cada elemento de la lista que va a ser ordenada con el siguiente, intercambiándolos de posición si están en el orden equivocado.
Es necesario revisar varias veces toda la lista hasta que no se necesiten más intercambios, lo cual significa que la lista está ordenada. Este algoritmo obtiene su nombre de la forma con la que suben por la lista los elementos durante los intercambios, como si fueran pequeñas "burbujas". También es conocido como el método del intercambio directo.
En pocas palabras; el método de ordenación por burbuja consiste en ciclar repetidamente a través de la lista, comparando elementos adyacentes de dos en dos. Si un elemento es mayor que el que está en la siguiente posición se intercambian.
A continuación se muestra el pseudocódigo, donde Vector (posición) es una función que devuelve el elemento situado en una determinada posición de la lista, y NO _ ORDENADOS (a, b) devuelve VERDADERO si no están en orden los elementos a y b:
Mientras LISTA no ordenada, hacer
Para iCasilla desde INICIO hasta FINAL-1
Si NO _ ORDENADOS (Vector (iCasilla), Vector (iCasilla+1)) entonces
Variable _ auxiliar=Vector (iCasilla)
Vector (iCasilla)=Vector (iCasilla+1)
Vector (iCasilla+1)=Variable _ auxiliar
Fin Si
Siguiente iCasilla
Fin Mientras

La ordenación o clasificación es el proceso de organizar datos en algún orden o secuencia específica tal como creciente o decreciente para datos numéricos o alfabéticamente para datos de caracteres.

El Método de la Burbuja o Intercambio se basa en el principio de comparar pares de elementos adyacentes e intercambiarlos entre sí hasta que estén todos ordenados.

Supongamos que se desea clasificar en orden ascendente el vector o lista:
 
50 15 56 14 35 1 12 9
A (1) A (2) A (3) A (4) A (5) A (6) A (7) A (8)
 
Los pasos a dar son:
 
1.- Comparar A (1) y A (2); si están en orden, se mantienen como están; en caso contrario se intercambian entre sí.
2.- A continuación se comparan los elementos 2 y 3; de nuevo se intercambian si es necesario.
3.- El proceso continúa hasta que cada elemento del vector ha sido comparado con sus elementos adyacentes y se han realizado los intercambios necesarios.
 
El método expresado e pseudocódigo en el primer diseño es:
 
Desde I=I hasta 7 hacer
Si elemento (I)> elemento (I+1)
Entonces intercambiar elementos (I, I+1)
Fin _ si
Fin _ desde
La acción intercambiar entre sí los valores de los elementos A (I), A (I+1), es una acción compuesta que contiene las siguientes acciones, considerando una variable auxiliar AUX.

AUX ← A (I)
A (I) ← A (I+1)
A (I+1) ← AUX

Gráficamente se representa de esta manera:








Ventajas y Desventajas del Método de Ordenación por Burbuja.
Ventajas del método de ordenación por burbuja:
Es bastante sencillo
En un código reducido se realiza el ordenamiento
Eficaz
Desventajas del método de ordenación por burbuja:
Consume bastante tiempo de computadora
Requiere muchas lecturas/escrituras en memoria.

Métodos de búsquedas secuencial y binaria:

Métodos de Búsqueda:

La recuperación de información como ya se ha comentado, es una de las aplicaciones más importantes de la computadora.
La búsqueda (searching) de información esta relacionada con la tablas para consultas (lookup). Estas tablas contienen una cantidad de información que se almacena en forma de listas de parejas de datos. Por ejemplo, un diccionario con una lista de palabras y definiciones; un catálogo con una lista de libros de informática; una lista de estudiantes y sus notas; un índice con títulos y contenidos de los artículo publicados en una determinada revista, etc. En todos estos casos es necesario con frecuencia buscar un elemento en una lista.

Una vez que se encuentra el elemento, la identificación de su información correspondiente es un problema menor. Por consiguiente, nos centraremos en el proceso de búsqueda. Supongamos que se desea buscar el vector X [1]… X [n], que tiene componentes numéricos, para ver si contiene o no un número dado de T.

Si en vez de tratar sobre vectores, se desea buscar información en un archivo; debe realizarse la búsqueda a partir de un determinado campo de información denominado campos claves. Así en el caso de archivos de empleados de una empresa, el campo clave puede ser el número de DNI o los apellidos.

La búsqueda por claves para localizar registros es, con frecuencia, una de las acciones de mayor consumo de tiempo conlleva y, por consiguiente, el modo en que los registros están dispuestos y la elección del modo utilizado para la búsqueda pueden redundar en una diferencia sustancial en el rendimiento del programa.

El problema de búsqueda cae naturalmente de los casos típicos ya tratados. Si existen muchos registros, pueden ser necesario almacenarlo en archivos de discos o cintas, externo a la memoria de la computadora. Este caso se llama Búsqueda Externa. En el otro caso los registros que se buscan se almacenan por completo dentro de la memoria de la computadora, este caso se llama Búsqueda Interna.

En la práctica, la búsqueda se refiere a la operación de encontrar la posición de un elemento entre un conjunto de elementos dados: lista, tabla o fichero.

Ejemplos típicos de búsquedas son:

Localizar nombre y apellido de un alumno, localizar número de teléfono de una agenda, etc.

Existen diferentes algoritmos de búsqueda. El algoritmo elegido depende de la forma en que se encuentren organizados los datos.

La operación de búsqueda de un elemento N en un conjunto de elementos consiste en:

Determinar si N pertenece al conjunto y en ese caso indicar su posición en el.
Determinar si N no pertenece al conjunto.


Los métodos usuales de búsqueda son:

Búsqueda secuencial o lineal.
Búsqueda binaria.


Método de Búsqueda Secuencial:
 
Supongamos que una lista de elementos almacenados en un vector (array unidimensional). El método sencillo de buscar un elemento en un vector es explorar secuencialmente el vector, o dicho entre otras palabras recorrer el vector desde el primer elemento hasta el último. Si se encuentra el elemento buscado visualizar un mensaje similar a ‘fin de búsqueda’, en caso contrario visualizar un mensaje similar a ‘elemento no existe en la lista’.

En otras palabras, la búsqueda secuencial compara cada elemento del vector con el valor deseado, hasta que este se encuentra o se termina de leer el vector completo. La búsqueda secuencial no requiere ningún requisito por parte del vector y, por consiguiente, no necesita estar ordenado. El recorrido del vector se realizará normalmente con estructuras repetitivas.
 
Método de Búsqueda Binaria:
 
En una búsqueda secuencial se comienza con el primer elemento del vector y se busca en el hasta que se encuentra el elemento deseado o sea alcanza el final del vector.

Aunque este puede ser un método adecuado para pocos datos, se necesita una técnica más eficaz para conjuntos grandes de datos.

Si el número de elementos del vector es grande, el algoritmo de búsqueda lineal se ralentizaría en tiempo de un modo considerable. Por ejemplo, si tuviéramos que consultar un nombre en la guía telefónica de una gran ciudad, como Madrid, con una cifra aproximada de un millón de abonados, el tiempo de búsqueda, según el nombre se podría eternizar naturalmente, las personas que viven en esa gran ciudad nunca utilizarán un método de búsqueda secuencial, sino un método que se basa en la división sucesiva del espacio ocupado por el vector en sucesivas mitades hasta encontrar el elemento buscado.

Si los datos que se buscan están clasificados en un determinado orden, el método citado anteriormente se denomina Búsqueda Binaria.

La búsqueda binaria utiliza un método de ‘divide y vencerás’ para localizar el valor deseado. Con este método se examina primero el elemento central de la lista; si este es el elemento buscado, entonces la búsqueda ha terminado. En caso contrario, se determina si el elemento buscado está en la primera o en la segunda mitad de la lista y a continuación se repite este proceso, utilizando el elemento central de esa sublista. Supongamos la lista:















Si esta buscando el elemento 1983, se examina el número central 1898 en la sexta posición. Ya que 1983 es mayor que 1898, se le desprecia la primera sublista y nos centramos en la segunda.

1983

2005

2446
Elemento central
2685

3200



El número central de esta sublista es 2446 y el elemento buscado es 1983 menor que 2446; eliminamos la segunda sublista y nos queda:

1983
2005


Como no hay término central, elegimos el termino inmediatamente anterior al término central, 1983, que es el buscado.

Se han necesitado tres comparaciones mientras que la búsqueda secuencial hubiese necesitado siete.

La búsqueda binaria se utiliza en vectores ordenados se basa en la constante división del espacio de búsqueda (recorrido del vector). Como se ha comentado, se comienza comparando el elemento que se busca, no con el primer elemento, sino con el elemento central. Si ele elemento buscado T es menor que el elemento central, entonces T deberá estar en la mitad izquierda o inferior del vector, si es mayor que el vector central, deberá estar en la mitad derecha o superior, y si es igual el valor central, se habrá encontrado el elemento buscado.

El proceso de búsqueda debe terminar normalmente conociendo si la búsqueda ha tenido éxito (se ha encontrado el elemento o bien no ha tenido éxito (no se ha encontrado el elemento, normalmente se deberá devolver la posición del elemento buscado dentro del vector.




Diferencias fundamentales entre método de búsqueda secuencial y binaria:

SECUENCIAL
BINARIA
No requiere ningún requisito por parte del vector.
El vector debe estar ordenado.
Compara cada elemento del vector con el que se desea encontrar.
Divide el espacio ocupado por el vector en sucesivas mitades, hasta encontrar el elemento deseado.
Se examina el primer vector partiendo del primer elemento hasta llegar al último.
Se examina el vector partiendo desde el elemento central de la lista.
Consume excesivo tiempo en la localización del elemento designado, por ello es recomendable para vectores de pocos datos.
Eficiente con relación al tiempo, si el vector esta ordenado por ello, por ello es recomendable para conjunto de grandes datos.


Ventajas y desventajas entre método de búsqueda secuencial y binaria

VENTAJAS
DESVENTAJAS
No es necesario que el vector este ordenado.
Consumo excesivo de tiempo en la localización del elemento a encontrar si el vector contiene grandes cantidades de elementos, ya que recorre todo el vector.
Divide el espacio ocupado por el vector en sucesivas mitades, hasta encontrar el elemento buscado.
No es factible para vectores con grandes números de elementos.
Se examina primero el elemento central de la lista o sublista.
Recorre todo el vector, desde el primero hasta el último elemento.
Factible para vectores con grandes cantidades de elementos.
Es necesario que el vector este ordenado.



























CONCLUSIÓN

El diagrama de flujo es uno de los principales instrumentos en la realización de cualquier método o sistema, ellos permiten la visualización de las actividades innecesarias y verifica si la distribución del trabajo está equilibrada.

El método de la burbuja es la técnica más utilizada por su fácil comprensión y programación aunque consume bastante tiempo de computadora.

En cuanto a la técnica de ordenación por el método de burbuja, consiste en hacer varias pasadas a través del array. En cada pasada, se comparan parejas sucesivas del elemento. Si una pareja esta en orden creciente (o los valores son idénticos), se dejan los valores como están. Si una pareja esta en orden decreciente, sus valores se intercambian en el array.

El método de búsqueda secuencial compara cada elemento del vector con el valor a encontrar hasta que este se consiga o se termine de leer el vector completo.

El método de búsqueda binaria este es uno de los métodos eficientes para encontrar elementos de un arreglo ordenado. El proceso comienza comparando el elemento central del arreglo con el valor buscado.

Es fácil adaptar la búsqueda secuencial para que utilice una lista enlazada ordenada, lo que hace la búsqueda más eficaz. Es fácil mantener el orden insertado cada registro en el lugar donde termina una búsqueda sin éxito y cada búsqueda termina cuando se encuentra un registro con una clave no menor que la clave de búsqueda.




RECOMENDACIONES

Para la elaboración de un diagrama de flujo se debe tomar en cuenta las siguientes recomendaciones:

Es importante y necesario seguir una frecuente gráfica de pasos, o procesos para alcanzar la solución del problema. Se recomienda que la construcción del diagrama esté correcta; al igual que el paso del mismo a un lenguaje de programación. Si está correcto puede resultar relativamente simple para el entendimiento de las personas ajenas a la elaboración del mismo, además permite que el problema se solucione de una manera más eficiente y directa.

Se recomienda buscar la mejor alternativa posible para la solución del problema, ya que los diagramas de flujos obligan a un análisis de todos los caminos posibles para encontrarle solución a cualquier situación o problema.

Se deben usar solamente líneas de flujo horizontal y/o vertical.
Se debe evitar el cruce de líneas utilizando los conectores.
Se deben usar conectores sólo cuando sea necesario.
No deben quedar líneas de flujo sin conectar.
Se deben trazar los símbolos de manera que se puedan leer de arriba hacia abajo y de izquierda a derecha.
Todo texto escrito dentro de un símbolo deberá ser escrito claramente, evitando el uso de muchas palabras.




BIBLIOGRAFÍA Y REFERENCIAS ELECTRÓNICAS


Farina Mario V., Diagramas de flujo. DIANA TECNICO.1990 México D.F.

JOYANES, Luís. Fundamentos de Programación. Editorial: McGRAW- Hill. Madrid, España.

http://es.Wikipedia.org/wiki/ordenamiento_de_burbuja # column-one


http://www.monografias.com/trabajos42/diagrama-de-flujo/diagrama-de-flujo2.shtml#problem

http://www.monografias.com/trabajos42/diagrama-de-flujo/diagrama-de-flujo.shtml#expl




























































ANEXO 1




Ilustración de la búsqueda binaria




ANEXO 2



















ESTRUCTURA DE CONTROL SECUENCIAL