3
respostas

Existe uma maneira mais "enxuta" de escrever esse código? Usei o if já no começo após o primeiro prompt pra dar a mensagem caso o usuário tenha menos de 18 anos.

<meta charset="UTF-8">

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

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

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

    if (idade <18){

        mostra ("Você NAO está habilitado a dirigir!");

    }else{

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

        if (idade >= 18 && (temCarteira == "S" || temCarteira == "s")){        

            mostra ("Você está habilitado a dirigir!");

        }else{
            mostra ("Você NAO está habilitado a dirigir!");
        }
    }    

</script>
3 respostas

Oi paullohenriquejl existe sim, e de ínumeras formas, mas aproveitando seu gancho, vou fazer em cima do seu próprio algoritmo uma "melhoria":

    var idade = parseInt(prompt("Qual é sua idade?"));
    if (idade <18){
        mostra ("Você NAO está habilitado a dirigir!");
    }else{
        var temCarteira = prompt("Tem carteira? Responda S ou N");
        if (temCarteira == "S" || temCarteira == "s"){        
            mostra ("Você está habilitado a dirigir!");
        }else{
            mostra ("Você NAO está habilitado a dirigir!");
        }
    } 

Nesse trecho você não precisa checar se a idade é maior que 18 pois ela é maior ou igual a 18 consequencia do primeiro if. Bastando somente checar o tem Carteira.

Uma outra implementação seria:

var idade = parseInt(prompt("Qual é sua idade?"));
    if (idade >=18){
        var temCarteira = prompt("Tem carteira? Responda S ou N");
        if (temCarteira == "S" || temCarteira == "s")      
            mostra ("Você está habilitado a dirigir!");
        else            
        mostra ("Você NAO está habilitado a dirigir!Falta a carteira");  
    }else{
        mostra ("Você NAO tem idade pra dirigir!");  
    } 

Espero ter ajudado e bons estudos.

Olá, eu utilizei algumas boas práticas de escrita de código, veja como ficou, vide que se houvesse um segundo documento com as funções, teu escopo principal teria apenas uma função.

Ficou desta forma:

<!DOCTYPE html>

<script>
ObterIdade();

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

function mostra(frase, retorno) {
  document.write(frase);
  pulaLinha();
}

function ObterIdade(){
  ValidarIdade(parseInt(prompt("Qual é sua idade?")));
}

function ValidarIdade(idade){
  return idade < 18 ? mostra("Você não está habilitado a dirigir") : ValidarCarteira();
}

function ObterCarteira(){
  return prompt("Tem carteira? Responda S ou N");
}

function ValidarCarteira(){
  return ObterCarteira().toUpperCase() == "S" ? mostra ("Você está habilitado a dirigir!") : mostra ("Você NAO está habilitado a dirigir!");
}
</script>

Opa, tudo bom Paulo Henrique? Se a resposta lhe ajudou, marque-a como solucionada, podem haver mais pessoas com esta duvida.

Atenciosamente, Mateus