- 1 + 6*3
- (1+6)*3
- 1+6/2
- (1+6/2)
Ordem dos operadores matemáticos
Vamos pegar a primeira e a terceira expressão.
Na primeira, temos duas soluções que vocês podem achar:
- 1 + 6*3 = 1 + 18 = 19
Ou:
- 1 + 6*3 = 7 * 3 = 21
No primeiro cálculo, fizemos primeiro a multiplicação e só depois a soma.
No segundo cálculo, fizemos primeiro a soma do 1 com o 6, só depois multiplicamos por 3.
Qual o certo?
Já a terceira expressão, pode ser resolvida assim:
- 1+6/2 = 1 + 3 = 4
Alguns podem calcular assim:
- 1+6/2 = 7 / 2 = 3.5
No primeiro caso, fizemos primeiro a operação de divisão. No segundo caso, primeiro somamos 1 com 6, pra só depois fazer a divisão.
Vamos colocar ambas expressões num programa, pro C++ nos responder qual o correto.
Mas, antes, pense aí qual você acha que é o certo.
Depois, faça um programa para calcular as duas expressões e veja o resultado.
Nosso código fica assim:
#include <iostream> using namespace std; int main() { cout << "1 + 6*3 = "<< 1 + 6*3 <<endl; cout << "1+6/2 = "<< 1+6/2<<endl; return 0; }
E o resultado:
Precedência de Operadores Matemáticos no C++
Imagina se a NASA faz a simulação de um lançamento e um cálculo resulta no valor 21.
Mas aí, durante o lançamento oficial, outra máquina faz o mesmo cálculo e resulta no valor 12 ?
Não dá né?
Por isso, o C++ estabeleceu uma ordem para fazer os cálculos, uma precedência entre os operadores.
Como pudemos ver, foi realizado primeiro o cálculo da multiplicação e divisão, antes da adição.
Mas aí, durante o lançamento oficial, outra máquina faz o mesmo cálculo e resulta no valor 12 ?
Não dá né?
Por isso, o C++ estabeleceu uma ordem para fazer os cálculos, uma precedência entre os operadores.
Como pudemos ver, foi realizado primeiro o cálculo da multiplicação e divisão, antes da adição.
Ordem dos operadores é a seguinte:
- * / %
- + -
Ou seja, o C++ viu uma expressão matemática, a primeira coisa que vai ver é se tem uma multiplicação divisão ou operador de módulo. Se tiver um, resolve ele primeiro.
Se tiver mais de um desses, resolve da esquerda pra direita.
Só depois, vai checar se tem alguma adição ou subtração.
Se tiver mais de uma? Vai resolvendo da esquerda pra direita também, ok?
Parêntesis () - Organização e Precedência
Se colocarmos uma operação entre parêntesis, ela vai sempre ser realizada primeiro.É como se os ( ) tivesse uma precedência superior aos dos operadores matemáticos.
Por exemplo, na conta: 1 + 6*3
Se quisermos que a soma seja feita primeiro, fazemos: (1+6)*3
Se quisermos garantir que a multiplicação seja feita primeiro: 1 + (6*3)
Vamos supor que queiramos calcular a média aritmética de 5 números, em Matemática isso é dado por:
Uma pessoa que não aprendeu bem precedência de operadores, pode fazer:
m = a+b+c+d+e/5 ;
O erro é que somente a variável e vai ser dividida por 5, consegue perceber isso?
O correto é usar parêntesis:
m = (a+b+c+d+e)/5 ;
Assim, além de ficar certa a conta, fica mais organizada também.
Exercícios de C++
1. A equação da uma reta é dada por: y=mx + cEscreva essa equação em C++ usando os operadores corretamente.
2. Escreva as equação algébricas abaixo na forma correta em C++:
3. Uma equação do segundo grau é dada por: ax² + bx + c = 0
Escreva ela na linguagem C++.
4. Ainda na equação anterior, como calcularíamos o delta?
5. E as raízes da equação do segundo grau ?
Respostas na apostila C++ Progressivo
Referências de estudo
Lista completa de precedência de outros operadores também:https://en.cppreference.com/w/cpp/language/operator_precedence
nas questões do final, o objetivo é escrever as expressoes em uma string ou declarar as variáveis e resolve-las?
ResponderExcluir