/*O comando switch

 

Existem situações onde a execução do programa deverá avaliar uma opção entre várias alternativas. Uma forma de resolvermos essas situações, seria através de várias estruturas if ... else; outra forma, através do comando switch() ... case.
Em tais situações, o uso do comando switch() ... case é, de longe, o mais apropriado pois o uso de vários if ... else pode tornar o código confuso, sujeito a erros e cansativo de depurar.
O comando switch consiste de um cabeçalho e de um corpo. O cabeçalho é montado com a palavra-chave switch seguida de uma expressão (que pode ser uma constante ou uma variável) entre parênteses:

switch (expressão)

após o parênteses de fechamento, não há ponto e vírgula, seguindo-se imediatamente a abertura do corpo do comando com a chave {.
O corpo do comando consiste de várias opções rotulando a palavra-chave case, bem como os comandos para os quais será desviado o controle do programa. Via de regra, essas ações conterão o comando break, remetendo o processamento do programa para fora do switch (primeira linha de código após o comando).
Sempre que o comando não encontrar uma opção para processar nos case, a opção default, caso exista, será processada; se, porém, nesses casos, a opção default não existir, a execução do programa atravessará o switch sem executar instrução alguma:

 

case valor_x:
faz_isso;
break;

case valor_y:
faz_isto;
break;

case valor_z:
faz_aquilo;
break;

default:

faz_outra_coisa;
faz_isso_também;

 

O exemplo a seguir leva um Edit no Form. O código está voltado a impedir a entrada de caracteres não numéricos no Text do Edit.*/

 

//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"

TForm1 *Form1;
//---------------------------------------------------------------------------
bool virgula = true;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{

  if (virgula == false)
    DecimalSeparator = '\0';

    //if(Edit1->Text.Length() != DecimalSeparator)
    //virgula = true;

 

  switch(Key)
    {
      case '1': Key = '1';

      break;


      case '2': Key = '2';

      break;


      case '3': Key = '3';

      break;


      case '4': Key = '4';

      break;


      case '5': Key = '5';

      break;


      case '6': Key = '6';

      break;


      case '7': Key = '7';

      break;


      case '8': Key = '8';

      break;


      case '9': Key = '9';

      break;


      case '0': Key = '0';

      break;


      case '.': Key = DecimalSeparator; virgula = false;

      break;


      case ',': Key = DecimalSeparator; virgula = false;

      break;


      case  13: Key = 13;

      break;


      case   8: Key = 8;

      break;


      default:  Key = '\0';
    }

}
//---------------------------------------------------------------------------