O cálculo do IMC não, necessariamente, necessita de parênteses. Na matemática, a multiplicação e divisão possuem a mesma ordem de precedência e não interferem o resultado final. Dessa maneira, o exercício está com duas respostas corretas.
O cálculo do IMC não, necessariamente, necessita de parênteses. Na matemática, a multiplicação e divisão possuem a mesma ordem de precedência e não interferem o resultado final. Dessa maneira, o exercício está com duas respostas corretas.
Oi, Mauricio, tudo bem?
O uso do parênteses é para ganrantir que a multiplicação será calculada primeiro e que não irá haver divisão entre o peso com a altura, o que daria em um resultado de cálculo que não é o esperado. Os parênteses devem ser usados para priorizar algumas expressões diante de outras, que no caso, é o uso deles no cálculo do IMC. Se você testar esse cálculo sem os parênteses e com os parênteses, verás resultados diferentes, por exemplo:
let imc = valorPeso /(valorAltura * valorAltura);
Peso = 60 Altura = 1.60 IMC = 23.44
Já se o cálculo for feito com a ausência dos parênteses, o resultado com os mesmos valores para o IMC será de:
let imc = valorPeso /valorAltura * valorAltura;
Peso = 60 Altura = 1.60 IMC = 60
Porquê?
Porque o cálculo será feito na sequência errada, começa dividindo o peso com a altura, e com esse resultado, multiplica novamente com a altura. O que o certo seria começar com a potenciação.
Espero ter te ajudado!
Obrigado Laís, mas não concordo. Quando há apenas multiplicações e divisões os parênteses são desnecessários. Isso é um fundamento básico de matemática. Faça o exemplo com e sem e depois me diga qual foi o resultado.
Bom dia, Mauricio! Como vai?
Na matemática o cálculo das expressões seguem as seguintes regras:
Posto isto, eis então a ordem correta para executar as operações matemáticas:
Então veja que embora multiplicação e divisão tenham a mesma ordem de precedência como vc falou, ainda assim você esqueceu de considerar que a expressão é avaliada da esquerda pra direita.
Sendo assim, 10/5*2
será resolvido dessa forma
10/5 = 2;
2*2 = 4.
ao passo que 10*5/2
será resolvido assim
10*5 = 50;
50/2 = 25.
E, no JavaScript, as expressões também são avaliadas da esquerda pra direita! Pois todo o código JavaScript é avaliado nessa diretação! Sendo assim, as expressões dos exemplos anteriores teriam o mesmo resultado num código JavaScript!
Dessa forma, no cálculo do IMC, tanto na matemática quanto no JavaScript, caso seja feito peso / altura * altura
, os passos seriam
peso / altura = resultado1;
resultado1 * altura = resultado2.
resultando num cálculo incorreto!
Justamente por isso, tanto na matemática quanto no JavaScript precisamos usar os parênteses pra alterar a ordem de execução dos cálculos fazendo peso / ( altura * altura )
!
Qualquer coisa é só falar!
Grande abraço e bons estudos, meu aluno!
Em programação a divisão tem precedência, mas quando você informa uma multiplicação ou uma soma entre parenteses (mauriciofontana) como no exemplo que você abordou anteriormente, tudo o que tiver entre parenteses será calculado primeiro.
Vocês ainda continuam equivocados. No cálculo do IMC não é necessário parênteses: peso/altura*altura, supondo peso = 80 e altura = 1,6. De qualquer maneira que você faça a conta, o resulta SEMPRE será 31,25.
(80/1,6) x 1,6 = 50/1,6 = 31,25
80/(1,6 x1,6) = 80/2,56 = 31,25
80/1,6 x 1,6 = 31,25 independentemente dos parênteses.
Qual maneira de fazer a conta que dá resultado diferente?
Ah, lembrando que a divisão é a operação inversa da multiplicação, portanto, dividir por 1,6 é o mesmo que multiplicar por 0,625. Logo, a expressão para o cálculo dessa sentença poderia ser escrita assim:
80 x 0,625 x 0,625 = 31,25
A ordem dos fatores não altera o produto, lembram disso?
Opa, Mauricio! Como vai?
Este é um print que fiz no console do navegador Google Chrome com as expressões que vc citou no seu último comentário. Veja que os resultados batem exatamente com o comportamento que eu e a Laís te explicamos anteriormente.
Qualquer coisa é só falar!
Grande abraço e bons estudos, meu aluno!
E aí Mauricio!
Você está certíssimo em dizer que na matemática a ordem dos fatores não altera o resultado. Acontece que o programa lê seu código da esquerda para direita e podem surgir alguns problemas de interpretação. Vou tentar te dar um exemplo e mando junto um código para você rodar ai na sua maquina e conferir a diferença.
var imc = peso(70) / altura(1.70) * altura(1.70)
70 / 1.70 * 1.70 =>
41,7 * 1.70 =>
70;
Com um imc igual a 70, ou temos alguem a beira da morte, o que é triste, ou nosso codigo esta errado, o que tambem é triste. O que aconteceu aqui é que o nos não deixamos claro que ambos os "altura" estão no denominador da fração. Espero ter te ajudado de alguma forma :)
<!DOCTYPE html>
<html>
<body>
<script>
//
var calculo1 = 70 / 1.70 * 1.70;
document.write(calculo1 + "<br>");
var calculo2 = (70 / 1.70) * 1.70;
document.write(calculo2 + "<br>");
var calculo3 = 70 / (1.70 * 1.70) + "<br>";
document.write(calculo3);
</script>
</body>
</html>
Obs: É a minha primeira resposta, desculpe estar mal formatada
Olá Maurício,
Se nenhum dos comentários anteriores sanaram completamente a dúvida, sugiro que acompanhe junto comigo o primeiro exemplo do seu ultimo comentário.
(80/1,6) x 1,6 = 50/1,6 = 31,25
Escrevendo de outra forma, para melhorar a visualização:
(80/1,6) x 1,6
50 / 1,6
31,25
O que realmente deveria ter acontecido, no seu exemplo:
(80/1,6) x 1,6:
50 x 1,6:
80
O que pode estar te confundindo é que o que você fez foi dividir o primeiro resultado por 1,6 e não multiplicar.
Espero ter ajudado, att =)
Boa noite a todos,
Realmente eu tinha me equivocado. Na verdade eu estava testando outro exemplo apenas com multiplicações de números com ponto flutuante. Desculpem-me por ser tão teimoso e agradeço o esforço dos que não desistiram de me explicar o correto. Obrigado a Laís Cavalcanti, Gabriel Leite, Carlos Oliveira, Lúcio Carvalho Almeida e Leonardo Lopes Bezerra.
Opa, Mauricio! Por nada!
Sempre que tiver qualquer dúvida é só mandar aqui no fórum da Alura!
Grande abraço e bons estudos, meu aluno!