Subsecções

18 A sentença break

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:

\includegraphics[scale=0.85]{break}

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.

Exemplo 11:

#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;
}

Exercício 2:

Ler mes e ano e imprimir o numero de dias do mes no ano digitado.


Créditos: Documento produzido pelo Prof. Armando L.N. Delgado (DINF/ET/UFPR), baseado em revisão sobre material de Prof. Carmem Hara e Prof. Wagner Zola (DINF/ET/UFPR).

Esta obra está licenciada com uma Licença Creative Commons Atribuição-NãoComercial-CompartilhaIgual 4.0 Internacional.  Licença Creative Commons

Armando Luiz Nicolini Delgado
2020-10-20