Beruflich Dokumente
Kultur Dokumente
Estructuras de control
condicional
Anidamientos y
Condiciones complejas
INGENIERIA DE SISTEMAS
Si
No
Condicin
Si
Condicin
Case1
Condicin
Condicin
Case2
Si
No
No
Condicin
Case3
No
Otro
Switch
condicin
Si
condicin
entonces
Case1:
Si condicin entonces
Instrucciones
Instrucciones
Case2:
si noInstrucciones
Si condicin entonces
Case3:
Instrucciones
Instrucciones
si no
Otros:
Instrucciones
Instrucciones
Fin
INGENIERIA DE SISTEMAS
Anidamiento
Una sentencia if puede tener en su parte verdadera o falsa
otra sentencia if.
O sea
if(condicin1)
if(condicin2)
if(condicin3)
sentencias;
else
if(condicin2)
if(condicin3)
...
INGENIERIA DE SISTEMAS
Ejemplo 1: Anidamiento
PROBLEMA: Se desea comparar 3 nmeros ledos desde el
teclado, imprimiendo el mayor de ellos.
SOLUCION: Se resuelve comparando el primero con el segundo,
luego si el primero es mayor, se compara el primero con el tercero.
Si el primero no es mayor que el segundo, entonces se compara el
segundo con el tercero.
falso
verdadero
B mayor
b
mayor
b>c
a>b
falso
C mayor
c
mayor
verdadero
falso
C mayor
c
mayor
a>c
verdadero
aA mayor
mayor
INGENIERIA DE SISTEMAS
INGENIERIA DE SISTEMAS
Ejemplo 2: Anidamiento
PROBLEMA: Se desea desarrollar un algoritmo
para imprimir un mensaje dependiendo de la
siguiente tabla:
Condicin
Mensaje
cal < 6
Reprobado
Suficiente
Bien
Muy bien
Excelente
INGENIERIA DE SISTEMAS
#include <iostream.h>
#include <conio.h>
int main()
{
float cal;
cout << "teclee la
calificacin: ";
cin >> cal;
if(cal < 6)
cout << "Reprobado\n";
else if(cal < 7)
cout << "Suficiente\n";
else if(cal < 8)
cout << "Bien\n";
else if(cal < 9)
cout << "Muy bien\n";
else
cout << "Excelente\n";
getche();
}
INGENIERIA DE SISTEMAS
falso
verdadero
verdadero
mayor
cCmayor
mayor
bBmayor
mayor
aAmayor
INGENIERIA DE SISTEMAS
INGENIERIA DE SISTEMAS
Mensaje
cal < 6
Reprobado
Suficiente
Bien
Muy bien
Excelente
INGENIERIA DE SISTEMAS
#include <iostream.h>
#include <conio.h>
int main()
{
float cal;
cout << "teclee la
calificacin: ";
cin >> cal;
if(cal < 6)
cout << "Reprobado\n";
else if(cal >= 6 && cal < 7)
cout << "Suficiente\n";
else if(cal >=7 && cal < 8)
cout << "Bien\n";
else if(cal >=8 && cal < 9)
cout << "Muy bien\n";
else
cout << "Excelente\n";
getche();
}
INGENIERIA DE SISTEMAS
Sentencia switch
La sentencia switch permite elegir entre varias alternativas.
Sintaxis
switch (<expresin>){
case <constante>:[case <constante>:]<sentencias>;break;
...
[default:<sentencias>;break;]
}
caso a
Accin del
caso a
break;
caso b
Accin del
caso b
break;
caso z
Accin del
caso z
break;
Accin por
omisin
INGENIERIA DE SISTEMAS
Ejemplo 1: switch
PROBLEMA: Construya
un algoritmo para leer
un nmero de da (1
luns, 7 domingo)
#include <iostream.h>
#include<conio.h>
int main(){
int dia;
switch(dia) {
INGENIERIA DE SISTEMAS
Ejemplo 2: switch
PROBLEMA: Construya un algoritmo que le
permita mostrar en pantalla un Men con
cuatro opciones para seleccionar.
Disear de acuerdo al modelo presentado.
1 - Microsoft Word";
2 - Yahoo messenger";
3 - AutoCAD";
4 - Java Games";
switch (a){
/* Ejemplo-switch-1 */
case 1: // si entrada es 1
#include <iostream.h>
#include<conio.h>
void main(){
break;
case 2: // si entrada es 2
int a;
case 3: // si entrada es 3
cout <<"\n-----------------------------------";
case 4: // si entrada es 4
cout <<"\n-----------------------------------";
getche();
INGENIERIA DE SISTEMAS
Ejemplo 3: switch
PROBLEMA:
Calcular el sueldo mensual de un empleado que trabaja por horas, el
pago de cada hora trabajada depende de su categora:
Categoria
A
B
C
pago x hora
26.90
24.30
21.50
INGENIERIA DE SISTEMAS
Solucin
Se ingresara el nombre del empleado, seguido de su categora y al
final el nmero de horas trabajadas.
Algoritmo
1. Leer datos
2. Determinar sueldo en base a su categora
3. Determinar monto de bonificacin
4. Imprimir nombre, categora y sueldo total
Variables (entrada)
nombre cadena de caracteres
categoria carcter
horas - entero
Variables (salida)
pagoHora real (float)
bono real (float)
sueldo real (float)
INGENIERIA DE SISTEMAS
Declaracin y lectura
char nombre[7]; //nombre del empleado
char categoria; //categora A, B, C
int horas; //horas trabajadas
float pagoHora, sueldo, bonificacion;
cout << " Ingrese nombre del empleado: ";
cin >> nombre;
cout << " Categora: ";
INGENIERIA DE SISTEMAS
INGENIERIA DE SISTEMAS
Salida de resultados
La salida se presentar en forma tabular
//Salida en forma tabular
cout << "\nnombre\tCateg\tHoras\tPago/Hr\tBoni.\tsueldo\n"
<<nombre<<"\t"<<categoria<<"\t"<<horas<<"\t"<<pagoHora<<
"\t"<<bonificacion<<"\t"<<sueldo<<endl;
INGENIERIA DE SISTEMAS
Tarea
Escriba un programa que lea un valor de temperatura en K,
C o F y la convierta a las otras dos escalas, lea el tipo de
conversin mediante un men y una sentencia switch.
Ejemplo:
Teclear
obtener
3.5 7.8 *
27.3
7.4 16.3 /
0.45399
INGENIERIA DE SISTEMAS
Tarea
Dos vehculos se mueven a diferentes velocidades en un instante
de tiempo t = 0 , con aceleraciones diferentes y se encuentran en
diferentes posiciones. Disee un algoritmo que determine en que
tiempos y posiciones ambos vehculos coinciden.
x1 = x01+ v1 t + 0.5a1 t2
x2 = x02 +v2 t + 0.5a2 t2
INGENIERIA DE SISTEMAS
Simplificando se llega a:
0.5 (a1 a2) t 2 + (v1 v2) t +x01 x02 = 0
b b 2 4ac
x
2a
INGENIERIA DE SISTEMAS
Algoritmo
1. Leer los valores del primer vehculo
2. Leer los valores del segundo vehculo
3. Calcular los coeficientes a, b y c
4. Calcular el valor del discriminante
5. Si el discriminante es mayor o igual a cero:
Calcular los valores de t y guardarlos en t1, t2, pos1 , pos2
si t1>0 imprimir se encontrarn en t1 en pos1
si t2>0 imprimir se encontrarn en t2 en pos2
6. sino
informar que no se encuentran en ningn tiempo
INGENIERIA DE SISTEMAS
//lectura de datos
cout << Ingrese el t1, x01, a1 y v1 del 1er veh: ";
cin >> t1 >> x01 >> a1>>v1;
cout << Ingrese el t2, x02, a2 y v2 del 2do veh: ";
cin >> t2 >> x02 >> a2>>v2;
INGENIERIA DE SISTEMAS
INGENIERIA DE SISTEMAS
Sentencia ?:
La sentencia if puede abreviarse mediante el operador ?:
La sintaxis es:
Ejemplo:
cout << ( cal >= 60 ? Aprobado : Reprobado);
Esta sentencia imprimir Aprobado si cal es mayor o igual a 60 e
imprimir Reprobado si es menor que 60. Note que los parntesis
son necesarios dado que el operador ?: tiene la menor precedencia.
Tambin es vlido:
cal >= 60 ? cout << Aprobado : cout << Reprobado;
INGENIERIA DE SISTEMAS
Ejemplos
Sentencia if
Sentencia ?:
if(a>5) x = 6;else x = 7;
if(a>b)
if(b>c)
x = 5*a+c;
else
x = 6*a+b;
else
x = 8*a+4*b;
(a>b)?(b>c?x=5*a+c:x=6*a+b;):x=8*a+4*b;
INGENIERIA DE SISTEMAS
Ejemplos
#include <iostream.h>
#include<conio.h>
Void main(){
int n;
//numero par con operador ?:
cout << "teclee n:";
cin >> n;
n%2==0?cout << "numero par\n":cout << "numero impar\n";
getche();
}
#include <iostream.h>
#include<conio.h>
Void main(){
int a,b,c,m;
//numero mayor con operador ?:
cout << "teclee a,b,c:";
cin >> a>>b>>c;
a>=b ? a>=c ? cout << a : cout << c:b>=c ? cout << b:cout << c;
a>=b ? a>=c ? m = a : m = c : b>=c ? m = b : m = c;
cout << endl;
cout << m << endl;
getche();
}