Escolar Documentos
Profissional Documentos
Cultura Documentos
Pedro Vasconcelos
DCC/FCUP 2019 1/ 31
Nesta aula. . .
1 Definição de procedimentos
2 Definição de funções
3 Módulo turtle
Pedro Vasconcelos
DCC/FCUP 2019 2/ 31
Definição de procedimentos e funções
Programação estruturada
Decompor um problema em procedimentos mais simples até chegar
às operações elementares.
Pedro Vasconcelos
DCC/FCUP 2019 3/ 31
Definições
Pedro Vasconcelos
DCC/FCUP 2019 4/ 31
Exemplo
def refrão():
print("Se um elefante incomoda muita gente,")
print("Dois elefantes incomodam muito mais.")
Experimentando no interpretador:
>>> refrão()
Se um elefante incomoda muita gente,
Dois elefantes incomodam muito mais.
Pedro Vasconcelos
DCC/FCUP 2019 5/ 31
Observações
Pedro Vasconcelos
DCC/FCUP 2019 6/ 31
Parâmetros e valores
>>> refrão(3)
Se 3 elefantes incomodam muita gente,
4 elefantes incomodam muito mais.
Pedro Vasconcelos
DCC/FCUP 2019 7/ 31
Observações
Pedro Vasconcelos
DCC/FCUP 2019 8/ 31
Observações (cont.)
>>> refrão(2)
(Experimente no interpretador!)
Pedro Vasconcelos
DCC/FCUP 2019 9/ 31
Definir funções
Pedro Vasconcelos
DCC/FCUP 2019 10/ 31
Exemplo: calcular o volume de uma esfera
4 3
V = πr
3
Pedro Vasconcelos
DCC/FCUP 2019 11/ 31
Exemplos de uso:
>>> volume(1.0)
4.1887902047863905
>>> volume(1.5)
14.137166941154067
>>> volume(2.0)
33.510321638291124
Pedro Vasconcelos
DCC/FCUP 2019 12/ 31
Definição alternativa
import math
def volume(r):
return 4/3 * math.pi * r**3
Pedro Vasconcelos
DCC/FCUP 2019 13/ 31
Return ou print?
Pedro Vasconcelos
DCC/FCUP 2019 14/ 31
Âmbito das variáveis
>>> r = 42
>>> volume(1)
4.1887902047863905
>>> r
42
>>> V
NameError: name ’V’ is not defined
Pedro Vasconcelos
DCC/FCUP 2019 15/ 31
Documentação
Pedro Vasconcelos
DCC/FCUP 2019 16/ 31
Documentação (cont.)
>>> help(volume)
Help on function volume in module __main__:
volume(r)
Calcula o volume de uma esfera de raio r.
Pedro Vasconcelos
DCC/FCUP 2019 17/ 31
Anotações de tipos
Pedro Vasconcelos
DCC/FCUP 2019 18/ 31
Anotações de tipos (cont.)
Mais geralmente:
Pedro Vasconcelos
DCC/FCUP 2019 19/ 31
Pedro Vasconcelos
DCC/FCUP 2019 20/ 31
Módulo turtle
Pedro Vasconcelos
DCC/FCUP 2019 21/ 31
Primeiros passos
Pedro Vasconcelos
DCC/FCUP 2019 22/ 31
Primeiros passos (cont.)
>>> clear()
>>> forward(100)
>>> left(90)
>>> forward(200)
Pedro Vasconcelos
DCC/FCUP 2019 23/ 31
Comando principais
Pedro Vasconcelos
DCC/FCUP 2019 24/ 31
Desenhar um quadrado
Pedro Vasconcelos
DCC/FCUP 2019 25/ 31
def quadrado():
forward(100) # primeiro lado
left(90)
forward(100) # segundo lado
left(90)
forward(100) # terceiro lado
left(90)
forward(100) # quarto lado
left(90) # termina na orientação original
Pedro Vasconcelos
DCC/FCUP 2019 26/ 31
Evitando repetições
forward(100)
left(90)
forward(100)
left(90)
forward(100)
left(90)
forward(100)
left(90)
Pedro Vasconcelos
DCC/FCUP 2019 27/ 31
def quadrado():
for lado in range(4): # repetir 4 vezes
forward(100)
left(90)
Pedro Vasconcelos
DCC/FCUP 2019 28/ 31
Variantes
def quadrado():
for i in range(4): # 0, 1, 2, 3
forward(100)
left(90)
def quadrado():
for i in [1,2,3,4]:
forward(100)
left(90)
def quadrado():
for c in [’red’,’green’,’blue’,’black’]:
color(c)
forward(100)
left(90)
Pedro Vasconcelos
DCC/FCUP 2019 29/ 31
Generalizando
Pedro Vasconcelos
DCC/FCUP 2019 30/ 31
Exemplo maior: uma espiral
reset()
speed(10)
for i in range(36): # desenhar 36 quadrados
quadrado(50+i*5) # com lados crescentes
left(10) # ângulo entre os quadrados
Pedro Vasconcelos
DCC/FCUP 2019 31/ 31