1. Coding by Example
Descrição dos Problemas
Guilherme Lacerda
UniRitter/Facensa/Wildtech/TJRS
Daniel Wildt
uMov.me/Wildtech
2. Dinâmica
1) Formar grupos, com um líder
2) Apresentação do problema a ser trabalhado (5’)
3) Ciclos de (30’)
- Discutir com o grupo as possibilidades de design/estratégias
- Desenvolver o software
- Alternar os pares
4) Retrospectiva (5’)
5) Voltar ao passo 2
6) Discussão em grande grupo da dinâmica
7) Fechamento
4. Todo o código DEVE SER ESCRITO
utilizando TDD
1) Escrever um teste que falhe
2) Escrever código mais simples que
passe no teste
3) Refatorar
Regras para o Git
Commit no Verde
Só se pode fazer commit quando
todos os testes passarem
Regras
5. Regra
A cada X minutos, deve-se retroceder todo o código não feito
o commit
Cada vez que os testes passarem (Verde!), zerar o cronômetro
Se o cronômetro tocar nos X minutos, todo o código sem
commit volta para trás
6. git init (inicializar o diretório)
git add . (adicionando arquivos)
git commit –m “mensagem” (fazendo o commit - só no verde)
git reset –-hard HEAD~1 (reseta até o último commit)
8. Problema 1
1) Desenvolver um componente de software que implemente o
algoritmo de cifra de césar
2) O componente deve receber uma String e criptografá-la. Deve ter
opção também para descriptografá-la
3) Mais informações
1 2
01234567890123456789012345
Normal: ABCDEFGHIJKLMNOPQRSTUVWXYZ
Cifrado: DEFGHIJKLMNOPQRSTUVWXYZABC
9. Problema 1
4) O algoritmo é definido pela seguinte equação (E=texto cifrado;
X=deslocamento e N=texto puro)
5) Casos de teste
“test” => “whvw”
10. Problema 2
1) Ampliar o componente de software de criptografia, incluindo outro
algoritmo, o ROT13 (variação da cifra de césar)
2) O componente deve receber uma String e criptografá-la. Deve ter
opção também para descriptografá-la
3) Mais informações
12. Problema 3
1) Mantendo o componente de software de criptografia, inclua mais
outro algoritmo, o ROT47 (variação do ROT13)
2) O componente deve receber uma String e criptografá-la. Deve ter
opção também para descriptografá-la
3) O ROT47 inclui em sua estrutura caracteres que vão do ASCII 33 (!)
até o 126 (~)
17. Problema 4
1) Mantendo o componente de software de criptografia, inclua mais
outro algoritmo, a Cifra de Vigenére (variação da cifra de césar,
porém polialfabético)
2) O componente deve receber uma String e sua chave e criptografá-la.
Deve ter opção também para descriptografá-la, baseada na chave
3) Passos
- Deve-se remover os espaços da mensagem
- Preencher o restante do tamanho da chave com as letras da
palavra, até que fique do mesmo tamanho da mensagem
- Para cada letra da mensagem (coluna), pegar a letra
correspondente da chave (linha)
- Verificar qual letra está na grelha de Vigenére, que será
adicionada a mensagem cifrada
4) Algebricamente, temos
18. Problema 4
6) Casos de teste
“test”, chave “test” => “mikm”
5) Grelha de Vigenére deve ser
utilizada como tabela de
referência para a cifragem