Ir para conteúdo
Fórum Script Brasil
  • 0

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


Mr Glokta

Pergunta

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 para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...