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

Os códigos abaixo fazem a mesma coisa, mas o do instrutor parace juntar else e if abrindo e fechando chaves uma só vez, ao passo que eu abri e fechei chaves para cada if e para cada else. Qual o conceito?

<!-- codigo aluno -->
<canvas width = "600" height = "400"></canvas>
<script>
    function leDoTeclado(evento) {

        if (evento.keyCode == cima)  {
            y = y - taxa;
        }   else    {
            if (evento.keyCode == baixo) {
                y = y + taxa;
            }   else    {
                if (evento.keyCode == esquerda)  {
                    x = x - taxa;
                }   else    {
                    if (evento.keyCode == direita)   {
                        x = x + taxa;
                    }
                }
            }
        }

    }

// código instrutor

function leDoTeclado(evento) {

        if(evento.keyCode == cima) {

            y = y - taxa;

        } else if (evento.keyCode == baixo) {

            y = y + taxa;

        } else if (evento.keyCode == esquerda) {

            x = x - taxa;

        } else if (evento.keyCode == direita) {

            x = x + taxa;
        }
    }

</script>
3 respostas
solução!

Olá Mario, tudo bem?

Você colocou a instrução if dentro da instrução else, isso faz com que tenha que fechar mais chaves:

else    {
            if (evento.keyCode == baixo) {
                y = y + taxa;
            }
}

O instrutor colocou a instrução else if, fazendo com que o código fique mais conciso:

else if (evento.keyCode == baixo) {

            y = y + taxa;

        }

Ficou claro?

Olá Mario tudo bem? Olha se bem entendi você quer saber o porque o do professor o else e if foram escritos usando apenas uma chave então isso ocorre por causa que o else significa "caso contrário" então fica assim:

//caso aconteça algo
if(){
//executa isso
}
//caso contrário 
if{
//executa isso
}

Ou seja é o mesmo que

if(){
}else if(){

}else if(){

}

Bom o que quero dizer é que os dois estão certos porém o do professor é mais compacto O java irá ler os dois da mesma maneira o que aconteceu ali é só algo para ficar mais fácil de você ler. Tipo na minha opinião é mais fácil ler

else if(){

} do que else { if(){ } } então fica de sua escolha qual estrutura usar, se o código estiver rodando(compilando) está certo(nesse caso). Bom espero ter ajudado em sua dúvida e se ela foi solucionada porfavor marque como solucionada. muito obrigado, continue assim e bons estudos tchau tchau

Ambos funcionam mas a diferença é que o seu criou um "ninho de rato" com if dentro de if.

Nesses exemplos simples não é um problema pq é bem fácil entender do que se trata um código só de bater o olho, mas imagina se você chega no trabalho e pedem para você mexer num código que tem 180 linhas todas organizadas dessa maneira?

Então a "regra" é organizar o código de forma que seja bem fácil de entender o que esta acontecendo ali só de bater o olho... até pq 1 mês depois você acaba esquecendo o código que você mesmo fez e se não estiver bem organizado pode perder tempo demais mexendo em algo que deveria ser simples e ninguem quer ficar até mais tarde no trabalho em uma sexta feira por causa disso hahaha