Italo Info


Comandos de decisão (IFs)

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 numero: ");
    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 bibliotecsa 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.