O documento explica a estrutura de seleção switch-case em C/C++. Switch permite executar código com base no valor de uma variável, enquanto case define os valores possíveis. Por padrão, todos os casos são executados a menos que haja um comando break. Default executa se nenhum caso corresponder ao valor.
1. www.tiexpert.net Pág. 1 de 3
Switch e Case
Uma outra forma de estrutura seletiva é o SWITCH. Dentro dos switch há o case (que significa
caso). Ou seja, é quase que um if com várias possibilidades, mas com algumas diferenças
importantes.
1a diferença: Os cases não aceitam operadores lógicos. Portanto, não é possível fazer uma
comparação. Isso limita o case a apenas valores definidos.
2a diferença: O switch executa seu bloco em cascata. Ou seja, se a variável indicar para o
primeiro case e dentro do switch tiver 5 cases, o switch executará todos os outros 4 cases a
não ser que utilizemos o comando para sair do switch. (Nos referimos ao BREAK).
Agora, que conhecemos diferenças importantes, vamos ver como proceder com o switch /
case.
Primeiro o comando SWITCH e entre parênteses a váriavel na qual está guardado o valor que
será avaliado pelo case. Então, abre-se o bloco de dados. Dentro do bloco de dados colocamos
o comando CASE e logo após um valor terminando a linha com dois pontos (:). Preste atenção
no tipo de dado que será colocado, pois há diferenças entre um dado e outro. Por exemplo: 1
não é a mesma coisa que '1' e 'a' não é a mesma coisa que 'A'...
Então, é estruturado os comando que serão executados pelo case.
Estruturadamente, seria isso:
SWITCH (variável){
CASE valor1:
Dados a serem executados
BREAK;
CASE valor2:
Dados a serem executados
BREAK;
}
Vejamos o exemplo abaixo:
#include <iostream>
#include <cstdlib>
using namespace std;
int main (void){
int a, b, c, operacao;
cout <<"Digite o 1o valor: ";
cin >> a;
cin.ignore ();
cout <<"Digite o 2o valor: ";
cin >> b;
cin.ignore ();
cout <<"Que operacao deseja realizar?n
1. Adicaot2.Subtracaot3.Multiplicacaot4.Divisaonn=>";
cin >> operacao;
cin.ignore ();
system ("cls");
switch (operacao){
case 1:
c=a+b;
cout <<a<<" + "<<b<<" = "<<c<<"nn";
break;
case 2:
c=a-b;
cout <<a<<" - "<<b<<" = "<<c<<"nn";
break;
http://www.tiexpert.net/programacao/c/switch-case-default.php
2. www.tiexpert.net Pág. 2 de 3
case 3:
c=a*b;
cout <<a<<" * "<<b<<" = "<<c<<"nn";
break;
case 4:
c=a/b;
cout <<a<<" / "<<b<<" = "<<c<<"nn";
break;
}
system ("pause");
return EXIT_SUCCESS;
}
Perceba que no final de cada case há um break. Porque se não houvesse, o switch continuaria
executando até o final.
Default
Default, do inglês padrão, é o case que é ativado caso não tenha achado nenhum case
definido. Ou seja, é o que aconteceria em último caso. Vamos imaginar o seguinte cenário:
Seu programa pede para que o usuário digite apenas duas opções (S ou N) para reiniciar o
programa. Mas, propositalmente ou por engano, o usuário digita uma opção totalmente
diferente. E agora? O que seu programa deve fazer? É aqui que o default entra. Geralmente o
default é quando é previsto um erro, uma entrada de dado incorreta ou não de acordo com o
contexto.
Usando o próprio cenário acima, segue o código.
#include <iostream>
#include <cstdlib>
#include <ctype.h>
using namespace std;
int reiniciar (void);
int main (void){
reiniciar ();
}
int reiniciar (void){
char opcao;
cout <<"Deseja reiniciar o programa? [S/N]n";
cin >> opcao;
opcao=toupper(opcao); // deixa a letra maiúscula
switch (opcao){
case 'S': //Entre aspas simples porque é um caracter
system ("cls");
main ();
case 'N': //Entre aspas simples porque é um caracter
return EXIT_SUCCESS;
default:
cout <<"aOpcao invalida!nn";
reiniciar ();
}
}
http://www.tiexpert.net/programacao/c/switch-case-default.php
3. www.tiexpert.net Pág. 3 de 3
Como podemos ver, há dois casos: S para reiniciar ou N para sair. Se por acaso alguém digitar
algo diferente disso, executa-se o default. Como a linguagem C/C++ é case sensitive
(diferencia maiúsculas de minúsculas) usamos uma função para deixar a letra maiúscula
(toupper da biblioteca ctype - que veremos mais adiante). Agora, não importa o que o usuário
digitar, pois o programa está preparado para reagir à qualquer entrada de dado.
Autor: Denys William Xavier
Este artigo está sob Licença Creative Commons
Para ver uma cópia desta licença, visite http://creativecommons.org/licenses/by-nc-sa/2.5/br/
ou envie uma carta para Creative Commons, 171 Second Street, Suite 300, San Francisco, California 94105, USA.
http://www.tiexpert.net/programacao/c/switch-case-default.php