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 <stdio.h> main(void) { float num1, num2; char op; printf("Entre com numero operador numero:\n"); scanf("%f %c %f", &num1, &op, &num2); switch (op) { case '+': printf(" = %.2f", num1 + num2); break; case '-': printf(" = %.2f", num1 - num2); break; case '*': printf(" = %.2f", num1 * num2); break; case '/': printf(" = %.2f", num1 / num2); break; default: printf(" Operador invalido."); break; } printf("\n"); }
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 <stdio.h> main(void) { float num1, num2; char op; printf("Entre com numero operador numero:\n"); scanf("%f %c %f", &num1, &op, &num2); switch (op) { case '+': printf(" = %.2f", num1 + num2); break; case '-': printf(" = %.2f", num1 - num2); break; case '*': case 'x': case 'X': printf(" = %.2f", num1 * num2); break; case '/': case '\\': printf(" = %.2f", num1 / num2); break; default: printf(" Operador invalido."); break; } printf("\n"); }
/usr/local/lib/tex/inputs///Programas/Exercicio_04-2.c
Armando Luiz Nicolini Delgado