1
resposta

[Sugestão] Minhas resoluções para os exercícios de pontuação, saldo e nome do usuário.

Fala galera, aqui estão as minhas resoluções para os últimos desafios da aula de condicionais e concatenação.

Exercício: Crie um sistema de pontuação para um jogo. Se a pontuação for maior ou igual a 100, mostre "Parabéns, você venceu!". Caso contrário, mostre "Tente novamente para ganhar."

Busquei primeiramente a conversão do valor digitado pelo usuário para número inteiro, com o parseInt().
Com a variável convertida, na primeira estrutura condicional eu checo se realmente são foram recebidos apenas números e posteriormente o resultado da pontuação.

//Crie um sistema de pontuação para um jogo. Se a pontuação for maior ou igual a 100, mostre "Parabéns, você venceu!". Caso contrário, mostre "Tente novamente para ganhar.".

alert('Bem-vindo, player!');
console.log('Para ganhar, o usuário deve ter 100 ou mais pontos.');

//Conversão em número inteiro.
let pontuacao = Number.parseInt(prompt('Para saber sobre seu resultado no jogo, digite sua pontuação final:'));
console.log(`Pontuação: ${pontuacao}.`);

//Verifica se o usuário digitou números.
if (isNaN(pontuacao)) {
    alert('Digite apenas números! Por favor, tente novamente.');
} else {
    if (pontuacao >= 100) {
        alert('Parabéns, você venceu!');
    } else {
        alert('Tente novamente para ganhar.');
    }
}

Exercício: Crie uma mensagem que informa o usuário sobre o saldo da conta, usando uma template string para incluir o valor do saldo.

Para um resultado mais divertido praticando a template string, primeiro peço o nome do usuário e faço as suas devidas validações:
Tiros os espaços em branco e abro uma condicional para checar se o campo está vazio.

Entrando no else, vamos agora para o valor de depósito do usuário.
Transformo em inteiro, novamente com o método parseInt() e o código verifica se esse valor:

• É igual o menor que 0. Assim não sendo possível acrescentar ao saldo.
• É realmente um número. Se identificado uma string (letras ou caracteres especiais), também não há possibilidade de continuar.

Passando por todas essas condicionais, pesquisando no Google encontrei o método toLocaleString() que formata informações como data, números e etc para a localidade que selecionei.

Coloquei "pt-BR" e assim transformando 10000000 em 10.000.000, por exemplo.

Finalizo retornando ao usuário seu nome e seu saldo disponível com a template string pedida.

Esse código pode vir a ser modificado futuramente. Pretendo fazer um sistema simulando um banco.
Podendo fazer mais depósitos, saques e ao término das transações, mostrar ao usuário seus dados atualizados.

//Crie uma mensagem que informa o usuário sobre o saldo da conta, usando uma template string para incluir o valor do saldo.

alert('Sistema de saldo.');

let nomeUsuario = prompt('Nos diga seu nome:');
nomeUsuario = nomeUsuario.trim();
console.log(`Nome do usuário: ${nomeUsuario}.`);

if (nomeUsuario === '') {
    alert('O campo está vazio. Atualize a página e tente novamente.');
} else {
    let depositoUsuario = Number.parseInt(prompt('Coloque o valor que deseja depositar:'));
    console.log(`Valor depositado: R$${depositoUsuario}.`);

    if (depositoUsuario <= 0 || isNaN(depositoUsuario)) {
        alert('Não é possível adicionar esse valor. Atualize a página e tente novamente.');
    } else {
        depositoUsuario = depositoUsuario.toLocaleString('pt-BR');
        console.log(`Saldo: R$${depositoUsuario}.`);
        alert(`Olá, ${nomeUsuario}. O seu saldo disponível é: R$${depositoUsuario}.`);
    }
}

Atualização: Encontrei um bug no código em que não consigo validar se o usuário enviou um campo vazio na parte:

let depositoUsuario = Number.parseInt(prompt('Coloque o valor que deseja depositar:'));

Pesquisando, vi que o correto é primeiro validar a entrada do usuário e aí sim converter para número inteiro:

// Verifica se o campo está vazio ou só com espaços
    if (entradaDeposito === null || entradaDeposito.trim() === '') {
        alert('Campo de depósito vazio. Atualize a página e tente novamente.');
    } else {
        // Converte depois de validar
        let depositoUsuario = Number.parseInt(entradaDeposito, 10);

Exercício: Peça ao usuário para inserir seu nome usando prompt. Em seguida, mostre um alerta de boas-vindas usando esse nome.

Aqui verifico se o campo não está vazio e se não foi digitado números. Ainda preciso validar o uso de caracteres especiais.

//Peça ao usuário para inserir seu nome usando prompt. Em seguida, mostre um alerta de boas-vindas usando esse nome.

let nome = prompt('Olá! Por favor, insira seu nome:');
console.log(`Nome do usuário: ${nome}.`);

//Utilizei o ! para inverter o uso da função isNaN. Se o usuário digitar apenas números, não será valido.
if (nome === '' || !isNaN(nome)) {
    alert('O nome não é valido. Atualize a página e tente novamente.');
}
else {
    alert(`Bem-vindo(a), ${nome}!`);
}
1 resposta

Oi, Arthur! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

O que me chamou atenção foi a forma cuidadosa que você está lidando com as entradas do usuário, como a validação de campos vazios e o uso de parseInt() para garantir que o valor digitado seja um número. Isso demonstra um bom entendimento das boas práticas de programação. Além disso, a utilização de toLocaleString() para formatar o saldo do usuário é uma solução interessante e prática.

Uma dica interessante para o futuro é utilizar o método Number.isNaN(), que é uma forma mais segura de verificar se um valor é "Not-a-Number" do que o isNaN(), que pode produzir resultados inesperados em algumas situações. Veja este exemplo:


let valor = "abc";
if (Number.isNaN(parseInt(valor))) {
  alert("Valor inválido.");
}

Qualquer dúvida que surgir, compartilhe no fórum. Abraços e bons estudos!

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!