Introdução à Programação · 1.º ano (indicativo)

Como escrever uma função passo a passo?

  • 8 min de leitura
  • 4 exemplos resolvidos
  • 5 exercícios com solução
  • Atualizado em

Resposta curta

Para escrever uma função: 1) diga em frase o que ela faz, 2) escolha o nome e os parâmetros (entradas), 3) escreva o corpo, 4) devolva o resultado com return, 5) teste com valores conhecidos. Em Python começa-se com def nome(parametros): e o corpo vai indentado por baixo.

Quando se aplica

Escreve-se uma função sempre que um cálculo ou uma tarefa se repete ou merece um nome próprio: calcular a área de uma figura, a média de notas, aplicar um desconto, contar vogais. Dividir um programa em funções chama-se modularização e traz três vantagens: evita repetir código, permite testar cada parte separadamente e torna o programa mais fácil de ler.

Pré-requisitos

Variáveis, operadores, condições (if) e ciclos (for/while). Convém também distinguir parâmetro (o nome que a função usa na definição) de argumento (o valor concreto dado na chamada).

Partes de uma função

  • Cabeçalho: def nome(param1, param2): (os dois pontos são obrigatórios).
  • Corpo: instruções indentadas, que só correm quando a função é chamada.
  • Retorno: return valor devolve o resultado a quem chamou e termina a função.
  • Chamada: nome(arg1, arg2), normalmente guardada numa variável ou mostrada com print.

Método passo a passo

  1. Descreva o problema numa frase: «Recebe a base e a altura e devolve a área do retângulo».
  2. Identifique as entradas e a saída: entradas = parâmetros; saída = o que será devolvido.
  3. Escolha um nome claro, em minúsculas, com verbo ou nome expressivo (area_retangulo, media).
  4. Escreva o cabeçalho: def area_retangulo(base, altura):.
  5. Escreva o corpo com os cálculos, usando só os parâmetros e variáveis criadas dentro da função.
  6. **Devolva o resultado com return** (não se limite a print, senão não poderá usar o valor noutros cálculos).
  7. Teste com casos simples cujo resultado já sabe, e também com casos-limite (zero, lista vazia).

Atenção

print apenas mostra um valor no ecrã; return devolve o valor ao programa. Uma função que só faz print devolve None e não pode ser usada em contas como 2 * area(3, 4).

Exemplos resolvidos

Exemplo 1 — Área de um retângulo

Enunciado: Escreva uma função que receba a base e a altura de um retângulo e devolva a área. Calcule para base 5 e altura 3.

Resolução:

  1. Frase: devolve base × altura.
  2. Cabeçalho: def area_retangulo(base, altura):.
  3. Corpo (uma linha): return base * altura.
  4. Chamada: area_retangulo(5, 3).

Resposta: devolve 15. Verificação: 5 × 3 = 15; com 1 × 1 devolve 1, como esperado.

Exemplo 2 — Preço com desconto

Enunciado: Uma loja em Luanda dá uma percentagem de desconto. Escreva preco_final(preco, desconto) e calcule o preço de um artigo de 2000 kwanzas com 10% de desconto.

Resolução:

  1. Entradas: preco e desconto (em percentagem). Saída: o novo preço.
  2. Fórmula: preço × (1 − desconto ÷ 100).
  3. Corpo: return preco * (1 - desconto / 100).
  4. Chamada: preco_final(2000, 10): 1 − 10/100 = 0.9 e 2000 × 0.9 = 1800.

Resposta: 1800.0 kwanzas (o / em Python dá sempre decimal). Verificação: 10% de 2000 é 200, e 2000 − 200 = 1800.

Exemplo 3 — Média de uma lista, com caso especial

Enunciado: Escreva media(lista) que devolva a média dos valores, ou 0 se a lista estiver vazia. Teste com [10, 12, 14].

Resolução:

  1. Caso especial primeiro: if len(lista) == 0: seguido de return 0 (evita divisão por zero).
  2. Caso geral: return sum(lista) / len(lista).
  3. Teste: a soma 10 + 12 + 14 é 36 e há 3 valores, logo 36 ÷ 3 = 12.0.
  4. Teste do limite: media([]) devolve 0.

Resposta: media([10, 12, 14]) devolve 12.0 e media([]) devolve 0. Verificação: 12 × 3 = 36.

Exemplo 4 — Nível de exame: contar vogais

Enunciado: Escreva conta_vogais(texto) que devolva quantas vogais (a, e, i, o, u) o texto tem, sem distinguir maiúsculas. Teste com "Angola".

Resolução:

  1. Frase: percorrer as letras e contar as que são vogais.
  2. Acumulador antes do ciclo: n = 0.
  3. Ciclo: for c in texto.lower(): (o lower() trata maiúsculas e minúsculas).
  4. Dentro do ciclo: if c in "aeiou": n += 1.
  5. Depois do ciclo (alinhado com o for): return n.
  6. Seguimento com «angola»: a (1), n, g, o (2), l, a (3).

Resposta: 3. Verificação: as vogais de Angola são A, o, a.

Erros frequentes

  • **Usar print em vez de return:** a função mostra o valor mas devolve None. Se precisa do resultado depois, use return.
  • Definir a função e nunca a chamar: def apenas cria a função; nada corre até escrever nome(...).
  • Trocar a ordem dos argumentos: preco_final(10, 2000) dá um resultado diferente de preco_final(2000, 10). Respeite a ordem dos parâmetros.
  • Usar variáveis locais fora da função: n criado dentro da função não existe fora dela. Devolva o que precisa.
  • **Pôr o return dentro do ciclo por engano:** a função termina na primeira volta. Alinhe-o com o for.
  • Esquecer os dois pontos ou a indentação no cabeçalho e no corpo.

Exercícios propostos

Tente resolver primeiro no caderno; depois confira.

1Exercício 1

Escreva quadrado(n) que devolva o quadrado de n. Quanto vale quadrado(7)?

Ver dica

Basta uma linha com return.

Ver solução

def quadrado(n): com return n * n. Então quadrado(7) devolve 49.

2Exercício 2

Escreva eh_par(n) que devolva True se n for par e False caso contrário. Indique eh_par(10) e eh_par(7).

Ver dica

Um número é par quando o resto da divisão por 2 é 0.

Ver solução

def eh_par(n): com return n % 2 == 0. Como 10 % 2 = 0, eh_par(10) devolve True; como 7 % 2 = 1, eh_par(7) devolve False.

3Exercício 3

Escreva maximo(a, b, c) que devolva o maior de três números, sem usar a função max. Teste com (4, 9, 2).

Ver dica

Comece por assumir que a é o maior e compare com os outros.

Ver solução

m = a; if b > m: m = b; if c > m: m = c; return m. Para (4, 9, 2): m = 4; 9 > 4, logo m = 9; 2 > 9 é falso. Devolve 9.

4Exercício 4

Escreva soma_ate(n) que devolva 1 + 2 + … + n usando um ciclo. Calcule soma_ate(4) e soma_ate(100).

Ver dica

Inicialize o acumulador antes do ciclo e use range(1, n + 1).

Ver solução

total = 0; for i in range(1, n + 1): total += i; return total (fora do ciclo). soma_ate(4) = 1 + 2 + 3 + 4 = 10. soma_ate(100) = 100 × 101 ÷ 2 = 5050.

5Exercício 5

Escreva celsius_para_fahrenheit(c) com a fórmula F = C × 9/5 + 32. Calcule para 0 e para 100.

Ver solução

def celsius_para_fahrenheit(c): com return c * 9 / 5 + 32. Para 0: 0 × 9 / 5 + 32 = 32.0. Para 100: 100 × 9 / 5 = 180 e 180 + 32 = 212.0. São os pontos de congelação e de ebulição da água.

Perguntas frequentes

Quando se usa uma função?

Quando o mesmo cálculo se repete em vários sítios, ou quando uma parte do programa faz uma tarefa que merece nome próprio. Se está a copiar e colar código, é sinal de que devia haver uma função.

Existe um método mais rápido?

Para funções pequenas, bastam o cabeçalho e uma linha com return. Para as maiores, o hábito de escrever primeiro a frase (entradas, saída) e os testes poupa tempo, porque evita reescrever. Python tem também a forma lambda para funções de uma só expressão, mas é opcional.

Que erros são mais comuns?

Confundir print com return, esquecer de chamar a função e pôr o return dentro do ciclo. Os três são fáceis de apanhar se testar com um valor cujo resultado já sabe.

Uma função pode ter vários parâmetros ou nenhum?

Pode ter qualquer número, inclusive nenhum (def saudar():). Python permite ainda valores por defeito, como def juros(capital, taxa=0.05):; se não indicar a taxa, usa-se 0.05.

Resumo

  • Uma função começa com def nome(parametros): e o corpo vai indentado.
  • Parâmetros são as entradas da definição; argumentos são os valores dados na chamada.
  • return devolve o resultado e termina a função; print só mostra.
  • Defina primeiro o que a função faz, depois escreva o corpo e teste com casos conhecidos.
  • Teste sempre os casos-limite (zero, lista vazia, um só elemento).

Onde aprofundar

  • Manual e programa da disciplina de Programação da sua instituição (confirme a edição em vigor).
  • Documentação oficial do Python, tutorial da linguagem, secção sobre definição de funções.
  • CS50 da Universidade de Harvard, como referência pedagógica de introdução à programação (confirme a versão atual).

Continue a estudar

1.º ano (indicativo)9 min

Como escrever uma função recursiva?

Uma função recursiva é uma função que se chama a si própria com um problema mais pequeno. Para a escrever, defina primeiro o caso base (a situação mais simples, que se…

4 exemplos5 exercícios com solução

1.º ano (indicativo)9 min

Como instalar o Python no computador?

Descarregue o instalador no site oficial python.org, execute-o e, no Windows, marque a opção Add python.exe to PATH antes de instalar. Depois abra o terminal e escreva…

4 exemplos5 exercícios com solução

1.º ano (indicativo)8 min

Como declarar e usar variáveis?

Uma variável é um nome que guarda um valor na memória. Em Python declara-se atribuindo com o sinal =, por exemplo idade = 17: não é preciso indicar o tipo. Depois…

4 exemplos5 exercícios com solução

1.º ano (indicativo)8 min

Como escrever um programa para somar números até zero?

Em Python, use um acumulador total = 0, leia o primeiro número e repita com while n != 0: somando n ao total e lendo o número seguinte dentro do ciclo. O zero funciona…

4 exemplos5 exercícios com solução

Ver tudo de Introdução à Programação