Você está na página 1de 3

www.tiexpert.

net

Pg. 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 vrias possibilidades, mas com algumas diferenas importantes. 1a diferena: Os cases no aceitam operadores lgicos. Portanto, no possvel fazer uma comparao. Isso limita o case a apenas valores definidos. 2a diferena: O switch executa seu bloco em cascata. Ou seja, se a varivel indicar para o primeiro case e dentro do switch tiver 5 cases, o switch executar todos os outros 4 cases a no ser que utilizemos o comando para sair do switch. (Nos referimos ao BREAK). Agora, que conhecemos diferenas importantes, vamos ver como proceder com o switch / case. Primeiro o comando SWITCH e entre parnteses a vriavel na qual est guardado o valor que ser avaliado pelo case. Ento, abre-se o bloco de dados. Dentro do bloco de dados colocamos o comando CASE e logo aps um valor terminando a linha com dois pontos (:). Preste ateno no tipo de dado que ser colocado, pois h diferenas entre um dado e outro. Por exemplo: 1 no a mesma coisa que '1' e 'a' no a mesma coisa que 'A'... Ento, estruturado os comando que sero executados pelo case. Estruturadamente, seria isso: SWITCH (varivel){ 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. Adicao\t2.Subtracao\t3.Multiplicacao\t4.Divisao\n\n=>"; cin >> operacao; cin.ignore (); system ("cls"); switch (operacao){ case 1: c=a+b; cout <<a<<" + "<<b<<" = "<<c<<"\n\n"; break; case 2: c=a-b; cout <<a<<" - "<<b<<" = "<<c<<"\n\n"; break; http://www.tiexpert.net/programacao/c/switch-case-default.php

www.tiexpert.net
case 3: c=a*b; cout <<a<<" * "<<b<<" = "<<c<<"\n\n"; break; case 4: c=a/b; cout <<a<<" / "<<b<<" = "<<c<<"\n\n"; break; } system ("pause"); return EXIT_SUCCESS;

Pg. 2 de 3

Perceba que no final de cada case h um break. Porque se no houvesse, o switch continuaria executando at o final.

Default
Default, do ingls padro, o case que ativado caso no tenha achado nenhum case definido. Ou seja, o que aconteceria em ltimo caso. Vamos imaginar o seguinte cenrio: Seu programa pede para que o usurio digite apenas duas opes (S ou N) para reiniciar o programa. Mas, propositalmente ou por engano, o usurio digita uma opo 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 no de acordo com o contexto. Usando o prprio cenrio acima, segue o cdigo. #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 maiscula 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!\n\n"; reiniciar (); } }

http://www.tiexpert.net/programacao/c/switch-case-default.php

www.tiexpert.net

Pg. 3 de 3

Como podemos ver, h dois casos: S para reiniciar ou N para sair. Se por acaso algum digitar algo diferente disso, executa-se o default. Como a linguagem C/C++ case sensitive (diferencia maisculas de minsculas) usamos uma funo para deixar a letra maiscula (toupper da biblioteca ctype - que veremos mais adiante). Agora, no importa o que o usurio digitar, pois o programa est preparado para reagir qualquer entrada de dado.
Autor: Denys William Xavier Este artigo est sob Licena Creative Commons Para ver uma cpia desta licena, 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