Por que criar funções

Reduzir repetição e dar nomes a operações significativas.

Por que criar funções

Objetivo da aula

Reduzir repetição e dar nomes a operações significativas.

Regra desta aula: vamos assumir que você nunca viu este assunto antes. Nenhum termo importante será usado sem explicação e todo exemplo deve ser entendido linha por linha, não apenas copiado.

Começando do zero

Função é um bloco de código que recebe um nome e pode ser executado quando chamado. Ela permite agrupar uma responsabilidade, reutilizar uma regra e esconder detalhes atrás de uma interface simples. Uma boa função ajuda o leitor a pensar em tarefas maiores sem precisar reler todas as linhas internas a cada vez.

Uma imagem mental para entender

Pense em um liquidificador com um botão “bater”. Você não precisa controlar manualmente cada movimento do motor toda vez; usa uma operação com nome. Uma função é uma operação nomeada do programa: por dentro existem passos; por fora você chama a responsabilidade.

Conceitos essenciais, sem pular etapas

Definição

Em Python, def inicia a definição de uma função. O corpo indentado não executa apenas por ser definido; ele executa quando a função é chamada.

Chamada

Escrever saudar() pede a execução da função chamada saudar.

Responsabilidade

Uma função pequena deve ter um propósito reconhecível. Nomes como calcular_total são mais informativos que fazer_coisa.

Reutilização

Se a mesma regra aparece em vários lugares, uma função reduz duplicação e centraliza mudanças.

Abstração

O chamador pode usar a função sem conhecer cada detalhe interno, desde que entenda seu contrato de entrada e saída.

Modelo mental

PROBLEMA GRANDE → RESPONSABILIDADES → FUNÇÕES NOMEADAS → CHAMADAS

Exemplo 1 — primeiro veja o programa inteiro

def mostrar_boas_vindas():
    print("Bem-vindo ao FT-002")
    print("Vamos praticar programação.")

mostrar_boas_vindas()
mostrar_boas_vindas()

Agora vamos ler linha por linha

  • def mostrar_boas_vindas(): cria a função e dá um nome à responsabilidade.
  • As duas linhas indentadas pertencem ao corpo.
  • A definição por si só não imprime nada.
  • Cada chamada executa o corpo completo, por isso as mensagens aparecem duas vezes.

Saída esperada

As duas mensagens aparecem duas vezes.

Exemplo 2 — o mesmo conceito em outra situação

def linha_separadora():
    print("-" * 30)

print("Relatório")
linha_separadora()
print("Fim")

A função esconde o detalhe de como a linha é construída. Se depois quisermos mudar o tamanho, existe um único lugar para alterar.

Experimento guiado

Não pule esta parte. Programação só começa a fazer sentido quando você prevê um resultado, executa e compara a previsão com o que realmente aconteceu.

  1. Crie uma função sem parâmetros que mostre três linhas de cabeçalho.
  2. Chame a função duas vezes e confirme a reutilização.
  3. Altere a implementação interna e observe que as chamadas continuam iguais.
  4. Escolha um nome de função que descreva ação, normalmente usando verbo.

Mini desafio

Crie uma função mostrar_menu() que apresente três opções fictícias e chame-a no programa principal.

Solução comentada

def mostrar_menu():
    print("1 - Listar")
    print("2 - Adicionar")
    print("3 - Sair")

mostrar_menu()

Depois de executar a solução, altere pelo menos um valor e explique por que o novo resultado mudou. Se você só copiou e não consegue explicar cada linha, refaça o desafio em uma versão menor.

Erros comuns e por que acontecem

  • Criar uma função enorme que faz entrada, cálculo, arquivo e interface ao mesmo tempo.
  • Esquecer de chamar a função e esperar que o corpo execute só porque foi definido.
  • Dar nomes genéricos que não explicam a responsabilidade.
  • Copiar a mesma regra em vários lugares em vez de reutilizar uma função.

Cheque se você realmente entendeu

Definir uma função executa imediatamente o corpo?

Resposta: Não; normalmente o corpo executa quando a função é chamada.

Por que funções ajudam manutenção?

Resposta: Porque centralizam responsabilidades e reduzem duplicação.

Qual nome comunica melhor: f() ou calcular_media()?

Resposta: calcular_media(), quando essa é a responsabilidade real.

Resumo em linguagem simples

Nesta aula, o ponto central foi Por que criar funções. Tente explicar o modelo PROBLEMA GRANDE → RESPONSABILIDADES → FUNÇÕES NOMEADAS → CHAMADAS sem olhar a tela. Depois, escreva um exemplo próprio menor que os apresentados. Esse exercício de explicação é parte do aprendizado, não um extra.

Conexão com a próxima aula

Na próxima aula, Parâmetros e argumentos, vamos aproveitar exatamente o que foi construído aqui. Você não precisa memorizar tudo; precisa conseguir reconhecer o conceito e reconstruí-lo com raciocínio e testes.