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

Dúvida sobre o código do professor

Boa tarde. Eu fiquei com uma dúvida no código resposta do professor. Eu olhei outras respostas por aqui no forum mas ainda não consegui tirar minha dúvida. O que eu resolvi fazer foi pegar o código do prof e comentar ele passo a passo, quase como traduzindo o código para o português para ver se entendi. Os comentários ficaram assim

<meta charset="UTF-8">

<h1>Receitas do Yan</h1>

<script>
    var ingredientes = []; // variável que cria uma lista (array) vazia.

    var quantidade = parseInt(prompt("Quantos ingredientes você vai adicionar?")); // um alerta pedindo que o usuário coloque o número de ingredientes. Será lida como texto mas o parseInt transforma em número.

    var contador = 1; // variável com um valor para que possa ser feita a comparação

    while( contador <= quantidade) { // enquanto a quantidade do contador (1) for menor ou igual ao número que o usuário digitou

        var ingrediente = prompt("Informe o ingrediente " + contador); // pedimos para o usuário digitar o ingrediente no prompt

        var existe = false;

        for( var posicao = 0; posicao < ingredientes.length; posicao++) { // demos o nome "posicao" para o espaço no array, se o valor da variável "posicao" for menor ou igual o comprimento do array, adicionamos +1 a variável posicao

            if( ingredientes[posicao] == ingrediente) { // se o valor dentro do array ingredientes [dentro da posicao referida] for igual ao que o usuário digitou

                existe = true; // ?
                break;
            }
        }

        if( existe == false) { // ?

            ingredientes.push(ingrediente); //?
            contador++;
        }
    }

    console.log(ingredientes);
</script>

Como podem ver eu estou em dúvida do pq usamos essa var "existe = false". Não entendi o motivo dela estar ali. Também no final que acho que eu simplesmente buguei rs

Alguém consegue me ajudar? Acho que meu problema é não entender a lógica de como esse código funciona

2 respostas
solução!

Não sei se entendi exatamente sua dúvida, mas vamos lá.

A váriavel "existe" foi declarada para que ela podesse ser utilizada dentro da condição que está dentro do loop.

while (contador <= quantidade){

        var ingrediente = prompt("Informe o ingrediente " + contador );

        var existe = false;

        for (var posicao = 0; posicao < ingredientes.length; posicao++){
            if (ingredientes[posicao] == ingrediente){
                existe = true; 
                break;
            }
        }

Assim, a variável "existe" esta verificando se o valor inserido dentro do prompt "ingrediente" é igual a algum valor armazenado na Array "ingredientes". Caso o loop verificar que algum ingrediente seja igual ao que já está armazenado ele irá mudar o valor da variável "existe" para true (indicativo que já tem um valor igual ao inserido) e irá solicitar que adicione novamente outro produto utilizando a função break e quebrando o loop e iniciando ele novamente.

        if (existe == false){
            ingredientes.push(ingrediente);
            contador++;
        }

Caso a variável produto ainda esteja "false", quer dizer que o loop anterior não foi interrompido, fazendo com que seja necessário pegar o valor declarado na variável "ingrediente" que está dentro do "while" e adicionar dentro da nossa Array declarada no inicio do código.

Espero ter conseguido fazer algum sentido e explicado suas dúvidas. Qualquer duvida restante só avisar.

Ficou bem clara sua explicação. Até hoje estou com dificuldades com o break mas vou estudar mais. Obrigado!