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

Criando uma função para o bloco do while

Boa noite, Gostaria de uma força se possível em uma dúvida. Seria montar uma função para while para chamar quando precisar. Desde já agradeço a força.

<meta charset="utf-8">

<script>

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

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

    //**************************************

    function condicao(correta){
        var cond = (minhaIdade >= 1 && minhaIdade <= 130);
        return cond;
    }

    var minhaIdade = parseInt(prompt("Digite sua idade"));
    var diasAno = 365;
    var diasNaTerra = minhaIdade * diasAno;

    if (condicao()){
        mostra("Você já viveu " + diasNaTerra + " dias na terra");

    } else {
        alert("Digite um valor de 1 a 130 anos");
        /*não consigo fazer um while ou for funcional
        que, agora volte a pegar a entrada do prompt
        e reavalie tudo novamente. Tentei fazer uma função
        mas o retorno invalida a variavel minhaIdade já
        que esta fora da função.*/
    } 

</script>
12 respostas

Não entendi muito bem, você quer que faça a repetição de verificação até o usuário informar uma idade válida?

solução!

Vou dar uma dica primeiro e você tenta resolver. Aliás, resolvemos o mesmo problema durante as aulas.

Identifique a parte do código que você deseja repetir. Achou? Envolve ela em um loop (while ou for, de acordo com seu gosto). Mas lembre-se que a repetição tem que ter um limite, caso contrário o usuário ficará perguntando a vida toda.

Tente mais um pouco, pode ser? Para refrescar sua memória, sugiro dar uma assistida novamente no capítulo https://cursos.alura.com.br/course/logica-programacao-javascript-html/section/7/task/1 e que também de uma olhada neste exercício: https://cursos.alura.com.br/course/logica-programacao-javascript-html/section/7/task/19/opinion

Aguardo seu retorno!

OBS: a ideia é que você não se torna um ninja, mas um cangaceiro em lógica de programação! Então vale o esforço, porque eu quero ver você em um futuro não muito distantes nos meus treinamentos avançados de JavaScript!!!!

Creio que esse código você esteja apenas treinando para estudo mesmo, pois não é nada funcional travar o usuário um script apenas em uma condição verdadeira.

Marco, Diego esta começando no mundo da programação. O foco inicial é que ele aprenda lógica de programação.

Diego, minhas dicas ajudaram? Conseguiu fazer o que deseja ou repensou sua estratégia?

Obrigado a todos pela resposta. Professor Flávio, sim foi exatamente a section/7/task/19/opinion que acertava meu codigo.

Consegui entender legal agora toda parte de repetição e o curso esta tudo bem claro, na verdade sou eu que precipito e a solução esta a frente.

Só que agora apareceu uma conversão da minha variável idadesTerra que retorna NaN. Não entendi por que, já que minhaIdade ja foi convertida no parse e diasAno é definida já direto como Int.

Qualquer modo o passo que estava trupicando foi solucionado e obrigado Professor pela sempre presente ajuda.

<meta charset="utf-8">

<script>

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

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

    //**************************************

    function condCorreta(correta){
        var cond = (minhaIdade >= 0 && minhaIdade <= 130);
        return cond;    
    }

    var diasAno = 365;
    var diasTerra = minhaIdade * diasAno;

    var retorno = 1;

    while (retorno <= 3){

        var minhaIdade = parseInt(prompt("Qual sua idade?"));

        if(condCorreta()){

            mostra("Você já viveu " + diasTerra + " dias na terra.");
                    //agora diasTerra passou a ser NaN
            break;

        } else {

            alert("Digite um valor de 1 a 130 anos");    
        }

        retorno++;
    } 

</script>

Diego, não encontro a variável idadesTerrano código que você postou. Se for uma nova dúvida e um novo código, peço que crie um novo post. Tudo bem?

Mas se for ainda o mesmo problema no seu código, só me esclarecer onde esta a variável idadesTerra que vemos o que acontece.

É no mesmo código, desculpa me confundi em escrever idadesTerra, o certo no código dando NaN é diasTerra.

function condCorreta(correta){
        var cond = (minhaIdade >= 0 && minhaIdade <= 130);
        return cond;    
    }

    var diasAno = 365;
    var diasTerra = minhaIdade * diasAno;

Veja que para você calcular diasTerra você precisa capturar o que o usuário digitou certo? Repare que você declarou a variável e o resultado que ela recebe fora do while!

Veja o código alterado. Só vou alterar essa questão, para que seu código funcione.


// código omitido

    while (retorno <= 3){

        var minhaIdade = parseInt(prompt("Qual sua idade?"));

        // aqui é o local correto
        var diasTerra = minhaIdade * diasAno;

        if(condCorreta()){

       // código omitido

Perfeito Professor valeu a força.

Ah sim, e pelo visto deu muito certo. Parabéns a equipe desses cursos. =)