Depois de implementares o exercício hello-world, a próxima tarefa é implementar mais de 20 exercícios.
Há dois tipos de exercícios que podes implementar:
Em geral, recomendamos que os novos percursos comecem por implementar Exercícios de prática, porque são mais fáceis de implementar e exigem menos reflexão prévia. Os Exercícios de conceitos podem sempre ser acrescentados mais tarde, quando o teu percurso já estiver a funcionar bem.
Para ajudar os percursos a implementar Exercícios de prática, criámos o repositório exercism/problem-specifications. Este repositório contém metadados de mais de 100 Exercícios de prática, que os vários percursos podem depois usar para implementar a sua própria versão desses exercícios. Por isso, vais ver os mesmos exercícios implementados em muitos percursos diferentes.
Então, como escolhes os mais de 20 desta lista de mais de 100 exercícios? Aqui ficam algumas orientações.
Há muita variedade nos conceitos usados nos mais de 100 exercícios. Deves procurar implementar exercícios que levem os estudantes a praticar uma grande variedade de conceitos. Por isso, em vez de implementares 20 exercícios focados em strings, tenta implementar exercícios focados em conceitos diferentes.
Aqui ficam alguns conceitos com exercícios de exemplo:
| Conceitos | Exercícios |
|---|---|
| Manipulação de bits | allergies, secret-handshake |
| Booleans | leap |
| Classes | circular-buffer, robot-name |
| Concorrência | bank-account |
| Condicionais | raindrops |
| Datas e horas | gigasecond, meetup |
| Igualdade | clock |
| Números de vírgula flutuante | darts, space-age |
| Avaliação preguiçosa | alphametics, zebra-puzzle |
| Listas | resistor-color, spiral-matrix |
| Ciclos | collatz-conjecture, protein-translation |
| Mapas | nucleotide-count |
| Números | leap, grains |
| Aleatoriedade | dnd-character, robot-name |
| Strings | bob, isogram, |
| Árvores | binary-search-tree, pov |
Alguns exercícios são mais difíceis de implementar do que outros. Deves procurar implementar exercícios com vários graus de dificuldade: alguns fáceis, alguns intermédios e alguns difíceis.
O grau de dificuldade de um exercício depende de vários fatores, como os conceitos envolvidos e a linguagem do percurso. Pode ajudar ver como o exercício é noutros percursos que já o implementaram, para teres uma melhor ideia de como a implementação pode ficar.
Aqui ficam alguns graus de dificuldade com exercícios:
| Dificuldade | Exercícios |
|---|---|
| Fácil | darts, gigasecond, isogram, leap, resistor-color, space-age |
| Intermédio | allergies, bob, meetup, protein-translation, raindrops, secret-handshake |
| Difícil | alphametics, forth, react, pov, zebra-puzzle, zipper |
Nem todos os exercícios se adequam ao teu percurso. Deves escolher apenas os exercícios que se adequam ao teu percurso; mais vale não implementar um exercício do que implementar um que não faça sentido. Por exemplo, o exercício lens-person põe o estudante a trabalhar com lentes, que muitas linguagens não suportam.
Se encontrares um exercício que não se adequa ao teu percurso, podes adicionar o seu slug ao array exercises.foregone no ficheiro config.json do percurso.
Assim, as ferramentas vão ignorar esse exercício.
Para tornar isto um pouco mais concreto, uma seleção inicial de exercícios poderia ser assim:
| Exercício | Dificuldade | Conceitos |
|---|---|---|
| hello-world | Fácil | Nenhum (exercício inicial) |
| leap | Fácil | Números, Booleans |
| gigasecond | Fácil | Datas e horas |
| isogram | Fácil | Strings |
| resistor-color | Fácil | Listas |
| nucleotide-count | Fácil | Mapas |
| collatz-conjecture | Fácil | Ciclos |
| darts | Fácil | Números de vírgula flutuante |
| two-fer | Fácil | Formatação de strings, Argumentos opcionais |
| high-scores | Fácil | Processamento de coleções |
| raindrops | Intermédio | Condicionais |
| bob | Intermédio | Strings |
| allergies | Intermédio | Manipulação de bits |
| series | Intermédio | Exceções |
| circular-buffer | Intermédio | Classes |
| meetup | Intermédio | Datas e horas |
| yacht | Intermédio | Listas |
| dominoes | Difícil | Tuplos, Avaliação preguiçosa |
| diamond | Difícil | Formatação de strings |
| alphametics | Difícil | Avaliação preguiçosa |
| forth | Difícil | Análise sintática |
Depois de escolheres os exercícios que queres incluir no teu percurso, o passo seguinte é implementá-los. A documentação sobre adicionar um Exercício de prática tem instruções detalhadas sobre como adicionar um Exercício de prática.