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

While e contador

alguém poderia me explicar o conceito do contador e do sinal de +?

realmente não entendi

 <meta charset="UTF-8">
<script>

function pulaLinha() {

    document.write("<br>");
    document.write("<br>");
}

function mostra(frase) {

    document.write(frase);
    pulaLinha();
}
    function sorteia() {

        return Math.round(Math.random() * 100);
    }   

 var numeroPensado = sorteia();

    var chute = parseInt(prompt("Já pensei. Qual você acha que é?"));

    if(chute == numeroPensado) {

        mostra("Uau! Você acertou, pois eu pensei no " + numeroPensado);
    } else {


       var contador = 1
        while( contador <= 10 ) {

            mostra("Já era, você errou!");
           contador = contador + 1
        }

    }
    </script>
6 respostas

ola Gabriela, tudo bem? O contador funciona para contar quantas voltas o While vai fazer. No código que vc colocou o while terá que dar 10 voltas, quem se encarregará de fazer essa contagem é o contador. O + é o que ficará responsavel por fazer o contador dar a proxima volta.

No exemplo que vc passou o contador na primeira volta esta valendo 1, porque vc atribuiu o valor 1 anteriormente, o sinal de + fará com que o while de mais uma volta e passe a valer 2, na proxima volta valera 3, e assim ate chegar a 10 voltas e ele para.

var contador = 1
        while( contador <= 10 ) {

            mostra("Já era, você errou!");
           contador = contador + 1

Espero ter te ajudado, se vc nao entender pode perguntar denovo :) É normal ficar perdida no começo, nao se preocupe. Bons estudos

Só pra tentar ficar mais claro, vou te dar um exemplo. Caso vc queira imprimir na tela uma sequencia de 0 a 20, seria assim:

meta charset="UTF-8">

<script>
    function pulaLinha(){
        document.write("<br>");
    }

    contador = 0;

    while(contador <= 20){
        document.write(contador);
        pulaLinha();
        contador = contador + 1;
    }

</script>

Caso, vc queira imprimir somente os numeros pares, vc incrementa o contador com o numero 2, usando contador= contador + 2, assim:

contador = 0;

    while(contador <= 20){
        document.write(contador);
        pulaLinha();
        contador = contador + 2;
    }

Se vc quiser imprimir os numeros de 5 em 5, vc incrementa contador= contador + 5.

Tenta pra ver se vc consegue :)

Obrigada, Lidiana! to meio confusa mas acho que entendi melhor kk

Que bom que esta clareando...kkk. Basicamente o contador ira contar as voltas que o seu while terá que fazer e o + 1 é para que ele conte a proxima volta. Se vc nao colocar o +1 ele nao consegue continuar acrescentando as voltas que vc precisa. Ele faz assim: o contador na primeira volta vale 1. contador=contador+1, ele atualiza o valor, e no proxima volta ele ja estará valendo 2, ele atualiza o valor somando +1, e na proxima estará valendo 3, atualiza 3+1, depois 4+1, depois 5 + 1 e assim ate o limite que vc colocou.

Se ainda estiver complicado, nao se desespere...kkkk Assiste a aula mais vezes que vai ficando mais claro, e pode voltar aqui se quiser :)

<meta charset="UTF-8">
<script>
    function pulaLinha() {
        document.write("<br>");
    }

    function mostra(frase) {
        document.write(frase);
        pulaLinha();
    }

    var contador = 20;

    while( contador >= 0) {

      mostra(contador);
      contador = contador - 1;
    }

    mostra("FIM");
</script>

pode me explicar melhor este caso?

e pq o programa trava se eu somar ao invés de subtrair

solução!

Oi Gabriela, eu também sou iniciante mas acredito que sei te responder o motivo de travar caso você coloque o contador pra somar, ao invés de subtrair:

mostra(contador);
      contador = contador +1;

É o seguinte:

Você definiu que quer exibir na tela 20 numeros, ok? Depois disso você criou uma condição de repetição que caso o número do contador (que vc definiu como 20) for MAIOR ou IGUAL a 0(zero) a condição é TRUE(Verdadeira), então ele irá fazer uma repetição enquanto o número for maior ou igual a zero.

Vc definiu assim:

 var contador = 20;

    while( contador >= 0) {

Depois disso, na sua dúvida do porque se somar trava, você definiu que o contador deveria ficar somando o valor do contador (20) + 1; Ora, se você ficar somando 20 +1, a condição que você definiu anteriormente será SEMPRE TRUE. O seu While sempre será maior ou igual a zero, por isso ele vai repetir pra SEMPRE e vai travar o navegador.

Pra que ele pare de fazer as repetições, em algum momento a condição do While precisa dar FALSE.

Acredito que seja isso, caso eu esteja errado peço que me corrijam e espero que tenha entendido. Não foi tão simples pra mim também enteder a lógica desse contador de cara.