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

dificuldade com boleando!

bom dia! Criei uma "lista de compras" e percebi que não compreendo a resposta do booleano, não entendo como ele é lido pelo programa, eu consegui fazer, mas só pareando com o programa ao do ultimo exercício que eu não consegui concluir! eu quero entender como o programa lê cada ponto acho que assim o "opa = false" ficasse mais claro! (de todo modo vou revisar a aula para ver se fica mais claro).

<meta charset="UTF-8">

<h1>Lista de Compras</h1>

<script>
 var ingredientes = [];

 var quantidade = parseInt(prompt("Quantos itens sua lista vai ter?"));

 var iten = 1


    while(iten <= quantidade){
       var ingrediente = prompt("ingrediente " + iten);

       var opa = false

       for(lugar = 0; lugar < ingredientes.length; lugar++){

               if(ingredientes[lugar] == ingrediente){
                   opa = true
                   alert("A lista ja contem esse ingrediente");
                   break;
               }
           }
        if(opa == false){
           ingredientes.push(ingrediente);
           //o peso não usei o parseInt para ter a liberdade de macar a unidade de medida litros, kilo e etc...
           var peso = prompt("peso/quantidade " + iten);
           document.write(iten + ") "+ peso + "  de  " + ingrediente + "<br>");
           iten++
         }

    }
 console.log(ingredientes);
</script>
3 respostas

Boolean = true ou false (famoso 0 e 1)

Boolean soh aceita esse tipo de valor. Ou seja, no seu codigo voce inicializa ele como False. No for(looping) temos uma condicao que se entrar nela. Coloca o opa como verdadeiro (True).

Fora do For, temos uma condicao com essa mesma variavel, onde se ele nao entrou na condicao do looping para colocar ela Verdadeira(True), ele ira passar no if.

Resumindo, pensa sempre que o Boolean sempre tera apenas 2 caminhos. Verdadeiro ou falso. Ele eh tao simples quanto parece. rsrsrsrs

solução!

Fala Adriano, Beleza?

Vou tentar te explicar por aqui.

Você conseguiu entender o comportamento do while, certo? Basicamente todo codigo dentro das chaves do while será executado enquanto a variável iten for menor ou igual à variável quantidade.

Toda vez que esse bloco iniciar, você cria a variável opa e informa que seu valor é false.

Logo em sequida vc entra num laço for que vai percorrer seu array, item por item, comparando se o ingrediente digitado é igual a algum item ja registrado no array, beleza?... se tiver algum valor igual, vc faz a variável opa receber o valor true, mostra um alerta e força a parada desse laço for... mas não pára o while.. por isso logo depois do laço for há uma verificação se o opa é false, e se for ele adiciona o ingrediente na lista porém... lembra que vc informou que o valor de opa é true pq já há um ingrediente na lista com o mesmo nome? Sendo assim seu código não entra no bloco do if e volta para o início do while.

Seu bloco if só será executado se seu código passar pelo bloco for e não tiver nenhum item do array igual ao ultimo ingrediente que vc digitou... então não será atribuído outro valor ao opa (ele continuará false), entrará no bloco if e será feito o push do ingrediente na lista.

Espero ter ajudado!

Abs.

obrigado Guilherme e Eraldo! compreender o caminho e muito importante para entender como devo instruir o programa, acho que ficou claro!

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