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

Duvida em relação ao If

<meta charset="UTF-8">

<h1>Receitas do Yan</h1>

<script>
    var ingredientes = [];

    var quantidade = parseInt(prompt("Quantos ingredientes você vai adicionar?"));

    var contador = 1;

       while( contador <= quantidade) {

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

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

            if(ingredientes[posicao] == ingrediente) {

                break;

            } else {

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

     console.log(ingredientes);

</script>

Sei que meu código não está certo e que ele não vai funcionar assim, eu só não entendo porque quando eu peço para o If verificar se o valor que está em (ingredientes[posicao} == ingrediente] ele considera que seja igual e quebra, sendo que na primeira verificação seria diferente, porque o ingrediente teria o valor informado pelo usuário e o ingrediente[] estaria vazio.

4 respostas

Olá Demetrios!

Testei seu código junto de um colega da equipe. Fizemos teste de mesa e seguimos a lógica passo a passo.

Verificamos que o código não está quebrando. Realmente está com alguns problemas mas esse em especifico do If não está ocorrendo.

De qualquer forma, terá erros, e um deles seria em relação ao seu vetor.

Quando você faz:

posicao < ingredientes.length

Isso pode retornar um erro pois sua lista está undefined, ou seja, não possui tamanho.

Podemos contornar isso fazendo uma atribuição no inicio do código:

var ingredientes = [' '];

Agora temos um tamanho para a lista e podemos fazer a comparação que queriamos.

Porém, isso ainda irá resultar em um problema bizarro.

Execute para ver. Coloque 4 ingredientes:

  • Feijao
  • Arroz
  • Bife
  • Ops, espera, esse item não será aceito ...

Observa que sua lista retornará algo semelhante como:

[ " ", "feijao", "arroz", "arroz", "bife", "bife", "bife", "bife" ]

Isso acontece pois estamos passando dentro do else mais de uma vez, para resolver usamos o break dentro dele também:

else {
    ingredientes.push(ingrediente);
    contador++;
    break;
}

Agora seu código irá funcionar de uma maneira melhor da atual, porém, de uma olhada no código do professor, analise e busque entender, depois tenta fazer novamente.

Programação é muita prática!

No inicio focamos em escrever código que resolva o problema mas é sempre bom olharmos para outras implementações e vermos o que poderíamos melhorar no nosso. Isso nos ajuda a evoluir cada vez mais.

Espero que tenha ajudado!

Bons estudos! ^^

Obrigado pela ajuda, agora eu entendi porque o meu código não está funcionando e o porque do professor ter usado uma variável com o valor true ou false, dependendo da circunstância, para que o código funcionasse da forma correta.

solução!

Opa, magina! :D

Precisando pode chamar a gente!

Só peço que feche o tópico marcando a solução por favor. Assim outros alunos com a mesma dúvida irão conseguir achar a resposta mais facilmente.

Desde já, agradeço! ^^

Olá Demetrios, tudo bem?

Sua dúvida foi solucionada? Podemos fechar o tópico?

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