Percursos
/
JavaScript
JavaScript
/
Exercícios
/
Sinais Personalizados
Sinais Personalizados

Sinais Personalizados

Exercício de aprendizagem

Introdução

Em JavaScript, as template strings permitem incorporar expressões em strings, o que também se designa por interpolação de strings. Esta funcionalidade estende a do objeto global incorporado String.

Podes criar template strings em JavaScript envolvendo o texto em acentos graves. Além de permitirem que o texto inclua novas linhas e outros carateres especiais, também te deixam incorporar variáveis e outras expressões.

const num1 = 1;
const num2 = 2;

`Adding ${num1} and ${num2} gives ${num1 + num2}.`;
// => Adding 1 and 2 gives 3.

No exemplo acima, os acentos graves (``) são usados para representar uma template string. O ${...} é o marcador de posição usado para a substituição. Todos os tipos que não sejam strings são convertidos implicitamente em strings. Este tópico é abordado no conceito conversão de tipos. Todos os tipos de expressões podem ser usados com template strings.

const track = 'JavaScript';

`This track on exercism.org is ${track.toUpperCase()}.`;
// => This track on exercism.org is JAVASCRIPT.

Quando precisas de formatar strings em várias linhas:

`This is an example of using template
strings to accomplish multiple
lines`;

Com as capacidades de substituição disponíveis, também podes introduzir lógica no processo para determinar qual deve ser a string final.

Um exemplo disto é incorporar um operador ternário. Este operador é uma forma abreviada de escrever uma instrução if/else. A sintaxe é condition ? consequent-expression : alternative-expression. Se a condição for verdadeira, devolve-se o operando do lado esquerdo dos dois pontos. Caso contrário, o resultado da expressão ternária é o operando do lado direito dos dois pontos.

const grade = 95;

`You have ${grade > 90 ? 'passed' : 'failed'} the exam.`;
// => You have passed the exam.

Instruções

Neste exercício vais escrever código para ajudar uma empresa de placas a criar mensagens personalizadas para as suas placas.

1. Cria uma placa de ocasião

Implementa a função buildSign(occasion, name), que recebe uma string como parâmetro occasion e uma string com o nome de alguém como parâmetro name. Os dois parâmetros serão incorporados numa template string para produzir a mensagem na placa.

buildSign('Birthday', 'Rob');
// => "Happy Birthday Rob!"

2. Cria uma placa de aniversário

Implementa a função buildBirthdaySign(age), que recebe uma idade e, com base nessa idade, determina parte da mensagem na placa. Se a idade for 50 ou mais, a placa refere o utilizador como mature; caso contrário, refere-o como young. O resultado esperado exato é mostrado abaixo:

buildBirthdaySign(50);
// => "Happy Birthday! What a mature fellow you are."

buildBirthdaySign(45);
// => "Happy Birthday! What a young fellow you are."

3. Cria uma placa de final de curso

Implementa a função graduationFor(name, year), que recebe um nome como parâmetro string e um ano como parâmetro numérico, e utiliza interpolação de strings para criar uma frase para uma placa, com uma nova linha a separar as duas linhas da mensagem.

graduationFor('Hannah', 2022);
/* => "Congratulations Hannah!
       Class of 2022"
*/

4. Calcula o custo de uma placa

Implementa a função costOf(sign, currency), que recebe uma string com o conteúdo da placa e uma string que representa a moeda. A placa tem um preço base de 20 na moeda indicada. Além disso, cada letra custa 2. (Os espaços em branco também contam para o cálculo.) A frase devolvida inclui o custo de criação da placa, escrito com duas casas decimais, seguido da string da moeda.

costOf('Happy Birthday Rob!', 'dollars');
// => "Your sign costs 58.00 dollars."
Editar via GitHub A ligação abre numa nova janela ou separador
JavaScript Exercism

Estás pronto para começar Sinais Personalizados?

Inscreve-te no Exercism para aprenderes e dominares JavaScript com 37 conceitos159 exercícios, e mentoria humana real, tudo grátis.