Estructura En_Caso
Esta estructura sirve para evaluar múltiples valores para una variable. Pero dado a que estamos trabando con una sintaxis diseñada por el profesor, hay algunas consideraciones de las que me gustaría hablar, ya que su sintaxis no se ajusta por completo a cómo funciona esta estructura en la mayoría de lenguajes
El En_Caso
típico
Esta sería una sintaxis más real.
En_Caso (<variable>) Sea;
Caso(<valor 1>);
// Instrucciones para el valor 1
Caso(<valor 2>);
// Instrucciones para el valor 2
Caso(<valor 3>);
// Instrucciones para el valor 3
...
Caso(<valor n>);
// Instrucciones para el valor n
Otro_Caso
// Instrucciones por defecto
// Se ejecuta si el valor de la variable no coincide con ninguno de valores anteriores
Fin_Caso
Puesto en un ejemplo, sería así:
var a: Entero;
a = 3;
En_Caso (a) Sea;
Caso(5);
Mostrar << "a es un cinco";
Caso(3);
Mostrar << "a es un tres";
Caso(8);
Mostrar << "a es un ocho";
Otro_Caso
Mostrar << "No entiendo qué es a";
Fin_Caso
El En_Caso
exótico
Y esta es la sintaxis que manejaremos:
En_Caso (<condicion>) Sea;
Caso(<comparacion 1>);
// Instrucciones para la comparacion 1
Caso(<comparacion 2>);
// Instrucciones para la comparacion 2
Caso(<comparacion 3>);
// Instrucciones para la comparacion 3
...
Caso(<comparacion n>);
// Instrucciones para la comparacion n
Otro_Caso
// Instrucciones por defecto
// Se ejecuta si ninguna de las comparaciones anteriores es verdadera
Fin_Caso
La cual parece hecha con la intención de combinar las estructuras condicionales con la del En_Caso
. Esto queda más claro en el ejemplo:
var a: Entero;
a = 8;
// Dicho sea de paso, <condicion> debe ser verdadera para ejecutar el `En_Caso`
En_Caso (a > 0) Sea;
Caso(a = 5);
Mostrar << "a es un cinco";
Caso(a = 3);
Mostrar << "a es un tres";
Caso(a = 8);
Mostrar << "a es un ocho";
Otro_Caso
Mostrar << "No entiendo qué es a";
Fin_Caso
En conclusión…
Esto sigue siendo pseudo código. La sintaxis puedes ajustarla cómo necesites si te la creas tú mismo. Sin embargo considero importante dejar este tema claro debido a que me generó mucha confusión en su momento y no quisiera que a otros les pase.
Dados exóticos
Recordemos el ejercicio de los Dados.
Se necesita un algoritmo que solicite los numeros de tres dados y muestre un mensaje dependiendo de la cantidad de 6 obtenidos:
- 6 en los tres dados: “Excelente”
- 6 en dos dados: “Muy bien”
- 6 en un solo dado: “Regular”
- Ningun 6: “Pesimo”
Esto solo debe realizarse con datos previamente validados. En caso de haber datos invalidos, notificar al usuario y finalizar el programa
Algoritmo Armemos_un casino_y_hagamonos_ricos
Inicio
var dado1, dado2, dado3: Entero;
Mostrar << "Ingrese el dado 1";
Leer >> dado1;
Mostrar << "Ingrese el dado 2";
Leer >> dado2;
Mostrar << "Ingrese el dado 3";
Leer >> dado3;
En_Caso (dado1 > 0) AND (dado2 > 0) AND (dado3 > 0) Sea;
Caso (dado1 = 6) AND (dado2 = 6) AND (dado3 = 6);
Mostrar << "Excelente";
Caso (dado1 = 6 AND dado2 = 6) OR (dado1 = 6 AND dado3 = 6) OR (dado2 = 6 AND dado3 = 6);
Mostrar << "Muy bien";
Caso (dado1 = 6) OR (dado2 = 6) OR (dado3 = 6);
Mostrar << "Regular";
Otro_Caso
Mostrar << "Pésimo";
Fin_Caso
Fin