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

Não entendi a lógica

Olá, bom eu não entendi a lógica do if. por exemplo if(x > 600) quando x for maior que 600 ele vai ficar subtraindo -1 do sentido certo? mas quando a bolinha começa a voltar ele fica tirando -1 do sentido mesmo assim sendo que o x ja é menor que 600 e o mesmo para quando x < 0.

function atualizaTela() {
    limpaTela();

    if( x > 600) {
        sentido = -1
    } else if (x < 0) {
        sentido = 1;
    } 
}
8 respostas

Olá Gustavo,

Pela forma como o código está implementado o funcionamento seria o seguinte:

A cada vez que a função atualizaTela() for chamada

  • Limpa a tela
  • Verifica se o x é maior que 600
  • Caso seja verdade coloca na variável sentido o valor -1
  • Caso não seja verdade, verifica então se o valor de x é negativo
  • Sendo negativo, coloca o valor 1 na variável sentido
  • Não sendo negativo, não executa nada

Vale lembrar que o if executa as verificações apenas uma vez, e que possíveis repetições são executadas talvez invocando o método atualizaTela() repetidas vezes.

Espero ter ajudado no pensamento. Abraço!

Gustavo, o if é uma verificação boleana.

Você está certo se, se x for maior que 600 ira subtrair, mais olha o else if.

if( x > 600) {
        sentido = -1
    } else if (x < 0) {
        sentido = 1;
    }

Se o x for menor que que 0, sua variavel sentido ira receber 1; e se x for mair que 600, sua variavel ira tirar -1 do valor dela.

Pessoal,

Um cuidado. sentido = -1; não subtrai. Aqui estamos apenas atribuindo (operador =) um valor fixo (-1) à variável sentido.

Não confundir com o uso dos operadores -=, =- e etc que vemos por aí.

Abraços

Obrigado pessoal, deixa eu ver se entendi por exemplo. if( x > 600) { sentido = -1 } else if (x < 0) { sentido = 1; }

x passou de 600 dai ele começa a subtrair - 1 de sentido fazendo o x diminuir e a bolinha voltar, mas a questão é quando x for por ex 600 dai ele começa a descer ai vai para 599 dai a minha duvida é porque o if continua subtraindo o sentido sendo que 599 não é > 600.

É porque quando ele entra no if ele so muda quando o x for < 0 ? ou seja até receber outra mudança?

solução!

Opa Gustavo,

Pelo que eu entendi, a variável sentido deve funcionar apenas como um 'clock' que, ora possui 1 como valor, ora possui -1. Provavelmente está controlando o sentido da bolinha. 1 = subindo, -1 = descendo.

Perceba que o algoritmo não altera o estado da variável x, apenas o sentido se altera. A alteração no valor de x deve estar sendo controlada por outra operação.

O funcionamento do método atualiza faz com que, se o valor do x atual for superior a 600 (imagino que x seja um eixo) o sentido é definido como "-1", provavelmente representando que a bolinha deve começar a descer .

Caso não seja superior que 600, verifica então se o valor de x ja está menor que zero. Se estiver, define o sentido como positivo. Provavelmente representando a mudança no sentido da bolinha (subindo).

Caso o valor do x atual não seja nem maior que 600, nem menor que zero, o if não tem nada a executar. Significando que o sentido da bolinha permanece o mesmo.

ahh agora entendi Rafael rollo é exatamente isso muito obrigado pela resposta. :)

Rafael boa observação nem tinha reparado no sinal. Quem sabe sabe kkk

Por nada pessoal =)

Bons estudos e continuem contribuindo com os colegas por aqui.

Abraços!