Introdução à Programação · 1.º ano (indicativo)
Como escrever uma função passo a passo?
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 valordevolve o resultado a quem chamou e termina a função. - Chamada:
nome(arg1, arg2), normalmente guardada numa variável ou mostrada comprint.
Método passo a passo
- Descreva o problema numa frase: «Recebe a base e a altura e devolve a área do retângulo».
- Identifique as entradas e a saída: entradas = parâmetros; saída = o que será devolvido.
- Escolha um nome claro, em minúsculas, com verbo ou nome expressivo (
area_retangulo,media). - Escreva o cabeçalho:
def area_retangulo(base, altura):. - Escreva o corpo com os cálculos, usando só os parâmetros e variáveis criadas dentro da função.
- **Devolva o resultado com
return** (não se limite aprint, senão não poderá usar o valor noutros cálculos). - 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:
- Frase: devolve base × altura.
- Cabeçalho:
def area_retangulo(base, altura):. - Corpo (uma linha):
return base * altura. - 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:
- Entradas:
precoedesconto(em percentagem). Saída: o novo preço. - Fórmula: preço × (1 − desconto ÷ 100).
- Corpo:
return preco * (1 - desconto / 100). - 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:
- Caso especial primeiro:
if len(lista) == 0:seguido dereturn 0(evita divisão por zero). - Caso geral:
return sum(lista) / len(lista). - Teste: a soma 10 + 12 + 14 é 36 e há 3 valores, logo 36 ÷ 3 = 12.0.
- 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:
- Frase: percorrer as letras e contar as que são vogais.
- Acumulador antes do ciclo:
n = 0. - Ciclo:
for c in texto.lower():(olower()trata maiúsculas e minúsculas). - Dentro do ciclo:
if c in "aeiou": n += 1. - Depois do ciclo (alinhado com o
for):return n. - 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
printem vez dereturn:** a função mostra o valor mas devolveNone. Se precisa do resultado depois, usereturn. - Definir a função e nunca a chamar:
defapenas cria a função; nada corre até escrevernome(...). - Trocar a ordem dos argumentos:
preco_final(10, 2000)dá um resultado diferente depreco_final(2000, 10). Respeite a ordem dos parâmetros. - Usar variáveis locais fora da função:
ncriado dentro da função não existe fora dela. Devolva o que precisa. - **Pôr o
returndentro do ciclo por engano:** a função termina na primeira volta. Alinhe-o com ofor. - Esquecer os dois pontos ou a indentação no cabeçalho e no corpo.
Exercícios propostos
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.
returndevolve o resultado e termina a função;printsó 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
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✓ Estudado
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✓ Estudado
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✓ Estudado
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✓ Estudado