CURSO DE C

O Comando if


Já introduzimos o comando if. Sua forma geral é:

 if (condição) declaração;

 A expressão, na condição, será avaliada. Se ela for zero, a declaração não será executada. Se a condição for diferente de zero a declaração será executada. Aqui reapresentamos o exemplo de um uso do comando if:

 

#include <stdio.h>
main ()
{
int num;
printf ("Digite um numero: ");
scanf ("%d",&num);
if (num>10)
   printf ("\n\nO numero e maior que 10");
if (num==10)
        {
        printf ("\n\nVoce acertou!\n");
        printf ("O numero e igual a 10.");
        }
if (num<10)
   printf ("\n\nO numero e menor que 10");
}

O else

Podemos pensar no comando else como sendo um complemento do comando if. O comando if completo tem a seguinte forma geral:

 if (condição) declaração_1;
else declaração_2;

 A expressão da condição será avaliada. Se ela for diferente de zero a declaração 1 será executada. Se for zero a declaração 2 será executada. É importante nunca esquecer que, quando usamos a estrutura if-else, estamos garantindo que uma das duas declarações será executada. Nunca serão executadas as duas ou nenhuma delas. Abaixo está um exemplo do uso do if-else que deve funcionar como o programa da seção anterior.

 

#include <stdio.h>
main ()
{
int num;
printf ("Digite um numero: ");
scanf ("%d",&num);
if (num==10)
      {
      printf ("\n\nVoce acertou!\n");
      printf ("O numero e igual a 10.\n");
      }
else 
      {
      printf ("\n\nVoce errou!\n");
      printf ("O numero e diferente de 10.\n");
      }
}

O if-else-if

A estrutura if-else-if é apenas uma extensão da estrutura if-else. Sua forma geral pode ser escrita como sendo:

 if (condição_1) declaração_1;
else if (condição_2) declaração_2;
else if (condição_3) declaração_3;
.
.
.
else if (condição_n) declaração_n;
else declaração_default;

 A estrutura acima funciona da seguinte maneira: o programa começa a testar as condições começando pela 1 e continua a testar até que ele ache uma expressão cujo resultado dê diferente de zero. Neste caso ele executa a declaração correspondente. Só uma declaração será executada, ou seja, só será executada a declaração equivalente à primeira condição que der diferente de zero. A última declaração (default) é a que será executada no caso de todas as condições darem zero e é opcional. Um exemplo da estrutura acima:

 

#include <stdio.h>
main ()
{
int num;
printf ("Digite um numero: ");
scanf ("%d",&num);
if (num>10)
     printf ("\n\nO numero e maior que 10");
else if (num==10)
        {
        printf ("\n\nVoce acertou!\n");
        printf ("O numero e igual a 10.");
        }
     else if (num<10) 
             printf ("\n\nO numero e menor que 10");
}

A expressão condicional

Quando o compilador avalia uma condição, ele quer um valor de retorno para poder tomar a decisão. Mas esta expressão não necessita ser uma expressão no sentido convencional. Uma variável sozinha pode ser uma "expressão" e esta retorna o seu próprio valor. Isto quer dizer que teremos as seguintes equivalências:

 

                int num;
                if (num!=0) ....
                if (num==0) ....
equivale a

 

                int num;
                if (num) ....
                if (!num) ....
Isto quer dizer que podemos simplificar algumas expressões simples.

 

ifs aninhados

O if aninhado é simplesmente um if dentro da declaração de um outro if externo. O único cuidado que devemos ter é o de saber exatamente a qual if um determinado else está ligado. Vejamos um exemplo:

 

#include <stdio.h>
main ()
{
int num;
printf ("Digite um numero: ");
scanf ("%d",&num);
if (num==10)
        {
        printf ("\n\nVoce acertou!\n");
        printf ("O numero e igual a 10.\n");
        }
else
        {
        if (num>10)
                {
                printf ("O numero e maior que 10.");
                }
        else
                {
                printf ("O numero e menor que 10.");
                }
        }
}


O Operador ?

Uma expressão como:
if (a>0)
        b=-150;
else
        b=150;
pode ser simplificada usando-se o operador ? da seguinte maneira:
b=a>0?-150:150;
De uma maneira geral expressões do tipo:
if (condição)
expressão_1;
else
expressão_2;
podem ser substituídas por:

condição?expressão_1:expressão_2;

O operador ? é limitado (não atende a uma gama muito grande de casos) mas pode ser usado para simplificar expressões complicadas. Uma aplicação interessante é a do contador circular. Veja o exemplo:

#include <stdio.h>
main()
{
     int index = 0, contador;
     char letras[5] = "Joao";
     for (contador=0; contador<1000; contador++)
        {
        printf("\n%c",letras[index]);
        index = (index == 4)? index=0: ++index;
        }
}

O nome Joao é escrito na tela verticalmente até a variável contador determinar o término do programa. Enquanto isto a variável index assume os valores 0, 1, 2, 3, 4, 0, 1, ... progressivamente.


AUTO-AVALIAÇÃO

Veja como você está.

  • Altere o último exemplo para que ele escreva cada letra 5 vezes seguidas. Para isto, use um 'if' para testar se o contador é divisível por cinco (utilize o operador %) e só então realizar a atualização em index.


  • Índice da Aula  Próxima página

    Dúvidas? De uma olhadinha em nosso FAQ

    Perguntas para a lista do Curso de C