Muitos caminhos
Autor: Alexandre Richard | Publicado: 2013-05-11T18:17:00-07:00

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 &nbsp;correspondente == const1
break;

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

case const3:
//aqui vai a expressão &nbsp;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&lt;cstdio&gt;
#include&lt;cstdlib&gt;
#include&lt;iostream&gt;


using namespace std;

int main(int nNumberofArgs, char* pszArgs[])
{
&nbsp; &nbsp; int nOperador1;
&nbsp; &nbsp; int nOperador2;
&nbsp; &nbsp; char cOperador;
&nbsp; &nbsp; cout &lt;&lt; "Entre com o primeiro e o segundo valor\n"
&nbsp; &nbsp; &lt;&lt; "As operacoes permitidas sao: +, -, *, / ou %." &lt;&lt; endl;
&nbsp; &nbsp; cin &gt;&gt; nOperador1 &gt;&gt; cOperador &gt;&gt; nOperador2;
&nbsp; 
&nbsp; &nbsp; cout &lt;&lt; nOperador1 &lt;&lt; " &nbsp;"
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;&lt; cOperador &nbsp;&lt;&lt; " &nbsp;"
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;&lt; nOperador2 &lt;&lt; " = ";
&nbsp; 
&nbsp; &nbsp; switch(cOperador)
&nbsp; &nbsp; {
&nbsp; &nbsp; &nbsp;case'+':
&nbsp; &nbsp; &nbsp;cout &lt;&lt; nOperador1 + nOperador2;
&nbsp; &nbsp; &nbsp;break;
&nbsp; &nbsp; &nbsp;case'-':
&nbsp; &nbsp; &nbsp;cout &lt;&lt; nOperador1 - nOperador2;
&nbsp; &nbsp; &nbsp;break;
&nbsp; &nbsp; &nbsp;case'*':
&nbsp; &nbsp; &nbsp;case'x':
&nbsp; &nbsp; &nbsp;case'X':
&nbsp; &nbsp; &nbsp;cout &lt;&lt; nOperador1 * nOperador2;
&nbsp; &nbsp; &nbsp;break;
&nbsp; &nbsp; &nbsp;case'/':
&nbsp; &nbsp; &nbsp;cout &lt;&lt; nOperador1 / nOperador2;
&nbsp; &nbsp; &nbsp;break;
&nbsp; &nbsp; &nbsp;case'%':
&nbsp; &nbsp; &nbsp;cout &lt;&lt; nOperador1 % nOperador2;
&nbsp; &nbsp; &nbsp;break;
&nbsp; &nbsp; &nbsp;default:
&nbsp; &nbsp; &nbsp;cout &lt;&lt; "Operacao Invalida";
&nbsp; &nbsp; }
&nbsp; &nbsp; cout &lt;&lt; endl;
&nbsp; 
&nbsp; &nbsp; system("PAUSE");
&nbsp; &nbsp; 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&nbsp;símbolos&nbsp;comuns da multiplicação. Do contrário, o comando entraria no default retornando como operação inválida.