Enviar um café pro programador

Pode me ajudar a transformar cafeína em código?

Fazendo testes e comparações - operador de igualdade (==), maior (>), menor (<), maior igual (>=), menor igual (<=), de diferença (!=) e de módulo, ou resto da divisão (%)

No artigo passado, ensinamos sobre o uso do teste condicional IF e ELSE, que será extremamente usado por nós em nosso curso, e por você em sua carreira de programador C.

Porém, fizemos testes de condições simples e sem muita utilidade. Vamos aprender agora, em nossa apostila de C, a usar alguns operadores que nos permitirão fazer coisas bem interessantes apenas com IF ELSE.

Clique aqui e saiba como obter seu certificado de programação C! Entre já no Mercado de Trabalho!

Testar e comparar, testar e comparar...a essência da programação

A primeira vista não damos tanta importância e nem entendemos porque temos tanto que testar e comparar coisas em programação. Pois bem, o curso C Progressivo explica isso melhor pra você, com exemplos reais.

Quando você entra em um site de conteúdo adulto e te perguntam sua idade: se você clicar em 'tenho mais de 18 anos', você entra, se clicar em 'tenho menos de 18 anos', eles te encaminham pro site do Restart.


Pois bem, eles fizeram um teste: se fizer isso, acontece isso, se fizer aquilo acontece outra coisa.

As vezes é perguntada nossa data de nascimento, em alguns sites. Informamos os números, eles guardam em alguma variável e depois comparam: se o número for menor que uma data específica, você é de maior. Caso os números que você forneceu sejam maiores que essa data, é porque você ainda é de menor.
Isso foi uma comparação: pegamos um dado (sua data de nascimento) e comparamos com outro (a data de 18 anos atrás).

Durante um jogo, o programa fica o tempo inteiro testando o que o jogador digitou. Se digitou a tecla pra direita, vai pra direita, se foi pra cima, vai pra cima, se não apertar nada, nada ocorre e assim a vida segue.

Se convenceu da importância dos testes e comparações? Então vamos testar e comparar.



O operador de igualdade em C: ==

Se quisermos comparar uma variável x com uma variável y fazemos:
x == y

Sempre que ver isso, leia como se fosse uma pergunta: x é igual a y?

Ou seja, se é uma pergunta (comparação), sempre retorna um valor booleano. Ou seja, ou é falso ou é verdadeiro.

É comum que alguns estudantes e iniciantes em programação confundam o '=' com o '=='.
O '=' é uma atribuição, estamos atribuindo um valor, estamos dizendo que aquela variável vai receber um valor, e ponto final.

Já o '==' é um teste, queremos saber se o valor é igual ou não.
Ou seja, ele vai retornar TRUE ou FALSE. É como se estivéssemos fazendo uma pergunta, e que estamos esperando uma resposta.


Exemplo de código: 
Faça um programa em C que pergunte ao usuário quanto é 1 + 1, usando o teste condicional IF ELSE, e que responda se ele acertou ou errou.

#include <stdio.h>

int main(void)
{
    int resultado;

    printf("Quanto eh 1 + 1? ");
    scanf("%d",&resultado);

    if(resultado == 2)
    {
        printf("Parabens, voce nao usa drogas\n");
    }
    else
    {
        printf("Amigo, pare de fumar isso...\n");
    }
}

Ou seja, nós perguntamos o valor de 1+1 e armazenamos na variável inteira resultado.
Depois comparamos esse resultado com 2.

Se o usuário tiver digitado 2, a comparação resultado == 2 retornará valor booleano VERDADEIRO (true) e o IF ocorre.
Caso o que o usuário digitou não seja 2, a comparação retornará valor booleano FALSO (false) e será o ELSE que o nosso programa em C irá rodar.

Simples, não? Continuemos...


O operador maior que em C: >

Se quisermos saber se uma variável x é maior que uma variável y fazemos:
x > y

Caso x seja maior que y, essa comparação retornará valor lógico VERDADEIRO (true).
Caso x seja menor, ou igual, a y, essa comparação retornará valor lógico FALSO (false).

Exemplo de código:
Crie um aplicativo em C que pergunte a idade do usuário e diga se ele é maior ou menor de idade, usando o comparador maior que.


#include <stdio.h>

int main(void)
{
    int idade;

    printf("Digite sua idade: ");
    scanf("%d",&idade);

    if(idade > 17)
    {
        printf("Voce eh de maior, pode entrar! \n");
    }
    else
    {
        printf("Sinto muito, voce nao pode entrar\n");
    }
}



A explicação do código C é bem simples: para ser de maior, você deve ter mais que 17 anos, se tiver, a comparação idade > 17 retornará TRUE e o IF irá rodar.
Caso você tenha 17 anos ou menos, você é de menor e o código salta para rodar o ELSE.

Pronto, agora você já pode criar aqueles sistemas de sites que perguntam se você é de maior ou não.
Muito útil essa linguagem de programação C, não?



O operador menor que em C: <

Se quisermos saber se uma variável x é menor que uma variável y fazemos:
x < y

Caso seja menor que y, essa comparação retornará valor lógico VERDADEIRO (true).
Caso seja maior, ou igual, a y, essa comparação retornará valor lógico FALSO (false).

Exemplo de código:
Crie um aplicativo em C que pergunte a idade do usuário e diga se ele é maior ou menor de idade, usando o comparador menor que.

#include <stdio.h>

int main(void)
{
    int idade;

    printf("Digite sua idade: ");
    scanf("%d",&idade);

    if(idade < 18)
    {
        printf("Sinto muito, voce nao pode entrar\n");
    }
    else
    {
        printf("Voce eh de maior, pode entrar!\n");
    }
}



A explicação do código C é o oposto da explicação do exemplo anterior, note a lógica inversa: se você tiver  menos que 18 anos, você será menor e o teste idade < 18 retornará valor lógico VERDADEIRO e o IF será executado.
Se você não tem menos que 18 anos, é porque tem mais ora. Então, nosso programa em C executará o ELSE.


O operador maior igual a em C: >=

Até o momento fizemos somente a análise do tipo 'maior ou menor'. Porém, as vezes queremos incluir o próprio número na comparação...ou seja, queremos saber se uma variável é maior ou igual que outra.

Se quisermos saber se uma variável x é maior ou igual que uma variável y fazemos:
x >= y

Caso seja maior ou igual que y, essa comparação retornará valor lógico VERDADEIRO (true).
Caso seja menor a y, essa comparação retornará valor lógico FALSO (false).

Exemplo de código:
Crie um aplicativo em C que pergunte a idade do usuário e diga se ele tem que fazer ou não o exame de próstata, usando o operador maior igual a. Lembrando que é recomendável fazer o exame a partir dos 45 anos.

#include <stdio.h>

int main(void)
{
    int idade;

    printf("Digite sua idade: ");
    scanf("%d",&idade);

    if(idade >= 45)
    {
        printf("Eh amigo, ja era, tem que fazer o exame da prostata...\n");
    }
    else
    {
        printf("Voce nao precisa fazer o exame de prostata...ainda\n");
    }
}


Note quem tem mais de 45 anos é necessário fazer o exame. Porém, quem também TEM, exatos, 45 anos, também precisa fazer!
Também poderíamos ter feito: idade > 44
Porém não fica muito legal o número 44 aparecer. Por quê?
Ora, a informação que temos da idade é 45, então vamos trabalhar com 45. É uma questão de organização apenas, mas que pode facilitar muito a vida de quem lê um código em C.

Por exemplo, suponha que você foi contratado por uma empresa para ser programador C e vai substituir outro programador (que não sabia muito a linguagem C, por isso perdeu o emprego).
Se você bater o olho no código e ver o número 18 logo você associa com maioridade.
Porém, se tiver o número 17 no meio do código fica difícil deduzir o que o antigo programador tentou fazer...aí você vai ter que quebrar a cabeça pra entender o código dele.

Mas como você está cursando o C Progressivo, você será treinado para ser um programador organizado também. Vamos continuar...


O operador menor igual a em C: <=

Se quisermos saber se uma variável x é menor ou igual que uma variável y fazemos:
x <= y

Caso seja menor ou igual que y, essa comparação retornará valor lógico VERDADEIRO (true).
Caso seja maior a y, essa comparação retornará valor lógico FALSO (false).

Exemplo de código:
Crie um aplicativo em C que pergunte a idade do usuário e diga se ele tem que fazer ou não o exame de próstata, usando o operador menor igual a. Lembrando que é recomendável fazer o exame a partir dos 45 anos.


#include <stdio.h>

int main(void)
{
    int idade;

    printf("Digite sua idade: ");
    scanf("%d",&idade);

    if(idade <= 44)
    {
        printf("Voce nao precisa fazer o exame de prostata...ainda\n");
    }
    else
    {
        printf("Eh amigo, ja era, tem que fazer o exame da prostata...\n");
    }
}


Agora fizemos o contrário. Comparamos usando a expressão idade <= 44 para verificar que o usuário não tem 45 anos ou mais.

Analisando esse código e o do exemplo passado, qual você usaria para criar tal programa?
Arraste o mouse aqui para ver a resposta -> O anterior, pois ele lida com o número 45.


O operador diferente de em C: !=


Se quisermos saber se uma variável x é diferente de uma variável y fazemos:
x != y

Caso seja diferente de y, esse teste retorna valor VERDADEIRO.
Caso x seja igual a y, esse teste retorna valor FALSO.



Exemplo de código:
Crie um programa em C que pergunte um número de 1 até 10 ao usuário, e faça com que ele tente acertar o número secreto. No meu caso, o número secreto é 7.

#include <stdio.h>

int main(void)
{
    int numero;

    printf("Adivinha a senha, entre 1 e 10: ");
    scanf("%d",&numero);

    if(numero != 7)
    {
        printf("Errado! Saia da Matrix!\n");
    }
    else
    {
        printf("Parabens, voce entrou no sistema\n");
    }
}

A explicação é simples: enquanto o usuário digitar um número diferente de 7, o programa entra no IF e diz que o  usuário errou a senha.
Se ele não digitar um número de 7, é porque ele digitou o 7, ora! Então, a comparação numero != 7 retorna falso e o ELSE que será executado.



O operador módulo ou resto da divisão em C: %

Resto da divisão é o valor que sobra/resta da divisão para que o quociente permaneça inteiro.

O símbolo de resto da divisão é %.

Veja, o que está em vermelho é o resto inteiro da divisão:
5 % 2 = 2*2 + 1
7 % 3 = 3*2 + 1
7 % 4 = 1*4 + 3

8 % 3 = 2. Pois: 8 = 3*2 + 2

Em matemática chamamos de 'mod', de módulo: 5 mod 3 = 2

No Brasil, é aquele 'resto' que deixávamos lá embaixo nas continhas do colégio:


Apostila de C online grátis


Sem dúvidas, a maior utilidade desse operador é saber a multiplicidade de um número (ou seja, se é múltiplo de 2, 3, 5, 7, etc).
Por exemplo, um número par é aquele que, quando dividido por 2, deixa resto nulo.


Exemplo de código:
Crie um programa em C que pergunte um número ao usuário e diga se ele é par. Use o operador módulo ou resto da divisão %.



#include <stdio.h>

int main(void)
{
    int numero;

    printf("Digite um inteiro: ");
    scanf("%d",&numero);

    if( (numero % 2) == 0)
    {
        printf("Eh par\n");
    }
    else
    {
        printf("Nao eh par\n");
    }
}

Em programação, para saber se um número é par, escrevemos: numero % 2 == 0
Leia: se o resto da divisão de 'numero' por 2 deixar resto 0, retorne valor TRUE.


Erro comum de iniciantes em programação C

Praticamente todos os programadores, quando estão iniciando seus estudos, cometem o erro de confundir o operador de atribuição com o operador de comparação de igualdade.

Por exemplo, qual a diferença entre:
x = 1
x == 1
?

A resposta é simples: no primeiro exemplo estamos atribuindo, no segundo estamos comparando.
Leia assim:
x = 1: 'Hey C, faça com que a variável x receba o valor 1, atribua 1 ao x'
x == 1: "Hey C, o valor armazenado na variável x é 1'?

Ou seja, na comparação há o retorno de valor lógico VERDADEIRO ou FALSO.
Na atribuição não, simplesmente atribuímos um valor e essa operação retorna sempre true.


Exercícios sobre operadores de comparação em C:

  1. Faça o programa do exemplo do != , mas com o operador ==
  2. Faça o programa do exame de próstata usando o operador <
  3. Faça o programa do exame de próstata usando o operador >
  4. Faça o programa do teste de maioridade usando o operador <=
  5. Faça o programa do teste de maioridade usando o operador >=
  6. Faça um programa que pergunte um número ao usuário e diga se ele é ímpar. Use o operador %.

14 comentários:

Unknown disse...

parabéns, esse curso esta salvando meu semestre na faculdade. em um ida eu aprendi bem mais que em um mês de aula.

rafafoa disse...

É incrível como a "pedagogia descomplicada" de vocês aqui do C Prog é fantástica. Muito melhor que a de muitos "doutores" que vão pra uma sala de aula com peito estufado mas que só sabem para eles mesmos. Parabéns e continuem com o ótimo trabalho.

Anônimo disse...

"Resto da divisão é o valor que sobra/resta da divisão para que o cociente permaneça inteiro."

O correto é --> quociente.
Feliz em ajudar quem tem me ajudado tanto.

Anônimo disse...

Salvou minha vida, estou aprendendo + do que na faculdade rssrsrs

Anônimo disse...

Mais claro que a água

Unknown disse...

Ola, boa noite a todos, tenho gostado das aulas e espero conseguir montar meu codigo que salvara minha pele na faculdade e que nao consegui aprender com os professores.

Anônimo disse...

e se minha variavel estiver entre 0 e 17, como eu mando no comando.. if ( x >=0 <=17)? vlw

técnico em informatica disse...

#include

int main()


{
int idade;

printf("digite sua idade:");
scanf("%d",&idade);

if(idade <18)

{



printf("sito muito vc nao pode entarar ");
}
else

{
printf("voce pode entrar:");


}

}

técnico em informatica disse...

#include

int main(void)

{
int idade;
printf("digite sua idade: ");
scanf(" %d",&idade);


if(idade>= 45)


{
printf("Eh amigo, ja era, tem que fazer o exame da prostata...\n");

}
else
{
printf("Voce nao precisa fazer o exame de prostata...ainda\n");
}


}

técnico em informatica disse...

#include

int main()

{
int numero;

printf("Digite um Inteiro : ");
scanf("%d",&numero);

if( (numero %2)==0)

{
printf("Eh par\n");
}
else
{

printf("Nao e Par\n");
}
}

Lorrayne disse...

/*Faca um programa que receba dois valores e verifique se eles sao iguais ou
diferentes*/
Aluem pode me ajudar nesse

Anônimo disse...

No topo da página onde diz "clique aqui!" a exclamação quer dizer que não é para clicar?

Anônimo disse...

Como faço isso, mas com palavras?

Lucas de Lima disse...

Muito bom!