Principios Fundamentales para el Proceso de la toma de decisiones
Tema 1.2.2.- Diagramas de Flujo
1. ALGORÍTMICA Y
PROGRAMACIÓN
Unidad 1: Algoritmos y Programas
1.2.- Algoritmos
1.2.2.- Diagramas de Flujo
Identificar y utilizar técnicas para la
resolución de problemas a través de la
formulación algoritmos empleando
diagramas de flujo
Profa. Yenny Salazar
2. Contenido
• Definición
• Características
• Simbología
• Tipos
–Vertical
–Horizontal
–Panorámico
• Estructuras
–Secuencial
–Condicional (o Selectiva)
• Simple
• Múltiple
–Repetitiva
• Mientras
• Hacer-Mientras
• Desde (o Para)
• Actividades
• Ejercicios propuestos
3. Los Diagramas de Flujo
• Son la representación gráfica de un algoritmo, mostrando
esquemáticamente los procesos a seguir para alcanzar la solución
de un problema. Dicho esquema se basa en la utilización de
diversos símbolos relacionados entre sí (que indican diferentes
procesos) para representar operaciones específicas; estos se
conectan por medio de flechas para indicar el orden en que se
deben ejecutar las instrucciones para obtener los resultados
deseados.
• Si están completo y construido correctamente, su traducción a un
Lenguaje de Programación es relativamente simple y directa. Pues
estos facilitan la manera de representar visualmente el flujo de
datos por medio de un sistema de tratamiento de información,
realizando un análisis de los procesos requeridos para realizar un
programa.
• Usan símbolos casi universales, para poder ser comprensibles;
los cuales han sido reglamentados por el Instituto Nacional de
Normalización Estadounidense (ANSI, American National
Standards Institute)
4. Características de los diagramas de flujo
• Todo diagrama debe tener un inicio y un fin.
• No se especifica la declaración de variables.
• Se deben usar solamente líneas de flujo horizontales y/o
verticales.
• 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.
• Se debe evitar la terminología de un lenguaje de
programación o máquina.
• Los comentarios se deben utilizar ya sea al margen o
mediante el símbolo gráfico comentarios para que éstos sean
entendibles por cualquier persona que lo consulte.
• Si el diagrama abarca más de una hoja es conveniente
enumerarlo e identificar de dónde viene y a dónde se
dirige.
• Sólo los símbolos de decisión pueden y deben tener
más de una línea de flujo de salida.
5. Símbolos más Utilizados
SÍMBOLO DESCRIPCIÓN
Inicio y final del diagrama de flujo. Puede representar
también una parada o interrupción programada.
Entrada (leer) y salida de datos (imprimir).
Proceso. Indica asignación de un valor en memoria, la
ejecución de una operación aritmética y/o cualquier tipo
de operación que pueda originar cambió de valor.
Símbolo de decisión simple. Indica la realización de una
comparación de 2 valores. En función del resultado se
determina cuál de las 2 alternativas seguir.
Símbolo de decisión múltiple. Indica la realización de una
comparación de varios valores. En función del resultado se
determina cuál de las n alternativas seguir.
Documento Impreso. Un documento o informe
impreso.
6. Símbolos más Utilizados
SÍMBOLO DESCRIPCIÓN
Conector. Sirve para enlazar cualquier parte del diagrama,
a través de un conector de salida y un conector de entrada.
Conector fuera de página. Sirve para enlazar un diagrama
de una página a otra.
Líneas de flujo o dirección. Indican la secuencia en que se
realizan las operaciones.
Anotación. Agrega información adicional sobre un proceso
o sub-proceso
Entrada Manual. Representa un paso en el que se pide al
usuario que introduzca la información manualmente.
Base de Datos. Indica una lista de información con
una estructura estándar que permite buscar y
ordenar.
7. Tipos de Diagramas de Flujo
• Formato vertical:
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.
INICIO
FIN
URL
Leer artículo
¿Es la
información
buscada?
Analizar la
información
Redactar las
conclusiones
Trabajo
Entregar el
trabajo
si
no
8. Tipos de Diagramas de Flujo
• Formato horizontal:
El flujo o la secuencia de las operaciones, va de izquierda
a derecha.
INICIO
FIN
Encender el
reproductor
Seleccionar la
carpeta deseada
Seleccionar
música
deseada
Presionar Play
¿Cambiar
música?
Seguir
escuchado
¿Terminar?
Apagar el
reproductor
si
no
si
no
9. Tipos de Diagramas de Flujo
• Formato panorámico:
El proceso entero está
representado en un solo
diagrama, tanto en sentido
vertical como horizontal,
permitiendo distintas acciones
simultáneas.
INICIO
FIN
Entrar en la
zapatería
¿Hay de
tú talla?
Comprar los
zapatos
Escoger un
modelo
Salir de la
zapatería
si
no
10. Estructuras Algorítmicas
• Estructura Secuencial:
Es aquélla en la que una acción
(instrucción) sigue a otra en
secuencia. Las tareas se suceden
de tal modo que la salida de una
es la entrada de la siguiente y así
sucesivamente hasta el fin del
proceso.
La estructura secuencial tiene
una entrada y una salida.
Su representación gráfica es la
siguiente:
INICIO
FIN
Instrucción 1
…
Instrucción 2
Instrucción n
11. Estructuras Algorítmicas
• Estructura Secuencial
Ejemplo #1
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%).
INICIO
FIN
Leer nombre, horas,
valor
impuesto0.2*salario_bruto
salario_brutohoras*valor
salario_netosalario_bruto-impuesto
Escribir nombre,
salario_bruto,
Salario_neto
Nota A:
Leer, Escribir: funciones de E/S.
nombre, horas, valor, salario_bruto,
impuesto y salario_neto: son variables.
: es el operador de asignación.
* y – : son operadores aritméticos:
multiplicación y resta, respectivamente.
12. Nota A
• Funciones de Entrada/Salida (E/S): palabras que se
reservan para indicar la entrada/salida estándar del sistema,
generalmente: leer (del teclado-entrada) y escribir (por
pantalla-salida).
• Variable: es un espacio de la memoria del computador que
permite almacenar información de un determinado tipo de
dato. Tiene la capacidad de cambiar su valor mientras se
desarrolla la ejecución del algoritmo.
• Operación de Asignación (): se encargan de asignarle a la
variable (que se encuentra al lado izquierdo del ) el valor
(dato) que resulta de una expresión (operación) matemática o
el valor de otra variable (que se encuentre del lado derecho
del ).
• Operadores aritméticos: toman los valores numéricos
(literales o variables) como sus operando y devuelve un solo
valor numérico. Los operadores aritméticos más usados
son: + suma, - resta, * multiplicación, / división, mod
modulo, ++ incremento, -- decremento.
13. Estructuras Algorítmicas
• Estructura Condicional (o Selectiva):
La especificación formal de algoritmos tiene realmente utilidad
cuando el algoritmo requiere una descripción más complicada
que una lista sencilla de instrucciones. Este es el caso cuando
existen un número de posibles alternativas resultantes de la
evaluación de una determinada condición.
Las estructuras selectivas se utilizan para tomar decisiones
lógicas; de ahí que se suelan denominar también estructuras
de decisión o alternativas.
En las estructuras selectivas se evalúa una condición y en
función del resultado la misma, se realiza una opción u otra.
Las condiciones se especifican usando expresiones lógicas.
Las estructuras selectivas o alternativas pueden ser simples o
múltiples y se representan con los siguientes símbolos:
Simples
Múltiples
si
no
14. Estructuras Algorítmicas
• Estructura Condicional Simple:
La estructura alternativa simple
ejecuta una acción o bloque de
acciones, cuando se cumple una
determinada condición lógica. La
selección (si-no) evalúa la
condición, si la condición es
verdadera (si) entonces ejecuta la
acción (o bloque de acciones). Si la
condición es falsa (no), salta la
acción y continua con la siguiente
estructura.
Condición
Acción o
bloque de acciones
si
no
15. Estructuras Algorítmicas
• Estructura Condicional Simple:
Ejemplo #2
Realizar un diagrama de flujo que
permita mostrar en pantalla un
mensaje de mayoría o minoría de
edad según sea el caso para un
nombre específico.
Nota B:
nombre, edad: son variables.
: condicional.
: operador relacional.
“ ” : cadena de caracteres.
edad18
si
no
INICIO
FIN
Leer nombre,
edad
Escribir nombre “es
menor de edad”
Escribir nombre “es
mayor de edad”
16. Nota B
• Condicional: si la condición edad18, es verdadera
sigue la dirección del si, pero sino (si es falsa) se sigue la
secuencia del no.
• Operadores relacionales: Describen una relación entre
dos valores (los compara); se usan para expresar
condiciones. El resultado de una expresión relacional es
un valor tipo lógico o booleano (lo que se conoce como
un valor de verdad), que puede ser verdadero o falso. Los
operadores relacionales son: Menor que, Mayor que,
Igual que, Menor o igual que, Mayor o igual que,
Distinto a
• Cadena de caracteres: es una secuencia de caracteres
(palabra o frase, compuesta por varios caracteres
alfanuméricos), para indicar qué algún valor es una
cadena, el valor se escribe entre comillas dobles (“”).
17. Estructuras Algorítmicas
• Estructura Condicional Múltiple:
Se presenta cuando existen más de dos elecciones
(alternativas) posibles. Si el número de alternativas es
grande puede plantear serios problemas de escritura del
algoritmo y naturalmente de legibilidad.
La estructura de decisión múltiple evaluará una
expresión que podrá tomar n valores distintos 1,2,3...n.
Según se elija uno de estos valores en la condición, se
realizará una de las n acciones, o lo que es igual, el flujo
del algoritmo seguirá un determinado camino entre
los n posibles.
Condición
Acción 3
Acción 1 Acción 2 Acción … Acción n
1 2 3 … n
18. Estructuras Algorítmicas
• Estructura Condicional Múltiple:
Ejemplo #3
Se desea diseñar un algoritmo que escriba los nombres de los días
de la semana en función del valor de una variable dia introducida
por teclado. Los días de la semana son 7; por consiguiente, el rango
de valores de dia será 1..7, y caso de que dia tome un valor fuera de
este rango se deberá producir un mensaje de error advirtiendo la
situación anómala.
Nota C:
: condicional múltiple.
o : operador lógico, si una de
las condiciones es verdadera
se escribe Error.
según
sea dia
dia1 o dia7
1
INICIO
Leer dia
Escribir “Lunes” Escribir “Martes” … Escribir “Domingo” Escribir “Error”
2 7
…
FIN
19. Nota C
• Condicional múltiple: la dirección del algoritmo, del
ejemplo #3, lo define el valor que se le asigne a la
variable dia, si el valor de entrada, es 2, el algoritmo
escribirá (salida): Martes.
• Operadores lógicos: Describen una relación entre dos
expresiones; sin embargo, se usan para formar
combinaciones de expresiones lógicas más complejas.
Para evaluar estas expresiones es importante conocer la
tabla de verdad. Los operadores lógicos son: o (OR)
indica que solo una de las dos condiciones debe ser
verdadera para que la respuesta sea verdadera, y (AND)
indica que las dos condiciones deben ser verdaderas
para que el resultado sea verdadero, no (NOT) indica que
la condición debe ser falsa para que la respuesta sea
verdadera. En el ejemplo #3, si la variable dia asume
el valor 9, el algoritmo escribirá (salida): Error
20. Estructuras Algorítmicas
• Estructuras Repetitivas:
La repetición de una acción (una o varias instrucciones) se
lleva a cabo mientras se cumpla cierta condición; para que la
acción termine, la acción misma debe modificar la(s)
variable(s) de control que interviene(n) en la condición.
Las estructuras que repiten una secuencia de instrucciones
un número determinado de veces se denominan bucles, y se
denomina iteración al hecho de repetir la ejecución de una
secuencia de acciones. Las cuales se repite una cantidad
definida o indefinida (pero finita) de veces, mientras que la
condición que se evalúe sea verdadera.
Dicha condición puede no estar predeterminada como
en los bucles Mientras y Hacer-Mientras; o predefinida
como en el ciclo Desde (o Para);
21. Estructuras Algorítmicas
• Estructura Repetitiva
Mientras:
Es aquélla en que el cuerpo
del bucle se repite mientras
se cumple una
determinada condición.
Su representación gráfica
es:
Condición
Acción o
bloque de acciones
si
no
22. Estructuras Algorítmicas
• Estructura Repetitiva Mientras:
Ejemplo #4
Contar los números enteros
positivos introducidos por teclado.
Se consideran dos variables
enteras num y cont (contará el
número de enteros positivos).
Se supone que se leen números
positivos y se detiene el bucle
cuando se lee un número negativo
o cero.
num0
INICIO
cont0
Leer num
cont
Leer num
si
no
Escribir cont
FIN
Nota D:
: incremento.
cont : es un contador.
23. Nota D
• Operadores de incremento y decremento: son
operadores unarios que agregan o sustraen uno de sus
operandos, respectivamente. El operador de incremento
() aumenta el valor de su operando en 1, mientras que
el de decremento (--) disminuye el valor de su operando
en 1. Tanto como -- pueden aplicarse a variables,
pero no a constantes o a expresiones.
El incremento de un contador también se puede hacer
mediante la operación contcont1
El decremento de un contador también se puede hacer
mediante la operación contcont1
• Contador: es una variable cuyo valor se incrementa o
decrementa en una cantidad constante cada vez que se
produce un determinado suceso o acción. Los
contadores se utilizan con la finalidad de contar
sucesos o acciones internas de un bucle.
24. Estructuras Algorítmicas
• Estructura Repetitiva
Hacer-Mientras:
Esta estructura permite
especificar que se repita una
acción en tanto cierta
condición sea verdadera;
cuando ésta es falsa se sale
del ciclo. La condición la
revisa después de la acción o
bloque de acciones. Esto
asegura que se ejecute el
bucle al menos una vez.
Su representación gráfica es:
Condición
Acción o
bloque de acciones
si
no
25. Estructuras Algorítmicas
• Estructura Repetitiva
Hacer-Mientras:
Ejemplo #5
Calcular la tabla de
multiplicar de un número
cualquiera. Imprimir el solo
el producto.
Nota D:
producto : variable que guarda en cada
iteración el valor de la multiplicación del
numero introducido por el valor que asuma
el contador.
cont10
INICIO
cont0
Leer num
si
no
FIN
cont
productonum*cont
Escribir producto
26. Estructuras Algorítmicas
• Estructura Repetitiva Desde (o
Para):
En muchas ocasiones se conoce de
antemano el número de veces que se
desean ejecutar las acciones de un
bucle.
En estos casos en el que el número
de iteraciones es fija, se debe usar la
estructura Desde o Para.
La estructura Desde ejecuta las
acciones del cuerpo del bucle un
número específico de veces y de
modo automático controla el número
de iteraciones o pasos a través del
cuerpo del bucle.
Su representación gráfica es:
Variable índice
Valor final
Acción o
bloque de acciones
si
no
Calcular valor
inicial y valor final
Fijar la variable
índice al valor
inicial
Incrementar el valor
de la variable índice
27. Estructuras Algorítmicas
• Estructura Repetitiva Desde (o
Para):
Ejemplo #6
Escribir los números del 1 al 100
de forma ascendente.
cont100
Escribir cont
si
no
INICIO
cont1
cont
FIN
Nota E:
cont : variable índice,
1 : valor inicial y
100 : valor final.
28. Ejercicios Resueltos
1)Calcular el promedio de notas de un estudiante, la lectura de
notas se detendrá cuando el valor sea -1.
notacent
INICIO
Leer nota
sumasumanota
si
no
Escribir promedio
FIN
suma0,
cont0,
cent -1
promediosuma/cont
cont
Traza:
suma cont cent nota promedio
0 0 - 1 6
6 1 8
14 2 7
21 3 -1 7
Observación:
cent : se usa como un centinela y
suma : se usa como un acumulador.
29. Ejercicios Resueltos
2)Escribir el mayor valor de un conjunto de n números dados.
Traza:
mayor cont n_num valor
0 1 3 6
6 2 5
3 7
7 4
Observación:
Bucle anidado: estructura
condicional simple dentro
de una estructura repetitiva
mientras
contn_num
INICIO
Leer n_num
Leer valor
si
no
Escribir mayor
FIN
mayor0
cont1
mayorvalor
valormayor
si
no
cont
30. Ejercicios Resueltos
3)Leer 8 números y escribir cuántos son positivos, cuántos
negativos y cuántos con cero. Traza:
i pos neg cer num
1 0 0 0 3
2 1 0
3 1 8
4 2 5
5 3 -4
6 1 0
7 2 1
8 4 0
9 3
Observación:
Bucle anidado: estructura
condicional simple dentro de
otra estructura condicional
simple y esta dentro de una
estructura repetitiva desde
INICIO
neg
Leer num
i8
si
no
Escribir
pos “son positivos”
neg “son negativos”
cer “son ceros”
FIN
i1, pos0,
neg0, cer0
cer
num0
no
no
i
num0
si
pos
si
31. Actividades
• Investigar y realizar un cuadro descriptivo con los
demás símbolos empleados para el diseño de los
diagramas de flujos.
• Investigar y dar ejemplos de otros tipos de diagramas de
flujos.
• Investigar y estudiar el significado de los términos:
expresiones lógicas o booleanas, bloque de acciones,
cuerpo del bucle, iteración, tabla de verdad (and, or y
not).
• Realizar las trazas de los ejemplos del #1 al #6.
• Investigar la funcionabilidad de un centinela y un
acumulador.
• Investigar que es un ciclo o bucle anidado.
• Resolver los ejercicios propuestos.
32. Ejercicios Propuestos
• Resolver los siguientes enunciados a través de diagramas
de flujos y realizar la traza de cada algoritmo:
1.Escribir los números pares entre 1 y 10.
2.Escribir el menor valor de un conjunto de n números dados.
3.Escribir la suma de los números impares desde 1 hasta un
número n dado.
4.Escribir los números del 1 al 10 en formato descendente
5.Escribir el promedio de notas un alumno que tiene 7 evaluaciones.
6.Una persona desea invertir su dinero en un banco, el cual le
otorga un 2% de interés mensual. Escribir la cantidad de dinero
que tendrá al cabo de un año si la ganancia de cada mes es
reinvertida.
33. Referencias
Corona, M. y Ancona M. 2011. Diseño de algoritmos y su
codificación en lenguaje C. McGraw-Hill. México.
Joyanes, L. y Zahonero, I. 2002. Programación en C.
Metodología, algoritmos y estructura de datos.
McGraw-Hill.
Joyanes, L. 2008. Fundamentos de Programación,
Algoritmos, Estructura de Datos y Objetos. Cuarta
edición. McGraw-Hill.
López, J. Algoritmos y Programación. 2009. Segunda
Edición. Eduteka.