Pesquisar no blog:

domingo, 9 de junho de 2013

Estrutura condicional switch / case

Além da estrutura condicional if/else podemos utilizar o switch/case para avaliar condições.
Essa estrutura trabalha com uma variável, que, para cada valor vai gerar um caso (case).
Exemplo:
main()
{
    int op = 1;
    switch(op)
    {
        case 1: printf("Um"); break;
        case 2: printf("Dois"); break;
    }
    getch();
}
Na linha 4 é passada a variável que será avaliada e entre as chaves na linha 6 e 7 vemos 2 casos possíveis.
Caso "op" tenha o valor 1 será impresso "Um", caso "op" tenha o valor 2 será impresso "Dois". Devemos colocar o break ao final de cada caso.
Se "op" estiver com um valor não tratado nos casos nada será executado. Podemos tratar isso colocando o default que é executado se o valor não existe em nenhum dos casos.
main()
{
    int op = 3;
    switch(op)
    {
        case ((1) || (2)): printf("Um ou dois"); break;
        case 0: printf("Zero"); break;
        default: printf("Invalido.");
    }
    getch();
}

Observe que essa estrutura switch/case é muito parecida com o if/else, porém, mais organizado.
Porém, switch/case trata uma única variável, sendo assim, o if/else não é dispensado, devemos analisar qual das duas estruturas deve ser utilizada.d
Observe que neste segundo exemplo ainda foi utilizado na linha 6 o operador lógico OR (||). Caso seja 1 ou 2 será impresso "Um ou dois".

Calculadora de operações básicas com switch / case:


int main()
{
    float a, b, r;
    char op;
    printf("+: soma \t-: subtracao \t/: divisao \t*: multiplicacao\n");
    printf("Digite a operacao: ");
    scanf("%f %c %f", &a, &op, &b);
    switch(op)
    {
        case '+' : r = a + b; break;
        case '-' : r = a - b; break;
        case '*' : r = a * b; break;
        case '/' :
            {
                if(b != 0)
                    r = a / b;
                else
                {
                    printf("#ERRO# DIVISAO POR 0.");
                    return 1;
                }
                break;
            }
    }
    printf("Resultado: %.2f", r);
    getch();
    return 0;
}

Nenhum comentário:

Postar um comentário