Está en la página 1de 29

ESTRUCTURAS DE DECISION SIMPLE

Y MULTIPLES

ING. CARLOS MORENO PAREDES


Estructuras de Decisión

Las estructuras de
decisión comparan una
variable contra otro(s)
valor(es), para que, en
base al resultado de esta
comparación, se siga un
curso de acción dentro
del programa.
Se usa una sentencia if para especificar qué bloque de código
se ejecuta.
Un bloque el código puede contener cero o más sentencias.
Qué bloque de código se ejecuta depende de resultado de la
evaluación de una condición de prueba, denominada
expresión booleana.
Un sentencia if en un programa que tiene el siguiente
formato general:
if ( <expresion booleana> )
<bloque then>
else
<bloque else>
< // menor que
<= // menor que o igual a
== // igual a
!= // distinto de
> // mayor que
>= // mayor que o igual a
3 <= 5 //true
6 != 8 //true
5 == 4 //false
6 + 4 > 7 //true
4/5 + 8 == 8.8 //false
4.0/5 + 8 == 8.8 //true
43%5/3 +12/3/2 < 5 //true
Expresión Booleana
Bloque then

if (puntuacionPrueba < 6.0)


cout<<“No ha aprobado“;
else
cout<<“Ha aprobado”;
Bloque else
F o false
V o true

puntuacionPrueba < 6.0

Ha aprobado No ha aprobado
Sentencias
compuestas
if (puntuacionPrueba < 6.0)
{
cout<<“No ha aprobado“;
cout<<“Inténtelo otra vez“;
}
else
{
cout<<“Ha aprobado“;
cout<<“Siga trabajando”;
}
if (<expresion booleana>) {
}
else {
Estilo 1
}

if (<expresion booleana>)
{
}
Estilo 2
else
{
}
1. Las llaves izquierda y derecha son necesarias para rodear
a las sentencias si el bloque then o el bloque else contienen
múltiples sentencias.
2. Las llaves no son necesarias si el bloque then o el bloque
else contienen una única sentencia.
3. No se necesita un punto y coma después de la llave
derecha.
Estructuras de Decisión

Decisión Simple
Es la toma de decisiones más sencilla se ejecutan
instrucciones si se cumple una condición.

Sintáxis: Puesto que se ejecuta una


If Condición Then evaluación lógica , la
condición tiene que aportar un
Instrucciones valor booleano de manera que
End if habrá necesariamente una
comparación.
ESTRUCTURAS LÓGICAS DE DECISION MULTIPLE

Estructura Lógica de Decisión Múltiple (SI Anidados)

Definición:
Una estructura de decisión múltiple “SI Anidados” permite alterar el flujo
secuencial de una solución ejecutando un conjunto de pasos que dependen del
resultado de evaluar diferentes condiciones lógicas dentro de estructuras de decisión
simple o doble.

PSEUDOCODIGO EXPLICACIÓN:

SI (condición1) ENTONCES En el pseudocódigo mostrado, se


instrucciones1… puede apreciar un ejemplo de una
SINO estructura múltiple “SI Anidados”.
SI (condición2) ENTONCES
FORMATO EN Observe como se combinan
instrucciones2…
PSEUDOCODIGO SINO estructuras de decisión simple y
SI (condición3) ENTONCES estructuras de decisión doble.
instrucciones3… Tenga presente que para formar
FINSI una estructura múltiple “SI
FINSI Anidados” puede utilizar
FINSI cualquier combinación de
estructuras de decisión simple y
doble.
ESTRUCTURAS LÓGICAS DE DECISION MULTIPLE

Estructura Lógica de Decisión Múltiple (SI Anidados)

FORMATO EN C++
JAVA

OBSERVACIÓN:
if (condición1) {
sentencias1...
} else { El presente código desarrollado
if (condición2) { en C++ es la traducción del
sentencias2... pseudocódigo de la diapositiva
} else { anterior.
if (condición3) {
sentencias3…
}
}
}
ESTRUCTURAS LÓGICAS DE DECISION MULTIPLE

Problema 1: Calcular el área de un rectángulo conociendo su


base y altura. Si el área es menor que 100, se deberá
visualizar el mensaje “rectángulo pequeño”; si el área es
mayor o igual a 100 y menor que 1000, se visualizará el
mensaje “rectángulo mediano”; y si el área es mayor o igual
que 1000, el mensaje será “rectángulo grande”.
ESTRUCTURAS LÓGICAS DE DECISION MULTIPLE

ENTRADA: INICIO
base, altura
NUMERO base, altura, area
SALIDA: TEXTO mensaje
area, mensaje LEER base, altura
area = base * altura

SI (area < 100)


ENTONCES
mensaje = “ rectángulo pequeño ”
SINO
SI (area >= 1000)
ENTONCES
mensaje = “ rectángulo grande ”
SINO
mensaje = “ rectángulo mediano ”
FINSI
FINSI
ESCRIBIR area, mensaje

FIN
ESTRUCTURAS LÓGICAS DE DECISION MULTIPLE

Problema 2: Leer el sueldo de un trabajador y calcule


su aumento por incremento del costo de vida de
acuerdo a la siguiente tabla:

Tipo Monto
Sueldo < 2000 20%
2000 < =Sueldo < =3000 13%
Sueldo > 3000 9%
ESTRUCTURAS LÓGICAS DE DECISION MULTIPLE

ENTRADA: sueldo
SALIDA: nuevoSueldo

INICIO

NUMERO sueldo, nuevoSueldo

LEER sueldo

SI (sueldo < 2000)


ENTONCES
nuevoSueldo = sueldo * 1.2
SINO
SI (sueldo > 3000)
ENTONCES
nuevoSueldo = sueldo * 1.09
SINO
nuevosueldo = sueldo * 1.13
FINSI

FINSI

ESCRIBIR nuevoSueldo

FIN
ESTRUCTURAS LÓGICAS DE DECISION MULTIPLE

Problema 3: Determinar si un número es divisor de


otro número; Utilice la expresión
(num1 RESTO num2 > 0)
donde “num1” y “num2” son los dos números.
ESTRUCTURAS LÓGICAS DE DECISION MULTIPLE

ENTRADA: num1, num2


SALIDA: mensaje

INICIO
NUMERO num1, num2
TEXTO mensaje
LEER num1, num2

SI (num1 > = num2)


ENTONCES
SI (num1 RESTO num2 = 0)
ENTONCES
mensaje = “El segundo número es divisor del primer número”
SINO
mensaje = “El segundo número no es divisor del primer número”
FINSI
SINO
SI (num2 RESTO num1= 0)
ENTONCES
mensaje = “El primer número es divisor del segundo número”
SINO
mensaje = “El primer número no es divisor del segundo número”
FINSI
FINSI
ESCRIBIR mensaje

FIN
ESTRUCTURAS LÓGICAS DE DECISION MULTIPLE

Problema 5: Diseñe una solución en C++ y Diagrama de flujo que permita ingresar y convertir
una cantidad en metros a sus equivalentes en centímetros, pulgadas, pies y yardas. Considere la
siguiente información:
1 metro = 100 cm.
1 pulgada = 2.54 cm.
1 pie = 12 pulgadas.
1 yarda = 3 pies.

Problema 6: Elabore una solución en C++ que ingrese un número entero e indique las siguientes
descripciones sobre el número ingresado:
-Si es positivo o negativo.
-Si es par o impar.
-Si es múltiplo de 3 o no.
-Si es menor que 500 o no.
(
Problema 7: Elabore una solución en C++ Calcular y mostrar el costo total que representa un
paciente para un hospital de acuerdo al tipo de enfermedad, según los datos de la tabla.
Adicionalmente, debe considerar que los pacientes de sexo femenino menores de 12 años
implican un costo adicional de 13%.
Enfermedad Tipo Costo diario por
paciente
1 122
2 234
3 345
4 587
1. Identifique las sentencias if inválidas
a. if(a < b) then c . if(a < b)
x = y; x = y;
else else {
x= z; x= z;
}
b. if ( a < b ) d. if ( a < b ) {
else x = y; x = y; } else
x = z;
2. Exprese las siguientes sentencias if-then usando if-then-else.
a. if ( a < b ) x = y;
b. if ( a < b ) {}
c. if ( a < b ) x = y;
if ( a >= b ) x = z;
Tres operadores booleanos son AND, OR y NOT.
En Java, los símbolos &&, ||, y ! representan los operadores
AND, OR y NOT respectivamente.
Operadores booleanos y su
significado.
A B A&&B A||B !A
F F F F V
F V F V V
V F F V F
V V V V F
V = verdadero, F = falso
(2 == (5-3)) || !(3 < 2) && (27%4 == 3)
(2 == (2) ) || !( F ) && ( 3 == 3)
V || !( F ) && V
V || V && V
V || V
V

4 < 7 && !(6 > 3 || 5 < 9)


V && !( V || V )
V && ! V
V && F
F
La sentencia switch permite elegir entre varias alternativas.
Sintaxis
switch (<expresión>){
case <constante>:[case <constante>:]<sentencias>;break;
...
[default:<sentencias>;break;]
} caso a
Acción del
caso a
break;

Acción del
caso b caso b
break;

Acción del
caso z caso z
break;

Acción por
omisión
El siguiente fragmento de código imprime un letrero si un
número es primo y mayor que cero y menor que 10, otro
letrero si es no primo y mayor 1ue cero y menor que 10 y otro
letrero si es menor que 1 o mayor que 10.

switch (num){
case 1:case 2:case 3:case 5:case 7:
cout<<“primo, >0 y <10”;break;
case 4:case 6:case 8:case 9:
cout<<“No primo, >0 y <10”;break;
default: cout<<“<1 o >10”;
}
Escriba una sentencia switch que para desplegar un
mensaje con el día de la semana dada una variable dia con
valores de 0 a 6.
switch (dia){
case 0:cout<<“Domingo”; break;
case 1:cout<<“Lunes”; break;
case 2:cout<<“Martes”;break;
case 3:
case 4:
case 5:
case 6:
default:cout<<“día incorrecto”;
}
2. Escriba un a sentencia switch para desplegar el letrero “día
habil” si una variable diaSemana vale de 1 a 5, desplegar
“sabado” si vale 6 y “domingo” si vale 0.

switch (dia){
case 0:System.out.println(“Domingo”); break;
case 1:case 2:case 3:case 4:case 5:
cout<<“día hábil”; break;
case 6:cout<<“Sabado”; break;
default: cout“día incorrecto”;
}
Escriba un sentencia switch para calcular el pago de horas extra a un trabajador.
Si las horas son entre semana se le pagará el doble por hora extra, si es el sábado el triple
y si es domingo el cuádruple.
Suponga las variables horas, para las horas, dia para el día de la semana, pagoPorHora
para el pago por hora normal y pagoTotal para el pago total.

switch (dia){
case 0:pagoTotal = 4*pagoPorHora*horas; break;
case 1:case 2:case 3:case 4:case 5:
pagoTotal = 2*pagoPorHora*horas; break;
case 6:pagoTotal = 3*pagoPorHora*horas;
}
if(dia == 0)
pagoTotal = 4*pagoPorHora*horas;
if(dia == 1 || dia == 2 || dia==3 || dia == 4 || dia == 5)
pagoTotal = 2*pagoPorHora*horas;
if(dia == 6)
pagoTotal = 3*pagoPorHora*horas;