Para realizar o projeto, atente-se a cada passo descrito a seguir, e se tiver qualquer dúvida nos envie no Slack da turma! #vqv 🚀
Aqui você vai encontrar os detalhes de como estruturar o desenvolvimento do seu projeto a partir deste repositório, utilizando uma branch específica e um Pull Request para colocar seus códigos.
Ao iniciar este projeto, você concorda com as diretrizes do Código de Conduta e do Código de Conduta e do Manual da Pessoa Estudante da Trybe.
🤷🏽♀️ Como entregar
Para entregar o seu projeto você deverá criar um Pull Request neste repositório.
Lembre-se que você pode consultar nosso conteúdo sobre Git & GitHub e nosso Blog - Git & GitHub sempre que precisar!
👨💻 O que deverá ser desenvolvido
No seu time de desenvolvimento, você ficou responsável por implementar o código de funções que resolvem problemas com respostas pré-determinadas. Você pode utilizar a lógica de programação para te ajudar na análise de cada problema e resposta esperada, facilitando a implementação do código de cada uma das funções.
🗓 Data de Entrega
- Este projeto é individual
- Será
1
dia de projeto - Data para entrega no prazo regular:
04/11/2022 14:00
‼️ Antes de começar a desenvolver
- Clone o repositório
- Use o comando:
git clone git@github.com:tryber/sd-028-b-project-playground-functions.git
- Entre na pasta do repositório que você acabou de clonar:
cd sd-028-b-project-playground-functions
- Instale as dependências
npm install
- Crie uma branch a partir da branch
main
- Verifique que você está na branch
main
- Exemplo:
git branch
- Exemplo:
- Se não estiver, mude para a branch
main
- Exemplo:
git checkout main
- Exemplo:
- Crie uma branch à qual você vai submeter os
commits
de seu projeto- Você deve criar uma branch no seguinte formato:
nome-de-usuario-nome-do-projeto
- Exemplo:
git checkout -b joaozinho-sd-028-b-project-playground-functions
- Você deve criar uma branch no seguinte formato:
- Adicione as mudanças ao stage do Git e faça um
commit
- Verifique que as mudanças ainda não estão no stage
- Exemplo:
git status
(deve aparecer listada a pasta joaozinho em vermelho)
- Exemplo:
- Adicione o novo arquivo ao stage do Git
- Exemplo:
git add .
(adicionando todas as mudanças - que estavam em vermelho - ao stage do Git)git status
(deve aparecer listado o arquivo joaozinho/README.md em verde)
- Exemplo:
- Faça o
commit
inicial- Exemplo:
git commit -m 'iniciando o projeto. VAMOS COM TUDO :rocket:'
(fazendo o primeiro commit)git status
(deve aparecer uma mensagem tipo nothing to commit )
- Exemplo:
- Adicione a sua branch com o novo
commit
ao repositório remoto
- Usando o exemplo anterior:
git push -u origin joaozinho-sd-028-b-project-playground-functions
- Crie um novo
Pull Request
(PR)
- Vá até a página de Pull Requests do repositório no GitHub
- Clique no botão verde "New pull request"
- Clique na caixa de seleção "Compare" e escolha a sua branch com atenção
- Adicione uma descrição para o Pull Request, um título que o identifique, e clique no botão verde "Create pull request". Crie da seguinte forma:
[JOAOZINHO] Projeto Playground Functions
- Adicione uma descrição para o Pull Request, um título claro que o identifique, e clique no botão verde "Create pull request"
- Não se preocupe em preencher mais nada por enquanto!
- Volte até a página de Pull Requests do repositório e confira que o seu Pull Request está criado
⌨️ Durante o desenvolvimento
-
Faça
commits
das alterações que você fizer no código regularmente pois assim você treina essa prática para o mercado de trabalho 😄 ; -
Lembre-se de sempre após um (ou alguns)
commits
atualizar o repositório remoto; -
Os comandos que você utilizará com mais frequência são:
-
git status
(para verificar o que está em vermelho - fora do stage - e o que está em verde - no stage) -
git add
(para adicionar arquivos ao stage do Git) -
git commit
(para criar um commit com os arquivos que estão no stage do Git) -
git push -u origin nome-da-branch
(para enviar o commit para o repositório remoto na primeira vez que fizer opush
de uma nova branch) -
git push
(para enviar o commit para o repositório remoto após o passo anterior)
-
🤝 Depois de terminar o desenvolvimento (opcional)
Para sinalizar que o seu projeto está pronto para o "Code Review", faça o seguinte:
-
Vá até a página DO SEU Pull Request, adicione a label de "code-review" e marque seus colegas:
-
No menu à direita, clique no link "Labels" e escolha a label code-review;
-
No menu à direita, clique no link "Assignees" e escolha o seu usuário ;
-
No menu à direita, clique no link "Reviewers" e digite
students
, selecione o timetryber/students-sd-028-b
.
-
Caso tenha alguma dúvida, aqui tem um video explicativo.
🕵🏿 Revisando um pull request
Use o conteúdo sobre Code Review para te ajudar a revisar os Pull Requests.
🏗 Como estruturar seu projeto
O seu Pull Request deverá conter os arquivos challenges.js
e challenges2.js
com suas funções implementadas.
- Todas as funções já estão declaradas nos arquivos
challenges.js
echallenges2.js
que estão no diretóriosrc
. Você pode criar outras funções para auxiliar as já existentes, entretanto, Não altere o nome das funções que já existem.
De olho na dica 👀:
-
Para verificar se a sua função foi criada corretamente você pode instalar a extensão
code runner
no VSCode; -
Utilize
console.log()
para testar as funções localmente, mas remova antes de fazer opush
😉.
🎛 Linter
Usaremos o ESLint para fazer a análise estática do seu código.
Este projeto já vem com as dependências relacionadas ao linter configuradas no arquivo package.json
.
Para poder rodar o ESLint
lembre-se de executar o npm install
dentro do projeto e depois rode o comando:
npm run lint
Se a análise do ESLint
encontrar problemas no seu código, tais problemas serão mostrados no seu terminal. Se não houver problema no seu código, nada será impresso no seu terminal.
Você pode também instalar o plugin do ESLint
no VSCode
. Para isso, basta fazer o download do plugin ESLint e instalá-lo.
Em caso de dúvidas, confira o material na plataforma sobre ESLint.
🛠 Testes
Todos os requisitos do projeto serão testados automaticamente por meio do Jest.
Para rodar o avaliador automático localmente no seu projeto, execute um dos comandos abaixo:
Para executar todos os testes utilize:
npm test
ou
Para executar um arquivo de teste específico, utilize npm test nomeDoArquivoDeTeste
:
npm test compareTrue
- Os requisitos do seu projeto são avaliados automaticamente
Para verificar se a sua avaliação foi computada com sucesso, você pode verificar os detalhes da execução do avaliador:
-
Na página do seu Pull Request, acima do "botão de merge", procure por "Evaluator job" e clique no link "Details";
-
Na página que se abrirá, procure pela linha "Evaluator step" e clique nela;
-
Caso tenha dúvidas, poste no Slack.
O não cumprimento de um requisito, total ou parcialmente, impactará em sua avaliação.
🔗 Links auxiliares para o desenvolvimento do projeto
-
Lembrem-se que como pessoas desenvolvedoras devemos fazer pesquisas e garimpar resultados para auxiliar no entendimento do assunto. Assim, para solucionar os requisitos do projeto é inevitável e estimulado que pesquisas sejam feitas nas mais variadas fontes (plataforma da trybe, google, youtube, etc) sempre tomando cuidado para utilizar fontes confiáveis nas pesquisas da Internet, como por exemplo:
🗣 Nos dê feedbacks sobre o projeto!
Ao finalizar e submeter o projeto, não se esqueça de avaliar sua experiência preenchendo o formulário. Leva menos de 3 minutos!
🗂 Compartilhe seu portfólio!
Você sabia que o LinkedIn é a principal rede social profissional e compartilhar o seu aprendizado lá é muito importante para quem deseja construir uma carreira de sucesso? Compartilhe esse projeto no seu LinkedIn, marque o perfil da Trybe (@trybe) e mostre para a sua rede toda a sua evolução.
Implemente a função compareTrue
utilizando somente o operador &&
A função compareTrue
ao receber dois parâmetros booleanos deve:
- Retornar
true
se ambos os valores forem verdadeiros; - Retornar
false
se um ou ambos os parâmetros forem falsos.
Exemplo:
const girafa = true;
const elefante = true;
const macaco = false;
Se a função for chamada com os valores girafa
e elefante
como parâmetro, retorna true
, mas caso seja chamada com os parâmetro macaco
e elefante
retorna false
.
O que será testado:
-
A função
compareTrue
deve retornar false quando receber um parâmetro de valor false e outro de valor true; -
A função
compareTrue
deve retornar false quando receber dois parâmetros de valor false; -
A função
compareTrue
deve retornar true quando receber dois parâmetros de valor true.
Implemente a função calcArea
que retorna o cálculo da área total de um triângulo
A função calcArea
recebe o valor da base (base
) e outro da altura (height
) de um triângulo e retorna o cálculo da sua área.
- Realize o cálculo da área total do triângulo utilizando a fórmula
(base * altura) / 2
.
O que será testado:
-
A função
calcArea
deve retornar o valor 250 quando receber o parâmetro base com o valor 10 e o parâmetro height com o valor 50; -
A função
calcArea
deve retornar o valor 5 quando receber o parâmetrobase
com o valor 5 e o parâmetroheight
com o valor 2; -
A função
calcArea
deve retornar o valor 25.5 quando receber o parâmetrobase
com o valor 51 e o parâmetroheight
com o valor 1.
Implemente a função splitSentence
que divide uma frase de acordo com a quantidade de palavras
A função `splitSentence` recebe uma string como parâmetro e deve retornar um array com as palavras separadas por vírgula.
Exemplo: se a função receber a string 'go Trybe'
, o retorno deverá ser ['go', 'Trybe']
.
O que será testado:
-
A função
splitSentence
deve retornar o valor['go', 'Trybe']
quando receber como parâmetro a string'go Trybe'
; -
A função
splitSentence
deve retornar o valor['vamo', 'que', 'vamo']
quando receber como parâmetro a string'vamo que vamo'
; -
A função
splitSentence
deve retornar o valor['foguete']
quando receber como parâmetro a string'foguete'
.
Implemente a função concatName
que recebe um array de strings e retorna uma string com o último e o primeiro item
A função `concatName` recebe um array de strings e deve retornar uma string com o formato `'ÚLTIMO ITEM, PRIMEIRO ITEM`, independente do tamanho do array.
Exemplo:
- Caso o parâmetro passado para a função
concatName
seja o array['Lucas', 'Cassiano', 'Ferraz', 'Paolillo']
, a função deverá retornarPaolillo, Lucas
.
O que será testado:
-
A função
concatName
deve retornar o valor'Paolillo, Lucas'
quando receber como parâmetro o array['Lucas', 'Cassiano', 'Ferraz', 'Paolillo']
; -
A função
concatName
deve retornar'ré, foguete'
quando receber como parâmetro o array['foguete', 'não', 'tem', 'ré']
; -
A função
concatName
deve retornar'captain, captain'
quando receber como parâmetro o array['captain', 'my', 'captain']
.
Implemente a função footballPoints
que calcula a pontuação de um time de futebol em um campeonato a partir do número de vitórias e empates
A função footballPoints
recebe o número de vitórias (wins
) e o número de empates (ties
) e retorna a quantidade de pontos que o time marcou em um campeonato. Para isso, considere que:
wins
: é o número de vitórias e vale 3 pontos;ties
: é o número de empates e vale 1 ponto.
O que será testado:
-
A função
footballPoints
deve retornar o valor50
pontos quando o time tenha 14 vitórias e 8 empates; -
A função
footballPoints
deve retornar o valor5
pontos quando o time tenha 1 vitória e 2 empates; -
A função
footballPoints
deve retornar o valor0
pontos quando o time tenha 0 vitórias e 0 empates.
Implemente a função highestCount
que deverá retornar a quantidade de vezes que o maior número se repete ao receber um array de números.
A função highestCount
deve retornar a quantidade de vezes que o maior número se repete dentro do array.
Por exemplo:
- Caso o parâmetro seja um array com valores
[9, 1, 2, 3, 9, 5, 7]
, a função deverá retornar2
, que é a quantidade de vezes que o número9
(maior número do array) se repete.
O que será testado:
-
A função
highestCount
deve retornar2
quando receber o parâmetro[9, 1, 2, 3, 9, 5, 7]
; -
A função
highestCount
deve retornar1
quando receber o parâmetro[0, 4, 4, 4, 9, 2, 1]
; -
A função
highestCount
deve retornar3
quando receber o parâmetro[0, 0, 0]
.
Implemente a função catAndMouse
que verifica qual gato está mais perto do rato
Imagine que dois gatos estão caçando o mesmo rato. Você precisa verificar qual gato está mais perto de sua presa. Para isso, implemente a função `catAndMouse` que recebe 3 parâmetros do tipo `number` na seguinte ordem:
- `mouse`: representa a posição do rato.
- `cat1`: representa a posição do gato 1;
- `cat2`: representa a posição do gato 2;
-
Calcule as distâncias entre o rato e cada um dos gatos e retorne qual dos felinos está mais próximo do rato:
- Retorne a string
'cat2'
se o gatocat2
estiver mais próximo do rato; - Retorne a string
'cat1'
se o gatocat1
estiver mais próximo do rato; - Retorne a string
'os gatos trombam e o rato foge'
caso os gatos estejam na mesma distância do rato.
- Retorne a string
Exemplo:
-
Caso o gato
cat2
esteja a 2 unidades de distância do rato e ocat1
esteja a 3 unidades, sua função deverá retornar'cat2'
; -
Caso os gatos estejam na mesma distância do rato, a função deverá retornar a string
'os gatos trombam e o rato foge'
.
O que será testado:
-
A função
catAndMouse
deve retornar a string'cat2'
quando receber os parâmetros onde gatocat2
esteja a 2 unidades de distância do rato ecat1
esteja a 3 unidades de distância do rato; -
A função
catAndMouse
deve retornar a string'cat1'
quando receber os parâmetros onde gatocat1
esteja a 6 unidades de distância do rato ecat2
esteja a 12 unidades de distância do rato; -
A função
catAndMouse
deve retornar a string'os gatos trombam e o rato foge'
quando receber os parâmetros onde os gatos estejam na mesma distância do rato.
Implemente a função fizzBuzz
que recebe um array de números e retorna um array de string de acordo com o resultado
A função fizzBuzz
recebe um array de números e para cada número do array é realizada a divisão por 3 e por 5 e de acordo com o resultado, a função deve retornar um array de strings:
- Retorne a string
'fizz'
para cada número do array que seja divisível apenas por 3; - Retorne a string
'buzz'
para cada número do array que seja divisível apenas por 5; - Retorne a string
'fizzBuzz'
para cada número do array que seja divisível por 3 e 5; - Retorne a string
'bug!'
para cada número do array que não seja dividido por 3 nem por 5.
Exemplo: caso o parâmetro seja [2, 15, 7, 9, 45], sua função deverá retornar ['bug!', 'fizzBuzz', 'bug!', 'fizz', 'fizzBuzz']
.
O que será testado:
-
A função
fizzBuzz
deve retornar as strings['bug!', 'fizzBuzz', 'bug!', 'fizz', 'fizzBuzz']
quando receber os parâmetros [2, 15, 7, 9, 45]; -
A função
fizzBuzz
deve retornar as strings['bug!', 'fizz']
quando receber os parâmetros [7, 9]; -
A função
fizzBuzz
deve retornar as strings['fizz', 'buzz']
quando receber os parâmetros [9, 25].
Implemente uma função que codifica e decodifica uma frase, trocando vogais por números ou números por vogais.
Para codificar a frase utilize a função encode
que recebe uma string como parâmetro e deverá trocar todas as vogais minúsculas por números, de acordo com o formato:
a -> 1
e -> 2
i -> 3
o -> 4
u -> 5
Ou seja, caso o parâmetro de encode
seja 'hi there!'
, o retorno deverá ser 'h3 th2r2!'
.
Para decodificar a frase utilize a função decode
que recebe uma string contendo letras e números como parâmetro e deverá trocar todos os números por vogais minúsculas, de acordo com o formato:
1 -> a
2 -> e
3 -> i
4 -> o
5 -> u
Por exemplo, caso o parâmetro de decode
seja 'h3 th2r2!'
, o retorno deverá ser 'hi there!'
.
O que será testado:
- A função
encode
quando receber o parâmetrohello
, deve retornar o valorh2ll4
; - A função
encode
quando receber o parâmetroHow are you today?
deve retornar o valorH4w 1r2 y45 t4d1y?
; - A função
encode
quando receber o parâmetroThis is an encoding test.
deve retornar o valorTh3s 3s 1n 2nc4d3ng t2st.
; - A função
encode
quando receber o parâmetrogo Trybe!
deve retornar o valorg4 Tryb2!
.
Implemente a função techList
que recebe um array e uma string e retorna um array de objetos.
A função techList
recebe dois parâmetros:
- Um array com nomes de tecnologias ;
- Um nome referente ao nome de uma pessoa.
A função deverá retornar:
- 'Vazio!' se não receber parâmetro algum ;
- Um objeto para cada tecnologia do array, com a seguinte estrutura:
{
tech: 'NomeTech',
name: 'nome da pessoa'
}
Por exemplo, se a função recebe os parâmetros ['React', 'Jest', 'HTML', 'CSS', 'JavaScript']
e 'Lucas'
, o retorno deve ser:
[
{
tech: "CSS",
name: "Lucas"
},
{
tech: "HTML",
name: "Lucas"
},
{
tech: "JavaScript",
name: "Lucas"
},
{
tech: "Jest",
name: "Lucas"
},
{
tech: "React",
name: "Lucas"
}
]
O que será testado:
-
A função
techList
deve retornar uma lista de objetos ordenados quando é passada uma lista com 5 tecnologias; -
A função
techList
deve retornar a mensagem de erro'Vazio!'
quando a lista não tiver tecnologias.
Implemente a função generatePhoneNumber
que recebe um array com 11 números e retorna um número de telefone, respeitando parênteses, traços e espaços.
Exemplo: caso o parâmetro da função seja [1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1]
, a função generatePhoneNumber
deverá retornar (12) 34567-8901
.
-
Retorne a frase
'Array com tamanho incorreto.'
se a função receber um array com tamanho diferente de 11; -
Retorne a string
'não é possível gerar um número de telefone com esses valores'
caso algum dos números do array seja menor que 0, maior que 9 ou se repita 3 vezes ou mais.
O que será testado:
-
A função
generatePhoneNumber
deve retornar a string'Array com tamanho incorreto.'
caso o array tenha o tamanho diferente de 11; -
A função
generatePhoneNumber
deve retornar a string'não é possível gerar um número de telefone com esses valores'
caso algum dos números do array seja menor que 0; -
A função
generatePhoneNumber
deve retornar a string'não é possível gerar um número de telefone com esses valores'
caso algum número do array seja maior que 9; -
A função
generatePhoneNumber
deve retornar a string'não é possível gerar um número de telefone com esses valores'
caso algum número do array se repetir 3 vezes ou mais; -
A função
generatePhoneNumber
deve retornar um número de telefone, respeitando parênteses, traços e espaços caso os números do array estejam de acordo com as especificações.
Implemente a função triangleCheck
que verifica se é possível formar um triângulo analisando o comprimento de três linhas.
A função triangleCheck
deverá receber os parâmetros lineA
, lineB
e lineC
com o valor do comprimento de três linhas distintas.
-
Para que seja possível formar um triângulo, é necessário atender uma das seguintes condições:
- a medida de um dos lados é menor que a soma das medidas dos outros dois lados e maior que o valor absoluto (módulo) da diferença entre os outros dois lados. Por exemplo:
lineA
é menor quelineB + lineC
e maior quelineB - lineC
. Se o resultado delineB - lineC
for um valor negativo, é preciso convertê-lo em positivo e checar selineA
é maior que esse resultado convertido para positivo;
OU
- a medida de qualquer um dos lados é menor que a soma das medidas dos outros dois lados. Por exemplo:
lineA
é menor quelineB + lineC
,lineB
é menor quelineA + lineC
elineC
é menor quelineA + lineB
.
- a medida de um dos lados é menor que a soma das medidas dos outros dois lados e maior que o valor absoluto (módulo) da diferença entre os outros dois lados. Por exemplo:
De olho na dica 👀: Para obter o valor absoluto de um número em JavaScript, pesquise pela função Math.abs
;
- O retorno da sua função deverá ser um booleano.
Exemplo: o retorno de triangleCheck(10, 14, 8)
deverá ser true
.
O que será testado:
-
A função
triangleCheck
deve retornar o valorfalse
quando a medida de um dos lados não é menor que a soma das medidas dos outros dois lados; -
A função
triangleCheck
deve retornar o valorfalse
quando a medida de um dos lados não é maior que o valor absoluto da diferença entre as medidas dos outros dois lados; -
A função
triangleCheck
deve retornar o valortrue
quando a medida de qualquer um dos lados seja menor que a soma das medidas dos outros dois lados, ou a medida de um dos lados é menor que a soma das medidas dos outros dois lados e maior que o valor absoluto da diferença entre os outros dois lados.
Implemente a função hydrate
que recebe uma string e retorna a sugestão de quantos copos de água você deve beber.
// String recebida:
'1 cerveja'
// String retornada:
'1 copo de água'
// String recebida:
'1 cachaça, 5 cervejas e 1 copo de vinho'
// String retornada:
'7 copos de água'
// String recebida:
'1 cachaça, 5 cervejas e 1 copo de vinho'
// String retornada:
'7 copos de água'
-
Para simplificar, considere que a string sempre terá o formato quantidade (em número) + tipo da bebida;
-
O número na frente de cada bebida deve estar entre 1 e 9.
De olho na dica 👀: pesquise por algo similar a get all integers inside a string js
.
O que será testado:
- A função
hydrate
deve retornar a sugestão de quantos copos de água deve-se beber ao receber uma string.