1
resposta

Projeto 01 (Dias da Semana) do Desafio: hora da prática - Aula 02 -> Allan Gomes

Olá, boa noite! Tudo bem?

Para este primeiro exercício do desafio eu tentei evitar alguns erros mais comuns e prováveis de acontecer, na minha concepção. Como, por exemplo:

  • A escrita diferente ("Sabado", ao invés de "Sábado"; ou "domingo", ao invés de "Domingo");
  • A escrita errada, de qualquer outro valor que não estivesse dentro do range aceitável ("", ou um número, ou um nome aleatório).

Para isto, busquei utilizar arrays com os nomes em um formato padrão (neste caso, maiúsculo e sem acentos) e então, antes de ser feita a comparação do valor inserido pelo usuário com os valores dos arrays, o valor de entrada é modificado para se adequar aos mesmos padrões adotados pelo array utilizado, depois disto a comparação é feita e a decisão é tomada pelo programa.

Obs.: Será que poderiam me dar um feedback, se está é uma forma viável e plausível, e pontuar melhorias para o código, por gentileza.

Então, fiz desta forma

// *PÁGINA DE DESAFIOS*
// Desafio 02.01: Dias da semana
// Autor: Allan Gomes
// Liguagem de Programação: JavaScript;

// DEFINIÇÃO DE VARIÁVEIS
const diasDeSemana = ["SEGUNDA", "TERÇA", "QUARTA", "QUINTA", "SEXTA"];
const finalDeSemana = ["SABADO", "DOMINGO"];
const semanaCompleta = diasDeSemana.concat(finalDeSemana);
console.log(semanaCompleta);
let diaEscolhido = "";

// DEFINIÇÃO DE FUNÇÕES
function mensagemDoDia(mensagem) {
    a = prompt(mensagem);
    console.log("Valor inserido:", a);
    a = a.toUpperCase().normalize('NFD').replace(/[\u0300-\u036f]/g, '');
    //'.toUpperCase()' está colocando todo o texto em maiúsculo, caso o usuário decida escrever o texto todo minúsculo ou mesclado.
    //'.normalize('NFD').replace(/[\u0300-\u036f]/g, '')' é utilizado para substituir os caracteres especiais inseridos pelo usuário, como acento, ç e etc. Garantindo que a informação mais importante seja conferida corretamente.
    if (diasDeSemana.includes(a)) {
        alert("Boa Semana!");
    }
    else if (finalDeSemana.includes(a)) {
        alert("Bom Final de Semana!");
    }
    else {
        alert("Este dia não foi identificado.\nTente novamente!");
    }
    console.log("Valor convertido:", a);
    return a
}

// PROGRAMA PRINCIPAL
alert("Boas vindas ao nosso site!");
while (!semanaCompleta.includes(diaEscolhido)) {
    diaEscolhido = mensagemDoDia("Diga-nos qual dia é hoje:");
    console.log("É um dia da semana?", semanaCompleta.includes(diaEscolhido));
}

Atenciosamente, Allan Gomes

1 resposta

Olá, Henrique. Tudo bem?

Muito obrigado por compartilhar o seu código aqui com a gente. Parabéns pelo trabalho. Continue com essa dedicação.

Ótimo como você utilizou .toUpperCase() e .normalize('NFD').replace(/[\u0300-\u036f]/g, '') para garantir que a entrada do usuário fosse padronizada antes da comparação. Isso melhora a usabilidade e reduz erros na validação.

Uma curiosidade, seria tratar a entrada com .trim() para remover espaços extras que podem ser digitados acidentalmente. Veja este exemplo:


function normalizarEntrada(texto) {
    return texto.trim().toUpperCase().normalize('NFD').replace(/[\u0300-\u036f]/g, '');
}

Isso evita que espaços em branco no início ou no final da string causem falhas na validação.

Conte com o apoio do Fórum. Bons estudos.