3 Estructura
3 Estructura
3 Estructura
____________________________________________________________________________________________________
UNIDAD III
3.1.1. SIMPLE
Un diagrama de flujo representa la esquematización grafica 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 escribe un programa en algún lenguaje de programación. Si el
diagrama de flujo esta completo y correcta, el paso del mismo a un lenguaje de programación es relativamente
simple y directo.
A continuación presento los símbolos que utilizaremos, y una explicación de los mismos, Estos satisfacen
las recomendaciones de la International Standard Organization (ISO) y la American Standard Institute (ANSI).
Las estructuras lógicas selectivas se encuentran en la solución algorítmica de casi todo tipo de problemas.
La utilizamos cuándo el desarrollo de la solución de un problema debemos tomar una decisión, para establecer un
proceso o señalar un camino alternativo a seguir.
Esta toma de decisión (expresada con un rombo) se basa en la evaluación de una o más condiciones que
nos señalaran como alternativa o consecuencia, la rama a seguir.
Hay situaciones en las que la toma de decisiones se realiza en cascada. Es decir se toma una decisión, se
marca la rama correspondiente a seguir, se vuelve a tomar otra decisión y así sucesivamente. Por lo que para
alcanzar la solución de este problema o subproblema debemos aplicar prácticamente un árbol de decisión.
Las estructuras algorítmicas selectivas que se utilizan para la toma de decisiones lógicas las podemos
clasificar de la siguiente forma:
Cabe señalar que cuando a las estructuras selectivas las aplicamos en cascada, podemos utilizar una
combinación de las estructuras señaladas anteriormente en la clasificación.
La Estructura Si Entonces
La estructura selectiva SI ENTONCES permite que el flujo del diagrama siga por un camino especifico si
se cumple una condición o conjunto de condiciones. SI al evaluar la condición (o condiciones) el resultado es
verdadero, entonces se ejecutara(n) cierta(s) operación(es). Luego se continua con la secuencia normal del
diagrama.
no
condición
si
____________________________________________________________________________________________________
ESTRUCTURA DE FLUJO operación
PROGRAMATICO ING. OSORNIO 30
FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD III
____________________________________________________________________________________________________
Donde:
CONDICION.- expresa la condición o
conjunto de condiciones s evaluarse
OPERACIÓN.- expresa la operación o
conjunto de operaciones que se van a
realizar si la condición resulta verdadera.
.
.
.
SI condicion ENTONCES
Hacer operacion
Ejemplo 1
Construya un diagrama de flujo tal, que dado como dato la calificación de un alumno en un examen,
escriba “ aprobado” en caso de que esa calificación fuese mayor que 8.
DATO: CAL
DONDE: CAL es una variable de tipo real, que expresa la calificación del alumno.
INICIO
no
CAL
>8
si
“APROBADO”
FIN
NUMERO DE DATO
CORRIDA CAL RESULTADO
1 8.75 “aprobado”
2 7.90
3 8.00
4 9.50 “aprobado”
5 8.35 “aprobado”
Seudocodigo
EXAMEN_SELECTIVA_SIMPLE
{El programa, dados como dato la calificación de un alumno en un examen, escribe aprobado si la
calificación es superior a8}
____________________________________________________________________________________________________
ESTRUCTURA DE FLUJO PROGRAMATICO ING. OSORNIO 32
FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD III
____________________________________________________________________________________________________
1. Leer CAL
2. SI CAL > 8 ENTOCES
Escribir “aprobado”
3. { Fin del condicional del paso2 }
Ejemplo 2
Dado como dato el sueldo de un trabajador, aplíquele un aumento del 15% si su sueldo es inferior a $100.
Imprima en este caso, el nuevo sueldo del trabajador. Haga diagrama de flujo correspondiente.
DATO: SUE
DONDE: SUE es una variable de tipo real, que expresa el sueldo del trabajador.
INICIO
no
SUE<1000
si
AUM=SUE*015
SUE=SUE+ALM
FIN
Seudocodigo
AUMENTO_SELECTIVA_SIMPLE
{El programa, dados como dato el sueldo de un trabajador , le aplica un aumento del 15% si su sueldo es
inferior a $1000}
1. Leer SUE
2. SI SUE < 1000 ENTOCES
Hacer AUM ← SUE*0.15 y NSUE ← SUE +AUM
Escribir NSUE
3. { Fin del condicional del paso2 }
Programa En C
#include <stdio.h>
#include <conio.h>
main( );
{
float Sueldo, Aumento, Sueldo neto;
printf(“Calcule el sueldo de un trabajador”);
printf(“Teclea tu sueldo:”);
scanf(“%f”,&Sueldo);
if(Sueldo <1000);
(Sueldo * 0.15 = aumento);
Aumento + Sueldo = Sueldo neto;
printf(“\n Tu sueldo neto es:%4.2f”,Sueldo neto);
getch( );
____________________________________________________________________________________________________
ESTRUCTURA DE FLUJO PROGRAMATICO ING. OSORNIO 34
FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD III
____________________________________________________________________________________________________
3.1.2. RAMIFICADA
La estructura selectiva SI ENTONCES / SINO permite que el flujo del diagrama se bifurque por dos
ramas diferentes en el punto de la toma de decisión (es). Si al evaluar la condición(es) el resultado es verdadero,
entonces se sigue por el camino especifico y se ejecuta(n) cierta(s) operación(es). Por otra parte, si el resultado es
falso entonces se sigue por otro camino y se ejecuta(n) otra(s) operación(es) indicada(s), se continua con la
secuencia normal del diagrama. A continuación presento el diagrama de flujo que ilustra la estructura selectiva.
Donde:
CONDICION.- expresa la
condición condición o conjunto de
condiciones s evaluarse
si no OPERACIÓN1.- expresa la
operación o conjunto de
operaciones que se van a
realizar si la condición resulta
verdadera.
OPERACIÓN2.- expresa la
Operación 1
Operación 2 operación o conjunto de
operaciones que se van a
realizar si la condición resulta
falsa.
.
.
.
SI condicion
ENTONCES
Hacer operación 1
SINO
Hacer operacion 2
{ Fin del condiconal }
.
.
.
Ejemplo 3
Construya un diagrama de flujo tal, que dado como dato la calificación de un alumno en un examen,
escriba “ aprobado” en caso de que esa calificación fuese mayor que 8 y “reprobado” en caso contrario.
____________________________________________________________________________________________________
ESTRUCTURA DE FLUJO PROGRAMATICO ING. OSORNIO 35
FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD III
____________________________________________________________________________________________________
DATO: CAL
DONDE: CAL es una variable de tipo real, que expresa la calificación del alumno.
INICIO
NO
SI
CAL
>8
“Aprobado” “Reprobado”
FIN
NUMERO DE DATO
CORRIDA CAL RESULTADO
1 8.75 “aprobado”
2 7.90 “Reprobado”
3 8.00 “Reprobado”
4 9.50 “aprobado”
5 8.35 “aprobado”
EXAMEN_SELECTIVA_SIMPLE
____________________________________________________________________________________________________
ESTRUCTURA DE FLUJO PROGRAMATICO ING. OSORNIO 36
FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD III
____________________________________________________________________________________________________
{El programa, dados como dato la calificación de un alumno en un examen, escribe aprobado si la
calificación es superior a 8 y “reprobado” en caso contrario}
1. Leer CAL
2. SI CAL > 8
ENTOCES
Escribir “Aprobado”
SINO
Escribir “Reprobado”
3. { Fin del condicional del paso2 }
Programa En C.
# include <stdio.h>
#include <conio.h>
main( )
{
float CAL;
clrscr( );
printf(“Programa que define si el alumno aprueba o reprueba”);
printf(“Teclee su calificación:”);
scanf(“%f”,&CAL);
if(cal > 8)
{
printf(“Aprobado”);
getch( );
}
else
}
printf(“reprobado”);
getch( );
}
}
Ejemplo 4
Dado como dato el sueldo de un trabajador, aplíquele un aumento del 15% si su sueldo es inferior a $1000
y 12% en caso contrario. Imprima el sueldo del trabajador
DATO: SUE
DONDE: SUE es una variable de tipo real, que expresa el sueldo del trabajador.
INICIO
Estructura selectiva
SUE
SI ENTONCES / SINO
____________________________________________________________________________________________________
ESTRUCTURA DE FLUJO PROGRAMATICO ING. OSORNIO 37
FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD III
____________________________________________________________________________________________________
NO
SI
SUE <1000
NSUE=SUE*1.12.
NSUE=SUE*1.15
NSUE
FIN
Seudocodigo
____________________________________________________________________________________________________
ESTRUCTURA DE FLUJO PROGRAMATICO ING. OSORNIO 38
FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD III
____________________________________________________________________________________________________
AUMENTO_SELECTIVA_DOBLE
{El programa, dados como dato el sueldo de un trabajador , le aplica un aumento del 15% si su sueldo es
inferior a $1000 y 12% en caso contrario}
1. Leer SUE
2. SI SUE < 1000
ENTOCES
Hacer NSUE ← SUE * 1.15
SINO
Hacer NSUE ← SUE * 1.12
Ejercicio.
Realizar un diagrama de flujo para calcular el precio del billete del billete ida y vuelta del ferrocarril conociendo
la distancia del viaje de ida y el tiempo de estancia.
Se sabe además que si el número de días de estancia es superior a 7 y la distancia total (ida y vuelta) a recorrer es
superior a 800Km, el billete tiene una rebaja del 30% el precio del Kilómetro es de 17 centavos.
Datos:
Rec1, Rec2, Días;
Donde:
Rec1. Es de tipo real y representa la distancia de ida.
Rec2. es de tipo real y representa la distancia de vuelta.
Días. Es de tipo entero y representa la estancia.
Diagrama de Flujo:
INICI
O
Rec1, Rec2,
Días
____________________________________________________________________________________________________
ESTRUCTURA DE FLUJO PROGRAMATICO ING. OSORNIO 39
FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD III
____________________________________________________________________________________________________
FIN
Prueba de Escritorio:
NUMERO DE DATOS
CORRIDA Rec1 Rec2 RECT Días RESULTADO
1 400 800 1200 3 204
2 350 200 550 5 93.5
3 700 135 835 8 99.365
4 630 50 680 10 115.6
5 310 30 340 9 57.8
Pseudocódigo.
{Dados como datos las distancias de ida y vuelta y el tiempo de estancia dar el precio del boleto. Si el recorrido es
mayor a 800Km y la estancia mayor a 7 días realizar un descuento del 30%}
# include <stdio.h>
# include <conio.h>
main( )
{
____________________________________________________________________________________________________
ESTRUCTURA DE FLUJO PROGRAMATICO ING. OSORNIO 40
FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD III
____________________________________________________________________________________________________
La Estructura Si Múltiple
La estructura selectiva SI MÚLTIPLE que el flujo del diagrama se bifurque por varias ramas de la toma
de decisión(es), esto en función del valor que tome el selector. así si el selector toma el VALOR 1 se ejecutara la
acción 1,si se toma el Valor 2 se ejecutara la acción 2, si toma el VALOR N se realizara la acción N y si toma un
valor distinto de los valores comprendidos entre 1 y N, se continuara con el flujo normal del diagrama realizándose
la acción N+1.
SELECTOR
ACCION N+1
____________________________________________________________________________________________________
ESTRUCTURA DE FLUJO PROGRAMATICO ING. OSORNIO 41
FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD III
____________________________________________________________________________________________________
Donde:
SELECTOR: Es la variable o expresión a evaluarse, según la cual se tomara una de las “multiples” de
decisiones o aternativas.
ACCION 1: Expresa la operación o conjunto de operaciones que se van a realizar si el selector toma el
VALOR 1.
ACCION 2: Expresa la operación o conjunto de operaciones que se van a realizar si el selector toma el
VALOR 2.
ACCION 3: Expresa la operación o conjunto de operaciones que se van a realizar si el selector toma el
VALOR 3.
ACCION N+1: Expresa la operación o conjunto de operaciones que se van a realizar si el selector toma el
VALOR N+1.
.
.
Si selector igual
La estructura selectiva SI MÚLTIPLE es muy flexible, lo que permite aplicarla de diferentes formas.
Obsérvese los siguientes diagramas de flujo y las explicaciones correspondientes.
SELECTOR
____________________________________________________________________________________________________
ESTRUCTURA DE FLUJO PROGRAMATICO ING. OSORNIO 42
FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD III
____________________________________________________________________________________________________
ACCION Y
.
.
Si selector igual
Hacer accion Y
.
.
SELECTOR
ACCION X
.
.
Si selector igual
____________________________________________________________________________________________________
ESTRUCTURA DE FLUJO PROGRAMATICO ING. OSORNIO 43
FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD III
____________________________________________________________________________________________________
Hacer accion X
.
A continuación presento algunos ejemplos donde el lector puede aplicar los conceptos estudiados con la
estructura selectiva SI MÚLTIPLE.
EJEMPLO.
Construya un diagrama de flujo tal, que dados como datos dos variables de tipo entero, obtenga el resultado de la
siguiente función:
100 * V Si NUM = 1
100 ** V Si NUM = 2
VAL = 100 / V Si NUM = 3
0 Para cualquier otro valor de NUM
Datos:
NUM, V.
Diagrama de Flujo:
INICI
O
NUM, V
NUM
VAL
FIN
____________________________________________________________________________________________________
ESTRUCTURA DE FLUJO PROGRAMATICO ING. OSORNIO 44
FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD III
____________________________________________________________________________________________________
Prueba De Escritorio.
Pseudocódigo.
{El programa, dados como datos dos variables de tipo entero, calcula el resultado de una función}
{NUM y V son variables de tipo entera. VAL es una variable de tipo real}
1. Leer NUM y V
2. Si NUM igual
Programa en C
# include <stdio.h>
# include <conio.h>
main( )
{
int Num, V;
float VAL;
clrscr ( );
____________________________________________________________________________________________________
ESTRUCTURA DE FLUJO PROGRAMATICO ING. OSORNIO 45
FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD III
____________________________________________________________________________________________________
Ejercicio.
Construya un diagrama de flujo tal, que dados como datos la categoría y el sueldo de un trabajador, calcule
el aumento correspondiente teniendo en cuenta la siguiente tabla. Imprima la categoría del trabajador y su nuevo
sueldo.
CATEGORIA AUMENTO
1 15%
2 10%
3 8%
4 7%
Datos:
CATE, SUE.
Donde:
CATE es una variable de tipo entero, que representa la categoría del trabajador.
SUE es una variable de tipo real, que expresa el sueldo del trabajador.
____________________________________________________________________________________________________
ESTRUCTURA DE FLUJO PROGRAMATICO ING. OSORNIO 46
FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD III
____________________________________________________________________________________________________
Diagrama de Flujo:
INICI
O
CATE, SUE
CATE
NSUE = SUE * 1.15 NSUE = SUE *1.10 NSUE = SUE * 1.08 NSUE = SUE * 1.07
CATE, NSUE
FIN
Prueba de Escritorio.
Pseudocódigo.
{El programa calcula el aumento de sueldo de los trabajadores, teniendo en cuenta su categoría. El aumento se
incorpora al salario}
{CATE es una variable de tipo entero. SUE y NSUE son variables de tipo real}
1. Leer CATE, SUE
2. Si CATE igual
2.1 Hacer NSUE SUE * 1.15
____________________________________________________________________________________________________
ESTRUCTURA DE FLUJO PROGRAMATICO ING. OSORNIO 47
FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD III
____________________________________________________________________________________________________
# include<stdio.h>
# include <conio.h>
main( )
{
int CATE;
float SUE, NSUE
clrscr( );
printf(“Programa que calcula el aumento de un trabajador”);
printf(“Teclea el sueldo actual:”);
scanf(“%f”,&sueldo);
printf(“1. NSUE = SUE * 1.15”);
printf(“2. NSUE = SUE * 1.10”);
printf(“3. NSUE = SUE * 1.08”);
printf(“4. NSUE = SUE * 1.07”);
printf(“Teclea la categoría”);
scanf(“%d”,&CATE);
switch (categoria)
{
case 1: NSUE = SUE * 1.15;
printf(“El sueldo total es:%8.2f”, SUE); break;
case 2: NSUE = SUE * 1.10;
printf(“El sueldo total es:%8.2f”, SUE); break;
case 3: NSUE = SUE * 1.08;
printf(“El sueldo total es:%8.2f”, SUE); break;
case 4: NSUE = SUE * 1.07;
printf(“El sueldo total es:%8.2f”, SUE); break;
default: printf(“Opción no Contemplada”);
}
}
Encontramos numerosos casos en el desarrollo de la solución de problemas en el que luego de tomar una
decisión y marcar el camino correspondiente a seguir, es necesario tomar otra decisión. Se señala, luego de evaluar
las condiciones, la rama correspondiente a seguir, y nuevamente podemos tener que tomar una decisión. El
proceso puede repetirse numerosas veces. En este caso estamos aplicando estructuras selectivas en cascada o
anidadas, para resolver el problema.
EJEMPLO.
El siguiente caso donde dentro de la estructura si / entonces, encontramos la estructura si entonces / sino.
____________________________________________________________________________________________________
ESTRUCTURA DE FLUJO PROGRAMATICO ING. OSORNIO 48
FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD III
____________________________________________________________________________________________________
No
CONDICION 1
Si
Si
Si CONDICION 2
no
OPERACIÓN 21 OPERACIÓN 21
Pseudocódigo.
.
..
N. Si condición 1 entonces
N.1. Si condición 2
Entonces
Hacer operación 21
Sino
Hacer operación 22
N.2. {Fin del condicional del paso N.1.}
N + 1 {Fin del condicional del paso N}
.
.
EJEMPLO.
CONDICION
1
____________________________________________________________________________________________________
ESTRUCTURA DE FLUJO PROGRAMATICO ING. OSORNIO 49
FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD III
____________________________________________________________________________________________________
CONDICION CONDICION
2 3
Pseudocódigo.
.
.
.
N. Si condición 1
entonces
N.1. Si condición 2
Entonces
Hacer operación 2.1
sino
Hacer operación 2.2
N.2. {Fin del condicional del paso N.1}
sino
N.3 Si condición 3 entonces.
Hacer operación 3.1
{Fin del condicional del paso N.3}
N + 1 {Fin del condicional del paso N}
.
.
.
CONDICION 1
CONDICION 5
____________________________________________________________________________________________________
ESTRUCTURA DE FLUJO PROGRAMATICO ING. OSORNIO OPERACIÓN 5.1 50
SELECTOR
CONDICION
OPERACIÓN 2.1 OPERACIÓN
3 3.1 Operación4.1 Condició
Operación4.2
n4
FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD III
____________________________________________________________________________________________________
Pseudocódigo.
.
.
.
N. Si condición 1
entonces
N.1 Si selector 1 igual
valor 1: Hacer operación 2.1
valor 2: Hacer operación 2.2
N.1.1. Si condición 3 entonces
Hacer operación 3.1
N.1.2. {Fin de condicional del paso N.1.1}
de otra forma
N.1.3. Si condición 4 entonces
Hacer operación 4.1 sino
Hacer operación 4.2
N.1.4. {Fin del condicional del paso N.1.3}
N.2. {Fin de condicional del paso N.1}
Sino
N.3. Si condición 5 entonces
Hacer operación 5.1
N.4. {Fin del condicional del paso N.3.}
N + 1 {Fin del condicional del paso N}
.
.
EJEMPLO.
Construya un diagrama de flujo tal, que dado como dato una temperatura en grados Fahrenheit, determine
el deporte que es apropiado practicar a esa temperatura, teniendo en cuenta la siguiente tabla:
DEPORTE TEMPERATURA
____________________________________________________________________________________________________
ESTRUCTURA DE FLUJO PROGRAMATICO ING. OSORNIO 51
FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD III
____________________________________________________________________________________________________
Natación >85
Tenis 70 < TEMP <= 85
Golf 32 < TEMP <= 70
Esquí 10< TEMP <= 32
Marcha <= 10
Dato: TEMP.
Donde: TEMP es una variable de tipo real, que representa la temperatura que se lee.
Diagrama de Flujo:
INICI
O
TEM
P
TEMP > 85
TEMP > 70
NATACION
TEMP > 32
TENIS
ESQUI MARCHA
Prueba de Escritorio.
Pseudocódigo.
____________________________________________________________________________________________________
ESTRUCTURA DE FLUJO PROGRAMATICO ING. OSORNIO 52
FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD III
____________________________________________________________________________________________________
REPORTE _ TEMPERATURA.
{El programa, dado como dato una temperatura en grados Fahrenheit, recomienda el deporte que es aconsejable
practicar a esa temperatura}
1. Leer TEMP.
2. Si TEMP > 85
entonces
escribir natación
sino
2.1 Si TEMP > 70
entonces
escribir tenis
sino
2.1.1 Si TEMP > 32
entonces
escribir golf
sino
2.1.1.1 Si TEMP > 10
entonces
escribir esquí
sino
escribir marcha
2.1.1.2 {Fin del condicional del paso 2.1.1.1}
2.1.2 {Fin del condicional del paso 2.1.1}
2.2 {Fin del condicional del paso 2.1}
3. {Fin del condicional del paso 2}
Programa En C.
#include <stdio.h>
#include <conio.h>
char enter,pausa;
float temp;
main( )
{
clrscr();
gotoxy(25,1);
printf("Programa de las Temperaturas");
gotoxy(10,5);
printf("Teclee la tempeatura:");
scanf("%f",&temp);
if(temp>85)
printf("El deporte mas apropiado es la Natación ");
____________________________________________________________________________________________________
ESTRUCTURA DE FLUJO PROGRAMATICO ING. OSORNIO 53
FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD III
____________________________________________________________________________________________________
else
if (temp>70)
printf("El deporte mas apropiado es el tenis ");
else
if(temp>32)
printf("El deporte mas apropiado es el Golf ");
else
if (temp<=10)
printf("El deporte mas apropiado es la marcha ");
else
printf("El deporte mas apropiado es el esquí ");
getch( );
}
EJERCICIO.
En una tienda efectúan un descuento a los clientes dependiendo del monto de la compra. El descuento se efectúa
con base en el siguiente criterio: Si el monto es menor que $500 no hay descuento. Si el monto está comprendido
entre $500 y $1000 inclusive 5% de descuento. Si el monto está comprendido entre $1000 y $15000 inclusive 11%
de descuento. Si el monto es mayor a $15000 el 25% de descuento.
Dato:
COMPRA.
Donde:
COMPRA es una variable de tipo real, que representa el monto de la compra.
Diagrama de Flujo:
INICI
O
COMPRA
COMPRA<=5
00
COMPRA<=10
PAGAR=COMPRA 00
COMPRA<=70
PAGAR=COMPRA*0.05 00
PAGAR=COMPRA*0.89 COMPRA<=150
00
____________________________________________________________________________________________________
ESTRUCTURA DE FLUJO PROGRAMATICO ING. OSORNIO 54
FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD III
____________________________________________________________________________________________________
PAGAR=COMPRA*0.82 PAGAR=COMPRA*0.75
PAGAR
FIN
Explicación de Variables.
Prueba de Escritorio.
Pseudocódigo.
TIENDA _ DESCUENTOS.
{El programa, dado como dato el monto de la compra de un cliente, determina lo que el mismo debe pagar
teniendo en cuenta una serie de descuentos.}
La Estructura Repetir.
La estructura repetir es la estructura algorítmica adecuada para utilizar en un ciclo que se ejecutará un número
definido de veces. Por ejemplo cuando necesitamos calcular la nómina total de la empresa, tenemos que sumar los
sueldos de los N empleados de la misma. Cuando necesitamos obtener el promedio de calificaciones de un curso,
debemos sumar las N calificaciones de los alumnos y dividir esa suma entre N. Es decir, sabemos de antemano
cuántas veces tenemos que repetir una determinada operación, acción o tarea. El número de repeticiones no
depende de las proposiciones dentro del ciclo. El número de veces se obtiene del planteamiento del problema o de
una lectura que indica que el número de iteraciones se debe realizar para N ocurrencias.
El diagrama de flujo de la estructura algorítmica repetir es el siguiente:
V VI
V>VF
PROCESO
V V+INC
Donde:
V es una variable de control.
VI es el valor inicial.
VF es el valor final.
____________________________________________________________________________________________________
ESTRUCTURA DE FLUJO PROGRAMATICO ING. OSORNIO 56
FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD III
____________________________________________________________________________________________________
INC es el incremento.
V(contador del ciclo, generalmente representado por la letras (I, J, K, V) toma un valor inicial y se compara con
VF (valor final). El ciclo se ejecuta mientras V es menor o igual al valor de VF. El valor de V se incrementa en
cada iteración. Cuando V supera el valor de VF entonces el ciclo se detiene.
Pseudocódigo.
.
.
.
Hacer V VI
Repetir con V desde VI hasta VF
.
.
.
{proceso}
.
.
.
Hacer V V + INC
{Fin del ciclo}
EJEMPLO.
Construya un diagrama de flujo tal, que dados como datos los sueldos de los 10 trabajadores de una empresa,
obtenga el total de nómina de la misma. Considere además que no puede utilizar estructuras algorítmicas
repetitivas en la solución del problema.
Dato:
SUE1, SUE2, SUE3, SUE4, SUE5, SUE6, SUE7, SUE8, SUE9, SUE10.
Donde:
SUE1, SUE2,..., SUE10 son variables de tipo real, que representan los sueldos de los 10 trabajadores.
Diagrama de Flujo.
INICI
O
SUE1, SUE2, SUE3, SUE4, SUE5, SUE6, SUE7, SUE8, SUE9, SUE10
NOMINA = SUE1+SUE2+SUE3+SUE4+SUE5+SUE6+SUE7+SUE8+SUE9+SUE10
NOMINA
FIN
____________________________________________________________________________________________________
ESTRUCTURA DE FLUJO PROGRAMATICO ING. OSORNIO 57
FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD III
____________________________________________________________________________________________________
Explicación De Variables.
SUE1, SUE2, SUE3, SUE4, SUE5, SUE6, SUE7, SUE8, SUE9, SUE10: Variables de tipo real. Representan los
sueldos de los empleados.
NOMINA: Variable de tipo real. Almacena la suma de los sueldos de todos los trabajadores.
A continuación presentamos la solución del problema anterior, utilizando una estructura algorítmica repetitiva.
Datos:
SUE1, SUE2,...,SUE10.
Donde:
SUEi es una variable de tipo real, que representa el sueldo del trabajador i. 1<= i <=10
Diagrama De Flujo.
INICI
O
I=1
NOMINA = 0
SI
I>10
NO
SUE
I=I+1
NOMINA
FIN
____________________________________________________________________________________________________
ESTRUCTURA DE FLUJO PROGRAMATICO ING. OSORNIO 58
FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD III
____________________________________________________________________________________________________
El diagrama de flujo es más claro y más general que el anterior. Modificando la condición (I >10), podemos utilizar esta
solución para N empleados, incluso podemos leer el valor de N y formalizar la condición como (1 > N).
Explicación de variables.
I: Es una variable de tipo entero que representa la variable de control del ciclo. Contabiliza el número de veces que
ha de repetirse una determinada acción. El contador toma una valor inicial generalmente (0 ó 1) y se incrementa en
la mayoría de los casos en una unidad en cada vuelta del ciclo.
NOMINA: Es una variable de tipo real que representa un acumulador. Este se utiliza cuando debemos obtener el
total acumulado de un conjunto de cantidades. Generalmente se inicializa en cero.
Prueba de Escritorio.
I SUE NOMINA
1 0 0
2 1500 1500
3 890 2390
4 700 3090
5 950 4040
6 2300 6340
7 1650 7990
8 1800 9790
9 1400 11190
10 760 11950
11 900 12850
Pseudocódigo.
NOMINA.
{El programa calcula el total de la nómina de un grupo de 10 empleados}
{I es una variable de tipo entero. SUE y NOMINA son variables de tipo real}
1. Hacer I 1 y NOMINA 0
2. Repetir con I desde 1 hasta 0
leer SUE
Hacer NOMINA NOMINA + SUE e I I+1
3. {Fin del ciclo del paso 2}
4. Escribir NOMINA.
while (condición)
sentencia 1.
while (condición)
____________________________________________________________________________________________________
ESTRUCTURA DE FLUJO PROGRAMATICO ING. OSORNIO 59
FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD III
____________________________________________________________________________________________________
{
sentencia 1;
sentencia 2;
}
do
sentencia;
while (condición);
do
{
sentencia 1;
sentencia 2;
}while (condición);
Estructura Mientras.
La estructura algorítmica mientras es la estructura adecuada para utilizar en un ciclo cuando no sabemos
el número de veces que éste se ha de repetir. Dicho número depende de las proposiciones dentro del ciclo.
Ejemplos en la vida cotidiana encontramos muchos. Por ejemplo, supongamos que tenemos que obtener el total de
una serie de gastos, pero no sabemos exactamente cuántos son; o cuando tenemos que sacar el promedio de
calificaciones de un examen, pero no sabemos precisamente cuántos alumnos lo aplicaron. Tenemos que sumar las
calificaciones e ir contando el número de alumnos, esto con el fin de poder obtener posteriormente el promedio. El
ciclo se repite mientras tengamos calificaciones de alumnos.
En la estructura mientras se distinguen dos partes:
Ciclo: Conjunto de instrucciones que se ejecutarán repetidamente.
Condición de terminación: La evaluación de esta condición permite decidir cuánto finalizará la ejecución
del ciclo. La condición se evalúa al inicio del mismo.
El diagrama de flujo de la estructura algorítmica mientras es el siguiente:
PI PROPOSICIÓN INICIAL
EVALUACIÓN DE NO
PI
SI
PI MODIFICACIÓN DE PI
Donde
PI: La proposición inicial, debe tener un valor verdadero inicialmente. Si el valor de PI es falso, entonces el ciclo
no se ejecuta.
Debe existir también un enunciado dentro del ciclo que afecte la condición, para evitar que el ciclo se ejecute
indefinidamente
Pseudocódigo.
.
Hacer PI Proposición Inicial
____________________________________________________________________________________________________
ESTRUCTURA DE FLUJO PROGRAMATICO ING. OSORNIO 60
FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD III
____________________________________________________________________________________________________
EJERCICIO.
Escriba un diagrama de flujo, tal que dado un grupo de números naturales positivos, calcule e imprima el
cubo de estos números.
Donde:
Num. Variable de tipo entero representa el número de datos a introducir.
Acum. Variable de tipo entero representa el acumulador.
Dat Variable de tipo real representa el dato que se elevara al cubo.
R. Variable de tipo real que expresa el resultado.
Diagrama De Flujo:
INICI
O
NUM.
ACUM = 0
FIN
DAT
FIN
ACUM = ACUM + 1
____________________________________________________________________________________________________
ESTRUCTURA DE FLUJO PROGRAMATICO ING. OSORNIO 61
FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD III
____________________________________________________________________________________________________
Prueba de Escritorio.
Pseudocódigo.
Programa en C
# include <stdio.h>
# include <conio.h>
void main ( )
{
clrscr ( );
printf(“Cuántos Números”);
scanf(“%d”,&NUM);
acum = 0
while (ACUM < NUM);
{
printf(“Dato”);
scanf(“%f”,&DAT);
R = DAT * DAT * DAT;
printf(“El cubo es:%16.2f”,R);
ACUM = ACUM + 1;
____________________________________________________________________________________________________
ESTRUCTURA DE FLUJO PROGRAMATICO ING. OSORNIO 62
FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD III
____________________________________________________________________________________________________
}
printf(“Fin”);
}
EJERCICIO.
El costo de las llamadas telefónicas internacionales, depende de la zona geográfica en la que se encuentre el
país destino, y del número de minutos hablados. En la siguiente tabla se presenta el costo por minuto, por zona. A
cada zona se le ha asociado una clave.
Datos:
CLAVE, NUMIN.
Donde:
CLAVE es una variable entera, que representa la clave de la zona geográfica a la que se llamo.
NUMIN es una variable entera, que expresa la duración (en minutos) de la llamada.
____________________________________________________________________________________________________
ESTRUCTURA DE FLUJO PROGRAMATICO ING. OSORNIO 63
FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD III
____________________________________________________________________________________________________
Diagrama de Flujo:
INICIO
CLAVE, NUMIN
CLAVE
FIN
Explicación de variables.
Prueba De Escritorio.
____________________________________________________________________________________________________
ESTRUCTURA DE FLUJO PROGRAMATICO ING. OSORNIO 64
FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD III
____________________________________________________________________________________________________
Pseudocódigo.
LLAMADAS _ TELEFÓNICAS.
{El programa, dados como dato la clave de la zona a la cual se llamó, y el número de minutos que duró la llamada,
calcula el costo total de la misma}
{CLAVE y NUMIN son variables de tipo entero. COST es una variable de tipo real}
1. Leer CLAVE y NUMIN
2. Si CLAVE igual
12: Hacer COST NUMIN * 2
15: Hacer COST NUMIN * 2.2
18: Hacer COST NUMIN * 4.5
19: Hacer COST NUMIN * 3.5
23, 25: Hacer COST NUMIN * 6
29: Hacer COST NUMIN * 5
3. {Fin del condicional del paso 2}
4. Escribir “Costo total de la llamada”, COST.
Programa En C.
#include <conio.h>
#include <stdio.h>
float costo,tarifa,minutos;
int clave;
main()
{
clrscr();
gotoxy(1,1);
printf("Practica No. 13");
gotoxy(10,4);
printf("Programa para calcular la tarifa del telefono");
gotoxy(10,6);
printf("Introduce la clave del pais:");
scanf("%d",&clave);
switch(clave)
{
case 12: printf("La zona es: America del Norte");
gotoxy(5,8);
printf("Introduce los minutos hablados:");
scanf("%f",&minutos);
costo = minutos*2;
break;
gotoxy(5,8);
printf("Introduce los minutos hablados:");
scanf("%f",&minutos);
costo = minutos*2.2;
break;
EJERCICIO.
Escriba un diagrama de flujo tal, que dados como datos N números enteros, determine cuántos de ellos son pares y
cuántos impares.
Donde:
N es una variable de tipo entero, que representa el número de enteros que se ingresan.
NUMi es una variable de tipo entero, que expresa el número i que se ingresa. 1<= i <= N
CUEPAR y CUEIMP: Variables de tipo entero. Son contadores. Cuentan el número de números pares e impares,
respectivamente.
Diagrama De Flujo:
INICI
O
I = 1 CUEPAR =0
CUEPAR = 0
____________________________________________________________________________________________________
ESTRUCTURA DE FLUJO PROGRAMATICO ING. OSORNIO 67
FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD III
____________________________________________________________________________________________________
I>N
NUM
I=I+1
CUEPAR, CUEIMP
FIN
Prueba De Escritorio.
8 19 3
9 21 4
10 0
11 27 5
12 14 4
13 19 6
14 29 7
Pseudocódigo.
Programa En C.
#include<stdio.h>
#include<conio.h>
int x,cont,num;
float acum,dato;
void main()
{
textbackground(YELLOW);textcolor(BLUE);
clrscr();
gotoxy(1,1);
printf(" \n\n PROGRAMA QUE CALCULA NUMEROS PARES E IMPARES");
gotoxy(10,5);
____________________________________________________________________________________________________
ESTRUCTURA DE FLUJO PROGRAMATICO ING. OSORNIO 69
FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD III
____________________________________________________________________________________________________
while(cont<num)
{
printf("\nTeclea el dato(%d):",cont); scanf("%d",&x);
if(x%2==0)
printf("El numero es par",x);
else
printf(" El numero es impar",x);
acum= acum. + x;
cont ++;
}
getch( );
}
Proposición For.
Estructura for de repetición son: for, while, do while, la primera se considera incondicional las otras se
consideran condicionales. La estructura incondicional for se emplea para repetir una o más sentencias sobre todo
cuando se conoce el número de repeticiones que se desea realizar.
La condición será una expresión lógica la cual determinara el final de las repeticiones.
El ejemplo anterior se emplea cuando la variable de control que va a tomar valores en forma ascendente
desde el 1, hasta el 10 el incremento se considera unitario el incremento puede expresarse en diferentes formas es
decir:
x++
++x
x+=1
x=x+1
for (x=1;x<=50;x+=5)
De el ejemplo anterior podemos decir que la variable de control tomara valores ascendentes desde 1 hasta
500 de en 5 en 5.
Para el for anterior podemos ver que la variable de control tomo valores desde de a hasta z por lo que ahora
podemos decir que no solo números son los valores que podemos tomar la variable de control descendente o
ascendente.
for(z=0.5;z<=8.5;z+0.25)
En el ejemplo anterior podemos ver que la variable de control de un for puede ser de tipo real es decir de
punto flotante.
for(i i)
____________________________________________________________________________________________________
ESTRUCTURA DE FLUJO PROGRAMATICO ING. OSORNIO 70
FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD III
____________________________________________________________________________________________________
Cuando se emplea de la forma antes mencionada se usa para crear ciclos en forma infinita es decir que hará
repeticiones hasta que se apague la máquina o se empleen funciones que permitan darlo por terminado (break).
Un caso especial del uso de for que se da exclusivamente en el for será el que puede manejar 2 variables de
control cada una con su inicio, el final e incremento o decrementp como se muestra en el siguiente ejemplo:
for (i=0;j=4;i*;j<4;i++;j--)
{
.
}
Los enunciados break y continué se utilizan para modificar el flujo de control. El enunciado
bxeak, cuando se utiliza o ejecuta en una estructura while, for, do/while, o switch, causa la salida inmediata de
dicha estructura. La ejecución del programa continúa con el primer enunciado después de la estructura. Los usos
comunes del enunciado break son para escapar
en forma prematura de un ciclo, o para saltar el resto de una estructura switch (como en la figura 4.7).
La figura 4.11 demuestra el enunciado break en una estructura de repetición for. Cuando la estructura i£
detecta que x se ha convertido en 5, se ejecuta break. Esto da por terminado el enunciado £or, y el programa
continúa con el printf existente después de for. El ciclo se ejecuta por completo cuatro veces.
El enunciado continué, cuando se ejecuta en una estructura while, for, do/while, salta los enunciados restantes
del cuerpo de dicha estructura, y ejecuta la siguiente iteración del ciclo.
En estructuras while y do/while, la prueba de continuación de ciclo se valúa de inmediato de que se haya
ejecutado el enunciado continué. En la estructura for, se ejecuta la expresión incremental, y a continuación se
valúa la prueba de continuación de ciclo. Anteriormente indicamos que la estructura while podría ser utilizada, en
la mayor parte de los casos, para representar la estructura for. Una excepción ocurre cuando la expresión
incremental en la estructura while sigue a un enunciado continué. En este caso, el incremento no se lleva a cabo
antes de la prueba de la condición de continuación de repetición, y no se ejecuta el while de la misma forma que
en el caso del for. En la figura 4.2 se utiliza el enunciado continué en una estructura for, para saltar el enunciado
printf de la estructura, y empezar con la siguiente iteración del ciclo.
#include <stdio.h>
main ( )
{
int x;
____________________________________________________________________________________________________
ESTRUCTURA DE FLUJO PROGRAMATICO ING. OSORNIO 71
FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD III
____________________________________________________________________________________________________
if (x =- 5)
break; /* break loop oniy if x «sa 5 •/
}
printf("\nBroke out of loop at x " %d\n", x);
return O;
}
#include <stdio.h>
main ( )
(
int x;
if (x == 5)
continué; /* skip remaining code in loop oniy
if x — 5 */
____________________________________________________________________________________________________
ESTRUCTURA DE FLUJO PROGRAMATICO ING. OSORNIO 72