3
respostas

Ajudem a melhorar meu código

<meta charset="UTF-8">

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

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

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

    if(temCarteira == "s"){
        mostra(nome + " você já possui carteira")
    }

    if(idade >= 18){
        mostra(nome + " você já pode ser um condutor.");
    }else{
        mostra(nome +" você não tem a idade permitida para tirar carteira.");
    }

    if(idade <= 17 && temCarteira == "s"){
        mostra(nome + " você comprou sua carteira, isso é ilegal.");
    }



</script>
3 respostas

E aí Carlos, tudo bem?

A primeira coisa que tu poderia fazer é encerrar tudo caso a idade seja inferior a 18 anos pois certamente a pessoa não poderá dirigir (estamos falando do Brasil, claro). Partindo daí o que sobra é trabalhar as opções para caso ela tenha ou não a carteira

A ordem em que o programa é executado é muito importante pois em certos casos (como essa tua estrutura atual) ele está retornando várias coisas diferentes. Ex.: se eu colocar que tenho 17 anos e tenho carteira ele retorna 3 strings:

(você já possui carteira) (você não tem a idade permitida para tirar carteira.) (você comprou sua carteira, isso é ilegal.)

É tudo verdade mas a ideia não é acontecer isso, certo? (caso seja, favor desconsiderar kk')

Outro coisa, tua var temCarteira está solicitando S ou N maiúsculos e na condição dos teus if's está minúsculo, eles precisam ser iguais ao que a var vai receber, logo, maiúsculo.

Experimenta fazer esses ajustes ou seguir aquela primeira dica pra ver o que tu pode fazer e volta aqui pra mostrar!

Denis, muito obrigado por responder em pleno domingão! fiquei feliz. Concordo com tudo que você falou, as mensagens finais estavam bem maçantes mesmo kkkkkk resolvi refazer com algo mais genérico, se puder dar uma avaliada e falar o que achou. OBS: Fiquei incomodado com o tanto de if's tem alguma dica de como melhorar ou diminuir ainda mais o código?

<meta charset="UTF-8">

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

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

    var nome = prompt("Digite seu nome:");
    var carteira = prompt("Você já possui CNH? Responda Sim ou Não");
    var temCnh = "Sim";
    var naoTemCnh = "Não";
    var idade = parseInt(prompt("Qual é sua idade?"));

    if(carteira == temCnh && idade >= 18){
        mostra(nome+" você já possuei CNH.");
    }

    if(carteira == temCnh && idade <= 17){
        mostra(nome + " algo deu errado! Tente novamente.");
    }

    if(carteira == naoTemCnh && idade >=18){
        mostra(nome+" você  está apto para tirar sua CNH.");
    }

    if(carteira == naoTemCnh && idade < 18){
        mostra(nome + " espere mais alguns anos para tirar sua CNH.")
    }
</script>

hahaha Capaz, de nada! Reescreveu tudo né? Eu costumo reescrever quando não dá certo, melhor do que ficar remendando código, ajuda demais a exercitar!

Em primeiro lugar, quero te dar os parabéns por seguir tentando! Ficou com bastante if's mesmo e isso é algo que pode ser refinado, a ideia é sempre usar tudo o que tu aprendeu até o momento, nesse caso faltou o else. Pensemos da seguinte forma: essa disciplina é lógica de programação então, antes de fazer o código de fato, qual a lógica por trás do que eu estou fazendo? Experimenta montar um diagrama, mesmo que mental e rápido (ou faz uns rabiscos em um papel, às vezes isso te salva kkkk') Se for menor de idade só tem uma opção. Se for maior, preciso saber se tem ou não carteira e a partir disso saber se pode ou não dirigir. Tem if e else escondido no meio desse pensamento, agora onde está cada um?

Teu programa agora pergunta primeiro se tem carteira. Se a pessoa responder Sim e for menor então quer dizer que a carteira é falsa então seria mais interessante começar perguntando a idade e ramificar as opções a partir disso não é?

Experimenta colocar else, tirar um pouco de if, substituir os == && por alguma outra coisa, alterar as var se precisar e ir fazendo testes sem medo. Se precisar repensar os caminhos, perguntas e respostas é só fazer. Em algum momento tu vai chegar em um resultado que te satisfaça. Feito isso a gente compara pra ver como ficou cada versão! E já te mostro o meu haha'

E, cara, se precisar para e descansa. Eu fiquei horas reescrevendo o exercício da tela de login até cansar e nada dava certo. Parei, fui dormir e passei dia seguinte todo longe do pc pensando o que eu estava errando na atividade, até que do nada veio uma ideia e escrevi em 15min! A curva de aprendizado faz parte do jogo, boa sorte com as alterações aí!