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

Verificando isNaN + numero máximo de tentativas

Olá! Estou com dúvida no código abaixo. Minha ideia é que o usuário tenha no máximo 3 tentativas para inserir um número, depois rola uma mensagem de "número máximo de tentativas excedido". Isso está funcionando. Ainda preciso criar a condição isNaN(idade) == true, para poder validar a idade e imprimí-la na tela. Mas não estou conseguindo raciocinar para fazer isso. Podem ajudar?

<meta charset="UTF-8">
<script>



var idade = prompt("Insira sua idade");


var maximoTentativas = 3;
var i = 1;

while (isNaN(idade) && i < maximoTentativas){

    alert("Informação inválida, insira um número");
    var idade = prompt("Insira sua idade");

    i = i + 1;

    if(i == maximoTentativas){

    alert("Número de tentativas excedido");

    }

}


</script>
4 respostas
solução!

Olá, Maria Eugênia! Tudo bem?

A primeira alteração que fiz foi ter retirado o prompte colocá-lo dentro do `while'

var idade = prompt("Insira sua idade");

porque, todas as vezes em que inserimos um número, concorda que ele não entrará dentro do while, pois ele não entra no critério de que idade não é número por ser um número?

while (isNaN(idade) && i < maximoTentativas)

Meu início ficou dessa forma

<meta charset="UTF-8">

<script>

  var maximoTentativas = 3;

  var i = 1;

Minha opção foi começar o while somente comparando se a variável i é menor ou igual a maximoTentativas

while (i <= maximoTentativas) {

depois eu coloquei meu promptpara que todas as vezes em que houver o looping, chama-lo

  while (i <= maximoTentativas) {

    var idade = prompt("Insira sua idade");

Agora começo as minhas condicionais para comparar minha variável. A primeira analiso se isNaN(idade)é falso:

if(isNaN(idade) == false){

Se for número imprima a idade

document.write("A idade inserida foi " + idade);

Eu coloquei um "pulo do gato" (rs) chamado break que vai sair do while quando for número

    if(isNaN(idade) == false){

      document.write("A idade inserida foi " + idade);

      break;

Após isso coloquei a continuação da minha condicional, caso não seja um número inserido e acrescentando que meu maximoTentativas e gerar um alert para inserir mais uma vez

    } else if(isNaN(idade) == true && i < maximoTentativas){

          alert("Informação inválida, insira um número");

    } 

Logo após, meus incrementos

    i = i + 1;

Abaixo dos incrementos, se ultrapassar o máximo de tentativas, um alert com mensagem

    if(i > maximoTentativas){

    alert("Número de tentativas excedido");

  }
}

Essa foi uma opção, Maria Eugênia!

Espero ter ajudado!

Bons estudos!

Muitoo obrigada, Cássio, se não for te atrapalhar, vc conhece algum site ou lista de exercícios para que eu possa praticar? estou tendo bastante dificuldade com a questão de onde colocar o incremento as vezes e com lógica de programação no geral.

Abraço,

Olá, Maria!

Não atrapalha em nada não ;-)

Temos vários caminhos!

Na internet, se digitar "exercícios de lógica de programação" ou "prática de lógica de programação" vai aparecer uma infinidade de cursos e exercícios. Por exemplo: numa busca rápida encontrei esse da Faculdade de Informática de Taquara que trás muitos exercícios com respostas.

Uma outra dica muito boa é o RackerRank que traz desafios, desde simples aos complexos, podendo fazer em diversas linguagens de programação e que é muito utilizado em testes de empresas e essas empresas visitam esse site na busca de programadores. Também você pode utilizar esses exercícios e criar um portfólio no seu GitHub, por exemplo.

O GitHub é uma rede social para programadores que disponibilizam seus códigos de forma gratuita para poder contribuir, de alguma forma, para o conhecimento dos demais! Inclusive, você pode fazer uma busca de logica de programação e encontrar diversos assuntos e exercícios relacionados a lógica dentro do Github.

Eu já aconselho a criar uma conta desde o início ;-)

Espero ter ajudado, Maria.

Qualquer dúvida, estamos a disposição!

Muito obrigada pelos links e recomendações, Cassio!

Abraços