Documentos de Académico
Documentos de Profesional
Documentos de Cultura
SEPARATA DE AED I (Capitulo 2)
SEPARATA DE AED I (Capitulo 2)
CAPITULO 2:
DIAGRAMAS DE FLUJO
SEMANA 03
Docente: Ing. Christian Alfredo Arevalo Jesus
1. DIAGRAMAS DE FLUJO
1.1. Introducción
1.2. Conceptos
1.3. Simbología
1.4. Reglas básicas para la construcción de Diagramas de Flujo:
1.5. Esquema General
1.6. Características que debe cumplir un Diagrama de Flujo
1.7. Recomendaciones
1.8. Ventajas de los Diagramas de Flujo
1.9. Tipos de Diagramas de Flujos
1. DIAGRAMAS DE FLUJO
1.1. Introducción
Los diagramas de flujo son una manera de representar visualmente el flujo de
datos a través de sistemas de tratamiento de información. Los diagramas de
flujo describen que operaciones y en que secuencia se requieren para
solucionar un problema dado.
Un diagrama de flujo u organigrama es una representación diagramática que
ilustra la secuencia de las operaciones que se realizarán para conseguir la
solución de un problema. Los diagramas de flujo se dibujan generalmente
antes de comenzar a programar el código frente a la computadora. Los
diagramas de flujo facilitan la comunicación entre los programadores y la
gente del negocio. Estos diagramas de flujo desempeñan un papel vital en la
programación de un problema y facilitan la comprensión de problemas
complicados y sobre todo muy largos. Una vez que se dibuja el diagrama
de flujo, llega a ser fácil escribir el programa en cualquier idioma de alto nivel.
Vemos a menudo cómo los diagramas de flujo nos dan ventaja al momento
de explicar el programa a otros. Por lo tanto, está correcto decir que un
diagrama de flujo es una necesidad para la documentación mejor de un
programa complejo.
1.2. Conceptos
Es la representación gráfica de los pasos que deben seguirse para resolver
un problema.
El traducir una descripción narrada a diagrama de flujo agrega claridad y
precisión a la descripción de una tarea.
Además, al elaborar el diagrama de flujo, se descubren situaciones que no
habían sido consideradas.
En la elaboración de éstos, la simbología juega un papel muy importante, ya
que debe estar adecuada a ciertos estándares, con el fin de que sea
entendida por cualquier persona dedicada al campo de computación.
Cada una de las figuras representa una etapa en la solución del problema;
dentro de ellas se anotan indicaciones. Las líneas señalan el flujo de la
información.
En la actualidad se emplean poco, pero resultan muy útiles cuando se
comienza en el estudio de la programación.
El problema con los diagramas de flujo es que a medida que crece la
complejidad de las proposiciones, también crece el detalle con el que hay
que dibujarlas.
Esto llegaba a convertirlos en figuras fraccionadas (pues de otro modo no
cabrían en la hoja), y difíciles de seguir y entender.
El equivalente simbólico de la flecha se llama goto (ir a) y está, en términos
generales, excluido de la programación moderna debido a su poder
“desestructurante” y caótico sobre los programas (aunque si se usa con
cuidado puede llegar a ser de alguna utilidad).
En Resumen un Diagrama de Flujo:
Es la representación gráfica de flujo de un algoritmo o de secuencias
rutinarias. Se basan en la utilización de diversos símbolos para representar
operaciones específicas. Se les llama diagramas de flujo porque los símbolos
utilizados se conectan por medio de flechas para indicar la secuencia de la
operación.
1.3. Simbología
Los Diagramas de flujo se dibujan generalmente usando algunos símbolos
estándares; sin embargo, algunos símbolos especiales pueden también ser
desarrollados cuando sean requeridos. Algunos símbolos estándares, que se
requieren con frecuencia para diagramar programas de computadora se
muestran a continuación:
Cinta magnética
Disco magnético
Líneas de flujo
Anotación
Los símbolos se unen con líneas, las cuales tienen en la punta una flecha
que indica la dirección que fluye la información procesos, se deben de utilizar
solamente líneas de flujo horizontal o verticales (nunca diagonales).
Se debe evitar el cruce de líneas, para lo cual se quisiera separar el flujo del
diagrama a un sitio distinto, se pudiera realizar utilizando los conectores. Se
debe tener en cuenta que solo se vana utilizar conectores cuando sea
estrictamente necesario.
No deben quedar líneas de flujo sin conectar.
Todo texto escrito dentro de un símbolo debe ser legible, preciso, evitando
el uso de muchas palabras.
Todos los símbolos pueden tener más de una línea de entrada, a excepción
del símbolo final.
Solo los símbolos de decisión pueden y deben tener más de una línea de
flujo de salida.
Realizar un gráfico claro y equilibrado.
Evitar la terminología de un lenguaje de programación o máquina.
Utilizar comentarios al margen (si es necesario) para que éste sea
entendible por cualquier persona que lo consulte.
A cada bloque o símbolo se accede por arriba y/o por la izquierda y se sale
por abajo y/o por la derecha.
Si el diagrama abarca más de una hoja es conveniente enumerarlo e
identificar de donde viene y a donde se dirige.
1.7. 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.
Tener cuidado con los flujos y procesos no etiquetados. Esto suele ser
un indicio de falta de esmero, pero puede esconder un error aún más
sumarización, etc. Este tipo de estructura se basa en las 5 fases de que consta
todo algoritmo o programa:
Solución:
El objetivo del ejercicio es encontrar la longitud y el área de un círculo con un
radio conocido y de valor 5. Las salidas serán entonces la longitud y el área.
(Fase 5 del algoritmo) Sabemos que la longitud de un círculo viene dada por
la fórmula 2 * pi * radio y que el área viene dada por pi * radio al cuadrado.
(Fase 4 del algoritmo) Si definimos las variables como: (fase 1 del algoritmo)
L = Longitud A = área R = radio pi = 3.1416 hagamos el algoritmo:
Inicio
Pi 3.1416 (definición de un valor constante)
R 5 (radio constante ya que es conocido su valor)
A pi * R ^ ² (asignación del valor del área)
L 2 * pi * R (asignación del valor de la longitud)
Escribir (A, L) (salida del algoritmo)
Fin
Solución:
El problema es el mismo con la variante de que ahora ya existe un dato de
entrada, puesto que el radio puede ser cualquiera y será necesario que el
usuario sea quien lo introduzca de teclado. Usando las misma definición de
variables tenemos:
Algoritmo:
Inicio
Pi 3.1416 (fase de inicialización)
Leer (R) (fase de lectura)
Area pi * R ^ ² (fase de cálculos)
L 2 * pi * R
Escribir (A, L) (fase de salida)
Fin
Ejemplo 3:
Leer el sueldo de tres empleados y aplicarles un aumento del 10, 12 y 15
respectivamente. Desplegar el resultado.
Algoritmo:
Leer (S1, S2, S3)
Aum1 S1 * 0.10
Aum2 S2 * 0.12
Aum3 S3 * 0.15
Sf1 S1 + Aum1
Sf2 S2 + Aum2
Sf3 S3 + Aum3
Escribir (SF1, SF2, SF3)
Fin
Español Inglés
Si <condición> If <condición>
Entonces then
<acción Si> <acción Si>
fin_si endif
Ejemplo 1:
Construir un algoritmo tal, que dado como dato la calificación de un
alumno en un examen, escriba "Aprobado" en caso que esa calificación
fuese mayor que 8.
Salidas: mensaje de aprobado si se cumple la condición.
Entradas: calificación
Datos adicionales: un alumno aprueba si la calificación es mayor que 8
Variables:
Cal = calificación
Algoritmo:
Inicio
Leer (cal)
Si cal > 8 entonces
Escribir ("aprobado")
Fin_si
Fin
Español Inglés
Si <condición> entonces If <condición> then
<acción S1> <acción S1>
sino else
<acción S2> <acción S2>
Fin_Si End_if
Ejemplo 1:
Dado como dato la calificación de un alumno en un examen, escriba
"aprobado" si su calificación es mayor que 8 y "Reprobado" en caso
contrario.
Algoritmo:
Inicio
Leer (cal)
Si cal > 8 entonces
Escribir ("aprobado")
Sino
Escribir ("reprobado")
Fin_si
Fin
Ejemplo 2:
Dado como dato el sueldo de un trabajador, aplicar un aumento del
15% si su sueldo es inferior a $1000 y 12% en caso contrario, luego
imprimir el nuevo sueldo del trabajador.
Algoritmo:
Ejemplo 1:
Determinar la cantidad de dinero que recibirá un trabajador por
concepto de las horas extras trabajadas en una empresa, sabiendo que
cuando las horas de trabajo exceden de 40, el resto se consideran
horas extras y que éstas se pagan al doble de una hora normal cuando
no exceden de 8; si las horas extras exceden de 8 se pagan las
primeras 8 al doble de lo que se paga por una hora normal y el resto al
triple.
Solución:
Lo primero que hay que determinar es si el trabajador trabajó horas
extras o no. Encontrar las horas extras de la siguiente forma:
Horas extras = horas trabajadas – 40
En caso que sí trabajó horas extras:
Si horas extras > 8 entonces a horas extras excedentes de 8 = horas
extras -8 y pago por horas extras = pago por hora normal * 2 * 8 + pago
por hora normal * 3 * horas extras excedentes de 8
De otra forma (solo horas al doble) pago por horas extras = pago por
hora normal * 2 * horas extras.
Finalmente, pago total que recibirá el trabajador será:
Pago = pago * hora normal * 40 + pago por horas extras.
Si no trabajó horas extras tendremos:
Pago = pago por hora normal * horas trabajadas.
Datos de salida: Pago.
Datos de entrada: número de horas trabajadas y pago por hora normal.
Definición de variables:
ht = horas trabajadas het = horas extras que exceden de 8
ph = pago por hora normal phe = pago por horas extras
he = horas extras pt = pago que recibe el trabajador
Algoritmo:
Inicio
Leer (ht, ph)
Si ht >40 entonces
He ht – 40
Si he > 8 entonces
Het he – 8
Phe ph * 2 * 8 + ph * 3 * het
Sino
Phe ph * 2 * he
Fin_si
Ptph * 40 + phe
Sino
Pt ph * ht
Fin_si
Escribir (pt)
Fin
Ejemplo 2:
Dados los datos A, B y C que representan números enteros diferentes,
construir un algoritmo para escribir estos números en forma
descendente. Este es un ejemplo de los algoritmos conocidos como de
Lógica Pura, ya que poseen muchas decisiones y muchas
bifurcaciones.
Salida: A, B y C ordenados descendentemente.
Entradas: A, B y C.
La dinámica del problema es comparar dos números a la vez para
conocer cuál es el mayor.
Ejemplo 1:
Diseñar un algoritmo tal que dados como datos dos variables de tipo entero, obtenga
el resultado de la siguiente función:
Algoritmo:
Diagrama de Flujo:
Ejemplo 2.
Dados como datos la categoría y el sueldo de un trabajador, calcule el aumento
correspondiente teniendo en cuenta la siguiente tabla. Imprimir la categoría del trabajador y
el nuevo sueldo.
Definición de variables:
Cate = categoría
Sue = sueldo
Nsue = nuevo sueldo
Algoritmo:
Inicio
Leer (cate, sue)
En caso que cate sea
1: hacer nsue <-- sue * 1.15
2: hacer nsue <-- sue * 1.10
3: hacer nsue <-- sue * 1.08
4: hacer nsue <-- sue * 1.07
Fin_caso_que
Escribir (cate, nsue)
Fin
Bucles Repetitivos:
regresa al Tercer bloque y vuelve hacer lo mismo. Y así hasta llegar a 50,
obteniendo así la suma de los primeros 50 primeros números naturales.
Por último indicamos que el resultado será mostrado en la impresora (Este
se puede cambiar por el display para mostrar datos).
MÁS EJEMPLOS:
Algoritmo:
Inicio
Pi <- 3.1416 (definición de un valor constante)
R <- 5 (radio constante ya que es conocido su valor)
A <- pi * R ^ ² (asignación del valor del área)
L <- 2 * pi * R (asignación del valor de la longitud)
Escribir (A, L) (salida del algoritmo)
Fin
Diagrama de Flujo:
Solución:
El problema es el mismo con la variante de que ahora ya existe un dato de
entrada, puesto que el radio puede ser cualquiera y será necesario que el
usuario sea quien lo introduzca de teclado. Usando la misma definición de
variables tenemos:
Algoritmo:
Inicio
pi <- 3.1416 (fase de inicialización)
Leer (R) (fase de lectura)
A <- pi * R ^ ² (fase de cálculos)
L <- 2 * pi * R
Escribir ( A, L ) (fase de salida)
Fin
Algoritmo:
Inicio
Leer (S1,S2, S3)
Aum1 <- S1 * 0.10
Aum2 <- S2 * 0.12
Aum3 <- S3 * 0.15
Sf1 <- S1 + Aum1
Sf2 <- S2 + Aum2
Sf3 <- S3 + Aum3
Escribir (SF1, SF2, SF3)
Fin
Diagrama de Flujo:
e. Deducciones:
i. 2% Seguro Colectivo
ii. 1% Paro Forzoso
iii. 2% Seguro Social
iv. 2% Caja de Ahorro
11. Calcular los números primos en un rango dado
12. Calcular la suma de todos los números enteros impares, en un rango
dado.
13. Calcular la factorial de un número.
14. Calcular el salario neto de un trabajador en función del número de
horas trabajadas, precio de la hora de trabajo y considerando unos
descuentos fijos al salario bruto en concepto de impuestos (20 por
100).