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';
}
}
//---------------------------------------------------------------------------
|
HOME || MAPA DO SITE || CURSOS || TUTORIAIS || LINKS || FORUM || CONTATO |