2
respostas

[Sugestão] A atividade 1 é mais do que parece para aqueles que estão aprendendo

Desde que comecei a estudar programação, costumo dizer que codificar é como contar boas histórias que resolvem problemas. Esse é um exemplo disso!
A questão é simples, receba um dia da semana e compare se ele é igual a Sábado ou domingo. Depois de verificar isso, você deve dar uma mensagem de acordo com o resultado.
Agora pare e pense em quantas formas diferentes um usuário pode quebrar sua aplicação só com o que ele informa ou da forma que ele informa. Fazer uma comparação em um teste condicional pode cair nesse problema.

Se você for resolver no automático você pode pensar em cobrir essas condições:

// Vou solicitar o valor e add à uma variável
let diaDaSemana = prompt("Informe o dia da semana)");

// Depois testo todas a possibilidades que o danado do usuário pode fornecer e pronto!
if((diaDaSemana == "Sábado" || diaDaSemana == "sábado" || diaDaSemana == "Sabado" || diaDaSemana == "sabado") || (diaDaSemana == "Domingo" || diaDaSemana == "domingo")) {
    alert("Bom fim de semana!");
} else {
    alert("Boa semana!");
}

E aí vem a voz maravilhosa no pé do ouvido: "E se?"
E se a quantidade de possibilidades for muito grande? E se a complexidade ficar gigante, se for difícil de entender e se o processamento ficar pesado?
Então vem a resposta, tentar normalizar o que precisamos comparar. Mas como faço isso?

Nosso colega Luis Dias (que não atoa é meu xará) traz a solução.
https://cursos.alura.com.br/forum/topico-duvida-exercicio-dia-da-semana-533495

Ele trás conceitos um poucos mais avançados como funções/métodos e dá ainda o caminho das pedras e com base nisso cheguei onde precisava para contar minha história.
O uso mais comum dessa técnica é para criar slugs (nomes amigáveis para URLs), normalizar entradas de pesquisa ou simplesmente para padronizar o texto.

// Solicita que o usuário informe o dia da semana
let diaDaSemana = prompt("Informe o dia da semana)");

// Faz todo processo de normalização
let nomalizada = diaDaSemana.toLowerCase().normalize('NFD').replace(/[\u0300-\u036f]/g, "");
console.log(nomalizada);

// Termina fazendo a verificação condicional e apresenta a mensagem devida
if(nomalizada === "sabado" || nomalizada === "domingo"){
    alert("Bom fim de semana!");
}else {
    alert("Boa semana!");
}

Olha só que interessante temos em uma única linha de código:

diaDaSemana.toLowerCase() - é um método do JavaScript para String que vai converter todo o texto/palavra que está na variável diaDaSemana em minúscula;
.normalize() - Também um método do JavaScript para String, vai ajustar a forma de normalização do texto, um conceito relacionado à forma como os caracteres são representados internamente;
"NFD" - Normalization Form Canonical Decomposition: Este é o argumento chave. Ele instrui o método a decompor os caracteres acentuados em suas partes constituintes;
.replace() - Este é o método JavaScript usado para encontrar um padrão (definido por uma Expressão Regular) e substituí-lo por outra coisa.
/ - Delimitadores que indicam o início e o fim da Expressão Regular;
g (Global) - É um flag (bandeira) que garante que a substituição seja feita em todas as ocorrências encontradas na string, e não apenas na primeira;
\u - Indica um caractere Unicode;
0300 a 036f - Este é o intervalo de códigos Unicode chamado de Combining Diacritical Marks que contém todos os diacríticos que foram isolados na etapa de normalize("NFD") (como acentos, til, trema, etc.);
"" - É o valor de substituição. O método replace substitui tudo que for encontrado pela Expressão Regular por uma string vazia. Ou seja, os acentos dão tchauzinho!

E assim, chega o fim nossa história que fico feliz em compartilhar com vocês!

Grande abraço!

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
2 respostas

Legal eu fiz, dessa forma abaixo.

// 1. Pergunte ao usuário qual é o dia da semana.
let dia = prompt("Qual o dia da Semana").trim().toLowerCase();
// Se a resposta for "Sábado" ou "Domingo", mostre "Bom fim de semana!".
if (dia == "sábado" || dia == "sabado" || dia == "domingo" ) {
alert("Bom fim de semana!");
} else {
// Caso contrário, mostre "Boa semana!".
alert("Boa semana!");
}

Muito show Jairo!

Você conseguiu fazer diferente limpando espaços em branco usando o método .trim() e já converteu em minúscula já na recepção dos dados. O bom é que você consegue testar menos possibilidades do que é informado pelo usuário.

Vamos continuar evoluindo e se precisar de qualquer coisa nos estudos pode contar comigo.