Manejo de If-else
Problema 01
Disee un algoritmo que determine si un visitante a un museo es mayor de edad o
menor de edad.
Solucin V01:
Esta solucin se ha resuelto con dos if, lo cual es lenta ya que existen dos evaluaciones
entero edad
leer edad
if(edad>=18)
imprimir mayor de edad
if(edad<18)
imprimir menor de edad
Solucin V02:
Esta solucin solo se ha resuelto con un if, lo cual es rpida ya que existe una evaluacin
entero edad
leer edad
if(edad>=18)
imprimir mayor de edad
else
imprimir menor de edad
Problema 02
Una institucin benfica recibe anualmente una donacin proveniente de Europa y lo
reparte entre un centro de salud, un comedor de nios y una parte lo invierte en la bolsa
de acuerdo a lo siguiente:
Si el monto de la donacin es de $10000 o ms: 30% se destina al centro de
salud, 50% al comedor de nios y el resto se invierte en la bolsa.
Si el monto de la donacin es menor que $10000: 25% se destina al centro de
salud, 60% al comedor de nios y el resto se invierte en la bolsa.
La institucin desea saber cunto de dinero destinar a cada rubro anualmente.
Solucin:
real donacin, salud, comedor, bolsa
leer donacin
if(donacin >= 10000){
salud = 0.30 * donacin
comedor = 0.50 * donacin
bolsa = 0.20 * donacion
}else{
salud = 0.25 * donacin
comedor = 0.60 * donacin
bolsa = 0.15 * donacion
}
imprimir salud, comedor, bolsa
Manejo de If-else-if
Problema 01:
Disee un programa que determine la categora de un estudiante en base a su promedio
ponderado de acuerdo a la siguiente tabla:
Promedio Categora
Promedio Categora
17 A
14 pero < 17 B
12 pero < 14 C
< 12 D
Solucin V01:
Esta solucin es lenta, ya que consume memoria porque se evala todas las sentencias if
entero nota
carcter categoria
leer nota
if(nota>=17){
categora=A
}
if(nota>=14 && nota<17){
categora=B
}
if(nota>=12 && nota<14){
categora=C
}
if(nota <12){
categora=D
}
imprimir categora
Solucin V02:
Esta solucin es rpida, ya que consume menor memoria porque se evala solo algunos
sentencias if. Adems, se ha recorrido el intervalo de manera descendente a la nota
entero nota
carcter categoria
leer nota
if(nota>=17){
categora=A
}
else if(nota>=14){
categora=B
}
else if (nota>=12){
categora=C
}
else{
categora=D
}
imprimir categora
Solucin V03:
Esta solucin es rpida, ya que consume menor memoria porque se evala solo algunos
sentencias if. Adems, se ha recorrido el intervalo de manera ascendente a la nota
entero nota
carcter categoria
leer nota
if(nota<=12){
categora=D
}
else if(nota<14){
categora=C
}
else if (nota<12){
categora=B
}
else{
categora=A
}
imprimir categora
Problema 02:
Disear un programa que lea la temperatura promedio de un da e imprima el tipo de
clima correspondiente de acuerdo a la siguiente tabla:
Temperatura Clima
10 Fro
>10 pero 20 Nublado
>20 pero 30 Caluroso
> 30 Trpico
real temperatura
leer temperatura
if(temperatura<=10){
impirmir frio;
}else if(temperatura<=20){
impirmir nublado;
}
}else if(temperatura<=30){
impirmir caluroso;
}else{
impirmir tropico;
}
Problema 03:
Un supermercado vende aceite en botellas de 1 litro a los precios por litro dados
en la siguiente tabla:
Aceite Precio por litro
Primor S/. 5.99
Girasol S/. 5.50
Cil S/.4.50
Cocinero S/. 4.70
Como oferta, el supermercado ofrece un porcentaje de descuento sobre el
importe de la compra de acuerdo a la siguiente tabla:
Cantidad de litros Descuento
10 12.5%
7 pero < 10 10.0%
4 pero < 7 7.5%
<4 5.0%
Disee un algoritmo que determine el importe de la compra, el importe del
descuento y el importe a pagar por la compra de cierta cantidad de litros de una
misma marca de aceite.
Solucin:
entero cantidad, cdigo
real icompra, idescuento, ipagar
leer cantidad, cdigo
//importe de compra
if(cdigo ==0){
icompra = 5.99* cantidad
}
else if(cdigo ==1){
icompra = 5.50* cantidad
}
else if(cdigo ==2){
icompra = 4.50* cantidad
}
else if(cdigo ==3){
icompra = 4.70* cantidad
}
//importe de descuento
if(cantidad >=10){
idescuento = 0.125* icompra
}
else if(cantidad >=7){
idescuento = 0.10* icompra
}
else if(cantidad >=4){
idescuento = 0.075* icompra
}
else{
idescuento = 0.05* icompra
}
//importe a pagar
Ipagar = icompra idescuento
imprimir icompra, idescuento, ipagar
Problema 04:
Determine que imprime el siguiente fragmento de programa para los siguientes
casos: a). x igual a 1, b). x igual a 2, c). x igual a 7 y d). x igual a 5
if(x == 1){
txtS.append("aaaa\n");
x = x + 1;
}
if(x == 2){
txtS.append("bbbb\n");
x = x + 2;
}
If(x >= 8)
txtS.append("cccc\n");
else if(x >= 6)
txtS.append("dddd\n");
else
txtS.append("eeee\n");
txtS.append("ffff");
a). Qu pasa si x igual a 1:
aaaa
bbbb
eeee
ffff
b). Qu pasa si x igual a 2:
bbbb
eeee
ffff
c). Qu pasa si x igual a 7:
dddd
ffff
d). Qu pasa si x igual a 5:
eeee
ffff
Problema 05:
Explique y corrija los errores de sintaxis de los siguientes fragmentos de
programa.
a. if(a > 20)
x = 1;
y = 2;
else if(a > 15)
x = 2;
y = 3;
else{
x = 3;
y = 4;
}
Correccin: cada bloque de sentencia debera tener las llaves
if(a > 20) {
x = 1;
y = 2;
}else if(a > 15) {
x = 2;
y = 3;
} else{
x = 3;
y = 4;
}
b.
if(x%3 == 0){
a = 0;
else if(x%2 == 1)
a = 1;
else
a = 2;
}
Correccin: cada bloque de sentencia debera tener las llaves
if(x%3 == 0){
a = 0;
} else if(x%2 == 1) {
a = 1;
} else{
a = 2;
}