Italo Info


Comandos de decisão (IF)

Muitas vezes, ao desenvolver programas de computador, precisamos executar determinado conjunto de instruções, apenas, se determinada condição for verdadeira, ou, caso contrário. Para tanto, a linguagem C oferece um comando simples, o if ("Se" em português). Veja o exemplo abaixo:

#include <stdio.h> int main() { int n; printf("Informe um numero: "); scanf("%d",&n); if ( n > 10 ) { printf("O numero %d eh maior que 10",n); } printf("\nTecle enter para finalizar..."); return 0; }

O exemplo acima lê um número e armazena na variável (n). E, então, verifica se o numero (n) é maior que 10. Se sim, imprime a mensagem informando que o número (n) é maior que 10. E depois, imprime outra mensagem pedindo para o usuário teclar enter. Repare que o if recebe uma condição entre parenteses e o as instruções que devem ser executados se a condição entre parenteses for verdadeira ficam entre chaves. Veja abaixo outro exemplo:

#include <stdio.h> int main() { int n; printf("Informe um numero: "); scanf("%d",&n); if ( n > 10 ) { printf("O numero %d eh maior que 10",n); } else { printf("O numero %d eh menor ou igual a 10",n); } return 0; }

O programa acima pede para o usuário informar um número e, após a leitura, o número é armazenado na variável (n). Apos isso, uma verificação é feita. Se o número armazenado na variável (n) for maior que 10, o programa imprime uma mensagem informando isso. Caso contrário (else em inglês), significa que a condição n > 10 é falsa, ou seja, o número é menor ou igual a 10 e, então, é impressa a devida mensagem. Lembrando que a mensagem é criada pelo programador, o texto entre aspas duplas pode ter a mensagem que o programador preferir. Vejamos outro exemplo:

#include <stdio.h> int main() { int n1, n2; printf("Informe um numero: "); scanf("%d",&n1); printf("Informe outro número: "); scanf("%d",&n2); if ( n1 == n2 ) { printf("Os numeros informados sao iguais"); } else if ( n1 > n2 ) { printf("O maior numero eh %d",n1); } else { printf("O maior numero eh %d",n2); } return 0; }

O programa acima pede para o usuário digitar dois números, então verifica qual é maior ou se os dois números são iguais. Se o primeiro número for igual ao segundo, é impressa a mensagem informando que os números informados são iguais, caso contrário, se o primeiro número for maior que o segundo, é impressa uma mensagem informando que o primeiro número é maior que o segundo, caso contrário, significa que o segundo número é maior que o primeiro e é impressa a mensagem informando isso.

Preste atenção ao operador igual igual(==) na primeira condição. Um único igual (=) é utilizado para atribuição de valores a uma variável. O == é utilizado para comparar se dois valores são iguais.

Vejamos mais um exemplo:

#include <stdio.h> int main() { int n; printf("Informe um numero: "); scanf("%d",&n); if (n%2==0) { printf("O numero %d eh par!",n); } else { printf("O numero %d eh impar!",n); } return 0; }

O exemplo acima pede que o usuário digite um número e verifica se o número é par ou impar. Se o resto da divisão do número por 2 for igual a 0, significa que o número é par, caso contrário, é impar.

Ex: 1%2=1, 2%2=0, 3%2=1, 4%2=0, 5%2=1

Preste atenção aos exemplos abaixo:

if(n%2==0){ printf("O numero %d eh par!",n); }else{ printf("O numero %d eh impar!",n); }
if( n%2==0 ) printf("O numero %d eh par!",n); else printf("O numero %d eh impar!",n);
if( n % 2 == 0 ) printf("O numero %d eh par!",n); else printf("O numero %d eh impar!",n);

Os três conjuntos de instruções acima fazem exatamente a mesma coisa. Em C, em todo comando que tenha um bloco de código como uma de suas partes, o bloco de código fica entre chaves {}. O if e else são desses comandos, assim como o switch/case, for, while e do/while que serão vistos mais adiante

Repare que, nos exemplos 2 e 3 acima, os comandos if, else não utilizam as chaves para declaração de um bloco de código, isso porque o if tem apenas uma instrução e, nesse caso, o uso das chaves é opcional. Do mesmo modo com o bloco de código do else.

IFs aninhados

Abaixo, um programa que pede que o usuário digite 3 números e os mostra em ordem crescente:

#include <stdio.h> int main() { int a, b, c, maior, meio, menor; printf("Informe o primeiro numero: "); scanf("%d",&a); printf("Informe o segundo numero: "); scanf("%d",&b); printf("Informe o terceiro numero: "); scanf("%d",&c); if ( a > b && a > c ) { maior = a; if ( b > c ) { meio = b; menor = c; } else { meio = c; menor = b; } } else if ( a > b ) { maior = c; meio = a; menor = b; } else if ( a > c ) { maior = b; meio = a; menor = c; } else { menor = a; if ( b > c ) { maior = b; meio = c; } else { maior = c; meio = b; } } printf("\nOrdem crescente: %d %d %d",menor,meio,maior); return 0; }

Exercícios

1) Faça um programa que leia um média escolar de um aluno e imprima se o aluno foi aprovado, reprovado ou se deve ser submetido a avaliação final. Ex:

  • Se a nota média for menor que 5, imprimir a mensagem de aluno reprovado;
  • Se a nota média for maior ou igual a 5 e menor que 7, imprimir mensagem de necessária avaliação final;
  • Se a nota média for maior que 7, imprimir mensagem de aluno aprovado;

2) Faça um programa que leia os valores reais a, b e c de uma equação do segundo grau e calcule e mostre os valores x1 e x2. Veja abaixo o cálculo dos valores x1 e x2:

delta = b^2 - 4 * a * c; x1 = ( -b + sqrt( delta ) ) / ( 2 * a ); x2 = ( -b - sqrt( delta ) ) / ( 2 * a );
Onde: * é o sinal de multiplicação e ^ é o sinal de potênciação (b^2 == b*b).
A função sqrt serve para o cálculo de raiz quadrada (Necessário incluir a biblioteca math.h). Ex: sqrt(25)=5.

A função pow pode ser utilizada para potenciação conforme a seguir: 4^2 = pow( 4, 2 ) = 16.0. A função pow retorna um número real como resultado e depende da inclusão da bibliotea math.h.

Atenção: é necessário evitar a divisão por zero e o cálculo de raiz quadrada de número negativo. Logo, para o cálculo de x1 e x2, o delta não pode ter valor negativo e o a não pode ter valor 0.