Coding by Example
Descrição dos Problemas
Guilherme Lacerda
UniRitter/Facensa/Wildtech/TJRS
Daniel Wildt
uMov.me/Wildtech
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
Com emoção…
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
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
 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)
10 minutos
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
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”
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
Problema 2
4) Casos de teste
“test” => “grfg”
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 (~)
Problema 3
4) Casos de teste
“test” => “E6DE”
Obrigado!
www.codingbyexample.org
dwildt@gmail.com
@dwildt
guilhermeslacerda@gmail.com
@guilhermeslac
BACKUP
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
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
CBSoft 2013 - Descrição dos Problemas (CbE)

CBSoft 2013 - Descrição dos Problemas (CbE)

  • 1.
    Coding by Example Descriçãodos 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
  • 3.
  • 4.
    Todo o códigoDEVE 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 cadaX 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)
  • 7.
  • 8.
    Problema 1 1) Desenvolverum 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) Oalgoritmo é definido pela seguinte equação (E=texto cifrado; X=deslocamento e N=texto puro) 5) Casos de teste “test” => “whvw”
  • 10.
    Problema 2 1) Ampliaro 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
  • 11.
    Problema 2 4) Casosde teste “test” => “grfg”
  • 12.
    Problema 3 1) Mantendoo 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 (~)
  • 13.
    Problema 3 4) Casosde teste “test” => “E6DE”
  • 14.
  • 15.
  • 16.
  • 17.
    Problema 4 1) Mantendoo 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) Casosde teste “test”, chave “test” => “mikm” 5) Grelha de Vigenére deve ser utilizada como tabela de referência para a cifragem