CASE-OF-ELSE en Pascal

Esta forma es muy útil cuando se tiene que elegir entre más de dos opciones, por lo que le llamaremos forma de selección múltiple.

La siguiente figura representa la selección múltiple.

Su formato es:

case <selector> of
  constante.1 :
                  begin <instrucciones>;
                  end;

     constante.2 :
                  begin <instrucciones> ;
                  end;
     .....................
     .....................  constante.N :
                  begin <instrucciones> ;
                  end  else begin <instrucciones> ;
                  end;
end; { FIN DE CASE }

Dependiendo del valor que tenga la expresión selector, se ejecutarán las instrucciones etiquetadas por constante.

Aquí también los bloques de instrucciones pueden ser reemplazados por instrucciones simples.

Conviene tener presente que no debe escribirse punto y coma antes de la palabra else.

Reglas:

  1. La expresión <selector> se evalúa y se compara con las constantes;las constantes son listas de uno o más posibles valores de <selector>separados por comas. Ejecutadas la(s) <instrucciones>, el control se pasa a la primera instrucción a continuación de end (fin de case).
  2. La cláusula else es opcional.
  3. Si el valor de <selector> no está comprendido en ninguna lista de constantes y no existe la cláusula else, no sucede nada y sigue el flujo del programa; si existe la cláusula else se ejecutan la(s) <instrucciones> a continuación de la cláusula else.
  4. El selector debe ser un tipo ordinal ( integer, char, boolean o enumerado). Los números reales no pueden ser utilizados ya que no son ordinales. Los valores ordinales de los límites inferiores y superiores deben de estar dentro del rango -32768 a 32767. Por consiguiente, los tipos stringlongintword no son válidos.
  5. Todas las constantes case deben ser únicas y de un tipo ordinal compatible con el tipo del selector.
  6. Cada sentencia, excepto la última, deben ir seguidas del punto y coma.

Ejemplo:

Program Tecla;
{El siguiente programa lee un carácter del teclado y despliega un mensaje en pantalla si es letra o  número o carácter especial}Uses Crt;
Var caracter:  char;
begin Write('Escribe un caracter : ');
  caracter:=ReadKey;WriteLn;
  case caracter of '0'..'9'         :  WriteLn('Es un número');
      'a'..'z','A'..'Z':  WriteLn('Es una letra')
    else WriteLn('Es un caracter especial')
  end;
  ReadKey