Qual a diferença entre rotina e função em Python? Dê um exemplo para cada tipo.

Passo 1

O que o enunciado pede:
  • Explicar a diferença entre “rotina” e “função” em Python.
  • Mostrar um exemplo para cada tipo (um exemplo de rotina e um exemplo de função).
Informações dadas:
  • Nenhuma informação extra foi fornecida além do pedido acima.

Passo 2

O que é uma “rotina” (explicação didática):
  • Em programação, muita gente usa “rotina” como sinônimo de “procedimento”: é um bloco de código que executa tarefas e normalmente é chamado apenas pelos seus efeitos (por exemplo, imprimir algo na tela, modificar uma lista, gravar num arquivo).
  • Em Python não existe uma palavra-chave separada “procedure” — tudo se define com def. Ou seja, tecnicamente tanto “rotinas” quanto “funções” são definidas com def. A diferença prática é o que elas fazem: rotinas são usadas por seus efeitos colaterais (side‑effects) e não por um valor que elas retornam.
  • Exemplo de efeito colateral: print() mostra texto na tela, muda nada no programa exceto o que o usuário vê — esse é um efeito colateral.
Por que isso importa na prova:
  • Saber distinguir pelo comportamento (retorna algo para usar depois? ou só faz coisa e fim?) é o que geralmente pedem em questões conceituais.

Passo 3

Como se escreve uma rotina em Python — passo a passo:
  • Sintaxe básica:
    • def inicia a definição.
    • Em seguida vem o nome da rotina e parênteses com parâmetros (se houver).
    • Dois pontos : e depois o corpo indentado (4 espaços normalmente).
  • Se a rotina não usar return explicitamente, o Python retorna None por padrão — ou seja, não retorna um valor significativo.
  • Exemplo de rotina (vou explicar linha a linha a seguir):
    • Código:
      def imprime_soma_e_lista(a, b, lista):
      s = a + b
      print(“Soma:”, s) # efeito: imprime na tela
      for i, v in enumerate(lista):
      lista[i] = v * 2 # efeito: modifica a lista passada
  • Explicando o exemplo linha a linha:
    • def imprime_soma_e_lista(a, b, lista): — define a rotina com três parâmetros a, b, lista.
    • s = a + b — calcula a soma e guarda em s (variável local).
    • print("Soma:", s) — imprime a soma na tela; esse é um efeito visível, mas nada é “devolvido” para quem chamou a rotina.
    • for i, v in enumerate(lista): lista[i] = v * 2 — percorre a lista e dobra cada elemento: modifica o objeto lista passado (mutabilidade), outro efeito colateral.
  • Como usar essa rotina:
    • Se eu fizer L = [1,2,3] e depois resultado = imprime_soma_e_lista(2,3,L), no console verá Soma: 5 e L passará a ser [2,4,6]. E resultado terá o valor None porque nada foi retornado.
  • Padrão a observar na prova: se a questão espera que você “faça algo” (print, alterar objeto, salvar), provavelmente querem uma rotina/efeito e não um valor a ser usado depois.

Passo 4

O que é uma “função” (explicação didática):
  • Uma função, no sentido usado na maioria dos exercícios e na matemática, é um bloco de código que recebe argumentos e retorna um valor que pode ser usado depois.
  • Em Python, você também usa def e então, dentro, usa return para devolver um valor para quem chamou.
  • O return termina a execução da função naquele ponto e “entrega” um valor ao chamador.
  • Funções são úteis quando você precisa de um valor para atribuir, calcular expressão, encadear operações, etc.

Passo 5

Como se escreve uma função em Python — passo a passo:
  • Sintaxe:
    • def nome(param1, param2):
    • corpo indentado
    • return valor
  • Exemplo simples (explicado linha a linha):
    • Código:
      def soma(a, b):
      return a + b
    • Explicação:
      • def soma(a, b): — define a função chamada soma com parâmetros a e b.
      • return a + b — calcula a + b e devolve esse resultado para quem chamou.
    • Uso:
      • x = soma(2, 3) faz com que x receba o valor 5.
      • Posso também usar direto em expressão: print(soma(4,5) * 2) -> imprime 18.
  • Observação importante para a prova:
    • Não confunda print() com return. print() mostra algo na tela, return entrega algo para o programa. Um erro comum em provas é escrever print(resultado) quando o enunciado pede “retorne o valor”.

Passo 6

Comparação prática e pontos-chave que costumam cair em prova
  • Sintaxe: ambos usam def em Python — não há palavra-chave diferente.
  • Diferença principal:
    • Rotina: usada pelos efeitos colaterais (imprimir, alterar variáveis/objetos, gravar arquivo). Normalmente não retorna valor útil (retorna None por padrão).
    • Função: projetada para calcular e devolver um valor com return, usado em expressões ou guardado em variáveis.
  • Exemplos de como detectar:
    • Se a questão pede “imprima” ou “modifique”, pense em rotina.
    • Se pede “calcule e retorne” ou “qual é o valor”, pense em função com return.
  • Dica de correção rápida em prova:
    • Se a sua rotina precisa ser testada por um número, prefira escrever função que retorna valor; assim o corretor pode checar a saída com exatidão.
    • Se escrever print quando a questão pede retorno, pode perder ponto.

Passo 7

Exemplos finais e rápidos (para memorizar e aplicar na prova)
  • Exemplo claro de rotina (sem retorno explícito, só efeitos):
    • Código:
      def marcar_presenca(nome, lista_presenca):
      print(nome, “presente”)
      lista_presenca.append(nome)
    • O que faz: imprime e modifica lista_presenca. Quem chama recebe None.
  • Exemplo claro de função (retorna algo para usar):
    • Código:
      def media(a, b, c):
      return (a + b + c) / 3
    • O que faz: devolve a média; posso fazer m = media(7,8,9) e usar m depois.
  • Erro comum: escrever uma função que imprime o resultado em vez de retornar. Em testes automáticos, isso falha — prefira sempre return quando a questão pedir valor.

Resposta

Diferença: Rotina = bloco de código usado por seus efeitos colaterais (imprimir, modificar objetos) e normalmente não retorna valor útil (retorna \text{None} em Python). Função = bloco de código que calcula e devolve um valor com \text{return}, para ser usado em expressões ou atribuições.
Exemplo de rotina:
def imprime_soma_e_lista(a, b, lista):
s = a + b
print(“Soma:”, s)
for i, v in enumerate(lista):
lista[i] = v * 2
Exemplo de função:
def soma(a, b):
return a + b

Exercícios relacionados