2
respostas

Resolução - Será que posso dirigir?

<meta charset="UTF-8">

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

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

    var idade = parseInt(prompt("Qual é sua idade?"));
    var temCarteira = prompt("Tem carteira? Responda S ou N");

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

        mostra("Pode dirigir!");

    } else {

        mostra("Não pode dirigir!");

    }

</script>

Eu poderia ter resolvido de outra forma a questão das maiúsculas e minúsculas? Fiquei com essa dúvida, porque só sabia dessa maneira...

Obrigada!

2 respostas

Olá Fernanda, tudo bem?

Existe uma outra forma de fazer sim!

Mais para frente nas aulas, o instrutor utilizará a possibilidade do usuário digitar não somente "s" como resposta mas "sim" também. Dessa forma, explicarei a seguir com um exemplo em que o usuário também terá essas duas possibilidades de resposta.

1º Parte


Iremos criar uma variável, que irá receber um array ou vetor [] que irá conter um conjunto de dados.

 var possibilidadesResposta = ['sim', 's']

Os dados são o 'sim' e 's', isso é o mesmo que fazer como no código anterior: temCarteira == "s" || temCarteira == "sim"

  • Mas e as possibilidades de prompt em caixa alta?

2º Parte


Para isso, iremos declarar na especificação do if o método includes, dessa forma:

if (idade >= 18 && possibilidadesResposta.includes(temCarteira.toLowerCase())) {

Assim, estamos dizendo que a variável possibilidadesResposta inclui e recebe todas as possibilidades de entradas que não estejam em caixa baixa (SIM, S, sIm, siM), pois esses inputs serão transformados em caixa baixa para validação, ou seja, (toLowerCase).

Código completo


<meta charset="UTF-8">

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

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

    var idade = parseInt(prompt("Qual é sua idade?"));
    var temCarteira = prompt("Tem carteira? Responda S ou N");

    var possibilidadesResposta = ['sim', 's'] 

    if (idade >= 18 && possibilidadesResposta.includes(temCarteira.toLowerCase())) {
        mostra("Pode dirigir!");
    } else { 
        mostra("Não pode dirigir!");
    }

</script>

Dessa forma, além de reduzir o código também resolvemos um problema, pois da forma que o código estava anteriormente, caso o usuário respondesse " sIm ou siM " por exemplo, a resposta não iria ser validada. Agora, qualquer configuração de caixa que o usuário responder, utilizando os caracteres 's' ou 'sim', será interpretado e validado corretamente.

Caso ainda não tenha aprendido sobre arrays, recomendo continuar o curso, pois mais para frente esse conceito será fortemente explorado.

Além disso, caso queira estudar uma pouco mais, vale a pena a leitura:

Espero ter ajudado, em caso de dúvidas fique a vontade para perguntar. Bons estudos!

Obrigada, Beatriz! Estava com a mesma dúvida da Fernanda pois executei o código exatamente da forma que ela fez. Porém, mesmo respondendo no prompt com "N" ou "n", ainda assim recebia a mensagem "Posso dirigir". Dessa forma, pra corrigir isso, executei o código usando conforme abaixo e deu certo. Como você disse que o instrutor ainda vai mostrar os arrays mais à frente, vou guardar essa sua resposta e aguardar esse ponto da aula!

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

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

    var idade = parseInt(prompt("Qual é sua idade?"));
    var temCarteira = prompt("Tem carteira? Responda S ou N");

    if(idade >= 18 && temCarteira == "S" || temCarteira == "s"){
        mostra("Você pode dirigir!")
    } else {
        mostra("Desculpe, você ainda não pode dirigir...")
    }

</script>