Por exemplo, quanto é: 1 + 1 x 2 ?
Pode ser 3: 1 + (1x2) = 1 + 2 = 3
Ou pode ser 4: (1+1)x2 = 2x2= 4
Então, qual a resposta certa? Obviamente é só uma.
Para o computador, um cálculo não pode resultar em dois valores.
A resposta correta é sempre 3. Isso tem a ver com operações matemáticas e precedência em C.
- Baixar nossa apostila: Apostila de C
Símbolos matemáticos em C
Soma: +
Subtração: -
Multiplicação: *
Divisão: /
Módulo ou resto da divisão: %
Como pode notar, o símbolo de multiplicação é um asterisco, e não um 'x'.
O símbolo da divisão é a mesma barra que usamos para digitar urls.
Sobre módulo (ou resto da divisão), falaremos melhor sobre esse operador matemático ainda nesse artigo de nosso curso.
A seguir, um programa que pede dois números para o usuário e mostra o resultado da soma, subtração, multiplicação e divisão do primeiro pelo segundo número.
Note que é bem simples de se entender e não há segredo:
#include <stdio.h> int main() { float num1, num2, sum, sub, mult, div; printf("Digite o primeiro numero: " ); scanf("%f", &num1); printf("Digite o segundo numero: " ); scanf("%f", &num2); //Soma sum = num1 + num2; //Subtração sub = num1 - num2; //Multiplicaçao mult = num1 * num2; //Divisão div = num1/num2; printf("%.2f + %.2f = %.2f\n", num1, num2, sum); printf("%.2f - %.2f = %.2f\n", num1, num2, sub); printf("%.2f * %.2f = %.2f\n", num1, num2, mult); printf("%.2f / %.2f = %.2f\n", num1, num2, div); }
Além dos dois números que pedimos ao usuário, criamos mais 4 float para armazenar as operações matemáticas. Fizemos isso para o código ficar organizado, mas você também pode colocar essas operações direto no printf, veja como ficariam os printf:
printf("%.2f + %.2f = %.2f\n", num1, num2, num1 + num2); printf("%.2f - %.2f = %.2f\n", num1, num2, num1 - num2); printf("%.2f * %.2f = %.2f\n", num1, num2, num1 * num2); printf("%.2f / %.2f = %.2f\n", num1, num2, num1 / num2);
O que é módulo ou operador resto da divisão
Vamos voltar um pouco no tempo, quando você aprendeu a fazer continhas, mais ou menos como na figura:
Pois é, nesse caso o resto da divisão é o 14.
Ela é resultado da seguinte operação: 2009 % 19 = 14
Pois 2009 = 19*105 + 14
Essa operação será bastante usada no decorrer de sua vida como programador C.
Por exemplo, os números pares sempre deixa resto 0 quando divididos por 2 (consegue entender o motivo?).
Precedência dos operadores matemáticos em C
Vamos voltar ao exemplo do início de nosso tutorial: quanto seria 1 + 1 x 2
A resposta é sempre 3 pois o operador de multiplicação é mais importante que a soma.
E caso fosse: 8/4 - 2?
Pode ser: 8/4 - 2 = 2 - 2 = 0
Ou pode ser: 8/4 - 2 = 8/(4 - 2) = 8 / 2 = 4
A resposta é sempre 0, pois o operador de divisão é mais importante que o de subtração.
Mostramos esses exemplos para provar que saber a ordem (ou precedência) dos operadores é muito importante.
Embora a maioria dos cursos (alguns ditos 'bons' e famosos) simplesmente ignore isso, mas você viu que pode obter respostas totalmente diferentes.
Segue a lista dos operadores matemáticos que estudamos em nosso artigo.
A importância vai crescendo de baixo para cima e da esquerda para a direita:
* / %
+ -
Usando parênteses para evitar confusão com a precedência
Caso não seja muito fã ou bom em memorização, existe um recurso que você pode usar que vai deixar claro a ordem das operações, bem como deixar mais organizado seu código em C.
A regra é simples: agrupe e ponha entre parênteses o que você quer calcular.
Por exemplo, se ao invés de 1 + 1 x 2, tivéssemos escrito:
1 + (1 x 2) ?
É bem óbvio que somamos o 1 com o RESULTADO do que está entre parênteses. Ou seja, sempre é calculado primeiro o que está em parênteses:
1 + (1 x 2) = 1 + 2 = 3
(1 + 1) x 2 = 2 x 2 = 4
O outro caso 8/4 - 2, também fica bem evidente e simples de se entender apenas olhando:
(8/4) - 2 = 2 - 2 = 0
8/(4 - 2) = 8/2 = 4
E você achando que sabia as operações básicas de Matemática, hein?
13 comentários:
Escrever centenas de páginas e não errar, é quase impossível.
Por isso, existem um ou outro detalhe que nos passou despercebido.
Agradecemos, então, ao leitor Eduardo Saraiva, que viu uma palavra trocada e nos avisou do erro.
Quem mais notar algum erro, algo não muito bem explicado ou confuso, por favor, ajude na divulgação do conhecimento e nos indique os problemas.
Onde está escrito:
(8/4) - 2 = 4 - 2 = 2
Na verdade é:
(8/4) - 2 = 2 - 2 = 0
muito bom mesmo este curso
Estou acompanhando o curso. só não entendi o significado de %1f,%1f ou %2f que vocês estão usando e nem qual a diferença entre double e float nos códigos,porque eu troco float por double e da errado. descobri que tem que usar o %lf pra fica certo,mas gostaria de saber o significado. acho que deve ter muita gente com a mesma dúvida, por isso acho bom vocês esclarecer essas coisas para o curso ficar ainda melhor.
thanks!
O lf quer dizer "long float" ! É usado para armazenar quando a variável é double!
%.2f - o .2 antes do f é pra limitar o numero de casas depois do ponto (num.00), pois no float aparecem mais de duas. é uma medida estética, já que fica feio aquele monte de zeros no fim do numero! dá pra colocar quantas casas quiser: .1, .2, .3, .4....
Ao realizar a operação:
float expressao = ((8+10)-1)/2
Teremos o resultado 8 ao invés de 8.5.
Mesmo imprimindo expressao (via printf) formatado como float, o resultado será '8.00'.
Observe que a expressão contém apenas números inteiros, ainda que a variável esteja definida como float.
Para evitar isso, deve-se converter explicitamente a expressão que está sendo calculada. Ficando desta forma:
float expressao = (float) ((8+10)-1)/2
Caso algum número na expressão seja ponto flutuante, não é necessário a conversão. Ex.:
float expressao = ((8+10)-1)/2.0
olá, gostaria de sabe como faço para obter o resultado em módulo
LOGO A CIMA DISSE-TE:
E caso fosse: 8/4 - 2?
Pode ser: 8/4 - 2 = 2 - 2 = 0
Ou pode ser: 8/4 - 2 = 8/(4 - 2) = 8 / 2 = 4
a QUESTÃO É, QUEM tem mais importância, se é a divisão ou subtração? então alguma das duas então erradas, porventura, este pode ser (subtração) está errado ao meu ver.
ola pessoal, fiz tudo como esta na apostila, mas o resultado deu 0,00 em todos os calculos. Alguem pode me ajudar.
fiz tudo igual a apostila, mas os resultados deram:
0.00 + 0.00 = 0.00
0.00 - 0.00 = 0.00
0.00 * 0.00 = 0.00
0.00 / 0.00 = 5.13
como faço para resolver isso, alguem pode me ajudar?
Sou iniciante em programação. E agradeço seu passo a passo, claro e simples. Em outros a explicação é muito avançada para quem está começando. Obrigada 🤗
Alguma pode.me.ajudarr sou menina mas estou com depressão
Postar um comentário