Tema 18. Estructura de decisión múltiple.

J. Pablo Reymon

2023-10-09

  • facebook logo
  • linkedIn logo
  • whatsapp logo
  • X logo
« Anterior
Siguiente »

Definición de una estructura de decisión múltiple.

La decisión múltiple o estructura selectiva se emplea cuando el programa no puede ejecutar una bifurcación, debido a que se tienen más de dos opciones para resolver un problema.

En lugar de ser denominados como decisión, se llamará selector con el cual se delimitarán las opciones (llamadas casos, case) para que ejecuten las instrucciones específicas. Es importante que, para cada caso, se debe explicar la condición (o valor) para que el programa tome esa opción. Para que, al momento de cumplir con una condición se detenga el programa y no evalúe el resto de las condiciones, se debe declarar un parámetro de ruptura o break.

El pseudocódigo de una estructura de decisión múltiple es el siguiente:

Algoritmo <Decision multiple>
 	Variable type IDENTIFICADOR //o constante
 	Variable-N type IDENTIFICADOR-N //o constante
 	Segun
   		Caso valor1: 	Instruccion-1
                		Instruccion-n1
                		Romper
                		FinCaso
   		Caso valork: 	Instruccion-k1
                		Instruccion-nk
                		Romper
                		FinCaso
 		EnOtroCaso:  	InstruccionIOC-1
                 		InstruccionIOC-n
                 		Romper
                 		FinCaso
  	FinSegun  
FinAlgoritmo
Figura 1. Diagrama de flujo de una estructura de decisión múltiple.

 

Ejemplo 1. Categorías de descuento.

Planteamiento del problema:

Una tienda mayorista requiere de un programa que le indique qué tipo de descuento se le otorga a cierta gama de productos, mediante un código de 3 dígitos. Elabore el algoritmo, que permite consultar la categoría de descuentos considerando las siguientes posibilidades, en caso de que no se encuentre mostrar en pantalla “No aplica”:
2014 – 5% de descuento.
4507 – 10% de descuento.
8911 – 15% de descuento.
6549 – 20% de descuento.

Descripción narrada:

Algoritmo <Categoría de descuento>
1.	Leer el código introducido (code).
2.	Según sea el caso mostrar la información en pantalla.
a.	2014 – “5% de descuento”.
b.	4507 – “10% de descuento”.
c.	8911 – “15% de descuento”.
d.	6549 – “20% de descuento”.
e.	Si no corresponde, mostrar “No aplica”.
FinAlgoritmo

Pseudocódigo:

Algoritmo <Categoría de descuento>
	Variable Integer code;
	Imprimir(“Ingrese el código del producto”); 
	Leer(code);
	Segun (code)
		Caso 2014: Imprimir(“5% de descuento”);
			Romper
		FinCaso
		Caso 4507: Imprimir(“10% de descuento”);
			Romper
		FinCaso
		Caso 8911: Imprimir(“15% de descuento”);
			Romper
		FinCaso
		Caso 6549: Imprimir(“20% de descuento”);
			Romper
		FinCaso
		EnOtroCaso:
			Imprimir(“No aplica”);
		FinCaso
	FinSegun  
FinAlgoritmo

 

Ejemplo 2. Horarios de supervisor.

Planteamiento del problema:

Una fábrica de componentes para refrigeración requiere planificar el rol de encargados para el turno matutino de su producción en 3 días. La lista de jefes es la siguiente:
Lunes – “Javier González”
Miércoles – “Ximena Reyes”
Viernes – “Erick Martínez”
Considerando el resto de los días cómo “No laborable” para dicha producción de componentes. Elabore un programa que permita consultar dicha lista según la información proporcionada.

Descripción narrada:

Algoritmo <Horario de supervisor>
1.	Leer el día introducido por el usuario (day).
2.	Según sea el caso mostrar la información en pantalla.
a.	Lunes – “Javier González”
b.	Miercoles – “Ximena Reyes”
c.	Viernes – “Erick Martínez”
d.	Si no corresponde, mostrar “No laborable”.
FinAlgoritmo

Pseudocódigo:

Algoritmo <Horario de supervisor>
	Variable String day;
	Imprimir(“Ingrese día a laborar:”); 
	Leer(day);
	Segun (day)
		Caso Lunes: Imprimir(“Javier González”);
			Romper
		FinCaso
		Caso Miercoles: Imprimir(“Ximena Reyes”);
			Romper
		FinCaso
		Caso Viernes: Imprimir(“Erick Martínez”);
			Romper
		EnOtroCaso:
			Imprimir(“No laborable”);
		FinCaso
	FinSegun  
FinAlgoritmo

 

Ejemplo 3. Planeación de la producción.

Planteamiento del problema:

Una fábrica de bebidas gaseosas requiere priorizar la orden de proceso de producción de tres productos estrella, cuyos códigos son:
-    ST78-A12: Refresco de cola.
-    FL89-M52: Refresco sabor toronja.
-    WT01-A07: Agua mineralizada.
Se debe diseñar un algoritmo que permita conocer si la orden esta activa o no, para ello se debe designar una variable llamada “order”, si el valor es verdadero desplegara un análisis correspondiente, de lo contrario indicara “Esta orden ya se ha finalizado”. Para el análisis se deben puede consultar cualquiera de los tres parámetros “request”: S, para el estado de aprobación de la orden; C, para la cantidad de unidades a producir y T para el tiempo planeado a producir, si se ingresará otro carácter indicar “No hay parámetros disponibles”. Para cada producto se tiene la siguiente información:
-    ST78-A12: S= aprobada para proceso, C = 12000 unidades, T = 10/11/2023.
-    FL89-M52: S= aprobada para proceso C = 6890 unidades, T = 12/11/2023.
-    WT01-A07:S = pendiente de aprobación C = 8600 unidades, T = 20/11/2023. 
Elabore el pseudocódigo y la descripción narrada que ayude a resolver dicha problemática.

Descripción narrada:

Algoritmo <Planeación de la producción>
1.	Leer el código del producto (code).
2.	Leer el estado de la orden (order).
3.	Leer los parámetros adicionales (request).
4.	Si la orden es falsa, imprimir “Esta orden se ha finalizado”.
5.	En cambio, si es verdadera según sea el caso:
	a.	ST78-A12 según sea el caso mostrar:
		i.	S = “Aprobada para proceso”.
		ii.	C = “12000 unidades”.
		iii.	T = “10/11/2023”.
		iv.	Si no aplica, mostrar “No hay parámetros disponibles”.
	b.	FL89-M52 según sea el caso mostrar:
		i.	S = “Aprobada para proceso”.
		ii.	C = “6890 unidades”.
		iii.	T = “12/11/2023”.
		iv.	Si no aplica, mostrar “No hay parámetros disponibles”.
	c.	WT01-A07 según sea el caso mostrar:
		i.	S = “Pendiente de aprobación”.
		ii.	C = “8600 unidades”.
		iii.	T = “20/11/2023”.
		iv.	Si no aplica, mostrar “No hay parámetros disponibles”.
	d.	Si no se aplica, mostrar “Producto no encontrado.
FinAlgoritmo

Pseudocódigo:

Algoritmo <Planeación de producción>
	Variable String code, order;
	Variable Character request;
	Imprimir(“Ingrese el código del producto:”); 
	Leer(code);
	Imprimir(“Ingrese el estado de la orden:”); 
	Leer(order);
	Imprimir(“Ingrese el parámetro a consultar:”); 
	Leer(request);
	Si (order = false)
		Imprimir(“Esta orden ha finalizado”);
	SiNo
		Segun (code)
			Caso ST78-A12:
				Segun(request)
					Caso S: imprimir(“Aprobada para proceso”)
					Romper
					FinCaso

					
					Caso C: imprimir(“12000 unidades”)
					Romper
					FinCaso

					
					Caso T: imprimir(“10/11/2023”)
					Romper
					FinCaso

					
					EnOtroCaso: imprimir(“No hay parámetros disponibles”)
					FinCaso
				FinSegun
			Romper
			FinCaso

			
			Caso FL89-M52:
				Segun(request)
					Caso S: imprimir(“Aprobada para proceso”)
					Romper
					FinCaso

					
					Caso C: imprimir(“6890 unidades”)
					Romper
					FinCaso

					
					Caso T: imprimir(“12/11/2023”)
					Romper
					FinCaso

					
					EnOtroCaso: imprimir(“No hay parámetros disponibles”)
				FinCaso
				FinSegun

			
			Romper
			FinCaso

			
			Caso WT01-A07:
				Segun(request)
					Caso S: imprimir(“Pendiente de aprobación”)
					Romper
					FinCaso

					
					Caso C: imprimir(“8600 unidades”)
					Romper
					FinCaso

					
					Caso T: imprimir(“20/11/2023”)
					Romper
					FinCaso

					
					EnOtroCaso: imprimir(“No hay parámetros disponibles”)
					FinCaso
				FinSegun

			
			Romper
			FinCaso

			
			EnOtroCaso: imprimir(“Producto no encontrado”)
			FinCaso
		FinSegun
	FinSi
FinAlgoritmo

 

Ejemplo 4. Costo total de un producto.

Planteamiento del problema:

Elabore un algoritmo que permita calcular el IVA, el descuento y la cantidad total al comprar un producto en línea, si las categorías posibles están definidas a continuación:
-    E (electrónicos): 10% de descuento, $200 cargo de envío.
-    T (telefonía móvil): 20% de descuento, $100 cargo de envío.
-    M (mueblería): 25% de descuento, $400 cargo de envío.
-    Si no aplica: $250 cargo de envío.
Considere el IVA de 16% sobre el precio del producto.

Descripción narrada:

Algoritmo <Costo total>
1.	Leer el precio del producto (q).
2.	Leer el tipo de producto (p)
3.	Según sea el tipo de producto.
a.	E: descuento = 10%, cargo = $200, calcular IVA.
b.	T: descuento = 20%, cargo = $100, calcular IVA.
c.	M: descuento = 25%, cargo = $400, calcular IVA.
d.	Si no aplica, entonces: descuento = 0%, cargo = $250, calcular IVA.
4.	Calcular el descuento total (t_desc).
5.	Calcular le precio total a pagar (total).
FinAlgoritmo

Pseudocódigo:

Algoritmo <Costo total>
	Variable Real q, descuento, iva, cargo, t_desc, total;
	Variable Character p;
	Imprimir(“Ingrese precio del producto: ”); 
	Leer(q);
	Imprimir(“”Ingrese el tipo de producto: );
	Leer(p)
	Segun (p)
		Caso E:
			descuento = 0.10
			cargo = 200
			Romper
		FinCaso
		Caso T:
			descuento = 0.20
			cargo = 100
			Romper
		FinCaso
		Caso M:
			descuento = 0.25
			cargo = 400
			Romper
		FinCaso
	
		EnOtroCaso:
			descuento = 0
			cargo = 250
		FinCaso
	FinSegun
	iva = q * 0.16;
	t_desc = q * descuento;  
	total = q – t_desc + iva + cargo;

	
	Imprimir(“El IVA es de: “, iva);
	Imprimir(“El descuento total es: “, t_desc);
	Imprimir(“El precio a pagar es: “, total);

FinAlgoritmo
Sobre el artículo

Texto creado bajo la licencia de Raiko EngineLink. Queda estrictamente prohibida la replicación de este y todos los contenidos creados fuera de esta plataforma. ©, Todos los derechos reservados. Descubre cómo hacemos esto.

manage_search