Cassic

Desvio Condicional com "case... of..."

Autor: Tadeu Pereira


  A instrução case... of... é semelhante a if... then... else if... then..., ela procura a condição verdadeira, a diferença básica entre essas duas instruções é que no case... of... a condição a ser analisada não pode ser do tipo string.

  Sintaxe:
  case variável of
   condição_1: {bloco de comandos da condição 1}
   condição_2: {bloco de comandos da condição 2}
   ...
   condição_n: {bloco de comandos da condição n}
  end;

  begin
   { ... comandos iniciais ... }
   case x of
    1:  { ... bloco da condição 1 ... }
    2:  { ... bloco da condição 2 ... }
    ...
    n:  { ... bloco da condição n ... }
   end;
   { ... comandos finais ... }
  end;

  Em um novo projeto insira um SpinEdit(aba Samples), um Button e configure:

Formulário
Propriedade
Valor
Height
151
Width
135

SpinEdit
Propriedade
Valor
Left
26
Name
SEdValor
Top
23
Width
75
Button
Propriedade
Valor
Caption
Conferir
Left
26
Name
BtnConferir
Top
64


Figura 1 – Projeto CaseOf

  No evento OnClick do componente BtnConferir digite o código em negrito:

01
procedure TForm1.BtnConferirClick(Sender: TObject);
02
var
03
  valor: Integer;
04
begin
05
  valor := SEdValor.Value;
06
  case valor of
07
   1: ShowMessage('O valor é igual a 1');
08
   2: ShowMessage('O valor é igual a 2');
09
   3..9: ShowMessage('O valor está entre 3 e 9');
10
   10: ShowMessage('O valor é igual a 10');
11
  end;
12
  ShowMessage('Comandos Finais');
13
end;

  O SpinEdit é uma caixa de texto que só aceita um valor do tipo inteiro, a direita ele tem setas para incrementa ou decrementa o valor atual da propriedade Value.

  A linha 06 informa que a instrução irá avaliar a variável Valor. Caso esse valor seja 1 ele mostra o comando da linha 07, se for 02 mostra o comando da linha 08, mas se o valor estiver entre 3 e 9(incluído-os) ele executará a linha 09, por fim se o valor for 10 a linha 10 será executada.

Observação
  Nesse caso suprimimos o begin e end pois o bloco de comandos possui apenas uma linha, caso o bloco de comando possua mais de uma linha seria necessário usar o begin e end com ponto-e-vírgula.