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

Não entendi a lógica

Já tem um outro tópico de uma outra colega sobre o mesmo assunto, mas está encerrado. Não entendi por que ele continua incrementando mesmo depois que já está maior que 0, e decrementando mesmo depois que já está menor que 600. Alguém pode explicar de uma forma bem clara? Fiquei quebrando a cabeça e não consegui resolver sozinha, tiver que olhar a resposta do professor, porque nunca ia chegar a essa conclusão.

2 respostas
solução!

Olá, Júlia! Tudo bem contigo?

Desculpe a demora em dar um retorno

Vamos partir do princípio que nosso x comeca na posição 20. Ou melhor, nossa bolinha começará nessa posição x

var x = 20;

Agora, a todo o instante x está recebendo a soma dele mais o sentido conforme vai desenhando o círculo e atualizando a tela

        desenhaCirculo(x, 20, 10);
        x = x + sentido;

Porém, chegará o momento em que x será maior que 600. Quando chegar em 601 o sentido deixará de receber +1 e passa a receber -1. Com isso, passamos para 600, de 600 para 599 e assim por diante. É aí que vemos a bolinha caminhar para a esquerda

        if( x > 600) {
            sentido = -1;

Quando atingirmos -1, que é onde a bolinha passaria da nossa margem esquerda, a variável sentido passa a receber +1 novamente.

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

Voltamos a ver a bolinha caminhando para a direita

    var x = 20;

    var sentido = 1;

    function atualizaTela() {

        limpaTela();

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

        desenhaCirculo(x, 20, 10);
        x = x + sentido;
    }

Espero ter ajudado, Júlia!

Um abraço e bons estudos!!!

Olá, Cassio! Agora eu entendi. Os ifs não consideram os valores entre 1 e 599, só fazem a atribuição de novo valor à variável sentido quando ultrapassa esses valores. Muito obrigada pela explicação.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software