Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Definicin:
Una estructura de decisin mltiple SI MLTIPLE permite alterar el flujo
secuencial de una solucin ejecutando un conjunto de pasos dependiendo del valor
de una condicin lgica. Tiene la misma funcionalidad que la estructura CUANDO
pero la diferencia es que en lugar de utilizar una variable se utiliza una condicin
lgica.
Representacin:
Formato para disear algoritmos:
En pseudocdigo:
SI (condicin) ENTONCES
instrucciones
FINSI
SI (condicin) ENTONCES
instrucciones
FINSI
SI (condicin) ENTONCES
instrucciones
FINSI
EXPLICACIN:
Si la condicin resulta verdadera, se
ejecutan las instrucciones que se
encuentran
entre
las
reglas
SIENTONCES y FINSI.
Si la condicin resulta falsa, no se
ejecutan las instrucciones que se
encuentran
entre
las
reglas
SIENTONCES y FINSI.
Esta evaluacin se realiza con cada
una de las estructuras lgicas de
decisin simple.
Pag. - 1 -
Definicin:
Una estructura de decisin mltiple SI ANIDADOS permite alterar el flujo
secuencial de una solucin ejecutando un conjunto de pasos dependiendo del
resultado de varias condiciones lgicas. Generalmente, cuando se tiene un problema
con mltiples condiciones lgicas la mejor opcin ser emplear SI ANIDADOS para la
solucin. Esto fundamentalmente por que la Estructura Lgica de Decisin Mltiple
CUANDO no trabaja con condiciones lgicas sino slo con el valor de una variable
que puede ser de tipo CARACTER o ENTERO.
Este tipo de estructura es til cuando se tiene la necesidad de escoger entre ms de
dos opciones y se presentan mltiples condiciones lgicas.
Representacin:
Formato para disear algoritmos:
En pseudocdigo:
EXPLICACIN:
SI (condicin) ENTONCES
instrucciones
SINO
SI (condicin) ENTONCES
instrucciones
FINSI
FINSI
Pag. - 2 -
En diagrama de flujo:
FALSO
VERDADERO
condicin 1
condicin 2
FALSO
VERDADERO
...
instrucciones
...
...
...
instrucciones
...
...
Figura 03-18
En la figura 03-18 se muestra una estructura de decisin mltiple utilizando diagramas de flujo.
Pag. - 3 -
VERDADERO
FALSO
condicin 1
VERDADERO
FALSO
condicin 2
...
instrucciones
...
...
...
instrucciones
...
...
...
instrucciones
...
...
Figura 03-19
FALSO
VERDADERO
condicin 1
VERDADERO
condicin 2
FALSO
...
instrucciones
...
...
Figura 03-20
Pag. - 4 -
...
instrucciones
...
...
FALSO
VERDADERO
condicin 1
VERDADERO
FALSO
condicin 2
...
instrucciones
...
...
...
instrucciones
...
...
...
instrucciones
...
...
Figura 03-21
VERDADERO
condicin 1
VERDADERO
FALSO
condicin 2
FALSO
...
instrucciones
...
...
Figura 03-22
Pag. - 5 -
...
instrucciones
...
...
FALSO
VERDADERO
condicin 1
VERDADERO
FALSO
FALSO
condicin 2
...
instrucciones
...
...
...
instrucciones
...
...
...
instrucciones
...
...
VERDADERO
condicin 3
...
instrucciones
...
...
Figura 03-23
Pag. - 6 -
VERDADERO
condicin 1
Figura 02 21 instrucciones
FALSO
VERDADERO
condicin 2
FALSO
instrucciones
VERDADERO
condicin 3
instrucciones
FALSO
...
instrucciones
...
...
Figura 03-24
Pag. - 7 -
Problema 016
Etapa 01 - Descripcin del problema.
Enunciado:
Calcular el rea de un rectngulo conociendo su base y altura. Si el rea es menor que 100,
se deber visualizar el mensaje rectngulo pequeo; si el rea es mayor o igual a 100 y
menor que 1000, se visualizar el mensaje rectngulo mediano; y si el rea es mayor o igual
que 1000, el mensaje ser rectngulo grande.
Etapa 02 - Definicin de la solucin.
Resultado deseado:
Datos necesarios:
Procesamiento:
base, altura
area, mensaje
INICIO
REAL base, altura, area
TEXTO mensaje
LEER base, altura
area = base * altura
SI ( area < 100 ) ENTONCES
mensaje = rectngulo pequeo
SINO
SI ( area >= 1000 ) ENTONCES
mensaje = rectngulo grande
SINO
mensaje = rectngulo mediano
FINSI
FINSI
ESCRIBIR area, mensaje
FIN
Pag. - 8 -
En diagrama de flujo:
Algoritmo PrgAreaRectangulo main ( )
INICIO
base, altura
FALSO
VERDADERO
area <100
FALSO
VERDADERO
area >=1000
mensaje
FIN
Pag. - 9 -
using std::cout ;
using std::cin ;
using std::string ;
int main ( ) {
double base, altura, area ;
string mensaje ;
cout << Ingrese la base del rectngulo: ;
cin >> base ;
cout << Ingrese la altura del rectngulo: ;
cin >> altura ;
area = base * altura ;
if ( area < 100 ) {
mensaje = rectngulo pequeo ;
} else {
if ( area >= 1000 ) {
mensaje = rectngulo grande ;
} else {
mensaje = rectngulo mediano ;
}
}
cout << \n ;
cout << El rea es: << area << \n ;
cout << Es un << mensaje << \n\n ;
system ( PAUSE ) ;
return 0 ;
}
Pag. - 10 -
Problema 017
Etapa 01 - Descripcin del problema.
Enunciado:
Leer el sueldo de un trabajador y calcule su aumento por incremento del costo de vida de
acuerdo a la siguiente tabla. Mostrar el nuevo sueldo.
Condicin
sueldo < 2000
2000 < = sueldo < =3000
sueldo > 3000
Aumento
20 %
13 %
9%
Resultado deseado:
Datos necesarios:
Procesamiento:
ENTRADA:
SALIDA:
sueldo
nuevoSueldo
INICIO
REAL 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
Pag. - 11 -
En diagrama de flujo:
Algoritmo PrgAumentoSueldo2 main ( )
INICIO
sueldo
FALSO
VERDADERO
sueldo<2000
FALSO
VERDADERO
sueldo>3000
nuevoSueldo
FIN
Pag. - 12 -
Pag. - 13 -
Problema 018
Etapa 01 - Descripcin del problema.
Enunciado:
Desarrolle una solucin que permita determinar si un nmero (num) es par, impar o nulo.
Muestre un mensaje si el nmero es par, impar o nulo.
Resultado deseado:
Datos necesarios:
Procesamiento:
Pag. - 14 -
En diagrama de flujo:
Algoritmo PrgNumTipo2 main ( )
INICIO
ENTERO num
TEXTO tipo
num
FALSO
VERDADERO
num == 0
VERDADERO
FALSO
num % 2 == 0
tipo
FIN
Pag. - 15 -
#include <iostream>
using namespace::std;
int main ( ) {
int num ;
string tipo ;
cout << Ingrese un nmero: ;
cin >> num ;
if ( num == 0 ) {
tipo = El nmero es nulo ;
} else {
if (num % 2 == 0 ) {
tipo = El nmero es par ;
} else {
tipo = El nmero es impar ;
}
}
cout << tipo << \n\n ;
system ( PAUSE ) ;
return 0 ;
}
Pag. - 16 -
Problema 019
Etapa 01 - Descripcin del problema.
Enunciado:
Determinar si un nmero es divisor de otro nmero.
Utilice la expresin (num1 % num2 == 0) donde num1 y num2 son los dos nmeros.
Resultado deseado:
Datos necesarios:
Procesamiento:
num1, num2
mensaje
INICIO
ENTERO num1, num2
TEXTO mensaje
LEER num1, num2
SI ( num1 >= num2 ) ENTONCES
SI ( num1 % num2 == 0 ) ENTONCES
mensaje = El segundo nmero es divisor del primer nmero
SINO
mensaje = El segundo nmero no es divisor del primer nmero
FINSI
Pag. - 17 -
SINO
SI ( num2 % num1 == 0 ) ENTONCES
mensaje = El primer nmero es divisor del segundo nmero
SINO
mensaje = El primer nmero no es divisor del segundo nmero
FINSI
FINSI
ESCRIBIR mensaje
FIN
Intente disear el algoritmo en diagrama de flujo.
Pag. - 18 -
Problema 020
Etapa 01 - Descripcin del problema.
Enunciado:
Un curso se evala de la siguiente forma: se toma cinco prcticas calificadas, se determina el
promedio de las cuatro notas ms altas y se le da al estudiante una categora que puede ser
A, B, C o D. Segn la tabla mostrada. Mostrar el promedio y la categora del alumno.
Considerar que todas las notas ingresadas estn dentro de los valores vlidos (de 0 a 20).
Rango
Desde 17 a 20
Desde 14 a 16
Desde 10 a 13
Desde 00 a 09
Categora
A
B
C
D
Resultado deseado:
Datos necesarios:
Procesamiento:
INICIO
REAL n1, n2, n3, n4, n5, sumaNotas
REAL notaMenor, promedio
CARACTER categoria =
Pag. - 19 -
Pag. - 20 -
Clase PrgCategoriaAlumno
int main ( ) {
double n1, n2, n3, n4, n5, sumaNotas ;
double notaMenor , promedio ;
char categoria = ;
cout << Ingrese la 1ra. nota: ;
cin >>n1 ;
cout << Ingrese la 2da. nota: ;
cin >>n2 ;
cout << Ingrese la 3ra. nota: ;
cin >>n3 ;
cout << Ingrese la 4ta. nota: ;
cin >>n4;
cout << Ingrese la 5ta. nota: ;
cin >> n5 ;
sumaNotas = n1 + n2 + n3 + n4 + n5 ;
notaMenor = n1 ;
if ( notaMenor > n2 )
notaMenor = n2 ;
if ( notaMenor > n3 )
notaMenor = n3 ;
if ( notaMenor > n4 )
notaMenor = n4 ;
if ( notaMenor > n5 )
notaMenor = n5 ;
promedio = ( sumaNotas notaMenor ) / 4 ;
if ( promedio <= 20 && promedio >= 17 ) {
categoria = A ;
} else {
if (promedio >= 14 ) {
categoria = B ;
} else {
if (promedio >= 10 ) {
categoria = C ;
} else {
categoria = D ;
}
}
}
cout << \n El promedio del alumno es: " << promedio << \n ;
cout << Su categora es: << categoria << \n ;
cout << \n ;
system ( PAUSE ) ;
return 0 ;
}
Pag. - 21 -