Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Lógica de Programação

Olá, pessoal.

Estava praticando lógica de programação e estava fazendo um simples desafio de verificar se o número é positivo ou negativo, além disso, perguntar qual o nome da pessoa primeiramente. Contudo, gostaria de adicionar mais algumas funcionalidades que seriam basicamente se a pessoa digitar um número por exemplo ao invés de seu nome, mostre que o valor é inválido e solicite que o usuário digite novamente um nome válido, assim como na parte de digitar um número, se o usuário digitar uma letra, mostrar que o valor é inválido e solicita que ele digite um número. Poderiam me ajudar?

Segue o código abaixo:

let nome = prompt('Informe seu nome:');
let numero = parseInt(prompt (`${nome}, poderia digitar um número:`));

//estrutura condicional 
if (numero > 0) {

    alert (`${nome}, o número ${numero} é positivo.`);

} else if (numero < 0) {

    alert(`${nome}, o número ${numero} é negativo.`);

} else {

    alert (`${nome}, o número ${numero} é neutro.`);
}
1 resposta
solução!

Oi, Igor! Tudo bem?

Para adicionar as funcionalidades mencionadas, podemos utilizar a estrutura de repetição do-while para verificar se o valor digitado é válido com a ajuda de algumas funcionalidades do JavaScript mostradas no código alterado abaixo:

let nome;
let numero;

// Função para verificar se a string contém apenas letras
function isOnlyLetters(str) {
    return /^[a-zA-Z]+$/.test(str);
}

// Solicitar nome até que seja fornecido um valor não vazio e apenas letras
do {
    nome = prompt('Informe seu nome:');
    if (!nome.trim() || !isOnlyLetters(nome)) {
        alert('Por favor, digite um nome válido.');
    }
} while (!nome.trim() || !isOnlyLetters(nome));

// Solicitar número até que seja fornecido um valor válido
do {
    let input = prompt(`${nome}, poderia digitar um número:`);
    numero = parseInt(input);

    if (isNaN(numero)) {
        alert('Por favor, digite um número válido.');
    }
} while (isNaN(numero));

// Estrutura condicional
if (numero > 0) {
    alert(`${nome}, o número ${numero} é positivo.`);
} else if (numero < 0) {
    alert(`${nome}, o número ${numero} é negativo.`);
} else {
    alert(`${nome}, o número ${numero} é neutro.`);
}

Nesse código, na função isOnlyLetters(str) recebemos uma string como argumento, representada por str. Somado a isso, usamos uma expressão regular (regex) entre barras (/) "/^[a-zA-Z]+$/", de forma que: ^ indica que a correspondência deve começar no início da string, [a-zA-Z] representa um conjunto de caracteres permitidos na string, que nesse caso são as letras minúsculas (a-z) e maiúsculas (A-Z). +, indica que deve haver pelo menos um desses caracteres na string e $, indica que a correspondência deve ocorrer até o final da string. Portanto, a expressão regular completa significa que estamos procurando uma string que contenha apenas letras (maiúsculas ou minúsculas) e nada mais. Dessa forma, !isOnlyLetters(nome) chama a função isOnlyLetters e retorna verdadeiro se o nome não contiver apenas letras (se contiver números, espaços, etc.)

Além disso, o método .test(str) testa se a string fornecida (str) corresponde à expressão regular. Por fim, return retorna true se a string contiver apenas letras e false caso contrário.

Somado a isso, é importante citar que em relação a expressão !nome.trim(), o método trim() é utilizado para remover espaços em branco do início e do final de uma string. Isso é útil para garantir que a string não seja composta apenas por espaços em branco. Por exemplo, se o usuário digitar apenas espaços em branco, nome.trim() resultará em uma string vazia. Dessa forma, como o operador ! é o operador de negação lógica, ele inverte o valor da expressão que o segue. Portanto, !nome.trim() será true se nome.trim() for uma string vazia (após remover espaços em branco) e false caso contrário.

Por fim, a função isNaN(numero) é uma função em JavaScript que verifica se o valor fornecido não é um número (NaN, que significa "Not a Number").

Espero ter ajudado! Caso tenha ficado alguma dúvida, sinta-se à vontade em comunicar, estou à disposição!

Um forte abraço e bons estudos!

Caso este post tenha te ajudado, por favor, marcar como solucionado ✓