Tema 3.2.5

Cuando se ejecuta una sentencia Case, el valor del selector, que es una variable y puede ser cualquier tipo escalar excepto Real, se usa para determinar cuál, si la hubiera de las, sentencias del Case se ejecuta. Las constantes asociadas con la sentencia deben de ser del mismo tipo que la variable selector

La sentencia CASE puede incluir una sentencia ELSE, esto se usa para filtrar opciones no deseadas en el programa. Ejemplo: Ahora miremos la misma calculadora de la sentencia IF - THEN - ELSE Pero con una sentencia CASE. program operaciones_basicas; uses crt; {La unidad Crt (CRT.TPU , implementa una gama de poderosas rutinas para el control de los modos de pantalla, c¢digos de teclas extendidas, colores, ventanas y sonidos.} var numero1,numero2,resultado : real; operador,tecla : char; begin clrscr;{(Clear Screen)Esta función limpia la pantalla y posiciona el cursor en la esquina superior izquierda de la pantalla} {Inicialización de variables} numero1:=0; numero2:=0; resultado:=0; {Impresión de t¡tulos} writeln(‘Operaciones Básicas’); write(‘Numero 1: ‘); readln(numero1);{Se lee el primer número} writeln(‘Digite operacion +,-,*,/ : ‘); operador:= readkey;{Se lee el operador} write(‘Numero 2: ‘); readln(numero2); {Se lee el segundo número} {Mediante una estructura case hacemos evaluación del operador leido y con base en ello la operación respectiva} case operador of ‘+’: resultado:=numero1+numero2; {Suma} ‘-‘: resultado:=numero1-numero2; {Resta} ‘*’: resultado:=numero1*numero2; {Multiplicación} ‘/’: resultado:=numero1/numero2; {División} else {En caso de que se halla presionado una tecla diferente a la de los signos matemáticos} writeln(‘!!Operador invalido!!’);

end; {Final del case}

{Impresión de resultados} writeln(‘Resultado sin formato : ‘,resultado); writeln(‘Resultado sin formato : ‘,resultado:0:2); readln; {Se hace una pausa hasta que se presiona la tecla ENTER} end. {Final del programa}

La sentencia case La sentencia case al igual que las if permite elegir entre diferentes alternativas. Tiene la estructura siguiente:

   case selector of
      lista_constantes1 : sentencia1;
      lista_constantes2 : sentencia2;
              …
      lista constantesN : sentenciaN
      else sentecia_Else
   end;

• Las palabras case, of y end tienen que aparecer siempre. • El selector tiene que ser una constante, una variable, o una expresión, pero su tipo debe ser ordinal. • La palabra else y su correspondiente sentencia es opcional, y en caso de ponerla indica la sentencia que se ejecutará sino coincide el selector con ninguna de las listas de constantes. • La lista de constantes se compone de o uno o más valores constantes. En caso de ser más de uno se separarán por comas. Aunque también existe la posibilidad de especificar un rango de valores como: 0..9 • La forma que tiene de trabajar es la siguiente: o Se mira si el valor del selector aparece en alguna de las listas de constantes o Si aparece, entonces se ejecuta la sentencia correspondiente o Si no aparece y hay una cláusula else entonces se ejecuta la sentencia que la sigue o Si no aparece y no hay else entonces no se hace nada Veamos un ejemplo:

program prueba_CASE;

  var
     Opcion : char;		
     …   
  begin
     …
     readln(Opcion);
     case Opcion of
        ‘1′ : nuevaEntrada;
        ‘2′ : cambiarDatos; 
        ‘3′ : borrarEntrada;
        ‘0′ : salir
        else  writeln(‘Opcion no valida!!’) 
     end;
     …
  end.

En este ejemplo se presenta uno de los usos más típicos de la sentencia case: la creación de un menu de opciones. El código aquí representado podría formar parte de un programa que simulase una agenda de teléfonos. Y con este código lo que hacemos es elegir uno de entre varios procedimientos disponibles, como añadir un nuevo teléfono o borrar uno ya existente.

La estructura switch permite elegir ejecutar diferentes códigos dependiendo de un valor.

switch (valor) {

            case ‘1’: ejecuta esto si valor es 1
                        break;
            case ‘2’: ejecuta esto si valor es 2 
                        break;
            case ‘3’: ejecuta esto si valor es 3
                        break;
            default: ejecuta esto si valor no es ninguno de los anteriores
                        break;
                 };

Cada case puede ejecutar múltiples líneas de código. Todos deben terminan con un break, que indica que debe seguirse la ejecución del programa luego de ejecutar las líneas superiores. La ejecución continúa luego de la estructura switch. El caso default se ejecuta si no hubo coincidencia entre el contenido de valor y los case superiores. Un ejemplo del uso de la estructura switch en C: int hijos; printf(“Ingrese la cantidad de hijos que usted tiene: \n”); scanf(“%d”, &hijos); switch (hijos) {

            case ‘0’: 
                        printf(“No le corresponde asignación familiar por hijo\n”);
                        break;
            case ‘1’:
                        printf(“Le corresponden 50usd de asignación familiar por su único hijo\n”);
                        break;
            case ‘2’:
                        printf(“Le corresponden 75usd de asignación familiar por sus dos hijos\n”);
                        break;
            default:
                        printf(“Le corresponden 100usd de asignación familiar por tener más de dos hijos\n”);
                        break;
                 };

Se define la variable del tipo entero hijos, se le pide al usuario que ingrese el número de hijos que posee y luego entra en acción la estructura switch, actuando de diferentes formas dependiendo del valor de la variable hijos en tiempo de ejecución.


Tema Anterior: 3.2.4 Repetir Hasta
Siguiente Tema: 3.3 Calculo de Caminos a partir de una Representacion Matricial
Regresar al TEMARIO: Matematicas Computacion



Google