Factores ecosistemas: interacciones, energia y dinamica
Diagramas de Flujo
1. Licenciatura en Tecnologías de la Información
Universidad de Guadalajara
Fundamentos de Programación
Métodos y herramientas
para resolución de problemas
Diagramas de Flujo
3. Fases de resolución de problemas
3
La principal razón para que las personas aprendan un
lenguaje de programación es utilizar la computadora
como una herramienta para la resolución de
problemas.
La realización de trabajos mediante computadora, como
cualquier otra actividad requiere un método que
explique de un modo ordenado y secuencial hasta los
últimos detalles a realizar por la máquina.
4. Fases de resolución de problemas
4
Tres fases pueden ser identificadas en el proceso de
resolución de problemas ayudados por computadora:
Análisis del problema
Diseño del algoritmo
Implementación en un computador (realización en un
lenguaje de programación)
5. Fases de resolución de problemas
5
Las fases de resolución de un problema en
computadora son:
1. Análisis del problema
2. Diseño del algoritmo
3. Codificación
4. Compilación y Ejecución
5. Verificación y Depuración
6. Documentación
7. Mantenimiento
7. Análisis del problema
7
El primer paso para la solución del problema es el
análisis del mismo.
Se debe examinar cuidadosamente el problema a fin de
obtener la idea sobre lo que se solicita y determinar los
datos necesarios para conseguir solucionarlo.
9. Diseño del algoritmo
9
Para diseñar un algoritmo se debe comenzar por identificar las
tareas más importantes para resolver el problema y disponerlas
en el orden en que han de ser ejecutadas.
Los pasos en esta primera descripción de actividades deberán ser
refinados, añadiendo más detalles a los mismos e incluso,
algunos de ellos, pueden requerir un refinamiento adicional antes
de obtener un algoritmo claro, preciso y completo.
Este método de diseño en etapas, yendo de los conceptos
generales a los detalles por refinamientos sucesivos, se conoce
como método descendente.
10. Diseño del algoritmo
10
En la etapa de diseño se determina cómo el programa,
hace la tarea solicitada.
•Los métodos más eficaces para el proceso de diseño se
basan en el conocido por divide y vencerás.
•El problema se divide en subproblemas y éstos a su
vez en otros de nivel más bajo, hasta que la solución
pueda ser implementada en la computadora.
11. Diseño del algoritmo
11
• Este método se conoce como diseño descendente
(top-down) o modular.
• El proceso de romper el problema en cada etapa y
expresar cada paso en forma más detallada se
denomina refinamiento sucesivo.
• Cada subprograma es resuelto mediante un módulo
que tiene un solo punto de entrada y un solo punto de
salida.
12. Diseño del algoritmo
12
• El proceso implica la ejecución de los siguientes
pasos:
– Programar un módulo
– Comprobar el módulo
– Si es necesario, depurar el módulo
– Combinar el módulo con otros módulos.
13. Diseño del algoritmo
13
El diseño del algoritmo
es independiente del lenguaje de
programación
en el que se vaya a codificar
posteriormente.
14. Implementación mediante el computador
14
Una vez que el algoritmo está diseñado, es representado
mediante una herramienta de programación
(diagrama de flujo, diagrama N-S, o pseudocódigo) y
verificado se debe pasar a la fase de codificación.
Codificación, traducción del algoritmo a un
determinado lenguaje de programación, que deberá ser
completada con la Ejecución.
15. Implementación mediante el computador
15
Verificación del algoritmo. Una vez que se ha terminado
de escribir un algoritmo es necesario comprobar que
realiza las tareas para las que se ha diseñado y produce el
resultado correcto y esperado.
Una forma de comprobar un algoritmo es mediante su
ejecución manual, usando datos significativos que
abarquen todo el posible rango de valores y anotando en una
hoja de papel las modificaciones que se producen en las
diferentes fases hasta la obtención de resultados.
16. Representación de algoritmos
16
Un algoritmo puede ser escrito en castellano
narrativo, pero esta descripción suele ser demasiado
prolija y además, ambigua.
Para representar un algoritmo se debe utilizar
algún método que permita independizar dicho
algoritmo de los lenguajes de programación y, al
mismo tiempo, conseguir que sea fácilmente
codificable.
17. Representación de algoritmos
17
Detallada. El algoritmo escrito en un determinado
lenguaje de programación. Por ejemplo: lenguaje de
máquina, ensamblador, fortran, basic, pascal, C, etc.
Simbólica. Las etapas son descritas con lenguaje
próximo al natural, con el grado de detalle adecuado
a la etapa de desarrollo del programa.
18. Representación de algoritmos
18
Los herramientas más usuales para la representación de
algoritmos son:
Diagrama de flujo
Diagrama N-S (Nassi-Schneiderman)
Seudocódigo
19. Representación de algoritmos
19
Diagrama de flujo. Se utilizan entre otros para la
representación gráfica de la secuencia de pasos
necesarios para describir un procedimiento particular.
Utiliza unos símbolos normalizados, con los pasos
del algoritmo escritos en el símbolo adecuado y los
símbolos unidos por flechas, denominadas líneas de
flujo, que indican el orden en que los pasos deben ser
ejecutados.
20. Representación de algoritmos
20
Diagrama N-S (Nassi-Schneiderman). Denominados
así por sus inventores, o también N-S, o de Chapin, son
una herramienta que favorece la programación
estructurada y reúne características gráficas propias de
diagramas de flujo y lingüísticas propias de los
seudocódigos.
Constan de una serie de cajas contiguas que se leerán
siempre de arriba-abajo y se documentarán de la
forma adecuada.
21. Representación de algoritmos
21
Seudocódigo. Es un lenguaje de especificación de algoritmos
que utiliza palabras reservadas y exige la sangría en el
margen izquierdo, de algunas líneas.
En nuestros seudocódigos usaremos determinadas palabras en
español como palabras reservadas.
Se concibió para superar las dos principales desventajas del
diagrama de flujo: lento de crear y difícil de modificar sin un
nuevo redibujo.
Es una herramienta muy buena para el seguimiento de la
lógica del algoritmo y para transformar con facilidad los
algoritmos a programas escritos en un lenguaje de
programación específico.
23. Diagrama de Flujo
23
Es la representación gráfica de unos procedimientos y
de la secuencia u orden en que deben ejecutarse, en
resumen la representación gráfica de la solución de un
problema o de un procedimiento.
Diagrama de detalle. Son las órdenes en secuencia que
se deben dar a la máquina para la resolución del
problema.
Los principales símbolos son: inicio y fin del
algoritmo, proceso, entrada/salida, decisión y
comentario.
24. Diagrama de Flujo
24
Proceso (Cualquier tipo de operación definida que pueda
originar cambio de valor, formato o posición de la
información almacenada en memoria: operaciones
aritméticas, de transferencia de datos, etc.).
Terminal (Representa generalmente el comienzo, “inicio”
y el final “fin” de un programa).
Entrada / Salida (Cualquier tipo de operación de
introducción de datos en la memoria desde los periféricos
“entrada”, o registro de la información procesada en un
periférico “salida”).
25. Diagrama de Flujo
25
Decisión (Indica operaciones lógicas o de comparación
entre datos -normalmente dos- y en función del resultado de
la misma determina cuál de los distintos caminos
alternativos del programa seguir; normalmente tiene dos
salidas -respuestas Si o No-)
Línea conectora (Sirve de unión entre dos símbolos)
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)
Indicador de dirección o línea de flujo (indica el sentido
de ejecución de las operaciones)
26. Diagrama de Flujo
26
Reglas para la construcción de diagramas de flujo:
La finalidad de un diagrama de flujo es describir de modo
gráfico la estructura lógica del programa y que
posteriormente permita una fácil codificación en un lenguaje
específico.
El proceso para la construcción de un diagrama de flujo no
supone un método rígido, sin embargo se pueden enunciar unas
reglas útiles de tipo general.
27. Diagrama de Flujo
27
La elaboración de un diagrama de flujo debe comenzar con un
diagrama de bloques que represente las relaciones
fundamentales y posteriormente ir descomponiéndolas en otras
más sencillas pero sin tratar que correspondan instrucción a
instrucción con el funcionamiento real del programa, ya que
serían excesivamente recargados y no serían útiles.
Todo diagrama debe tener un inicio y un fin, al objeto de que
pueda ser utilizado como sub-módulo de otro módulo de nivel
superior.
28. Diagrama de Flujo
28
Las líneas de conexión o de flujo deber ser siempre rectas y, si
es posible, que sean sólo verticales y horizontales (no
cruzarse ni inclinadas); para conseguir lo anterior se debe
recurrir a conectores numerados convenientemente y sólo en
los casos estrictamente necesarios.
Las líneas que enlazan los símbolos entre sí deben estar todas
conectadas. Cada línea o flecha debe estar en un bloque, en un
símbolo de decisión, terminar en Fin o unirse a otra flecha.
Se deben dibujar todos los símbolos de modo que se pueda
seguir el proceso visualmente de arriba a abajo y de
izquierda a derecha.
29. Diagrama de Flujo
29
Evitar la utilización de terminología específica de un
lenguaje de programación, sobre todo en las expresiones
donde se tiene tendencia natural a ello.
Se debe dejar un bloque o dos de proceso libres al
comienzo del diagrama para variables, acumuladores,
inicializaciones, etc.
Indicar con comentarios al margen, las variables utilizadas
y su descripción, procurando no abusar de su uso.
Diferenciar las variables propias del proceso de las
seudovariables o variables ficticias (contadores,
conmutadores, etc.).
30. Diagrama de Flujo
30
En las operaciones lógicas recurrir preferentemente a la
lógica positiva que a la negativa (es siempre más claro Si
A=B que Si no es A<>B).
Realizar un gráfico claro y equilibrado, procurando que el
flujo central del diagrama sea la parte central de la hoja de
papel.
A cada bloque o símbolo se accede por arribar y/o por la
izquierda y se sale por abajo y/o por la derecha.
31. Diagrama de Flujo
LTI
31
Realizar todos los comentarios marginales al diagrama para
que este sea comprensible no sólo por la persona que lo ha
elaborado, sino también por cualquier persona ajena al mismo
y sobre todo al paso del tiempo, cuando se necesite una
actualización o modificación.
Siempre que sea posible, es conveniente que el diagrama no
sobrepase una página; si no es posible, numeras las hojas y
usar conectores de páginas que indiquen la dirección correcta
del flujo (de donde viene y a donde va).
Cada una de las estructuras tiene una sola flecha de entrada y
cada una de ellas es legible de arriba hacia abajo.
Irma Rebeca Andalón García Fundamentos de Programación
33. Diagrama de Flujo
33
Problema. Diseñar un algoritmo que lea cuatro variables
enteras y calcule e imprima su producto y su suma.
• Análisis del problema:
Datos de Entrada: iNum1, iNum2, iNum3, iNum4
Datos de Salida: iProd, iSum