Você está na página 1de 4

Comando de deciso - if then else

Sintaxe:
h duas variaes do comando if:
1 - if (condio) comando-if else comando-else
2 - if (condio) comando-if

Descrio:
Os comandos if e if-else so instrues que permitem a execuo
condicional de outros comandos.
Na forma completa, if-else, o comando-if executado quando
a condio verdadeira, caso contrrio, o comando-else executado. A
figura abaixo ilustra um bloco em pseudo-linguagem grfica que corresponde
ao comando if-else:
H ocasies em que o else desnecessrio, e por isso a linguagem C
permite a outra construo if (sem o else) desse comando. No diagrama, o
bloco comando-else (quando a condio falsa), se torna vazio, ou
seja, no existem comandos para serem executados.

Exemplos
Exemplo 1:
Escreva um programa que leia 2 nmeros inteiros e imprima o maior.
Soluo
A simplicidade desse programa permite observar o uso do comando if-else.
Para isso, vamos utilizar 2 variveis para armazenar os valores de entrada, e

outra para armazenar o maior valor. Um rascunho pode ser observado no


diagrama da figura abaixo:
Traduzindo o diagrama para C temos:
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int num1, num2, maior;
printf("Entre com 2 numeros inteiros");
scanf("%d %d", &num1, &num2);
if (num1 > num2)
maior = num1;
else
maior = num2;
printf("O maior numero e: %d", maior);
system("pause");
return 0;
}

Observe que basta comparar num1 com num2 para sabermos qual o maior.

Exemplo 2:
escreva um programa que leia 3 nmeros inteiros distintos e os imprima em
ordem crescente.
Soluo:
a idia bsica comparar os nmeros, porm, h vrias formas de faz-lo.
Como h apenas 3 nmeros, podemos testar todas as possibilidades da
seguinte forma (apenas um trecho do programa):
/* assuma que
if (num1 <=
printf("a
if (num1 <=
printf("a
if (num2 <=
printf("a
if (num2 <=
printf("a
if (num3 <=
printf("a
if (num3 <=
printf("a

as variveis num1, num2 e num3 j estejam carregadas */


num2 && num2 <= num3)
ordem %d %d %d\n", num1, num2, num3);
num3 && num3 <= num2)
ordem %d %d %d\n", num1, num3, num2);
num3 && num3 <= num1)
ordem %d %d %d\n", num2, num3, num1);
num1 && num1 <= num3)
ordem %d %d %d\n", num2, num1, num3);
num1 && num1 <= num2)
ordem %d %d %d\n", num3, num1, num2);
num2 && num2 <= num1)
ordem %d %d %d\n", num3, num2, num1);

Note que, como os nmeros so distintos, s pode haver uma combinao


vlida, e portanto apenas uma das respostas impressa, e a comparao <=
poderia ser simplestemente <. No entanto, caso os nmeros pudessem ser

repetidos, mais de uma resposta seria impressa com a comparao <=


(nenhuma resposta com a comparao <). O comando if-else tambm
poderia ser utilizado da seguinte forma:
/* assuma que as variveis num1, num2 e num3 j estejam carregadas

*/

if (num1 <= num2 && num2 <= num3)


printf("a ordem %d %d %d\n", num1, num2, num3);
else if (num1 <= num3 && num3 <= num2)
printf("a ordem %d %d %d\n", num1, num3, num2);
else if (num2 <= num3 && num3 <= num1)
printf("a ordem %d %d %d\n", num2, num3, num1);
/* etc */

Essa soluo com if-else imprimiria apenas uma resposta mesmo se


houvessem nmeros repetidos entre os 3 da entrada.
Podemos tambm procurar pelo menor nmero primeiro (ou pelo maior), e
depois comparar os demais, da seguinte forma:
if ((num1 <= num2) && (num1 <= num3))
{
/* num1 o menor, basta comparar num2 e num3 */
if (num2 <= num3)
printf("a ordem %d %d %d\n", num1, num2, num3);
else
printf("a ordem %d %d %d\n", num1, num3, num2);
}
else if (num2 <= num1 && num2 <= num3)
{
/* num2 o menor, basta comparar num1 e num3 */
if (num1 <= num3)
printf("a ordem %d %d %d\n", num2, num1, num3);
else
printf("a ordem %d %d %d\n", num2, num3, num1);
}
else /* complete este trecho de programa */

Exerccios recomendados da lista


1) Dados um nmero inteiro n>0 e uma seqencia com n nmeros inteiros,
determinar a soma dos inteiros positivos da seqncia. Por exemplo, para a
seqncia
6 2 7 0 -5 8 4
o seu programa deve escrever o nmero 19.
2) Dados um nmero inteiro n>0 e uma seqencia com n nmeros inteiros,
determinar a soma dos inteiros positivos e a soma dos inteiros negativos da
seqncia. Por exemplo, para a seqncia
6 2 7 0 -5 8 4
o seu programa deve escrever os nmeros 19 e -7.
3) Dizemos que um nmero inteiro triangular se ele o produto de 3

nmeros inteiros consecutivos. Por exemplo, 120 triangular pois 4 * 5 * 6


igual a 120. Dado um nmero inteiro positivo n, verificar se n triangular.

Você também pode gostar