6
respostas

Números pares - outra resolução

A forma mais eficiente que pensei foi assim

<meta charset="UTF-8">

<script>

    function pulaLinha()  {

        document.write("<br>")
        document.write("<br>")
    }

    function mostra(frase)   {

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

    var numeroPar = 0 && 100;

    while(numeroPar <= 100) { 

        mostra("Os numeros pares são: " + numeroPar);
        numeroPar = numeroPar + 2;

    }

    mostra("FIM");

</script> 
6 respostas

Essa é uma solução bem eficiente, alguém poderia pensar em em fazer comparações dentro do loop while para verificar se é par oque seria mais custoso, a sua solução é melhor porque ela soma sempre dois ou seja ela só gera números pares uma melhoria seria talvez usar um for loop, mas a diferença é quase nem uma.

for (var numeroPar = 0; numeroPar < 100; numeroPar=numeroPar+2) {
    mostra("Os numeros pares são: " + numeroPar);
}

Já que você perguntou, dessa forma pode ser mais eficiente Nicolas.

for (var cont = 1; cont <= num; cont++){
            if(cont % 2 == 0){
                mostra(cont);
            }
    } 

A Solução da Fernanda não pode ser mais eficiente pois possui uma comparação, além da condicional de loop, pra gerar números pares o mais eficiente é ficar mais próximo da aritmética e imagina uma função que para cada numero inteiro do domínio e gerado um numero inteiro par para imagem.

Mas a solução da Fernanda pode ser um ótimo começo para solucionar problemas mais complexos como FIZZBUZZ ou se você quer achar quais são os numero para em uma determinada lista de números. Tambem acho que a Fernanda pode ser mais fácil de entender.

Exemplo usando parte da solução da Fernanda pra imprimir todos os números pares em uma lista , "numerosFavoritos":

<meta charset="UTF-8">

<script>

    function pulaLinha() {

        document.write("<br>")
        document.write("<br>")
    }

    function mostra(frase) {

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

    var numeroPar = 0 && 100;

    var numerosFavoritos = [213, 423, 564, 57, 87, 44, 22, 33, 44, 654, 5, 4, 3, 2, 1, 0];

    for (var cont = 1; cont <= numerosFavoritos.length; cont++) {
        if (numerosFavoritos[cont] % 2 == 0) {
            mostra(numerosFavoritos[cont]);
        }
    }

    mostra("FIM");

</script>

Existem varias formas de fazer, a logica é a mesma, porém escritas de formas diferentes. A proposta do exercício é que sejam exibidos os números pares de 1 a 100. O seu código também trás uma comparação e um loop, já que foi um dos pontos apresentados por você falando que o código que eu trouxe não é eficiente. Mas já que não é, por favor me apresente uma solução de forma automatizada sem utilizar repetição e comparação para resolver esse exercício.

O problema de FizzBuzz pede para verificar se o número é divisível por 3 ou 5 caso atendesse aos requisitos o programa troca esse número por palavras. Ao invés dele verificar (cont % 2 == 0), teria que usar if's encadeados para fazer as duas verificações, ficaria assim: if(cont % 3 == 0) e if(cont % 5 == 0). Todos, ou pelo menos a maioria dos estudantes de TI que programam ou programaram sabem que para verificar se um número é impar ou par utiliza o método de resto da divisão.

Você falou, falou e escreveu a mesma coisa que eu, só que de forma diferente, usou a mesma lógica, a diferença é que você jogou os números em um array e pediu para para que mostrasse os números pares dentro dos números inseridos no array, e mais uma vez saliento, a proposta do exercício não é essa, e existem varias formas de serem feitas.

Outro ponto, o código que fiz baseado no código que você colocou aí. Mas é isso aí, quanto mais formas de resolver problemas, melhor hehe

A logica não é a mesma em os números estão sendo gerados somando de 2 em 2 então em 50 passos teremos os 50 números pares menores que 100, na sua solução estamos passado pelos 100 números e verificando quais são pares então são sem 100 passos pra gerar 50 números pares. ou seja 2 vezes mais trabalho para o computador, para gerar só 100 numero isso não é nada mas para gerar milhões a diferença fica evidente.

Achei muito legal a forma que Milena Edokawa Massariol resolveu o problema.