Difference between revisions of "Case/es"

From Free Pascal wiki
Jump to navigationJump to search
(New page: {{Case}} Case opens a case statement. The case statement compares the value of ordinal expression to each selector, which can be a constant, a subrange, or a list of them separa...)
 
(Use pascal highlighter)
 
(13 intermediate revisions by 5 users not shown)
Line 1: Line 1:
 
{{Case}}
 
{{Case}}
 +
[[category:Español]][[category:Castellano]]
  
Case opens a case statement. The case statement compares the value of ordinal expression to each selector, which can be a [[Const|constant]], a subrange, or a list of them separated by [[Comma|commas]]. Selector field separated from action field by [[Colon]].
+
'''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 [[Const|constante]], un subrango, o una lista de ellos separados por [[Comma|comas]]. El campo del selector se encuentra separado del campo de acción por [[Colon] | dos puntos ":"].
  
The case statement includes [[Reserved word|reserved words]] [[Of]] and [[End]] . Sometimes [[Else]], too.
+
La sentencia "case" incluye [[Reserved word | las palabras reservadas]] [[Of]] y [[End]] . algunas veces [[Else]], también.
  
  
<delphi>
+
<syntaxhighlight lang=pascal>
  
 
  case place of
 
  case place of
   1: ShowMessage('Gold medal');
+
   1: ShowMessage('Medalla de oro');
   2: ShowMessage('Silver medal');
+
   2: ShowMessage('Medalla de plata');
   3: ShowMessage('Bronze medal');  
+
   3: ShowMessage('Medalla de bronce');  
   else ShowMessage('Better luck next time');  
+
   else ShowMessage('Mejor suerte la siguiente vez');  
 
  end;
 
  end;
  
</delphi>
+
</syntaxhighlight>
  
=== WhatIsChar ===
+
=== QueEsCaracter ===
  
<delphi>
+
<syntaxhighlight lang=pascal>
  
  function WhatIsChar( c:char ):string;
+
  function QueEsCaracter( c:char ):string; { recibe un parámetro "char" o carácter
 +
                                      { y retorna un "string" o cadena }
 
  var
 
  var
 
   s : string;
 
   s : string;
Line 27: Line 29:
 
   s := '';
 
   s := '';
 
   case c of
 
   case c of
     '0' .. '9' : s := 'digit (0-9)';
+
     '0' .. '9' : s := 'digito (0-9)';
     'a' .. 'z' : s := 'small letter (a-z)';
+
     'a' .. 'z' : s := 'letras minúsculas(a-z)';
     'A' .. 'Z' : s := 'big letter (A-Z)';
+
     'A' .. 'Z' : s := 'letras mayúsculas (A-Z)';
     '+' , '-'  : s := 'sign (+ or -)';
+
     '+' , '-'  : s := 'signo (+ o -)';
 
   end;
 
   end;
 
   result := s;
 
   result := s;
 
  end;
 
  end;
  
</delphi>
+
</syntaxhighlight>
  
== Variant Record ==
+
== Variante Record ==
  
Case-word is used Variant [[Record]], too. Variant Record also called a tagged union.
+
La palabra reservada '''Case''' se utiliza también en la declaración de los [[Record|Registros variantes]]. Un registro variante se conoce también cómo "unión etiquetada".
  
<delphi>
+
<syntaxhighlight lang=pascal>
  
 
   type
 
   type
 
        
 
        
   ScaleKelvin = 223 .. 323;
+
   Escala_Kelvin = 223 .. 323;
   ScaleCelsius = -50 .. 50;
+
   Escala_Celsius = -50 .. 50;
 
      
 
      
   TemperatureScale   =  ( celcius, kelvin ) ;
+
   Escala_Temperatura   =  ( celsius, kelvin ) ;
   Temperature   =  record
+
   Temperatura   =  record
     case  scale   :  TemperatureScale   of
+
     case  escala   :  Escala_Temperatura   of
     celcius : (celcius_value : ScaleCelsius);
+
     celsius : (valor_celcius : Escala_Celsius);
     kelvin : (kelvin_value : ScaleKelvin);
+
     kelvin : (valor_kelvin : Escala_Kelvin);
 
   end;
 
   end;
  
</delphi>
+
</syntaxhighlight>
  
== Read more ==
+
== Usando Sets (conjuntos) ==
 +
 
 +
Si te gustan los conjuntos con Sets, este ejemplo es muy simple:
 +
<syntaxhighlight lang=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;
 +
</syntaxhighlight>
 +
 
 +
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...
 +
 
 +
<syntaxhighlight lang=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);
 +
</syntaxhighlight>
 +
 
 +
== Leer más ==
  
 
* [http://www.freepascal.org/docs-html/ref/refsu40.html#x110-11700010.2.2 The Case statement]
 
* [http://www.freepascal.org/docs-html/ref/refsu40.html#x110-11700010.2.2 The Case statement]

Latest revision as of 23:22, 24 January 2020

Deutsch (de) English (en) español (es) suomi (fi) français (fr) русский (ru)

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.


 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

 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".

  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:

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...

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