`
linguagem
` `
topico
` `
nome
`TDD `
` `
titulo
`TDD`
` `
descritor
`apoie, apoie.org, PAM, mutirão, produzir, aprender, simplificar, inovar, pesquisar , TDD individual`
` `
lead
`TDD desenvolvimento de programa dirigido por teste. O programa nasce com o teste da saida.
` `
melhorar
`
`
` `
referencia
`
Escola estúdio
,
`
` `
origem
`TddIndividual.xml`
` `
` `
topico
` `
titulo
`A solução do problema`
` `
desc
`
Mostra a saida que se quer.
Solução:
Mostrar o enésimo valor da serie de fibonnaci 0, 1, 1, 2, 3, 5, 8, 13 ou seja f(0)=0, f(1)=1, f(2)=1,f(3)=2,...)
Definição matemática:
F(n+1) = F(n)+F(n-1) valores iniciais F0=0 F1=1 F2=1
F{n}= { 0, se n=0
1, se n=1
Fn-1+Fn-2, para outros casos }
Algoritimo:
metodo para calcular proximo numero da série de Fibonnaci. Exemplo usando metodo recursivo (chama ele mesmo):
Instrução
se n<2 então
retorne n
caso contrário
retorne fib(n-1) + fib((n-2)
* fib é uma função que retorna o valor de um dos números da série de fibonacci.
Resultado:
fib(0)= 0 fib(1)= 1 fib(2)= 1 fib(3)= 2 fib(4)= 3 fib(5)= 5 fib(6)= 8
Linguagem:
Será linguagem corrente (no caso em questão é o python).
`
` `
` `
topico
` `
titulo
`Teste do programa`
` `
desc
`
O
que
se espera do teste : Mostrar o 1° número da série fib(0)=0
teste
resultado
esperado
resultado
obtido
status
print (fib(0)=' 0')
0
Name error: name 'fib' is not defined
erro
#execução do teste
print ('fib(0)=',fib(0))
Resultado:
Name error: name 'fib' is not defined
`
` `
` `
topico
` `
titulo
`Alterar programa para teste funcionar`
` `
desc
`
O que
: Incluir uma função que retorne um valor 0.
teste
resultado
esperado
resultado
obtido
status
print fib(0)
0
0
ok
#definição da função
def fib(n):
return 0
#execução do teste
print ('fib(0)=',fib(0))
Resultado:
fib(0)= 0
`
` `
` `
topico
` `
titulo
`Acrescentar novo teste `
` `
desc
`
O
que
se espera do teste : testar 2 elementos da serie com o mesmo programa.
Como:
acrescentando novo teste na execução do teste
teste
resultado
esperado
resultado
obtido
status
print fib(0)
0
0
ok
print fib(1)
1
0
erro
#definição da função
def fib(n):
return 0
#execução do teste
print ('fib(0)=',fib(0),'fib(1)=',fib(1))
Resultado:
fib(0)= 0 fib(1)= 0
`
` `
` `
topico
` `
titulo
`Alterar programa para teste funcionar `
` `
desc
`
Q que:
Alterando a função para retornar 1 qdo n=1.
teste
resultado
esperado
resultado
obtido
status
print fib(0)
0
0
ok
print fib(1)
1
1
ok
#definição da função
def fib(n):
if (n==0):
return 0
return 1
#execução do teste
print ('fib(0)=',fib(0),'fib(1)=',fib(1))
Resultado:
fib(0)= 0 fib(1)= 1
`
` `
` `
topico
` `
titulo
`Acrescentar novo teste `
` `
desc
`
O
que
se espera do teste : Adicionar teste para fib(3)=1 na
execução do teste
teste
resultado
esperado
resultado
obtido
status
print fib(0)
0
0
ok
print fib(1)
1
1
ok
print fib(2)
1
1
ok
print fib(3)
2
1
erro
#definição da função -adicionar proximo caso - opa errado fib(3)=2 e não 1
def fib(n):
if (n==0):
return 0
return 1
#execução do teste
print ('fib(0)=',fib(0),'fib(1)=',fib(1),'fib(2)=',fib(2),'fib(3)=',fib(3))
Resultado:
fib(0)= 0 fib(1)= 1 fib(2)= 1 fib(3)= 1
`
` `
` `
topico
` `
titulo
`Alterar programa para teste funcionar `
` `
desc
`
O que:
para n>2 retornar 2.
teste
resultado
esperado
resultado
obtido
status
print fib(0)
0
0
ok
print fib(1)
1
1
ok
print fib(2)
1
1
ok
print fib(3)
2
2
ok
#definição da função -
def fib(n):
if (n==0):
return 0
if (n<=2):
return 1
return 2
#execução do teste
print ('fib(0)=',fib(0),'fib(1)=',fib(1),'fib(2)=',fib(2),'fib(3)=',fib(3))
Resultado:
fib(0)= 0 fib(1)= 1 fib(2)= 1 fib(3)= 2
`
` `
` `
topico
` `
titulo
`Acrescentar novo teste `
` `
desc
`
O
que
se espera do teste : Adicionar teste para fib(4)=3 na
execução do teste
teste
resultado
esperado
resultado
obtido
status
print fib(0)
0
0
ok
print fib(1)
1
1
ok
print fib(2)
1
1
ok
print fib(3)
2
2
ok
print fib(4)
3
2
erro
#definição da função -
def fib(n):
if (n==0):
return 0
if (n<=2):
return 1
return 2
#execução do teste
print ('fib(0)=',fib(0),'fib(1)=',fib(1),'fib(2)=',fib(2),'fib(3)=',fib(3),'fib(4)=',fib(4))
Resultado:
fib(0)= 0 fib(1)= 1 fib(2)= 1 fib(3)= 2 fib(4)= 2
`
` `
` `
topico
` `
titulo
`Alterar programa para teste funcionar `
` `
desc
`
Q que:
Na função acrescentar n>3 retornar 3.
teste
resultado
esperado
resultado
obtido
status
print fib(0)
0
0
ok
print fib(1)
1
1
ok
print fib(2)
1
1
ok
print fib(3)
2
2
ok
print fib(4)
3
3
ok
#definição da função
def fib(n):
if (n==0):
return 0
if (n<=2):
return 1
if (n<=3):
return 2
return 3
#execução do teste
print ('fib(0)=',fib(0),'fib(1)=',fib(1),'fib(2)=',fib(2),'fib(3)=',fib(3),'fib(4)=',fib(4)))
Resultado:
fib(0)= 0 fib(1)= 1 fib(2)= 1 fib(3)= 2 fib(4)= 3
`
` `
` `
topico
` `
titulo
`Acrescentar novo teste `
` `
desc
`
O
que
se espera do teste : Adicionar teste para fib(5)=3 na
execução do teste
teste
resultado
esperado
resultado
obtido
status
print fib(0)
0
0
ok
print fib(1)
1
1
ok
print fib(2)
1
1
ok
print fib(3)
2
2
ok
print fib(4)
3
3
ok
print fib(5)
3
5
erro
#definição da função
def fib(n):
if (n==0):
return 0
if (n<=2):
return 1
if (n<=3):
return 2
return 3
#execução do teste
print ('fib(0)=',fib(0),'fib(1)=',fib(1),'fib(2)=',fib(2),'fib(3)=',fib(3),'fib(4)=',fib(4),'fib(5)=',fib(5))
Resultado:
ffib(0)= 0 fib(1)= 1 fib(2)= 1 fib(3)= 2 fib(4)= 3 fib(5)= 3
`
` `
` `
topico
` `
titulo
`Alterar programa para teste funcionar `
` `
desc
`
O que:
generalizando na função o return 3 para return fib(n-1)+fib(n-2)
teste
resultado
esperado
resultado
obtido
status
print fib(0)
0
0
ok
print fib(1)
1
1
ok
print fib(2)
1
1
ok
print fib(3)
2
2
ok
print fib(4)
3
3
ok
print fib(5)
5
5
ok
#definição da função
def fib(n):
if (n==0):
return 0
if (n==1):
return 1
return fib(n-1)+fib(n-2)
#execução do teste
print('fib(0)=',fib(0),'fib(1)=',fib(1),'fib(2)=',fib(2),'fib(3)=',fib(3),'fib(4)=',fib(4),'fib(5)=',fib(5))
Resultado:
fib(0)= 0 fib(1)= 1 fib(2)= 1 fib(3)= 2 fib(4)= 3 fib(5)= 5
`
` `
` `
topico
` `
titulo
`Acrescentar novo teste `
` `
desc
`
O
que
se espera do teste : Adicionar teste para fib(6)=8
Como:
Alterando a execução do teste
teste
resultado
esperado
resultado
obtido
status
print fib(0)
0
0
ok
print fib(1)
1
1
ok
print fib(2)
1
1
ok
print fib(3)
2
2
ok
print fib(4)
3
3
ok
print fib(5)
5
5
ok
print fib(6)
8
8
ok
#definição da função
def fib(n):
if (n==0):
return 0
if (n==1):
return 1
return fib(n-1)+fib(n-2)
#execução do teste
print('fib(0)=',fib(0),'fib(1)=',fib(1),'fib(2)=',fib(2),'fib(3)=',fib(3),'fib(4)=',fib(4),'fib(5)=',fib(5),'fib(6)=',fib(6))
Resultado:
fib(0)= 0 fib(1)= 1 fib(2)= 1 fib(3)= 2 fib(4)= 3 fib(5)= 5 fib(6)= 8
`
` `
` `
topico
` `
titulo
`Dicas`
` `
desc
`
Começar o programa executando uma saida.Vai dar erro.
Corrigir o erro
para o teste funcionar com o mesmo dado de entrada
Acrescentar novo teste
com mais entrada.
Teste colocado não é retirado
.
Executar teste.Poderá dar erro.
Teste que não causa erro não é um bom teste.
O teste vem primeiro, o programa depois.
Cada teste é um modulo coeso e fortemente acoplado.
Caso dê certo acrescentar novo teste.
Caso contrario corrigir o erro para o teste funcionar com o mesmo dado de entrada.
A refatoração
poder feita a cada correção.
Já existe uma solução : no caso produzir e mostrar a série de Fibonnacci
Já existe um ambiente instalado: Python e
http://pythontutor.com
`
` `
` `
titulo
`Glossário`
` `
desc
`
Programa é um conjunto de expressões que contém instruções.
Ambiente de teste.
http://pythontutor.com
`
` ` ` `
topico
` `
id
`feedback`
` `
titulo
`Melhoria constante`
` `
desc
`
Informe o que gostou
o que pode melhorar
O que foi positivo no mutirão
O que pode melhorar
possíveis continuações sobre o assunto:
sugestões de novos dojos
`
` `
` `
topico
` `
titulo
`Referencias`
` `
desc
`
desc
Sugestão para testes fazer :
http://pythontutor.com
`
` `
` `
`