Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

passo a passo

pode me explicar a resolução passo a passo? no caso, a função dos codigos adicionados pelo professor nesse exercicio. alem disso, ao executar o programa e adiccionar os ingredientes, aparece apenas "receitas do yan". isso esta correto?

1 resposta
solução!

Olá Thaís,

Tudo bem?

Vou colar abaixo a resolução do professor e deixar os comentários passo a passo no próprio código, ok?

De antemão, sim, está correto aparecer somente "Receitas do Yan" na tela. A outra saída é no console, mas vou comentar sobre isso no código. ;)

<script>
    //O código começa a declaração de um novo array, onde serão armazenados os ingredientes.
    var ingredientes = [];

     //Aqui é solicitado ao usuário a quantidade de ingredientes que ele quer inserir. Como o retorno do *prompt* é um texto, é necessário fazer esse *parseInt*
    var quantidade = parseInt(prompt("Quantos ingredientes você vai adicionar?"));

    //Nesta linha, é inicializado um contador que será utilizado para controlar a quantidade de ingredientes que serão inseridos no array.
    var contador = 1;

    //Foi utilizado um while para controlar a inserção de ingredientes, ou seja, enquanto o contador (1) for menor que a quantidade informada pelo usuário, o código da iteração que solicita ingredientes ao usuário deve ser executado.
    while( contador <= quantidade) {

        //Nesta linha é solicitado ao usuário um ingrediente. Veja que aqui não é necessário nenhuma conversão, pois o que queremos é um texto mesmo.
        var ingrediente = prompt("Informe o ingrediente " + contador);

        //Aqui começa o desafio proposto na atividade. Para verificar se um determinado ingrediente existe, é necessário declarar uma váriavel de controle. No caso, está sendo assumido que o ingrediente informado não é repetido.
        var existe = false;

        //Com o laço ***for*** abaixo é feita a verificação da existencia do ingrediente dentro do array. A variavel posicao vai controlar os indices dentro do array. Como em Javascript o indice de um array começa em 0, ela é declarada inicialmente com o valor 0, justamente para que verificação comece sempre do primeiro elemento. 
        //Note que na primeira execução, a variavel posicao e o length do array de ingredientes serão iguais a 0 e como isso não satisfaz a condição especificada (posicao < ingredientes.length), não haverá a execução do for.
        for( var posicao = 0; posicao < ingredientes.length; posicao++) {

            //Caso o array de ingredientes tenha elementos, será feita uma verificação em cada posição dele pra ver se o valor da posição é igual ao que foi digitado pelo usuário.
            if( ingredientes[posicao] == ingrediente) {

                //Caso seja encontrado um ingrediente igual ao que foi digitado, a variável de controle é atualizada. Isso é necessário para que mais abaixo seja evitado a inserção do novo ingrediente. 
                existe = true;

                //Essa instrução encerra o **for**. Como já encontramos um ingrediente repetido, não há a necessidade continuar verificando. Note que aqui estamos apenas encerrando o for, o código continua.
                break;
            }
        }
        //Caso a instrução break seja executada, é aqui que o código dará continuadade na execução. 
        //Aqui é verificado se foi ou não encontrado um ingrediente repetido. Lembra que inicialmente a variavel existe é definida como *false*? Então, essa variável só é atualizada dentro do for, caso seja encontrado um ingrediente repetido.
        if( existe == false) {

            //Caso a variável tenha permanecido com o valor falso (ou seja, não foi encontrado um ingrediente repetido), o ingrediente digitado é adicionado ao array.
            ingredientes.push(ingrediente);

            //Novamente, caso não haja repetição de ingredientes, é incrementado o contador de controle de quantidade de ingredientes, para que seja solicitado ao usuário o próximo ingrediente.
            contador++;
        }
        //Note que, caso um ingrediente repetido tenha sido encontrado, as instruções do **if** não serão executadas, ou seja, não será adicionado o ingrediente ao array e nem será incrementado a variável de controle da quantidade de ingredientes. 
        //No caso da variável contador, o não incremento dela significa que será solicitado ao usuário um novo ingrediente para a mesma posição do array.
    }

    //Está é ultima instrução do programa e a também a unica saida do script. ela escreve no console o array final de ingredientes. Você pode consultar o console pressionando F12 no navegador, na aba Console.
    console.log(ingredientes);
</script>

Espero ter ajudado.

Abraços!

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