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>
int 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");
	return(0);
}

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>
int 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");
      	}
	return(0);
}

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>
int 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");
	return(0);
}

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 expressões:

 

                int num;
                if (num!=0) ....
                if (num==0) ....
		for (i = 0; string[i] == '\0'; i++)

equivalem a

 

                int num;
                if (num) ....
                if (!num) ....
		for (i = 0; string[i]; i++)

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>
int 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.");
                }
        }
	return(0);
}

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>
int 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 AulaPróxima página

Curso de C do CPDEE/UFMG - 1996 - 1999