Sign in Join
Wiki copytemporary

Revision 1 of 2, by Bart on 1-24-2020. The page as it is now.

Case/es

Case abre una sentencia "case". La sentencia "case" compara el valor de una expresión ordinal con cada uno de los selectores que contiene, pudiendo tratarse de selectores de tipo constante, un subrango, o una lista de ellos separados por comas. El campo del selector se encuentra separado del campo de acción por [[Colon] | dos puntos ":"].

La sentencia "case" incluye las palabras reservadas Of y End . algunas veces Else, también.

pascal

 case place of
   1: ShowMessage('Medalla de oro');
   2: ShowMessage('Medalla de plata');
   3: ShowMessage('Medalla de bronce'); 
   else ShowMessage('Mejor suerte la siguiente vez'); 
 end;

QueEsCaracter

pascal

 function QueEsCaracter( c:char ):string; { recibe un parámetro "char" o carácter
                                       { y retorna un "string" o cadena }
 var
   s : string;
 begin
   s := '';
   case c of
     '0' .. '9' : s := 'digito (0-9)';
     'a' .. 'z' : s := 'letras minúsculas(a-z)';
     'A' .. 'Z' : s := 'letras mayúsculas (A-Z)';
     '+' , '-'  : s := 'signo (+ o -)';
   end;
   result := s;
 end;

Variante Record

La palabra reservada Case se utiliza también en la declaración de los Registros variantes. Un registro variante se conoce también cómo "unión etiquetada".

pascal

  type
      
   Escala_Kelvin = 223 .. 323;
   Escala_Celsius = -50 .. 50;
    
   Escala_Temperatura   =  ( celsius, kelvin ) ;
   Temperatura   =   record
    case  escala   :   Escala_Temperatura   of
     celsius : (valor_celcius : Escala_Celsius);
     kelvin : (valor_kelvin : Escala_Kelvin);
   end;

Usando Sets (conjuntos)

Si te gustan los conjuntos con Sets, este ejemplo es muy simple:

pascal
type
  medallas = (Oro, Plata, Bronce);  // en caso que quieras que Oro inicie en 1, ponlo así (Oro=1, ...pero
 {[ ... ]}
const
  SMedallas: array [medallas] of string[6] = ('Oro', 'Plata', 'Bronce'); // en [medallas], debes cambiarlo a [Oro..Bronce] ;)

var
  lugar: integer;  /// lugar inicia en 0;
  M: medallas;
 {[ ... ]}
  M := medallas(lugar);
  case M of
      Oro:    ShowMessage('Ganaste la de ' + SMedallas[M]);
      Plata:  ShowMessage('Ganaste la de ' + SMedallas[M]);
      Bronce: ShowMessage('Ganaste la de ' + SMedallas[M]);
  else
      ShowMessage('Mejor suerte la próxima! :)'); 
  end;

Declaro que este código es implementación propia no sacada de ningún libro, por tanto creo tener derecho a poner por lo menos un punto para commentarios a edgarrod71@gmail.com.

Otro ejemplo sin el arreglo SMedallas...

pascal
type
  medallas = (Oro, Plata, Bronce);
 {[ ... ]}
var
  lugar: integer;  /// lugar inicia en 0;
  M: medalla;
  S: string;
 {[ ... ]}
  M := medalla(lugar);
  case M of
      Oro:    writeStr(S, M);
      Plata:  writeStr(S, M);
      Bronce: writeStr(S, M);
  else
      S := 'Mejor suerte la próxima! ;)'; 
  end;
  ShowMessage(S);

Leer más


From the Free Pascal wiki, page "Case/es", as it stood on 2020-01-24 after a change by Bart, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.