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

var anoCopa executada antes da var mostra

Olá,

Eu executei a minha alteração um pouquinho diferente do proposto pelo instrutor. No entanto, embora ela tenha exibido os anos + mensagem, ela exibiu um ano a mais. Explico: limite = 2020, sendo assim o ultimo ano que deveria ser 2018, para que a o comando "anoCopa <= limite" esteja válido. Porém o meu programa exibe a última data como sendo "2022 tem copa". E quando eu inverto e coloco primeiro a função mostra, ele exibe corretamente apenas até 2018.

Abaixo segue meu código.

2 respostas
solução!

Olá Gabriela!

Realmente é a ordem da soma e do mostra dentro do while que causa esse "bug", como você notou. Fazendo primeiro a soma acontece que não vamos mostrar a copa de 1930, vamos começar com 1934 porque realizamos uma soma antes mesmo de mostrar o primeiro ano.

O que acontece é que nessa ordem (soma -> mostra) é testado um ano no while, mas mostrado o ano testado + 4

Exemplo da última execução do while

while(anoCopa <= limite) { # Aqui anoCopa é igual a 2018, então passa na comparação
    anoCopa = anoCopa + 4; # Somando 4 anoCopa agora é 2022
    mostra(anoCopa + " tem copa!"); # Mostra "2022 tem copa!"
}

Por isso primeiro mostrar o ano e só depois fazer a soma trás o resultado esperado nesse caso.

Obs.: Utiliza o botão <> INSERIR CÓDIGO que o seu código vai aparecer formatado aqui.

Espero ter ajudado, e qualquer coisa é só falar!

Excelente Lucas, faz todo sentido. Muito obrigada (inclusive pela dica do Inserir código, eu notei isso só depois de postar, valeu).