Sie sind auf Seite 1von 28

INGENIERIA DE SISTEMAS

Estructuras de control
condicional
Anidamientos y
Condiciones complejas

INGENIERIA DE SISTEMAS

Estructuras de Decisin (Condicin)


Decisin
Decisin Mltiple
Anidada

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

Solucin con ANIDAMIENTO


#include <iostream.h>
#include<conio.h>
int main()
{
float a, b, c;
cout << "teclee 3 Nmeros: ";
cin >> a >> b >> c;
if(a > b)
if(a > c)
cout << a << endl;
else
cout << c << endl;
else
if(b > c)
cout << b << endl;
else
cout << c << endl;
getche();
}

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

6 <= cal < 7

Suficiente

7 <= cal < 8

Bien

8 <= cal < 9

Muy bien

9 <= cal < 10

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

Ejemplo 1: Condiciones compuestas


PROBLEMA: Se desea comparar 3 nmeros ledos desde el teclado,
imprimiendo el mayor de ellos
SOLUCION: Utilizando condiciones compuestas, comparamos el primero
con los dos restantes, si es mayor que los otros dos, imprimimos el
primero, sino, comparamos el segundo con los otros dos, etc.
Nota: Debe usar >= para que se imprima forzosamente un resultado.
falso

falso

verdadero

a>=b && a>=c


verdadero

b>=a && b>=c

verdadero

c>=a && c>=b

mayor
cCmayor

mayor
bBmayor

mayor
aAmayor

INGENIERIA DE SISTEMAS

Solucin con Condiciones compuestas


#include <iostream.h>
#include<conio.h>
int main()
{
float a, b, c;
cout << "teclee 3 nmeros: ";
cin >> a >> b >> c;
if(a >= b && a >= c)
cout << a << endl;
else
if(b >= a && b >= c)
cout << b << endl;
else
if(c >= a && c >= b)
cout << c << endl;
getche();
}

INGENIERIA DE SISTEMAS

Ejemplo 2: Condiciones compuestas


PROBLEMA: Se desea desarrollar un algoritmo
para imprimir un mensaje dependiendo de la
siguiente tabla:
Condicin

Mensaje

cal < 6

Reprobado

6 <= cal < 7

Suficiente

7 <= cal < 8

Bien

8 <= cal < 9

Muy bien

9 <= cal < 10

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;

cout << "teclee el nmero del da: ";


cin >> dia;

(siempre ponga break al


final de cada opcin en
la sentencia switch.)

switch(dia) {

case 1:cout << "Lunes" << endl;break;


case 2:cout << "Martes" << endl;break;
case 3:cout << "Mircoles" << endl;break;

case 4:cout << "Jueves" << endl;break;


case 5:cout << "Viernes" << endl;break;
case 6:cout << "Sabado" << endl;break;
case 7:cout << "Domingo" << endl;break;
default: cout << "da no vlido" << endl;
}
getche();
}

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>

cout <<"\nPersonal Computer Software\n";

void main(){

break;
case 2: // si entrada es 2

int a;

cout <<"\nWeb based Software\n";break;

cout << "\t\tMenu";

case 3: // si entrada es 3

cout <<"\n-----------------------------------";

cout <<"\nScientific Software\n";break;

cout <<"\n1 - Microsoft Word";

case 4: // si entrada es 4

cout <<"\n2 - Yahoo messenger";

cout <<"\nEmbedded Software\n";break;

cout <<"\n3 - AutoCAD";


cout <<"\n4 - Java Games";

default: cout <<"\nEntrada incorrecta\n";

cout <<"\n-----------------------------------";

cout <<"\nIngrese numero de su preferencia: ";

getche();

cin >> a; // leer entrada

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

Adems si el empleado trabaja mas de 150 horas mensuales tiene


una bonificacin del 5 % de sueldo.

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: ";

cin >> categoria;


cout << " Horas trabajadas: ";

cin >> horas;

INGENIERIA DE SISTEMAS

Clculo del sueldo


Se determinar mediante una sentencia switch el pago por
hora en funcin de la categora.
//determinacin del pago por horas
switch(categoria){
case 'a':case 'A':pagoHora = 26.90;break;
case 'b':case 'B':pagoHora = 24.30;break;
case 'c':case 'C':pagoHora = 21.50;break;
}
//calculo del sueldo sin bonificacin
sueldo = horas*pagoHora;
//clculo de bonificacin
if(horas>150)
bonificacion = 0.05*sueldo;
else
bonificacion = 0.0;
//sueldo total
sueldo = sueldo+bonificacion;

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.

Escriba un programa que lea dos nmeros reales y un


smbolo de operacin y realice la operacin aritmtica
seleccionada (+, -, *, /) entre los dos nmeros tecleados.
Utilice la 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.

Sea x01, v1 y a1 la posicin, la velocidad y la aceleracin con que


se mueve el primer vehculo y x02, v2 y a2 la posicin, la velocidad
y la aceleracin en que se mueve el segundo vehculo.

Las ecuaciones de movimiento de cada cuerpo son:

x1 = x01+ v1 t + 0.5a1 t2
x2 = x02 +v2 t + 0.5a2 t2

INGENIERIA DE SISTEMAS

Los tiempos pedidos se encuentran cuando: x1 = x2 o


x01 + v1 t + 0.5a1 t2 = x02 +v2 t + 0.5a2 t2

Simplificando se llega a:
0.5 (a1 a2) t 2 + (v1 v2) t +x01 x02 = 0

Esta es una ecuacin cuadrtica de la forma: a x2 + b x + c = 0


Con a = 0.5(a1 a2) ; b = (v1 v2); c = x01 x02

Cuya solucin es:

b b 2 4ac
x
2a

Esta tiene solucin cuando b2 4 a c > 0

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

Declaracin y lectura de variables


//variables de entrada
float x01,v1,a1,x02,v2,a2;
//coeficientes de la cuadrtica y discriminante
float a,b,c,d;
//tiempos
float t1,t2,pos1,pos2;

//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

Solucin del problema


a = 0.5*(a1-a2); b = v1-v2;
c = x01-x02;
d = b*b - 4*a*c;
if(d>0){
t1 = (-b+sqrt(d))/2/a;
t2 = (-b-sqrt(d))/2/a;
if(t1>0){
pos1 = x01+v1*t1+0.5*a1*t1*t1;
cout << "se encontrarn en "<<t1<<" s en "
<<pos1<<" m"<<endl;
}
if(t2>0){
pos2 = x01+v1*t2+0.5*a1*t2*t2;
cout <<"se encontrarn en "<<t2<<" s en "
<<pos2<<" m"<<endl;
}
}else
cout << "NO se encuentran"<<endl;
getche();
}

INGENIERIA DE SISTEMAS

Sentencia ?:
La sentencia if puede abreviarse mediante el operador ?:
La sintaxis es:

condicin ? operando1 : operando2;


Esta muy relacionado a la sentencia if/else.
El operador regresa el operando1 si la condicin es verdadera y
regresa el operando2 si es falsa.

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;

a>5 ? x=6: x=7;

if(x>8 && x<12)


a = 2*b+c;
else
a = 3*b+c;

(x>8 && x<12)?a=2*b+c:a=3*b+c;

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();
}

Das könnte Ihnen auch gefallen