Resumo da Aula 6

Sumário

O operador ?:

O operador ?: é uma forma abreviada de expressar um tipo muito usual de instruções alternativas.

1.1  Sintaxe

condição ? expressão_caso_verdadeira : expressão_caso_falsa

1.2  Exemplo

int x;

// ...

int z = 0 < x ? x : -x;

i.e., z é inicializada com o valor absoluto (módulo) de x.

Nota:  Se a condição for verdadeira a segunda expressão não chega a ser calculada e vice-versa.

A instrução switch

2.1  Sintaxe

switch(expressão_de_controlo) {
  case valor_1:
    // ... instruções.
    break;
  case valor_2:
    // ... instruções.
    break;

  ...

  default:
    // ... instruções.
}

2.2  Exemplo

int dígito;
cin >> dígito;

switch(dígito) {
  case 0:
    cout << "zero";
    break;
  case 1:
    cout << "um";
    break;
  case 2:
    cout << "dois";
    break;
  case 3:
    cout << "três";
    break;
  case 4:
    cout << "quatro";
    break;
  case 5:
    cout << "cinco";
    break;
  case 6:
    cout << "seis";
    break;
  case 7:
    cout << "sete";
    break;
  case 8:
    cout << "oito";
    break;
  case 9:
    cout << "nove";
    break;
}

Importante:  A instrução switch não permite a especificação de gamas de valores nem de desigualdades.  Construções como case 1..10: ou case < 10: são inválidas.  Assim, é possível usar como expressão de controlo do switch apenas expressões de um dos tipos inteiros ou de um tipo enumerado (a ver em aulas posteriores), devendo os valores colocados nos case respectivos ser do mesmo tipo.

Importante:  Cada caso corresponde a um ponto de entrada no bloco de instruções do switch.  Se se eliminarem os break e o valor introduzido pelo utilizador for 7, o exemplo escreve no ecrã

seteoitonove

Coloque sempre as instruções break!  São elas que terminam abruptamente a execução do bloco de instruções do switch, levando ao resultado pretendido, que é que as instruções em cada caso sejam alternativas.

Pode usar um caso de nome default: para capturar todos os casos não previstos pelos casos "normais" (case valor:).