Pular para o conteúdo principal

Aula 06: Funções, Bibliotecas e Depuração

Objetivos de Aprendizagem

Ao final desta aula, você deve ser capaz de:

  1. Definir funções com parâmetros com valor padrão.
  2. Compreender o escopo de variáveis (local vs. global).
  3. Importar e usar módulos da biblioteca padrão do Python (math, random).
  4. Aplicar técnicas básicas de depuração com print.
  5. 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:

  1. Clique na margem esquerda da linha de código para definir um breakpoint (ponto vermelho).
  2. Pressione F5 para iniciar a depuração.
  3. 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.
  4. Observe os valores das variáveis no painel Variables.

O debugger é mais eficiente que print quando o problema está dentro de funções encadeadas ou laços.

Exercícios (checkpoints)

  1. Crie uma função potencia(base, expoente=2) que retorna base elevado a expoente.
    • Critério de verificação: potencia(3) deve retornar 9; potencia(2, 10) deve retornar 1024.
  2. Crie uma função hipotenusa(a, b) usando math.sqrt que retorna a hipotenusa de um triângulo retângulo.
    • Critério de verificação: hipotenusa(3, 4) deve retornar 5.0.
  3. 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.
  4. 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.
  5. Use random.choice para selecionar aleatoriamente um item de uma lista de 4 frutas.
    • Critério de verificação: o item impresso deve pertencer à lista original.
  6. Crie uma função arredondar_cima(valor) usando math.ceil e use o debugger para verificar o valor recebido.
    • Critério de verificação: arredondar_cima(4.1) deve retornar 5.

Referências

Principais

Aprofundamento