Vamos destrinchar o código com máxima riqueza de detalhes, explicando cada linha e identificando o que é fórmula "pronta" (do Node.js) e o que foi personalizado por você.
const readline = require('readline/promises');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
// Função para calcular a soma de um intervalo de números
function somaAte(inicio, fim) {
let soma = 0;
for (let i = inicio; i <= fim; i++) {
soma += i;
}
return soma;
}
// Função para obter um número do usuário com tratamento de erro
async function obterNumero(prompt) {
while (true) {
const input = await rl.question(prompt);
console.log(`Valor recebido: "${input}"`);
const numero = parseInt(input);
if (input.trim() && !isNaN(numero)) {
return numero; // Retorna o número válido
}
console.log('Erro: Você deve inserir um número válido!');
}
}
// Função principal para coordenar as interações
async function obterDados() {
try {
const number = await obterNumero('Digite um número: ');
const number2 = await obterNumero('Digite outro número maior que o primeiro: ');
if (number2 > number) {
const resultado = somaAte(number, number2);
console.log(`Resultado da soma de ${number} até ${number2}: ${resultado}`);
} else {
console.log('Erro: O segundo número deve ser maior que o primeiro!');
}
} catch (error) {
console.error('Ocorreu um erro inesperado:', error.message);
} finally {
rl.close();
}
}
obterDados();
const readline = require('readline/promises');
readline do Node.js, que permite a interação com o terminal para ler entradas do usuário./promises oferece suporte nativo ao uso de async/await, tornando o código mais organizado e fácil de ler.require é uma função padrão do Node.js para importar módulos externos ou locais.const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
readline.createInterface é um método do módulo readline que cria uma interface para interagir com o terminal.input: process.stdin: Define o fluxo de entrada, que é o teclado do usuário.output: process.stdout: Define o fluxo de saída, que é a tela do terminal.readline.createInterface é fornecida pelo Node.js, mas você pode personalizar os parâmetros.