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 <stdio.h>

main(void)
{
  int num1, num2;
  
  /* obtem 2 numeros do usuario */
  printf("Entre um numero: ");
  scanf("%d", &num1);
  printf("Entre com um outro numero: ");
  scanf("%d", &num2);
  
  /* mostra a mensagem de comparacao */
  if (num1 == num2)
    printf("Os numeros sao iguais\n");
  else if (num1 < num2)
    printf("O primeiro numero e menor\n");
  else
    printf("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 <stdio.h>

main(void)
{
  float num1, num2;
  char op;
  
  /* obtem uma expressao do usuario */
  printf("Entre com numero operador numero\n");
  scanf("%f %c %f", &num1, &op, &num2);
  
  /* mostra o resultado da operacao */
  if (op == '+')
    printf(" = %.2f", num1 + num2);
  else if (op == '-')
    printf(" = %.2f", num1 - num2);
  else if (op == '/')
    printf(" = %.2f", num1 / num2);
  else if (op == '*')
    printf(" = %.2f", num1 * num2);
  else 
    printf(" Operador invalido.");
  printf("\n");
}

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.

Armando Luiz Nicolini Delgado
2013-10-21