O break faz com que todas as sentenças que o seguem dentro da mesma sentença switch sejam ignorados. Ou seja, colocando a sentença break no final de uma sentença case faz com que as sentenças que seguem os cases subsequentes não sejam executadas. Em geral, é este o comportamento desejado quando se usa o switch, e cases sem o break no final são de pouca utilidade. Portanto, o uso de sentenças case sem o break devem ser evitados e quando utilizados devem ser comentados ao lado com algo como /* continua proxima sentenca - sem break */.
Com a sentença break o diagrama de fluxo fica:
Note a similaridade com o diagrama da sentença else-if e a diferença com o diagrama da sentença switch acima.
O próximo programa tem a mesma função de calculadora do programa anterior, porém utilizando a sentença switch.
#include <iostream> using namespace std; int main( ){ float num1, num2; char op; // obtem uma expressao do usuario cout << "Entre com numero operador numero\n"; cin >> num1 >> op >> num2; switch (op) { case '+': cout << " = " << setprecision(2) << num1 + num2; break; case '-': cout << " = " << setprecision(2) << num1 - num2; break; case '*': cout << " = " << setprecision(2) << num1 * num2; break; case '/': cout << " = " << setprecision(2) << num1 / num2; break; default: cout << " Operador invalido."; break; } cout << endl; }
Como mencionado anteriormente, é possível não colocar nenhuma sentença seguindo um case. Isso é útil quando diversas sentenças case (diversas constantes) têm a mesma ação.
Por exemplo, podemos modificar o programa acima para aceitar x e
X para multiplicação e \
para divisão. O programa fica
então:
#include <iostream> using namespace std; int main( ){ float num1, num2; char op; // obtem uma expressao do usuario cout << "Entre com numero operador numero\n"; cin >> num1 >> op >> num2; switch (op) { case '+': cout << " = " << setprecision(2) << num1 + num2; break; case '-': cout << " = " << setprecision(2) << num1 - num2; break; case '*': case 'x': case 'X': cout << " = " << setprecision(2) << num1 * num2; break; case '/': case '\\': cout << " = " << setprecision(2) << num1 / num2; break; default: cout << " Operador invalido."; break; } cout << endl; }