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

Dúvida questão

Olá!!!

Eu estou com uma dúvida com esse código passado na aula:

<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? Responsa S ou N");

    if( idade >= 18 ) {
        if( temCarteira == "S") {
            mostra("Pode dirigir");
        }
    }

    if( idade < 18 ) {
        if( temCarteira == "N") {
            mostra("NÃO PODE");
        }
    }

</script>

Quando eu coloco que tenho 18 anos e depois " N " no campo possui habilitação, o código não funciona, não aparece nada, eu já fiz meu código, deu certo, porém fui testar esse código passado no curso, não funcionou e tentei achar o motivo, pois acredito que assim eu consiga dar uma estudada também, más não consegui e fiquei curioso para saber qual o motivo, poderiam me ajudar?

Com 18( ou algum valor maior que 18) e " S " aparece, más com 18 e " N " fica em branco, eu fiz alguns testes, usando esse mesmo código, procurei procurei, não consigo achar e estou bem curioso para saber o motivo.

Desde já agradeço.

4 respostas
solução!

Olá Gustavo,

não aparece nada por a condição é idade < 18, no seu caso que digitou 18 então a avaliação da condição é false.

Se vc colocar 17 e N vai imprimir o que vc quer.

Se quiser que apareça NÃO PODE quando digitamos 18 e N mude a condição para idade <= 18

Att,

Gustavo exatamente como nosso amigo Ramon.

Quando utilizamos if's trata-se de condições verdadeiras ou falsas em nossos códigos, em caso de condições verdadeiras será executado o trecho de código dentro do IF, em caso de falsa será executado o trecho de código dentro do ELSE(se houver).

Sobre seu problema temos a seguinte condição:

if(idade < 18) {
    if(temCarteira == "N") {
        mostra("NÃO PODE");
    }
}

Você esta comparando o valor da variável idade sendo MENOR do que 18, realizando um teste de mesa temos:

// idade = 18
// operador "<" = MENOR
// 18 é MENOR do que 18 ? Não, pois 18 é IGUAL á 18 !
if(idade < 18) { // falso, então não entra no IF mas sim no ELSE(Se tivesse)
    if(temCarteira == "N") {
        mostra("NÃO PODE");
    }
}

Se mudarmos para 17 igual o Ramon disse teríamos:

// idade = 17
// operador "<" = MENOR
// 17 é MENOR do que 17 ? Sim, 17 é MENOR do que 18 !
if(idade < 18) { // verdadeiro, então entra no IF
    // temCarteira == "N"
    // operador "==" = IGUAL
    // "N" é IGUAL á "N" ? Sim, N é igual á N !
    if(temCarteira == "N") { // verdadeiro, então entra no IF
        mostra("NÃO PODE"); // executa o mostra
    }
}

Espero ter ajudado

Matheus e Ramon muito obrigado pela ajuda de vocês, ficou tudo tão claro após ler a explicação de vocês, muito obrigado mesmo, eu não sabia onde eu estava errando, após ler tudo o que disseram, aprendi coisas novas e ainda resolvi o problema!!!

Muito agradecido.

De nada Gustavo, sempre que precisar não deixe de criar suas dúvidas.