Jump to content
Fórum Script Brasil
  • 0

Sou novo em programação e gostaria de uma avaliação sobre este código


Mr Glokta
 Share

Question

Eu estou lendo um livro sobre Lógica de Programação com JavaScript e nele tem um exercício que me pede para fazer um jogo de loteria.
Eu consegui fazer oque estava no livro mas dai eu fui incrementando algumas coisa no código e depois disso eu parei para olhar e achei ele meio grande. Então eu gostaria de saber de vocês se ele está desnecessariamente grande ou se ele poderia ter sido feito de uma forma melhor e menor. Se possível até me apontar algumas falhas/hábitos que eu possa ter feito no código abaixo.
Agradeço desde já.

PS: Eu fiz ele no notepad++ e estou executando no chrome com um arquivo .html

 

<script>

function pulaLinha(z)
{
    var x;
    for (x = ; x < z; x++) 
    {
        document.write("<br>");
    }
}

function mostrarTexto (texto, y) 
{
    document.write ("<big>" + texto + "</big>");
    pulaLinha(y);
}

//----------------------------------------------------------------------------------------------------------------------------------------------//



function loteria()
{
    var n, p;
    //Inicialização
    function porque()
    {
        p = (parseInt(prompt("Devem ser sorteados números que estão entre 1 e ?:"))) - 1;
        if (isNaN(p))
        {
            alert("INSIRA APENAS NÚNEROS!");
            porque();
        }
        else if (p < 2)
        {
            alert("VOCÊ NÃO PODE INSERIR UM VALOR MENOR DO QUE 2.");
            porque();
        }
    }
    function nQ()
    {
        n = parseInt(prompt("Quantos números devem sem sorteados?"));
        if (isNaN(n))
        {
            alert("INSIRA APENAS NÚNEROS!");
            nQ();
        }
        else if (n < 1 || n > p)
            {
                alert("VOCÊ NÃO PODE INSERIR UM VALOR MENOR DO QUE 1 OU MAIOR DO QUE " + (p + 1) + ".");
                nQ();
            }
    }
    porque();
    nQ();
    //SORTEIO
    var x, y, check, acertos = , sorteados = [], escolhas = [];
    for (var i = ; i < n;)
    {
        x = Math.round((Math.random()*p) + 1);
        check = ;
        for (var a = ; a < n; a++)
        {
            if (sorteados[a] == x)
            {
                check = 1;
            }
        }
        if (check == )
        {
            sorteados.push(x);
            i++;
        }
    }
    //-------------------------------------------------
    //ESCOLHAS
    for (b = ; b < n;)
    {
        y = parseInt(prompt("Escolha um número entre 1 e " + (p + 1) + "\n--------------------------\nEscolha o " + (b + 1) + "º número"));
        check = ;
        for (var c = ; c < n; c++)
        {
            if (escolhas[c] == y)
            {
                alert("Este número já foi esclhido. Tente novamente!");
                check = 1;
            }
        }
        if (check == && !isNaN(y) && y <= (p + 1) && y > )
        {
            escolhas.push(y);
            b++;
        }
        else if (isNaN(y))
            {
                alert("APENAS NÚMEROS SÃO VÁLIDOS!");
            }
            else if (y > (p + 1))
                {
                    alert("ESTE NÚMERO É MAIOR QUE O LIMITE DE " + (p + 1) + ". TENTE NOVAMENTE!");
                }
                else if (y <= )
                    {
                        alert("ESTE NÚMERO É MAIOR QUE O MÍNIMO DE 1. TENTE NOVAMENTE!");
                    }
    }
    //-------------------------------------------------
    //VERIFICAÇÃO
    for (var d = ; d < n; d++)
    {
        for (var e = ; e < n; e++)
        {
            if (escolhas[d] == sorteados [e])
            {
                acertos++;
            }
        }
    }
    alert("Você acertou " + acertos + " de " + n);
    mostrarTexto("Foram sorteados: ----------- " + "Você escolheu:",1);
    for (var r = ; r < n; r++)
    {
        mostrarTexto(sorteados[r] + " ---------------------------------------------- " + escolhas[r], 1);
    }
    mostrarTexto("Pressione F5 para abrir o menu de opções novamente!", 2);
    
}

loteria();

</script>

Sem título333.png

Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 0

Boa noite Mr Glokta o código ficou bom (faltou alguns valores nos ifs e em um dos for). Creio que esteja declarando a variavel em lugar errado

 for (var d = ;

prefira usar for(d=valorDeInicicialização;...

if (check == )

Tem alguns ifs sem a variável par de comparação.

Tente não utilizar document.write(), para pular linha é melhor você ter uma variável global e concatenar toda a string a ser monstrada, no fim você imprimi apenas uma vez. Chamando document.write várias vezes consome muito recurso.

Segue uma alternativa para mostrar o texto. Como dica, sempre considere colocar os scripts em arquivos externos, e coloque-os no fim da página, isso garante o carregamento da página não prejudicando o usuário. Também não é recomendado colocar os scripts dentro das tags HTML como fiz abaixo. Um bom código deve ter arquivo CSS e JavaScript em arquivos separados, o HTML deve ter apenas a marcação, os IDs e Classes definidos.

Exemplo 1

# Primeiro crie uma div em seu código HTML dentro da tag BODY.
  <div id="conteudo"></div>

# Formulário para digitar os dados
  <form><input type="text" onkeypress="mostrarTexto(this.value)"></form>

# Script
  <script type="text/javascript">
  function mostrarTexto (texto)
  {
    document.getElementById('conteudo').innerHTML=texto.toUpperCase();
  }

  </script>

 

Link to comment
Share on other sites

  • 0

Bom dia virusnao, eu abri o código aqui e eu fui procurar onde estava faltando a definição da variável 'for' como você citou e a variável par de comparação dos ifs e está tudo aqui, eu não sei qual foi o motivo deles terem desaparecidos no código que eu postei, mas eles estão todos aqui.

Sobre as dicas que você deu sobre como melhorar os meus códigos eu agradeço muito. Eu vou tentar aprender mais sobre HTML e CSS já que eu não sei nada sobre os dois, por agora estou vendo JavaScript e depois pretendo ir pro C++, mas mesmo assim muito obrigado por responder e pelas dicas.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      149.9k
    • Total Posts
      646.8k
×
×
  • Create New...