sábado, 11 de maio de 2013

Muitos caminhos

Vamos ver o que o C++ oferece quando o programa precisa decidir entre muitas entradas.
C++ oferece um mecanismo de controle conveniente para selecionar uma série de opções. A declaração switch.

Fluxo e formato da declaração:

switch(expressão)
{
case const1:
//aqui vai a expressão  correspondente == const1
break;

case const2:
//aqui vai a expressão  correspondente == const2
break;

case const3:
//aqui vai a expressão  correspondente == const3
break;

default:
//aqui vai a expressão final
}

Quando encontra a declaração switch, C++ avalia a expressão. Feito isto, ele passa o controle para o comando da expressão do mesmo valor correspondente e continua até encontrar break. O break transfere o controle para } no final da declaração switch.
Se nenhum dos comando combinar, o controle é passado para o comando default por padrão.
O controle default padrão é opcional, mas é uma boa pratica utiliza-lo. #FicaAdica.

Uma declaração switch é diferente de uma série de declarações if. Apenas constantes são permitidas após a palavra chave case, ou expressões que possam ser avaliadas na montagem. Não é possível fornecer uma expressão depois de um comando, pois o valor não é conhecido até o programa ser executado.

Vale lembrar, que o break também é opcional, porém, sem ele, o controle "pula" de um comando para o outro. Seria útil não utilizar a declaração break quando dois ou mais comandos são tratados da mesma maneira.

Para fixar, vamos criar uma calculadora simples implementada com switch.

------------------------------------------------------------------------------------------------------------


#include<cstdio>
#include<cstdlib>
#include<iostream>


using namespace std;

int main(int nNumberofArgs, char* pszArgs[])
{
    int nOperador1;
    int nOperador2;
    char cOperador;
    cout << "Entre com o primeiro e o segundo valor\n"
    << "As operacoes permitidas sao: +, -, *, / ou %." << endl;
    cin >> nOperador1 >> cOperador >> nOperador2;
 
    cout << nOperador1 << "  "
         << cOperador  << "  "
         << nOperador2 << " = ";
 
    switch(cOperador)
    {
     case'+':
     cout << nOperador1 + nOperador2;
     break;
     case'-':
     cout << nOperador1 - nOperador2;
     break;
     case'*':
     case'x':
     case'X':
     cout << nOperador1 * nOperador2;
     break;
     case'/':
     cout << nOperador1 / nOperador2;
     break;
     case'%':
     cout << nOperador1 % nOperador2;
     break;
     default:
     cout << "Operacao Invalida";
    }
    cout << endl;
 
    system("PAUSE");
    return 0;
}
------------------------------------------------------------------------------------------------------------
Perceba que o programa inicia repetindo o que foi digitado. Repetir o que foi digitado é uma boa prática de programação, pois garante ao usuário que ele digitou correto, ou não.

Os comandos: x e X foram incluídos pois são símbolos comuns da multiplicação. Do contrário, o comando entraria no default retornando como operação inválida.

Nenhum comentário:

Postar um comentário