2023-10-09
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
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
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
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
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
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.