Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Empate vale +1?

Olá, Não consegui entender pq o empate vale um (+1). No código não tem var que indique que empate vale +1.

valeu

3 respostas
solução!

Olá, boa tarde. No código, não há variável que indique que o empate vale 1 ponto, pois não há real necessidade de definir isso como variável.

A matemática para o cálculo de pontos que o código usa, se baseia no fato de que tanto vitórias quanto empates valem 1 ponto. E a partir disso, o número de vitórias é multiplicado por três, para valer três pontos, e o número de empates é mantido igual ao que estava, logo, continua valendo 1 ponto.

Veja no seguinte trecho de código:

var pontos = vitorias  * 3 + empates;

Para maior clareza, esse trecho poderia ser reescrito como:

let pontos = (vitorias * 3) + (empates * 1) 
// Onde cada vitória vale 1x3 pontos, e cada empate vale 1x1 ponto. 
// Logo, cada vitória vale 3 pontos, e cada empate vale 1.
  • Detalhe: Não há necessidade de escrever o código assim, já que empates e empates * 1 são a mesma coisa, mas por razões de clareza, pode ser interessante desenvolver o código assim, ou documentá-lo de forma que isso fique explícito.

Se essa resposta o ajudou, por favor, marque o tópico como 'Solucionado'. Obrigado, e boa sorte :)

Se eu fizesse : var pontos = vitorias * 3 + empates * 1; Não iria precisar do parseInt, correto?

Na realidade, o parseInt não é realmente necessário, mas é muito importante por questões de boas práticas na programação. Observando o código abaixo, verifica-se que o input do usuário é do tipo string:

var vitorias = prompt("Entre com o número de vitórias.");

Entretanto, mais para frente no script, esse input será alvo de operações matemáticas, e portanto, deve ser convertido para um número. Essa conversão pode ser feita de duas formas: com o uso de parseInt, ou automaticamente pela engine do JavaScript. Quando não no modo "strict", o prórpio JavaScript converterá a string quando realizar a operação:

var pontos = vitorias * 3 + empates * 1

Então, você está certo, como nessa linha você informa que tanto 'vitorias' quando 'empates' serão multiplicados, então ambos 'vitorias' e 'empates' sofrerão conversão automática de 'string' para 'number'.

Mas, mesmo assim, o uso de 'parseInt' (ou 'Number()' dependendo do caso) é muito importante, e além de garantir a clareza das etapas do código, também garante maior segurança na execução do código. Se não utilizar o parseInt, e o input for uma string não-numérica, ou então um número octal, o JavaScript não realizará a conversão automática, e haverá um erro. Esse erro será especialmente difícil de corrigir, uma vez que a indicação de local será imprevisível. Mas ao usar a conversão de tipo do parseInt, se houver um erro, ele será apontado exatamente para onde a conversão ocorreu e isso facilitará na construção de um código mais seguro.