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

2ª Guerra Mundial e Covid...

Olá, tudo bem?

Estava fazendo esse exercício quando meu companheiro lembrou-me de que se estivesse falando sobre as olimpíadas o programa não daria certo, porque esse ano teria jogos, mas pelo vírus o evento foi cancelado/adiado. Então lembrei que em dois anos a copa do mundo também não foi realizada, então fiz meu programa pensando nisso... Está um pouco "cheio" demais, mas eu não consegui deixar mais "enxuto" ... Se tiverem alguma dica para me dizer como deixar mais simples, eu agradeço!

var anoCopa = 1930;
var limite = parseInt(prompt("Escolha um ano, para saber quantas copas ocorreram/ocorrerão do início do campeonato mundial até o ano que você escolher (que pode ser no passado ou no futuro!):"));
var anoAtual = parseInt(prompt("Em que ano estamos?"))

while(anoCopa <= limite) {

        if (anoCopa == 1942) {
        exibe( anoCopa + " não teve Copa por causa da 2ª Guerra Mundial");
            anoCopa = anoCopa+4
         }

        if (anoCopa == 1946) {
            exibe(anoCopa + " não teve Copa por causa da 2ª Guerra Mundial");  
            anoCopa=anoCopa+4
        }

        if (anoCopa < anoAtual) {
            exibe (anoCopa + " teve copa do mundo!")
            anoCopa=anoCopa+4
        }

        if (anoCopa == anoAtual) {
            exibe (anoCopa + " tem copa do mundo!")
        anoCopa=anoCopa+4      
      }

        if (anoCopa > anoAtual) {
        exibe (anoCopa + " terá copa do mundo se nada impedir...");
        anoCopa = anoCopa + 4;
        }
    }

    mostra ("Ufa! Estes foram/serão os anos nos quais teve/terá copa do mundo até " + limite); 

Além de ter colocado a especificação dos dois anos, coloquei diferença entre o passado e o futuro... Por essas especificações todas é que o código ficou longo, mas imagino que seja possível diminuir, mas não consegui sozinha... rs
2 respostas
solução!

Bruna,

Na verdade o seu código retorna erro, quando você decide colocar varios if um embaixo do outro, ele acaba passando por TODOS os if, com isso nos anos de 1942 e 1946 por exemplo exibe as mensagens: 1942 não teve Copa por causa da 2ª Guerra Mundial 1942 teve copa do mundo!

O ideal nesse caso seria utilizar o else if (mas acho que nesse ponto você ainda não viu isso).

Sobre enxutar mais o código, acho que fica melhor voce incrementar o anoCopa apenas no final, pois como todos os IF fazem isso, voce pode deixar fazendo apenas uma vez no final do WHILE:

<meta charset="UTF-8">

<script>

    function pulaLinha() {
        document.write("<br>");
    }

    function mostra(frase) {

        document.write(frase);
        pulaLinha();
    }

    var anoCopa = 1930;
    var limite = parseInt(prompt("Escolha um ano, para saber quantas copas ocorreram/ocorrerão do início do campeonato mundial até o ano que você escolher (que pode ser no passado ou no futuro!):"));
    var anoAtual = parseInt(prompt("Em que ano estamos?"))

    while(anoCopa <= limite) {

        if (anoCopa == 1942) {
            mostra( anoCopa + " não teve Copa por causa da 2ª Guerra Mundial");
        }
        else if (anoCopa == 1946) {
            mostra(anoCopa + " não teve Copa por causa da 2ª Guerra Mundial");  
        }
        else if (anoCopa < anoAtual) {
            mostra (anoCopa + " teve copa do mundo!")
        }
        else if (anoCopa == anoAtual) {
            mostra (anoCopa + " tem copa do mundo!")
        }
        else if (anoCopa > anoAtual) {
            mostra (anoCopa + " terá copa do mundo se nada impedir...");
        }

        anoCopa = anoCopa + 4; 
    }

    mostra ("Ufa! Estes foram/serão os anos nos quais teve/terá copa do mundo até " + limite); 

</script>

o ANO de 1942 essas duas condições são verdadeiras, por isso acaba exibindo as duas frases para a mesma ocasião:

if (anoCopa == 1946) {
            exibe(anoCopa + " não teve Copa por causa da 2ª Guerra Mundial");  
            anoCopa=anoCopa+4
        }

        if (anoCopa < anoAtual) {
            exibe (anoCopa + " teve copa do mundo!")
            anoCopa=anoCopa+4
        }

Oi! Obrigada por responder. Na verdade não deu erro no meu código... Está aparecendo exatamente como queria...