Subsecções

8 A construção else-if

Embora ela não seja um tipo diferente de sentença, a seguinte construção é bastante comum para programar decisões entre diversas alternativas:

if ($expressao_{1}$)

$sentenca_{1}$

else if ($expressao_{2}$)

$sentenca_{2}$

else if ($expressao_{3}$)

$sentenca_{3}$

$\vdots$

else if ( $expressao_{n-1}$)

$sentenca_{n-1}$

else

$sentenca_{n}$

As expressões lógicas são avaliadas em ordem, começando com a $expressao_{1}$. Se uma das expressões for verdadeira, a sentença associada será executada. Se nenhuma for verdadeira, então a sentença, $sentenca_n$, do último else será executada como opção default. Se a opção default não for necessária, então a parte

else

$sentenca_{n}$

pode ser removida.

\includegraphics[scale=1.0]{else-if}

Exemplo 9:

O seguinte exemplo mostra um else-if de três opções. O programa lê dois números e diz se eles são iguais ou se o primeiro número é menor ou maior que o segundo.

#include <iostream>
using namespace std;

int main( ){

  int num1, num2;
  
  // obtem 2 numeros do usuario
  cout << "Entre um numero: ";
  cin >> num1;
  cout << "Entre com um outro numero: ";
  cin >> num2;
  
  // mostra a mensagem de comparacao
  if (num1 == num2)
    cout << "Os numeros sao iguais\n";
  else if (num1 < num2)
    cout << "O primeiro numero e menor\n";
  else
    cout << "O primeiro numero e maior\n";
}

No programa acima, se (num1 == num2) for verdadeiro, então os números são iguais. Senão, é verificado se (num1 < num2). Se esta condição for verdadeira, então o primeiro número é menor. Se isso não for verdadeiro, então a única opção restante é que o primeiro número é maior.

Exemplo 10:

Este programa lê um número, um operador e um segundo número e realiza a operação correspondente entre os operandos dados.

#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;
  
  // mostra o resultado da operacao
  if (op == '+')
    cout << " = " << setprecision(2) << num1 + num2;
  else if (op == '-')
    cout << " = " << setprecision(2) << num1 - num2;
  else if (op == '/')
    cout << " = " << setprecision(2) << num1 / num2;
  else if (op == '*')
    cout << " = " << setprecision(2) << num1 * num2;
  else 
    cout << " Operador invalido.";
  cout << endl;
}

Exemplos da execução deste programa:

   Entre com numero operador numero:
   5 * 3.5
    = 17.50

   Entre com numero operador numero:
   10 + 0
    = 10.00

   Entre com numero operador numero:
   10 x 5.0
    Operador invalido.


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