TDD - Engenharia de Software
Essa tarefa tem por objetivo praticar o Desenvolvimento Orientado (ou Dirigido) a Testes (do inglês, Test Driven Development) como parte do conteúdo programático da disciplina de Engenharia de Software.
Para cada um dos problemas abaixo, sua tarefa é criar o código para resolver o problema juntamente com uma suíte de testes unitários capaz de testar a sua solução. A suíte de testes deverá ser executada de maneira automatizada.
Suíte de Testes
Para a confecção da suíte de testes, busque incluir casos em que seu código pode falhar, como extremos, valores vazios, entre outros. Quanto mais testes, mais resiliente está sua implementação - e provavelmente melhor será sua nota. ;)
Dica: busque frameworks para construção desses testes. Exemplos:
jest
,pytest
,JUnit
, etc...
Qual linguagem devo escolher?
Para a resolução dessa tarefa, é ideal que escolha uma dessas linguagens: Python
, JavaScript
, TypeScript
ou Java
. Qualquer implementação em outra linguagem deverá ser comunicada e aprovada previamente pelo professor sob pena de invalidar sua submissão.
Envio
Para envio da sua resposta, você deverá criar um repositório público no GitHub com o seu código da sua solução. Após a criação do repositório, envie o link do seu repositório como um comentário nessa issue.
Só serão aceitos envios realizados até o dia 30/05/2022.
Tarefas
Soma de um array
Dado um array de inteiros, encontre a soma de seus elementos.
Exemplo: para o array [1, 2, 3] o resultado de sua soma é 6, uma vez que 1 + 2 + 3 = 6.
Para essa tarefa, considere um array de tamanho n, onde 0 < n <= 1000.
Diferença Diagonal
Dada uma matriz quadrada de tamanho n, calcule a diferença absoluta da soma de suas diagonais.
Exemplo:
1 2 3
4 5 6
9 8 9
A diferença diagonal absoluta para essa matriz é:
- 1 + 5 + 9 = 15 (diagonal da esquerda para a direita)
- 3 + 5 + 9 = 17 (diagonal da direita para a esquerda)
- Diferença absoluta: |15 - 17| = 2 (diferença em módulo)
Para esse problema, considere 2 <= n <= 1000 e cada elemento da matriz como um inteiro -100 < m[i][j]
<= 100.
Palíndromo
Dada uma string de tamanho variável n, determine se essa string é um palíndromo.
Exemplos:
- "ABBA" é um palíndromo.
- "SOCORRAM ME SUBI NO ONIBUS EM MARROCOS" é um palíndromo (perceba que para essa verificação os espaços em branco não são levados em consideração).
- "ABCDCBA" é um palíndromo.
- "ABAB" não é um palíndromo.
Para essa tarefa considere 0 < n <= 1000.