Professional Documents
Culture Documents
SEMANA02
ESTRUCTURAS DE CONTROL CONDICIONALES/SELECTIVAS
if, if else, if else if, switch
En general, cada vez que aparezca de ahora en adelante la palabra accin podr significar dos cosas: o es
una instruccin terminada en un punto y coma es un conjunto de instrucciones agrupadas por llaves.
CONDICIONAL SIMPLE: if
Cuando se desea evaluar una comparacin y hacer alguna accin slo cuando la comparacin sea verdad.
Ejemplo
if (comparacion)
if ( x > 0)
accin;
imprimir positivo
Si usted coloca punto y coma (;) despus del parntesis, no habr error de sintaxis pero el efecto ser que el if
se anula. Como que no existiera.
Para hacer la comparacin debe utilizar los operadores relacionales que devuelven un valor lgico true si la
comparacin fue verdad y false en caso contrario.
Expresin de
Resultado del
Descripcin
Smbolo
ejemplo
ejemplo
Igualdad
==
2 == 2
true
Desigualdad
!=
2 != 2
false
Menor que
<
2<2
false
Mayor que
>
3>2
true
Menor o igual que
<=
2 <= 2
true
Mayor o igual que
>=
1 >= 2
false
En realidad, es todo un reto hacer correctamente la comparacin. Para ello debe ser capaz de expresar en una
comparacin, el condicional natural que encontrara en los enunciados de los problemas. Por ejemplo, hagamos
la comparacin adecuada para los siguientes condicionales naturales:
1) El numero es negativo:
if( numero < 0)
2) El numero es par y positivo:
if( numero % 2 == 0 && numero > 0)
3) La nota esta entre 0 y 20 inclusive:
if(nota>=0 && nota <=20)
4) La nota no esta entre 0 y20 inclusive:
if( !(nota>=0 && nota<=20) )
5) Del lanzamiento de tres dados, por lo menos uno fue 6:
if(dado1==6 || dado2==6 || dado3==6)
if (nota>=13)
imprimir aprobado
else
imprimir desaprobado
SEMANA02
ESTRUCTURAS DE CONTROL CONDICIONALES/SELECTIVAS
if, if else, if else if, switch
if (comparacion1)
accin de verdad1;
else if (comparacion2)
accin de verdad2;
else if (comparacion3)
accin de verdad3;
else
accin de falsedad;
if ( x < 0 )
imprimir negativo
else if ( x ==0 )
imprimir cero
else
imprimir positivo
CONDICION COMPUESTA:
En cualquier tipo de condicional, la condicin puede ser simple o compuesta. Se dice que una condicin es
simple cuando tiene una sola comparacin (no utiliza operadores lgicos). En cambio, se dice que una
condicin es compuesta cuando tiene ms de una comparacin, para lo cual utilizan necesariamente
operadores lgicos negacin, Y, O.
Ejemplo:
if (comparacion1 && comparacion2 || comparacion3)
accin de verdad;
Los operadores lgicos que permiten evaluar expresiones lgicas compuestas son los siguientes:
Descripcin
Smbolo
Negacin
Y lgico
O lgico
!
&&
||
Expresin de
ejemplo
!(2 == 2)
(2 == 2) && (2 >= 0)
(2 == 2) || (2 != 2)
Resultado del
ejemplo
false
true
true
SEMANA02
ESTRUCTURAS DE CONTROL CONDICIONALES/SELECTIVAS
if, if else, if else if, switch
La orden break hace que la ejecucin salga del switch; de no ponerlo se ejecutarn todas las rdenes hacia
abajo sin importar el valor de los case hasta encontrar un break o la llave de cierre del switch.
PROBLEMA 1:
Dado 4 notas enteras, determine el promedio sin considerar la nota menor.
#include "stdafx.h"
#include <iostream>
#include <conio.h>
void main(){
int n1, n2, n3, n4, nm;
double p;
cout<<Ingrese nota 1: ; cin>> n1;
cout<<Ingrese nota 2: ; cin>> n2;
cout<<Ingrese nota 3: ; cin>> n3;
cout<<Ingrese nota 4: ; cin>> n4;
nm=n1;
if(n2<nm)
nm =n2;
if(n3< nm)
nm =n3;
if(n4< nm)
nm =n4;
p=(n1+n2+n3+n4-nm)/3.0;
cout<<nota menor: <<nm<<endl;
cout<<promedio: << p<<endl;
_getch();
}
PROBLEMA 2:
Encuentre la solucin a una ecuacin de primer grado: ax + b = 0
#include "stdafx.h"
#include <iostream>
#include <conio.h>
void main(){
double a,b,x;
cout<<Ingrese valor de a: ; cin>>a;
cout<<ingrese valor de b: ;cin>> b;
if( a == 0)
cout<<no tiene solucin<<endl;
else{
x = -b/a;
cout<<raz x: << x<<endl;
}
_getch();
}
SEMANA02
ESTRUCTURAS DE CONTROL CONDICIONALES/SELECTIVAS
if, if else, if else if, switch
PROBLEMA 3:
2
Encuentre la solucin a una ecuacin de segundo grado: ax + bx + c =0
#include "stdafx.h"
#include <iostream>
#include <conio.h>
void main(){
double a,b,c,x1,x2,disc, e, r;
int foco=0;
cout<<ingrese valor de a: ; cin>>a;
cout<<ingrese valor de b: ; cin>>b;
cout<<ingrese valor de c: ; cin>>c;
if( a == 0)
cout<< no tiene solucin<<endl;
else{
disc=b*b 4*a*c;
if(disc<0){
foco=1;
disc = abs(disc);
}
if(foco==0){
x1 = (b +sqrt(disc))/(2*a);
x2 = (b sqrt(disc))/(2*a);
cout<<raiz x1: <<x1<<endl;
cout<<raiz x2: <<x2<<endl;
}else{
e = b/(2*a);
r = sqrt(disc)/(2*a);
cout<< raiz x1: <<e<< +<<r<< i <<endl;
cout<< raiz x2: <<e<< -<<r<< i <<endl;
}
}
_getch();
}
PROBLEMA 4:
Una tienda de accesorios de computadoras vende DVDs de diferente marca y cada marca tiene un porcentaje
de descuento como se muestra a continuacin:
MARCA
3M
Imation
Sony
TDK
Princo
DESCUENTO ( % )
10
15
20
25
30
Por la compra de cierta cantidad de una marca en particular se desea saber el importe bruto, el importe del
descuento y el importe que se debe pagar por dicha compra.
PROBLEMA 5:
Para calcular los importe de la boleta de pago de un trabajador considere los siguientes datos de entrada:
nombre, sueldo bsico, estado civil (soltero, casado, viudo, divorciado, otro), nivel (obrero, empleado,
ejecutivo), afiliacin de AFP (si, no). Para el clculo de las bonificaciones considere las siguientes tablas:
Bonificacin por estado civil:
Elaborado por Ing. Julio Vsquez Paragulla
SEMANA02
ESTRUCTURAS DE CONTROL CONDICIONALES/SELECTIVAS
if, if else, if else if, switch
ESTADO CIVIL
Soltero
Casado
Viudo
Divorciado
Otro
% APLICADO AL SUELDO
BASICO
10
15
20
5
0
% APLICADO AL SUELDO
BASICO
20
15
10
% APLICADO AL SUELDO
TOTAL
13
9