Programação
 › Algoritmo  › C/C++  › Java
Web
 › HTML/XHTML  › JavaScript  › PHP
Sistema Operacional
 › Comandos de DOS  › Windows  › Linux  › Mac/BSD
Office
 › Word / Writer  › Excel / Calc
Áreas do Site
 › Download  › Fórum  › Blog
Recomendamos
Computadores e Informática em Lisboa
TI Expert » Programação » C/C++ » Switch, Case e Default

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

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!\n\n";
            reiniciar ();
    }
}
Faça o Download deste Código

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.

Creative Commons License
Autor: Denys William Xavier
Este artigo está sob Licença Creative Commons.

Faça o download da versão em PDF Indique nosso site Gostou?
Indique nosso site!
Este artigo foi
lido 292076 vezes
Bookmark e Compartilhe

Páginas Relacionadas

Enquete
O Google Chrome OS irá desbancar o Microsoft Windows 7?
» ProgramaçãoAlgorítmo | C/C++ | Java

» WebHTML/XHTML | JavaScript | PHP

» Sistema OperacionalComandos de DOS | Windows | Linux | Mac/BSD

» OfficeWord/Wirter | Excel/Calc

» Áreas do SiteDownloads | Fórum | Blog