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';
}

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

anterior

índice

próxima


HOME || MAPA DO SITE || CURSOS || TUTORIAIS || LINKS || FORUM || CONTATO