Sei sulla pagina 1di 37

UNIVERSIDAD NACIONAL DE CAJAMARCA

FACULTAD DE INGENIERÍA

Algoritmos y Estructura
de Datos II
ESTRUCTURAS SECUENCIALES –
CONDICIONAL SIMPLE Y DOBLE -
SWITCH
¿Cómo resolvemos los siguientes
Problemas?
Calcular el área de un triángulo Determinar si un número es
Conociendo la base y la altura positivo
¿Qué pasos hemos seguido para resolver los problemas
anteriores?
Logro

• Al término de la sesión,
el estudiante elabora un
solucionario de doce
problemas, sobre
estructuras
secuenciales y
selectivas, planteando
para cada uno de ellos:
1. su algoritmo
2. pseudocódigo o
diagrama de flujoo
diagrama N-S.
3. Programa c++
ESTRUCTURAS SECUENCIALES -
SELECTIVAS
Flujo de Control

• Se refiere al orden en que se ejecutan las sentencias del programa.


• Estas sentencias son:
– Secuenciales
– De selección:
• si (if)
• si ~ caso contrario (if ~ else)
• Según sea (switch)
– De repetición o iterativas:
• Mientras (while)
• Hacer – mientras (do – while)
• Desde (for)
– Salto o bifurcación:
• Romper (break)
• Continuar (continue)
• Ir – a (goto)
• Devolver (return)
• Lanzar (throw)
1. Estructura Secuencial
• Aquella en la que una acción sigue a la otra en
secuencia.
• Las tareas se suceden de tal modo que la salida de
una, es la entrada de la siguiente.

Acción 1
Acción 1
Acción 2 Inicio
<Acción 1>
. <Acción 2>
Acción 2 . .
. .
.
<Acción n>
Acción n Fin
Acción n
Ejercicios (E. secuencial)

• Para cada problema elaborar un algoritmo,


diagrama de flujo, diagrama N-S,
Pseudocódigo y programa en c++.
– Encontrar el área de un triangulo conociendo el
valor de sus tres lados.
– Encontrar el área de la superficie de un cono
circular conociendo su radio y su altura.

A  s s  a s  b s  c 
A  f (r , h)  πr r 2  h 2  πr 2 s
1
a  b  c 
2
Inicio

D. Entrada: Leer

Ejercicio 1 (E. secuencial)


 L. a
 L. b
a, b, c
Leer
a, b, c
 L. c
D. Salida: s  0.5*(a+b+c) s  0.5*(a+b+c)
Área del
triángulo
A  raiz(s*(s-a)*(s-b)*(s-c))
Proceso:
A  raiz(s*(s-a)*(s-b)*(s-c))
A  ss  a s  b s  c  Escribir
A
s
1
a  b  c 
2
Escribir
A

fin
Ejercicio 1 (E. secuencial)*
• Pseudocódigo #include <iostream>
#include <cmath>
using namespace std;

• Proceso areaTriangulo int main(int argc, char *argv[]) {


• Leer a, b, c; cout<<"lado a: ";
int a;
• s<-(a+b+c)*.5; cin>>a;
• A<-RAIZ(s*(s-a)*(s-b)*(s-c)); cout<<"lado b: ";
• Escribir "Area: ", A; int b;
cin>>b;
• FinProceso cout<<"lado c: ";
int c;
cin>>c;
float s;
s=0.5*(a+b+c);
float area;
area=pow((s*(s-a)*(s-b)*(s-c)),0.5);
cout<<"area del Triangulo= "<<area;
return 0;
}
Inicio

D. Entrada: Leer

Ejercicio 2 (E. secuencial)


•Radio
•Altura
r, h
Leer
r, h
D. Salida:
 Superficie pi  3.14 pi  3.14
del cono
circulart S  pi * r * raiz(r*r+h*h) + pi * r *r
Proceso:
S  pi * r * raiz(r*r+h*h) + pi * r *r
Escribir
S
A  πr r 2  h 2  πr 2
Escribir
S

fin
Ejercicio 2 (E. secuencial)*
• Pseudocódigo #include <iostream>
#include <cmath>
#include <cstdlib>
• Inicio using namespace std;
• Leer (r,h)
• pi  3.14 int main(int argc, char *argv[]) {
• S  pi * r * raiz(r*r+h*h) const float pi=3.14;
+ pi * r *r system("cls");
• Escribir (S) cout<<"radio: ";
int r;
cin>>r;
cout<<"altura: ";
int h;
cin>>h;
float s;
s=pi * r * pow((r*r+h*h),0.5) + pi * r *r;
cout<<"area= "<<s;
return 0;
}
2. Estructura Selectivas

• Se utiliza para tomar decisiones lógicas son llamadas


también: estructuras de decisión o alternativas
• Evalúan una condición y en función del resultado se
realiza una opción u otra.
• Pueden ser:
– Simples
– Dobles
– Múltiples
2. Estructura Selectivas
• 2.1 Simple ( si – entonces / if - then)
– Ejecuta una determinada acción cuando se cumple una
determinada condición.

Pseudocódigo

condición F Si <condición> entonces


<acciones>
Condición Fin_si
V V F .

<acciones>  Si <condición> entonces


acciones <acción 1>
<acción 2>
<acción 3>
Fin_si
2. Estructura Selectivas
• 2.1Simple ( si – entonces / if - then)

Pseudocódigo Pascal C/C++

Si <condición> entonces if <condición> then if (condición) {


<acciones> sentencias sentencias
Fin_si Fin_si }
2. Estructura Selectivas
• 2.2 Doble (si–entonces-sino/if-then-else)
– Permite elegir entre dos alternativas posibles, en función del
cumplimento o no de una determinada condición.

Pseudocódigo
--------------------------------
condición
V F Si <condición> entonces
<acción S1>
Si_no
Acción S1 Acción S2
<acción S2>
Fin_si
--------------------------------
Condición if <condición> then
V F . <acción S1>
else
<acción s1> <acción s2> <acción S2>
endif
Ejercicio (E. Selectiva)

• Ingresar los tres ángulos


de un triangulo y el lado
A. Luego calcular los
otros dos lados usando
la ley de los senos.
• Crear un algoritmo,
diagrama de flujo,
diagrama N-S,
Pseudocódigo y
programa en c++ que
resuelva este problema,
Proceso:
1. Leer los tres ángulos (alf, bet, gam)
Datos de Entrada: 2. Establecer pi a 3.1415927
Ejercicio 1 (E. selectiva)
• Alfa: alf
• Beta: bet
3. Convertimos los ángulos a radianes
• alfa  (pi*alf)/180
• Gamma: gam, • beta  (pi*bet)/180
• Lado A :a • gamma  (pi*gam)/180
4. establecemos la variable s a (s  alf + bet + gam)
Datos de Salida: 5. Si s suma 180 entonces es un triángulo y
• Lado b: b • leemos el lado A
• Lado C: c • Calculamos b (sin(beta)*a)/sin(alfa)
• Calculamos c  (sin(gamma)*a)/sin(alfa)
• Mostrar b, c
6. De lo contrario mostrar: los ángulos deben sumar 180
Inicio

Leer alf, bet, gam

Ejercicio 1 (E. selectiva)


pi  3.1415927
alfa  (pi*alf)/180
beta  (pi*bef)/180
gamma (pi*gam)/180
Leer al, be, g
pi  3.1415927
alfa  (pi*alf)/180
s alf + bet + gamm beta  (pi*bet)/180
gamma  (pi*gam)/180
s  alf + be t+ gam
No Mostrar: Los
s = 180? angulos deben s=180?
sumar 180 Si No
Leer a Mostrar: los ángulos
Si deben sumar 180
b(sin(beta)*a)/sin(alfa)
Leer a c(sin(gamma)*a)/sin(alfa)

b(sin(beta)*a)/sin(alfa)
c(sin(gamma)*a)/sin(alfa) Mostrar b, c

Mostrar b, c

Fin
Ejercicio 1 (E. selectiva)*
• Pseudocódigo float pi = 3.1415927;
cout<<"alfa: ";
float alf;
Inicio cin>>alf;
cout<<"beta: ";
Leer alf, bet, gam float bet;
cin>>bet;
pi  3.1415927 cout<<"gamma: ";
alfa  (pi*al)/180 float gam;
cin>>gam;
beta  (pi*be)/180 float alfa, gamma, beta;
alfa = (pi*alf)/180;
gamma  (pi*g)/180 beta = (pi*bet)/180;
gamma = (pi*gam)/180;
s  al + be + g float s;
Si (s=180) entonces s = alf+bet+gam;
cout<<s;
Leer a float a,b,c;
if(s==180) {
b  (sin(beta)*a)/sin(alfa) cout<<"lado A: ";
c  (sin(gamma)*a)/sin(alfa) cin>>a;
b = (sin(beta)*a)/sin(alfa);
Mostrar b, c c = (sin(gamma)*a)/sin(alfa);
cout<<"los otros lados del triangulo son: "<<b<<"
Si_no y "<<c<<endl;
}
Mostrar: los angulos deben sumar 180 else {
cout<<"los angulos deben sumar 180";
Fin_si }
Fin

¿Qué pasaría si me pide leer cualquiera de los tres lados?


Ejercicio 2 (E. Selectiva)

• La empresa telefónica del


Perú ofrece a sus clientes
de telefonía móvil un
descuento del 10%
cuando el monto supera a
70 $ americanos. Mostrar
el total, IGV y sub total.
• Se pide crear un
algoritmo, diagrama de
flujo, diagrama N-S,
Pseudocódigo y programa
en c++ que resuelva este
problema, teniendo en
cuenta que los resultados
deben mostrarse en soles
dada la cotización actual.
Inicio

D. Entrada: Leer
 Cot. dólar Monto, cotdolar
 monto a pagar
D. Salida:
Ejercicio 2 (E.V selectiva)
 IGV
Monto>=70?
F
 Subtotal
 Total
Proceso: Total  monto * 0.9 * cotdolar Total  monto * cotdolar
si monto<70 entonces
presentar resultados y
terminar
caso contrario subtotal  total / 1.19
calcular descuento
recalcular montos
presentar resultados IGV  total - subtotal
Fin_si
Escribir
Total. Subtotal, IGV

fin
Leer Pseudocódigo

Ejercicio 2 (E. selectiva)


Monto, cotdolar

Monto>=70?
Inicio
V F . Leer (monto, cotdolar)
Total  monto * Total  monto *
Si monto >= 70 entonces
0.9 * cotdolar cotdolar total=monto *0.9*cotdolar
subtotal  total / 1.19
si_no
total=monto*cotdolar
IGV  total - subtotal Fin_si
subtotal  total /1.19
Escribir IGV  total – subtotal
Total. Subtotal, IGV escribir (total, subtotal, IGV)
Fin
¿Cómo funciona?
2. Estructura Selectivas
• 2.3 Múltiple (según_sea caso de/case)
– Evalúa una expresión que podrá tomar n valores distintos(1, 2, 3, 4, …, n)
– Según 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 n posibles

1
condición
2 3 n

Acción S1 Acción S2 Acción S3 … Acción Sn

Acción S31

Acción S32
2. Estructura Selectivas
2.3 Múltiple (según_sea caso de/case)

Condición Condición

n=1 2 3 … n otros

S1
S2
S1 S2 S3 Sn Sx S3

Sn Sx
2. Estructura Selectivas
2.3 Múltiple (según_sea caso de/case)
Pseudocódigo Sentencia switch (C, C++, java, C#)
-------------------------------- --------------------------------
case expresion of Switch (expresion) {
[e1]: accion S1 case valor1:
[e2]: accion S2 sentencia1;
… sentencia2;
[en]: accion S2 …
otherwise break;
accion Sx case valor2:
End_case sentencia1
------------------------------- sentencia2
case expresion of …
[e1]: accion S1 break;
[e2]: accion S2 …
… default:
[en]: accion S2 sentencia1
else sentencia2
accion Sx …
End_case }
Solución al problema
Algoritmo Pseudocódigo
• Datos de entrada
– ec: estado civil
• Datos de salida
– Mensaje (Soltero, Casado,
Viudo, Divorciado, Sin
especificar)
• Proceso
– Según sea el valor de ec (‘s’,
‘c’, ‘v’, ‘d’, otro cualquiera)
mostrar el mensaje descrito
en los datos de salida
inicio
Diagrama de Flujo
Leer (ec)

Solución al problema
¿estado civil?
s c v d otro

“sin
“soltero” “casado” “viudo” “divorciado” especificar”

fin
PREGUNTAS
Preguntas de repaso

• ¿Qué tipos de estructuras de


control conoce?
• ¿Cómo podemos clasificar a
las estructuras selectivas?
• ¿En qué se diferencian las
estructuras selectivas
estudiadas?
• ¿Qué operadores, tipo de
expresiones hasta ahora nos
han ayudado a resolver los
problemas estudiados?
• ¿Si tuviera que resolver un
problema en donde una
variable puede tomar
múltiples valores qué
estructura usaría?
 APLICACIÓN
Ejercicios

1. Convertir grados Centígrados a Fahrenheit a partir de la siguiente


fórmula °F= 1.8 °C + 32
2. Determinar el valor de la hipotenusa de un triángulo rectángulo
aplicando el teorema de Pitágoras, el perímetro y el área que representa
conociendo solamente el valor de sus catetos.
3. Determinar el mayor valor de 5 números ingresados por teclado
4. Un año bisiesto es aquel que tiene 366 días. Mediante un decreto del
papa Gregorio XIII, dado en 1582, se reforma el calendario Juliano que
nos regía, para que pasen a considerarse bisiestos aquellos años
múltiplos de 4, pero no los múltiplos de 100, excepto los múltiplos de
400. Escriba un algoritmo que diga si un año es o no bisiesto.
5. Dado un número que varíe en el rango [1,12] mostrar el nombre del mes
al que representa e indicar el número de días de éste.
6. Escribir un programa que pida el ingreso de dos números y a
continuación un operador (+, -,*, /). El programa debe de calcular el
resultado de la operación seleccionada.
Ejercicios Propuestos

– Dada una cantidad monetaria cualquiera, expresarla en


billetes de 20 y 10 soles y en monedas de 5, 2, 1, 0.5, 0.2, y
0.1 céntimos.
• Ejemplo 98.80
– billetes de 20: 4
– billetes de 10: 1
– monedas de 5: 1
– monedas de 2: 1
– monedas de 1: 1
– monedas de 0.5: 1
– monedas de 0.2: 1
– monedas de 0.1: 1
Ejercicios Propuestos

• En una empresa de ventas de cosméticos se desea calcular las ganancias


netas de las empleadas cuyo pago se hace de la manera siguiente:
– Por cada producto vendido hay una comisión que será ingresada por teclado.
– Si los productos vendidos superan las 200 unidades, la cantidad que supera
tendrá una comisión equivalente a 1.5 de la comisión normal.
– Cada empleado estará sujeto a los descuentos, los cuales variarán en función
del total recibido:
• Si el total <= 800: libre de impuestos
• Los siguientes 800 soles al 6%
• El resto al 10%
• Se pide crear un algoritmo, diagrama de flujo, diagrama N-S, Pseudocódigo
y programa en c++ que resuelva este problema, teniendo en cuenta que
los resultados deben mostrarse en soles dada la cotización actual.
Ejercicios Propuestos
• La Universidad Nacional de Cajamarca para el
proceso de admisión 2007-I ha propuesto que
el costo de inscripción sea de 200 nuevos soles, Colegio
variando este de acuerdo a la tabla mostrada. Lugar de
• La cantidad que aparece en la tabla deberá de nacimiento
ser agregada a los S/. 200 de la inscripción. Nacio Parti
Además todos los alumnos deben de comprar nal cular
su carpeta de inscripción (S/. 40)
• Si el alumno es hijo de un trabajador
universitario, no abonará los soles de Prov.
0 30
inscripción. Cajamarca
• Se pide elaborar un programa que solicite al
alumno: el tipo de colegio, ubicación del
mismo y si es hijo de trabajador universitario; Otra Provincia 20 50
luego con la información solicitada, calcular el
monto a pagar
Otro
100 150
Departamento

Potrebbero piacerti anche