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

Aula 6 - Exercício "Pode Dirigir"

Pessoal, o código está funcionando.

A ideia é chamar a pergunta "Tem carteira?", somente quando necessário. Mas, na solução da atividade, independente da resposta da idade, o código chama a segunda pergunta.

Então, inseri o var "temCarteira" dentro do else e isso está me incomodando um pouco.

Existe outra forma de posicioná-lo no código?

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

    if (idade < 18){
        mostra("Desculpe, mas você precisa completar 18 anos para tirar carteira.");
    } else {
            var temCarteira = prompt("Tem carteira? Responda S ou N");
            if (temCarteira == "S"){
                mostra("Parabéns! Você já pode entrar em um carro e dirigir por aí!")
            } else {
                mostra ("Você é um Inútil!");
            }
    }
5 respostas
solução!

o que te incomoda? eu sempre sigo essa lógica: declare as variáveis para terem o menor escopo possível. Foi o que vocÊ fez ae. Não vejo problema da forma que você fez.

Boa noite Flávio. Acho que sua lógica está correta. Pensando de uma forma geral no programa: Primeiro você diz sua idade. Caso seja menor de 18, não pode dirigir e pronto. Caso seja maior, deve então informar se tem carteira.

Oi Flávio na verdade ele só vai perguntar se tem carteira caso a idade seja menor que 18, o que é normal pois aí sim poderia ter carteira certo, então não identifiquei problema algum.

No entanto poderia ser feito de outras formas como essa:

<script>

    function mostra(frase){
        document.write(frase)
    }

    var idade = parseInt(prompt("Qual é sua idade?"));
    var temCarteira = prompt("Você já Tem carteira de motorista? Responda S ou N");

    if (idade>=18 && temCarteira == "S"){
                mostra("Parabéns! Você já pode entrar em um carro e dirigir por aí!")
    } else if(idade<18){
             mostra("Desculpe, mas você precisa completar 18 anos para tirar carteira, se conseguiu foi por meios ilicitos cuidado");
    }else{
            mostra("Apesar de não ter carteira você já pode tirar!!  matricule-se em uma auto escola");
    }

</script>

OU

<script>

    function mostra(frase){
        document.write(frase)
    }

    var idade = parseInt(prompt("Qual é sua idade?"));
    if (idade<18){
        mostra("Espere até completar 18 então para tirar!");
    }
    if(idade>=18)
        var temCarteira = prompt("Você já Tem carteira de motorista? Responda S ou N");
        if (temCarteira == "S"){
            mostra("Parabéns! Você já pode entrar em um carro e dirigir por aí!")
        } else {
                mostra ("Então já poderia ter, vamos tirar amanhã:)");
        }

    }


</script>

//Esta variável é para ativar a verificação de carteira. var verificarCarteira = "Não";

if (idade < 18){ mostra("Desculpe, mas você precisa completar 18 anos para tirar carteira."); } else { verificarCarteira = "Sim"; }

if(verifcarCarteira == "Sim"){

var temCarteira = prompt("Tem carteira? Responda S ou N");

if (temCarteira == "S"){

mostra("Parabéns! Você já pode entrar em um carro e dirigir por aí!");

} else {

mostra ("Você é um Inútil!"); }

}

Pessoal, muito obrigado por todas as contribuições. Em uma das primeira aulas do Flávio, ele disse para declarar todas as variáveis no início do programa e fiquei com isso preso na cabeça.

Mas agora entendi que a var temCarteira precisa fazer parte da função mais abaixo para ser executada somente naquele momento/condição.

Maison, gostei muito da segunda opção. Por que na primeira, o programa vai continuar mostrando a pergunta da carteira, mesmo se ela < 18.

Obrigado à todos!!