SEMANA 02DIAGRAMAS DE FLUJO
1
Algoritmos y diagramas de flujo
“ Formalmente definimos un algoritmo como un conjunto de pasos, procedimientos o acciones que nos permiten alcanzar un resultado o resolver un problema”
Diagramas de flujo• Un diagrama de flujo representa la esquematización gráfica de
un algoritmo.
• En realidad muestra gráficamente los pasos o procesos a seguir para alcanzar la solución de un problema.
• Su correcta construcción es sumamente importante porque, a partir del mismo se escribe un programa en algún lenguaje de programación.
• Si el diagrama de flujo está completo y correcto, el paso del mismo a un lenguaje de programación es relativamente simple y directo.
• A continuación, presentamos los símbolos que utilizaremos y una explicación de los mismos. Estos satisfacen las recomendaciones de la ISO y la ANSI.
Algoritmos y diagramas de flujo
Símbolo utilizado para marcar el inicio y el fin del diagrama flujo.
Símbolo utilizado para introducir los datos de entrada/salida.
Símbolo utilizado para representar un proceso.
Símbolo utilizado para representar una decisión.
Símbolo utilizado para expresar conexión dentro de una misma página.
Símbolos utilizados para expresar la dirección del flujo del diagrama
Símbolo utilizado para expresar conexión entre páginas diferentes.
Algoritmos y diagramas de flujo
Símbolo utilizado para representar una decisión múltiple. En su interior se almacena un selector y dependiendo del valor de dicho selector se sigue por una de las ramas o caminos alternativos.
Programa de Aplicación
Programa que permite resolver la ecuación de primer grado
5
Programa que permite resolver la ecuación de primer grado
a x + b = 0
?a
bx = -b / a
Dim a,b,x as integer
MessageBox.Show(“Ingrese valores de EC”); a= Textbox1.Text b= Textbox2.Text if a = 0 Then MessageBox.Show (“error”) else x = - b / a MessageBox.Show(“La solución es : ”,x) End If MessageBox.Show(“Fin programa”);
Algoritmo EC 1er GradoVariables a,b,x de tipo enteroInicio Escribir(“Ingrese valores de EC”) Leer (a,b) Si a = 0 entonces escribir (“Error”) sino x=-b/a Escribir (“La solución es:”,x) Fin Escribir(“Fin programa”)
Fin
Diagrama de Flujo y Pseudo-Código
InicioInicio
Escribir“Mensaje 1”
Fin
Leervar1,x, y
a = 3 * x + yb = a / var1
Entero var1, x , yReal a, b
Si a > bVF
Inicio de Algoritmo
Definición de variables
Impresión de mensajes
Lectura de mensajes
Transformación de datosOperaciones sobre los datos
Bifurcación en la ejecución de instrucciones
Conector
Fin de algoritmo
DIAGRAMA DE FLUJO NOMENCLATURA PSEUDO-CÓDIGO
Inicio
Variables Entero var1, x, y Real a, b
Escribir (“Mensaje 1”)
Leer (var1, x, y)
a = 3 * x + yb = a / var1
Si a > b Entonces Instrucciones Sino InstruccionesFin si
Fin
Algoritmos y diagramas de flujo
Reglas
1. Todo diagrama de flujo debe tener un inicio y un fin.
2. Las líneas utilizadas para indicar la dirección del flujo del diagrama deben ser rectas verticales y horizontales.
3. Todas las líneas utilizadas para indicar la dirección del flujo del diagrama deben estar conectadas.
4. El diagrama de flujo debe ser construido de arriba hacia abajo (top-down) y de izquierda a derecha (right to left).
5. La notación utilizada en el diagrama de flujo debe ser independiente del lenguaje de programación.
6. Si el diagrama de flujo requiere más de una hoja para su construcción, debemos utilizar los conectores adecuados y enumerar las páginas convenientemente.
7. No puede llegar más de una línea a un símbolo.
Pseudocódigo
8
Es un lenguaje artificial e informal útil para el desarrollo de algoritmos. No es un lenguaje de programación verdadero y, por lo tanto, no puede ser compilado y ejecutado.
Pseudocodigo
• Ejemplo 1: Sumar dos números.• Desarrollo
InicioEscribir, “Ingrese los 2 números a sumar”Leer num1,num2resultado = num1 + num2Escribir, “La suma es:”, resultadoFin
9
• Ejemplo 2: Determinar el mayor de dos números.
• Desarrollo
InicioEscribir, “Ingrese los 2 números”Leer num1,num2Si (num1 > num2) entonces
Escribir,“El mayor es:”, num1
Si noEscribir,“El mayor es:”, num2
Fin
Pseudocodigo
10
• Ejemplo 3: Sumar del 1 al 1000.• Desarrollo
Iniciox = 1resultado = 0Mientras (x =< 1000) hacer
resultado = resultado + xx = x + 1
Fin MientrasEscribir, “La suma es:”, resultadoFin
Pseudocodigo
11
• Ejemplo 4: Determinar el mayor de TRES números.
InicioEscribir, “Ingrese los 3 números”Leer X1,X2,X3mayor = X1Si (mayor < X2) entonces
mayor = X2
Fin si
Si (mayor < X3) entoncesmayor = X3
Fin siEscribir, “El mayor es:” mayorFin
El valor de X1 se almacena en mayor
Pseudocodigo
12
• Son diagramas que modelan un algoritmo, se aprecia en ellos el flujo de los datos y las acciones que los procesan.
• Hay de 3 tipos:1.- Secuenciales
2.- Selectivos
3.- Repetitivos
Diagramas de Flujo
13
Diagramas de Flujo Secuenciales
Inicio
acción 1
acción 2
…
acción n
Fin
Diagrama de Flujo
acción 1
acción n
acción 2
Pseudo-Lenguaje
…
14
EJEMPLO 1.-Hallar el cuadrado de un número previamente leído
Pseudocódigo a: entero leer (a) a = a*a escribir (a)Fin
a = a*a
Escribir a
SOLUCION (a)
Solución ( b)
a, b: entero
leer (a)
B = a*a
escribir (b)
Memoria
XX
a b 1
2
3
Pantalla
100XX10100
Para resolver
Se requiere un programa que calcule la suma y el producto de dos números. Cuales de los siguientes segmentos producen el resultado correcto:
Para resolver
a,b,s,p: real I II IIIleer (a) leer(b) leer(b)leer (b) leer(a) p =a*bS =a+b p =a*b leer(a)P =a*b escribir(p)
escribir(p)escribir(s) s =a+b s =a+b escribir(p) escribir(s)
escribir(s)
Simples: Las estructuras condicionales simples se les conoce como “Tomas de decisión”.
Diagrama de flujo Selectivos
20
Diagrama de flujo de Selección - Simple
Diagrama de Flujo
Sentencia
Condiciónsí
no
En Visual Basic
Si <condición> entonces Sentenciafin_si
If (condición)Then Sentencia
End if
Pseudocodigo
21
Dobles: Las estructuras condicionales dobles permiten elegir entre dos opciones o alternativas posibles en función del cumplimiento o no de una determinada condición.
Diagramas de Flujo - Selectivo Doble
Diagramas de Flujo - Selectivo Doble
Diagrama de FlujoPseudocodigo
Si (condición) entonces acción 1
Si noacción 2
Fin siacción 2
condiciónnosi
acción 1
22
SELECCIÓN
SiNo
Tengo un buen trabajo ?????
24
EJEMPLO 1. Determinar el mayor de dos números
EJEMPLO 2
Dado un número previamente leído, si el numero es mayor que cero hallar
la suma , caso contrario hallar el producto
leer (a)si a >0 entonces b := a+a sino b := a*afin_siescribir (b)
Memoria
XXX
a b XXX
leer (a)si a >0 entonces b := a+a sino b := a*afin_siescribir (b)
40
leer (a)si a >0 entonces b := a+a sino b := a*afin_siescribir (b)
leer (a)si a >0 entonces b := a+a sino b := a*afin_siescribir (b)
80
leer (a)si a >0 entonces b := a+a sino b := a*afin_siescribir (b)
leer (a)si a >0 entonces b := a+a sino b := a*afin_siescribir (b)
80
a, b: entero
leer (a)si a >0 entonces b := a+a sino b := a*afin_siescribir (b)
Memoria
XXX
a b XXX
leer (a)si a >0 entonces b := a+a sino b := a*afin_siescribir (b)
-10
leer (a)si a >0 entonces b := a+a sino b := a*afin_siescribir (b)
leer (a)si a >0 entonces b := a+a sino b := a*afin_siescribir (b)
100
leer (a)si a >0 entonces b := a+a sino b := a*afin_siescribir (b)
leer (a)si a >0 entonces b := a+a sino b := a*afin_siescribir (b)
100
a, b: entero
Diagrama de Flujo - Selección Múltiple
29
En Visual Basic
if (condición 1)Then accion1Elseif (condición 2)Then
accion2Elseif (condición 3)Then
accion3.............................Elseif (condicion N) Then accion N-1Else accion N End if
Pseudocodigo• si <condición1> entonces• <acciónes1>• si_no si <condición2> entonces• <acciones2>• si_no si <condición3> entonces• <acciones3>• ………………• ……………..• si_no• <accionesX>• fin_si
EJEMPLO 3
Dados tres números enteros, calcular el mayor
a b c
mayor
XXX XXX XXX
XXX
a, b, c : entero mayor: enteroleer (a) leer (b)leer (c)si a>=b & a>=c entonces mayor := asino si b>=a & b>=c entonces mayor := b sino mayor := c fin_sifin_siescribir (“maximo”)escribir (mayor)
a, b, c : entero mayor: enteroleer (a) leer (b)leer (c)si a>=b & a>=c entonces mayor := asino si b>=a & b>=c entonces mayor := b sino mayor := c fin_sifin_siescribir (“maximo”)escribir (mayor)
a, b, c : entero mayor: enteroleer (a) leer (b)leer (c)si a>=b & a>=c entonces mayor := asino si b>=a & b>=c entonces mayor := b sino mayor := c fin_sifin_siescribir (“maximo”)escribir (mayor)
a, b, c : entero mayor: enteroleer (a) leer (b)leer (c)si a>=b & a>=c entonces mayor := asino si b>=a & b>=c entonces mayor := b sino mayor := c fin_sifin_siescribir (“maximo”)escribir (mayor)
a, b, c : entero mayor: enteroleer (a) leer (b)leer (c)si a>=b & a>=c entonces mayor := asino si b>=a & b>=c entonces mayor := b sino mayor := c fin_sifin_siescribir (“maximo”)escribir (mayor)
a, b, c : entero mayor: enteroleer (a) leer (b)leer (c)si a>=b & a>=c entonces mayor := asino si b>=a & b>=c entonces mayor := b sino mayor := c fin_sifin_siescribir (“maximo”)escribir (mayor)
a, b, c : entero mayor: enteroleer (a) leer (b)leer (c)si a>=b & a>=c entonces mayor := asino si b>=a & b>=c entonces mayor := b sino mayor := c fin_sifin_siescribir (“maximo”)escribir (mayor)
a, b, c : entero mayor: enteroleer (a) leer (b)leer (c)si a>=b & a>=c entonces mayor := asino si b>=a & b>=c entonces mayor := b sino mayor := c fin_sifin_siescribir (“maximo”)escribir (mayor)
a, b, c : entero mayor: enteroleer (a) leer (b)leer (c)si a>=b & a>=c entonces mayor := asino si b>=a & b>=c entonces mayor := b sino mayor := c fin_sifin_siescribir (“maximo”)escribir (mayor)
a, b, c : entero mayor: enteroleer (a) leer (b)leer (c)si a>=b & a>=c entonces mayor := asino si b>=a & b>=c entonces mayor := b sino mayor := c fin_sifin_siescribir (“maximo”)escribir (mayor)
a, b, c : entero mayor: enteroleer (a) leer (b)leer (c)si a>=b & a>=c entonces mayor := asino si b>=a & b>=c entonces mayor := b sino mayor := c fin_sifin_siescribir (“maximo”)escribir (mayor)
a, b, c : entero mayor: enteroleer (a) leer (b)leer (c)si a>=b & a>=c entonces mayor := asino si b>=a & b>=c entonces mayor := b sino mayor := c fin_sifin_siescribir (“maximo”)escribir (mayor)
a, b, c : entero mayor: enteroleer (a) leer (b)leer (c)si a>=b AND a>=c entonces mayor = asino si b>=a AND b>=c entonces mayor = b sino mayor = c fin_sifin_siescribir (“maximo”)escribir (mayor)
Memoria
25 10
10
máximo 10
Pseudocódigo
a, b, c : entero mayor: enteroleer (a) leer (b)leer (c)si a>=b & a>=c entonces mayor := asino si b>=a & b>=c entonces mayor := b sino mayor := c fin_sifin_siescribir (“maximo”)escribir (mayor)
a, b, c : entero mayor: enteroleer (a) leer (b)leer (c)si a>=b & a>=c entonces mayor := asino si b>=a & b>=c entonces mayor := b sino mayor := c fin_sifin_siescribir (“maximo”)escribir (mayor)
a, b, c : entero mayor: enteroleer (a) leer (b)leer (c)si a>=b & a>=c entonces mayor := asino si b>=a & b>=c entonces mayor := b sino mayor := c fin_sifin_siescribir (“maximo”)escribir (mayor)
a, b, c : entero mayor: enteroleer (a) leer (b)leer (c)si a>=b & a>=c entonces mayor := asino si b>=a & b>=c entonces mayor := b sino mayor := c fin_sifin_siescribir (“maximo”)escribir (mayor)
a, b, c : entero mayor: enteroleer (a) leer (b)leer (c)si a>=b & a>=c entonces mayor := asino si b>=a & b>=c entonces mayor := b sino mayor := c fin_sifin_siescribir (“maximo”)escribir (mayor)
a, b, c : entero mayor: enteroleer (a) leer (b)leer (c)si a>=b & a>=c entonces mayor := asino si b>=a & b>=c entonces mayor := b sino mayor := c fin_sifin_siescribir (“maximo”)escribir (mayor)
a, b, c : entero mayor: enteroleer (a) leer (b)leer (c)si a>=b & a>=c entonces mayor := asino si b>=a & b>=c entonces mayor := b sino mayor := c fin_sifin_siescribir (“maximo”)escribir (mayor)
a, b, c : entero mayor: enteroleer (a) leer (b)leer (c)si a>=b & a>=c entonces mayor := asino si b>=a & b>=c entonces mayor := b sino mayor := c fin_sifin_siescribir (“maximo”)escribir (mayor)
a, b, c : entero mayor: enteroleer (a) leer (b)leer (c)si a>=b & a>=c entonces mayor := asino si b>=a & b>=c entonces mayor := b sino mayor := c fin_sifin_siescribir (“maximo”)escribir (mayor)
a, b, c : entero mayor: enteroleer (a) leer (b)leer (c)si a>=b & a>=c entonces mayor := asino si b>=a & b>=c entonces mayor := b sino mayor := c fin_sifin_siescribir (“maximo”)escribir (mayor)
a, b, c : entero mayor: enteroleer (a) leer (b)leer (c)si a>=b & a>=c entonces mayor := asino si b>=a & b>=c entonces mayor := b sino mayor := c fin_sifin_siescribir (“maximo”)escribir (mayor)
a, b, c : entero mayor: enteroleer (a) leer (b)leer (c)si a>=b AND a>=c entonces mayor = asino si b>=a AND b>=c entonces mayor = b sino mayor = c fin_sifin_siescribir (“maximo”)escribir (mayor)
a b c
mayor
XXX XXX XXX
XXX
Memoria
92 4
9
máximo 9
Determinar si un alumno aprueba a reprueba un curso, sabiendo que aprobara si su promedio de las tres calificaciones es mayor o igual a 11; reprueba en caso contrario.
35
EJEMPLO 4
AlgoritmoInicio
Real Nota1, Nota2, Nota3Real PromedioString Mensaje
Leer Nota1, Nota2, Nota3
Promedio = (Nota1 + Nota2 + Nota3) / 3Si promedio >= 11 entonces
Mensaje = “Alumno Aprobado”si no
Mensaje = “Alumno Reprobado”Fin si
Escribir MensajeFin
36
En un almacén se hace un 20% de descuento a los clientes cuya compra supere los $1000 ¿ Cual será la cantidad que pagara una persona por su compra?
37
EJEMPLO 5
AlgoritmoInicio
Entero CompraReal Descuento, Tot_Pagar
Leer Compra
Si Compra > 1000 entoncesDescuento = Compra * 0.2
si noDescuento = 0
Fin siTot_Pagar = Compra – Descuento
Escribir Tot_pagarFin
38
Un obrero necesita calcular su sueldo, el cual se obtiene de la sig. manera:Si trabaja 40 horas o menos se le paga s/.6 soles por hora trabajadaSi trabaja mas de 40 horas se le paga s/.10 soles por cada una de las primeras 40 horas trabajadas y s/. 20 soles por cada hora extra.
39
EJEMPLO 6
AlgoritmoInicio
Entero Hora_trabajada, Hora_extra, Sueldo
Leer Hora_trabajada
Si Hora_trabajada > 40 entoncesHora_extra = Hora_trabajada - 40Sueldo = Hora_extra * 20 + 40 * 10
si noSueldo = Hora_trabajada * 6
Fin-si
Escribir SueldoFin
40
41
Diagrama de flujo Repetitivas (Mientras)
Diagrama de Flujo
Sentencia
condición
sí
no
while (condición)
sentencia
End While
En Visual Basic
TRADUCCION MIENTRAS
PSEUDOCODIGOmientras <condición> hacer <bloque instrucciones> fin_mientras
Diagramas de Flujo Repetitivos
Diagrama de FlujoPseudo-Lenguaje
Iniciox = 1suma = 0Mientras (x =< 1000) suma = suma + x x = x + 1Fin Mientras
“La suma es:”, suma
Finsuma=suma+x
X=x+1
x=<1000
sí
no
Ejemplo: Sumar números del 1 al 1000
x = 0suma = 0
Escribir,suma 43
44
EJEMPLO. Desarrolle un algoritmo que realice la sumatoria de los números enteros comprendidos entre el 1 y el 10, es decir, 1 + 2 + 3 + …. + 10.
Ejercicios
1. Desarrolle un programa que permita calcular 1 + 2 + 3 + ..........+ N
2.- Área de un triangulo cualquiera en función de sus tres lados
3.- Calculo de las tres alturas de un triangulo cualquiera en función de sus tres lados
4.- Dado como dato el sueldo de un trabajador calcule su aumento según el siguiente criterio.
Sueldo < S/. 1,000 aumento 30%
S/. 1,000 < = Sueldo < = S/. 1,500 aumento 25%
Sueldo > S/. 1,500 aumento 20% Imprime el nuevo sueldo del trabajador.
5.- Dado como dato Y calcule el resultado de la siguiente funcion:
3*Y+30 Si 0 < Y <= 11
X = Y*Y-10 Si 11< Y <= 33
Y*Y*Y+Y*Y-1 Si 33< Y <= 64
0 Para cualquier otro valor de y
Imprime X, Y.
6.- Solución de ecuación de la forma Ax2 + Bx + C = 0
7.- Lea un numero entero N y calcule el resultado de la siguiente serie:
1 + ½ + 1/3 + ¼ + .................+ 1/N
8.- Lea un numero entero N y calcule el resultado de la siguiente serie:
1 – ½ + 1/3 – ¼ + ................ + 1/N
9.- Dado como dato N números enteros, determine cuantos de ellos son pares y cuanto impares.
Top Related