Aula 06: Funções, Bibliotecas e Depuração
Objetivos de Aprendizagem
Ao final desta aula, você deve ser capaz de:
- Definir funções com parâmetros com valor padrão.
- Compreender o escopo de variáveis (local vs. global).
- Importar e usar módulos da biblioteca padrão do Python (
math,random). - Aplicar técnicas básicas de depuração com
print. - Usar o debugger do VS Code para inspecionar a execução do programa.
Conteúdo
1) Parâmetros com valor padrão
Funções podem ter parâmetros com valor padrão, usados quando o argumento não é passado.
def saudacao(nome, periodo="dia"):
print(f"Bom {periodo}, {nome}!")
saudacao("Ana") # Bom dia, Ana!
saudacao("Carlos", "tarde") # Boa tarde, Carlos!
Parâmetros com valor padrão devem sempre vir depois dos obrigatórios.
2) Escopo de variáveis
O escopo define onde uma variável pode ser acessada.
total = 0 # variável global
def adicionar(valor):
resultado = total + valor # resultado é local
return resultado
print(adicionar(5)) # 5
# print(resultado) # NameError: resultado não existe aqui
Evite modificar variáveis globais dentro de funções. Prefira usar parâmetros e retorno.
# Ruim
contador = 0
def incrementar():
global contador
contador += 1
# Melhor
def incrementar(contador):
return contador + 1
contador = 0
contador = incrementar(contador)
3) Biblioteca padrão: módulo math
O módulo math oferece funções e constantes matemáticas.
import math
print(math.pi) # 3.141592653589793
print(math.sqrt(16)) # 4.0
print(math.ceil(2.3)) # 3 (arredonda para cima)
print(math.floor(2.9)) # 2 (arredonda para baixo)
print(math.pow(2, 10)) # 1024.0
Exemplo: área do círculo
import math
def area_circulo(raio):
return math.pi * math.pow(raio, 2)
print(f"Área: {area_circulo(5):.2f}")
Saída esperada: Área: 78.54
4) Biblioteca padrão: módulo random
O módulo random gera valores aleatórios.
import random
print(random.randint(1, 6)) # número inteiro entre 1 e 6
print(random.random()) # número float entre 0.0 e 1.0
nomes = ["Alice", "Bob", "Carol"]
print(random.choice(nomes)) # escolhe um elemento da lista
Exemplo: simulação de dado
import random
def rolar_dado(lados=6):
return random.randint(1, lados)
print(f"Você tirou: {rolar_dado()}")
print(f"Dado de 12 lados: {rolar_dado(12)}")
5) Depuração com print
A forma mais simples de depurar é usar print para inspecionar valores intermediários.
def calcular_desconto(preco, percentual):
print(f"[DEBUG] preco={preco}, percentual={percentual}")
desconto = preco * (percentual / 100)
print(f"[DEBUG] desconto calculado={desconto}")
return preco - desconto
resultado = calcular_desconto(200, 15)
print(f"Preço final: {resultado}")
Boas práticas:
- Use um prefixo como
[DEBUG]para identificar prints de depuração. - Remova os prints de depuração antes de entregar o código final.
6) Depuração com o debugger do VS Code
O VS Code possui um debugger integrado que permite pausar a execução e inspecionar variáveis.
Passos básicos:
- Clique na margem esquerda da linha de código para definir um breakpoint (ponto vermelho).
- Pressione
F5para iniciar a depuração. - Use os controles para navegar:
- Step Over (
F10): executa a linha atual e vai para a próxima. - Step Into (
F11): entra dentro da função sendo chamada. - Continue (
F5): retoma até o próximo breakpoint.
- Step Over (
- Observe os valores das variáveis no painel Variables.
O debugger é mais eficiente que
Exercícios (checkpoints)
- Crie uma função
potencia(base, expoente=2)que retornabaseelevado aexpoente.- Critério de verificação:
potencia(3)deve retornar9;potencia(2, 10)deve retornar1024.
- Critério de verificação:
- Crie uma função
hipotenusa(a, b)usandomath.sqrtque retorna a hipotenusa de um triângulo retângulo.- Critério de verificação:
hipotenusa(3, 4)deve retornar5.0.
- Critério de verificação:
- Escreva um programa que simula 5 lançamentos de um dado de 6 lados usando
random.randint.- Critério de verificação: todos os valores devem estar entre 1 e 6.
- Adicione prints de depuração a uma função existente, execute e depois os remova.
- Critério de verificação: a função deve ter o comportamento correto sem prints de debug ao final.
- Use
random.choicepara selecionar aleatoriamente um item de uma lista de 4 frutas.- Critério de verificação: o item impresso deve pertencer à lista original.
- Crie uma função
arredondar_cima(valor)usandomath.ceile use o debugger para verificar o valor recebido.- Critério de verificação:
arredondar_cima(4.1)deve retornar5.
- Critério de verificação:
Referências
Principais
- Python Docs —
mathmodule: https://docs.python.org/3/library/math.html - Python Docs —
randommodule: https://docs.python.org/3/library/random.html - Python Docs — Default Argument Values: https://docs.python.org/3/tutorial/controlflow.html#default-argument-values
Aprofundamento
- Real Python — Python Scope & the LEGB Rule: https://realpython.com/python-scope-legb-rule/
- VS Code Docs — Python Debugging: https://code.visualstudio.com/docs/python/debugging