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

Não entendi: raio > 30 e raio <20

Boa noite,

Eu até que consegui entender como montar a formula e etc, mas me embaracei na leitura dos sinais. Vou tentar explicar:

var raio = 19;
 if(raio > 30) {
            fatorCrescimento = -1;
        } else if (raio < 20) {
            fatorCrescimento = 1;
        }

        raio = raio + fatorCrescimento;

A minha dúvida é a seguinte, como se lê estes "ifs"? Porque da forma como tenho lido não tem feito muito sentido, e é mais ou menos assim:

Se o raio (que é 19, definida pela variavel) for maior do que 30, então diminui-se 1; 19 não é maior que 30, então: Se raio que é 19 for menor que 20, então soma + 1;

Nossa variavel raio agora vale 20;

Se o raio (que é 20) for maior que 30, então diminui-se 1; 20 não é maior que 30, então: Se o raio que é 20 for menor que 20, então some + 1; Logo, 20 não é menor que 20 pra somar 1, mas tamb\ém não é maior do que 30 pra diminuir 1;

Sei que o erro está na forma como estou interpretando a leitura das variaveis...

Se 19 for maior que 30, então diminui 01... não é, logo: Se 19 for menor que 20, então soma 01... temos então: raio 20; Se 20 for maior que 30, então diminui 01... não é logo: Se 20 for menor que 20, então soma 01... também não é!

E agora? Como entender??

5 respostas

Boa noite! Matheus

Você entendeu corretamente, mas como não existe um else{} apos o "else if (raio < 20) {fatorCrescimento = 1; }", a função sempre vai realizar "raio = raio + fatorCrescimento;" caso não cumpra com as condições dos if's acima. Logo, apos parar de cumprir os requisitos, a variável "fatorCrescimento" continuará tento valor igual a 1 até que a variável raio ultrapasse o valor de 30 e caia no "if (raio > 30)", e esse loop permanecerá.

Boa noite, Vitor!

Ainda não ficou muito claro pra mim, pois, mesmo que raio seja 31 e no caso se encaixe na formula if(raio > 30) { fatorCrescimento = -1;, logo após perder 1, ele torna a nao caber nesse if, nem no outro que diz (raio < 20) { fatorCrescimento = 1;... e se nesse caso ele ignorasse e partisse para a função raio = raio + fatorCrescimento;, nosso raio tornaria a receber mais 1 ficar com 31! Logo, pra mim, eu demorei a realizar a atividade porque no meu ver aí estaria o loop! É nesse ponto é que, apesar de não entender ainda como estou errando, sei que estou, porque o computador consegue interpretar e eu não consigo enxergar onde está o meu erro.

:(

solução!

É necessário lembrar que quando a condicional do if é cumprida, ela não realiza uma função para diminuir o valor do raio, ela altera o valor da variável fatorCrescimento. Ou seja, a partir do momento que a variável passa a valer -1 a função se torna raio = raio - 1 e ela se repete até que raio seja menor que 20, aí então, o valor da variável fatorCrescimento se tornará 1 fazendo com que a função a ser executada seja raio = raio + 1.

Este processo entre aumentar o raio de 1 em 1 até que seja maior que 30 setar a variável fatorCrescimento para -1 e diminuir o valor do raio de -1 em -1 até que o valor do raio seja menor que 20 se repetirá infinitamente.

Para exemplificar um pouco melhor alterei o código para que você possa velo rodar no seu terminal. A cada 1 segundo ele vai mostrar tanto o valor do raio quanto o valor do fatorCrescimento:

function teste() {
  var raio = 19
  var fatorCrescimento = 0

  setInterval(() => {
    if (raio > 30) {
      fatorCrescimento = -1
    } else if (raio < 20) {
      fatorCrescimento = 1
    }

    raio = raio + fatorCrescimento
    console.log(raio)
    console.log(fatorCrescimento)
  }, 1000)
}

console.log(teste())

Colegas... agora que percebi que havia me equivocado no meu raciocínio...

O trecho do código em questão é:

var raio = 19;

if(raio > 30) {
            fatorCrescimento = -1;
        } else if (raio < 20) {
            fatorCrescimento = 1;
        }

raio = raio + fatorCrescimento;

Percebi que eu também não tinha entendido a interpretação do código e ajustei a tabela de variação do raio da bolinha:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Pelo ajuste que o Vitor fez no código, observando o console, dá para entender perfeitamente.

Agradeço a oportunidade.

Bons estudos!

Caros colegas Vitor e Leila,

Não tenho palavras pra agradecer o empenho que tiveram em tentar esclarecer essa minha dúvida... Agora sim consegui compreender a logica aplicada neste exercício! Muito obrigado!