Funções e
procedimentos
Por que modularizar o código — e como dar a um bloco de tarefas tudo de que ele precisa: parâmetros na entrada e um retorno na saída.
Por que modularizar o código — e como dar a um bloco de tarefas tudo de que ele precisa: parâmetros na entrada e um retorno na saída.
Nas duas semanas anteriores trabalhamos estruturas de dados — vetores e matrizes. Agora chegamos ao último tema da unidade: funções e procedimentos, a ferramenta que organiza a lógica em blocos reutilizáveis e fecha o Componente 1.
Estrutura linear de uma dimensão. Indexação por [i], busca, ordenação e estatísticas.
Estrutura de duas dimensões — linhas × colunas. Indexação por [i][j] e percursos.
Encapsular lógica reutilizável. Modularização, parâmetros e retorno. Fecha a unidade.
A1Entender por que modularizar — quais problemas o copiar e colar manual provoca
A1Diferenciar função e procedimento: o que "responde" um valor e o que apenas "faz" uma ação
A2Ler uma assinatura como um contrato e usar parâmetros posicionais e retorno
A2Escrever a primeira função em Python: calcular a média de duas notas
Você e amigos criaram três playlists — estudar, treinar, relaxar. Cada um adiciona 5 músicas de cada estilo (rock, pop, MPB). No começo, copiavam e colavam as músicas manualmente em cada lista.
Quando alguém esquecia de atualizar uma lista, surgiam problemas: músicas repetidas, erradas ou playlists desorganizadas.
Para pensar juntos:
· O que pode dar errado ao repetir a mesma tarefa manualmente em vários lugares?
· Por que copiar e colar várias vezes gera erros?
· Se a mesma lista de 5 músicas vai para várias playlists, qual estratégia evita retrabalho?
· Como isso ajuda na organização?
Modularizar é criar módulos — blocos para tarefas repetitivas. Em vez de adicionar as mesmas 5 músicas de rock em cada playlist, criamos um único bloco reutilizável: adicionar_musicas_de_rock(). Escrevemos uma vez, usamos quantas vezes precisar.
O mesmo bloco serve para todas as playlists. Escreveu uma vez, chamou onde quiser.
Ler adicionar_musicas_de_rock() é mais simples que uma lista gigante de links.
Trocar uma música só no bloco já atualiza todas as playlists de uma vez.
Ouvir o bloco uma única vez confirma que está tudo certo em todo lugar que o usa.
Ferramentas de IA podem sugerir formas de modularizar e reaproveitar o que já existe. Quanto mais claro você for sobre o que precisa, melhor o resultado. Veja um prompt bem descrito:
Repare: a segunda playlist reutiliza as cinco músicas da primeira — exatamente a ideia de módulo. Sabendo o que é necessário e explicando de forma detalhada, a IA entrega resultados muito melhores do que com um pedido vago.
Os dois são blocos reutilizáveis. A diferença está em uma coisa: o procedimento faz algo; a função responde com um valor.
Uma ordem que executa uma tarefa, mas não retorna um valor diretamente.
Analogia: o comando "Tocar a próxima música" — faz algo, mas não te devolve um valor. mostrar_menu_na_tela()Uma pergunta que, após um cálculo, devolve uma resposta.
Analogia: "Qual a duração total da playlist?" — calcula e retorna um valor, ex.: "1h20min". calcular_media()Na Aula 1 vimos por que criar blocos e como distinguir função de procedimento. Mas um bloco útil quase sempre precisa de informações para trabalhar e, no caso das funções, precisa devolver um resultado. Vamos aprender a passar dados — os parâmetros — e a receber respostas — o retorno.
A assinatura é o "cabeçalho" que descreve o que a função faz e o que ela precisa para funcionar — um contrato claro entre quem escreve e quem usa. Veja a função calcular_duracao_playlist:
calcular_duracao_playlist
O nome usado quando a função é executada.
(minha_playlist)
As informações que a função precisa para trabalhar.
return número
A resposta que ela devolve no final.
São os dados que a função precisa para trabalhar. Sem eles, ela não sabe sobre o quê agir.
adicionar_musicas_de_rock(minha_playlist) precisa saber em qual playlist adicionar.É a resposta que a função devolve ao terminar. Você guarda esse valor para usar depois.
calcular_duracao(minha_playlist) deve retornar um número — os minutos.Dois casos opostos em Python: à esquerda, um procedimento com parâmetro mas sem retorno; à direita, uma função com parâmetro e retorno.
# 1 · Procedimento com parâmetro
# (sem retorno)
def adicionar_musicas_de_rock(playlist):
print("Adicionando músicas de rock na playlist:", playlist)
# Uso:
adicionar_musicas_de_rock("MinhaPlaylist")
# 2 · Função com parâmetro e retorno
def calcular_duracao(minutos):
return minutos
# Uso:
duracao = calcular_duracao(120)
print("Duração:", duracao, "minutos")
print e termina sem return. A função usa return para devolver o valor — que aqui é guardado em duracao. Em Python, ambos começam com def: o que diferencia é a presença (ou não) do return.
À esquerda, uma função com dois parâmetros (caso muito comum). À direita, um procedimento sem nenhum parâmetro e sem retorno — só executa.
# 3 · Função com dois parâmetros
# e retorno
def somar(a, b):
return a + b
# Uso:
resultado = somar(5, 3)
print("Resultado:", resultado)
# 4 · Procedimento sem parâmetro
# (sem retorno)
def tocar_musica():
print("Tocando música...")
# Uso:
tocar_musica()
somar(5, 3), o 5 vai para a e o 3 vai para b — pela posição, na ordem em que foram declarados. Inverter a ordem na chamada muda quem recebe o quê.
Vamos criar uma função calcular_media que recebe duas notas e devolve a média. Sigam passo a passo em Python.
Abram seu editor Python ou um ambiente online (Google Colab / replit), no computador ou no celular.
Comecem um arquivo em branco para escrever o programa do zero.
Definam a função com def, declarando o nome e os parâmetros: def calcular_media(nota1, nota2):.
Dentro da função, calculem media = (nota1 + nota2) / 2 e devolvam com return media.
No programa principal, leiam as duas notas do usuário com float(input(...)).
Chamem a função guardando o resultado: media_final = calcular_media(nota_a, nota_b).
Exibam o resultado com print("\nA média do aluno é:", media_final).
Executem o programa e testem com notas diferentes.
Este é o programa completo em Python — a função definida acima e a chamada lá embaixo, no programa principal.
def calcular_media(nota1, nota2):
media = (nota1 + nota2) / 2
return media
nota_a = float(input("Digite a primeira nota: "))
nota_b = float(input("Digite a segunda nota: "))
media_final = calcular_media(nota_a, nota_b)
print("\nA média do aluno é:", media_final)
calcular_media(nota_a, nota_b) passando os valores como parâmetros posicionais, a função devolve a média com return, e o valor é guardado em media_final para ser exibido.
Qual alternativa descreve corretamente a diferença essencial entre uma função e um procedimento?
return — um valor que você guarda e usa. O procedimento apenas faz algo (como exibir um menu) e nada volta. Em Python, ambos começam com def e ambos podem ter parâmetros — por isso A, C e D estão erradas.
return, guardado para uso — nem todo bloco precisa de umBoas práticas de nomeação + Desafio: Biblioteca de utilidades — como nomear funções de forma clara e descritiva, e a construção de um conjunto de funções reutilizáveis para resolver problemas do dia a dia.
SEDUC-SP. Educação Profissional Paulista — Técnico em Desenvolvimento de Sistemas. Lógica de Programação, Componente 1, Unidade 4, Semana 13. Aula 1: SISANO1C1B2S13A1 — "Diferenciar funções e procedimentos no desenvolvimento da estrutura lógica de uma aplicação".
SEDUC-SP. Educação Profissional Paulista — Técnico em Desenvolvimento de Sistemas. Lógica de Programação, Componente 1, Unidade 4, Semana 13. Aula 2: SISANO1C1B2S13A2 — "Utilizar parâmetros posicionais e valores de retorno".
PYTHON SOFTWARE FOUNDATION. Python — Documentação oficial: Defining Functions. Disponível em: docs.python.org. Acesso em: 30 mai. 2026.
Identidade visual · adaptação para apresentação HTML por Guilherme Antunes