Computação 2

Propaganda
Computação 2
Aula 2 Teórica
professor: Leonardo Carvalho
O que essas
figuras têm em
comum?
Recursão
Função recursiva
Função que chama a si própria.
def funcao_exemplo(...):
...
funcao_exemplo(...)
...
Fatorial (sem recursão)
def fatorial(n):
res = 1
for i in range(1, n+1):
res = res*i
return res
Fatorial recursivo
def fatorial(n):
if n > 0:
return n*fatorial(n-1)
else:
return 1
Fatorial recursivo
Máximo Divisor Comum (mdc)
def mdc(a, b):
if b == 0:
return a
else:
return mdc(b, a%b)
Máximo Divisor Comum (mdc)
Recursão com
Turtle
Desenhando uma curva recursivamente
def linha(s):
if s < 1:
return
turtle.forward(s)
turtle.left(10)
linha(0.8*s)
Quadrados
def quadrado(x):
for i in range(4):
turtle.forward(x)
turtle.left(90)
Movendo a tartaruga sem desenhar
def move(x, y):
turtle.up() # levanta a caneta
turtle.forward(x)
turtle.left(90)
turtle.forward(y)
turtle.right(90)
turtle.down() # abaixa a caneta
Quadrados recursivos
def tela(s):
if s < 1:
return
quadrado(s)
move(0.2*s, 0.2*s)
tela(0.4*s)
Aprimorando
def tela(s):
if s < 1:
return
quadrado(s)
move(.05*s, .55*s)
quadrado(.4*s)
move(.7*s, 0)
turtle.circle(.2*s)
move(0, -.5*s)
turtle.circle(.2*s)
move(-.7*s, 0)
tela(0.4*s)
Árvore
def arvore(s):
if s < 2:
return
turtle.forward(s)
turtle.left(30)
arvore(.6*s)
turtle.right(60)
arvore(.6*s)
turtle.left(30)
turtle.backward(s)
Desafio
Observando
execução dos
programas
Depuração ou
debug
Monitorar a execução de um
programa, normalmente em busca
de erros.
Controle da execução de um programa
●
●
●
●
executar passo a passo
pausar a execução
pontos de parada
verificar dados
Depuração com Python tutor
Depuração com Python tutor
Depuração com Python tutor
Depuração com Python tutor
Depuração com Python tutor
Depuração com Python tutor
Depuração com Python tutor
Depuração com Python tutor
Depuração com Idle
Depuração com Idle
Depuração com Idle
Depuração com Idle
Depuração com Idle
Depuração com Idle
Depuração com Idle
Podemos usar
outro editor?
Download
https://www.continuum.io/downloads
Interface do Spyder
Depuração de
funções
recursivas
Fatorial
def fatorial(n):
if n > 0:
return n*fatorial(n-1)
else:
return 1
mdc
def mdc(a, b):
if b == 0:
return a
else:
return mdc(b, a%b)
É possível
reescrever uma
função recursiva
sem recursão?
mdc (sem recursão)
def mdc(a, b):
while b != 0:
a, b = b, a%b
return a
Árvore (sem recursão)
def arvore(s):
?
Download