5: Funções e Criação de Código Modular e Reutilizável

Na tua próxima tarefa na PyTalento, foste encarregado de melhorar a organização do código, tornando-o mais modular e reutilizável. Para isso, vais aprender a criar funções, que são blocos de código que podem ser definidos uma vez e usados várias vezes. As funções permitem-te dividir o código em partes menores, facilitando a sua manutenção e reutilização.

Objetivos

  • Compreender o conceito de funções em Python.
  • Aprender a definir, chamar e reutilizar funções.
  • Explorar a passagem de argumentos e o retorno de valores.

O que é uma Função?

Uma função é um bloco de código que é definido uma vez e pode ser executado sempre que necessário. As funções permitem modularizar o código, separando tarefas específicas em blocos reutilizáveis. Podes passar dados para uma função (chamados argumentos) e, opcionalmente, obter um valor de retorno.

Exemplo de uma Função Simples:

      
  # Definir uma função simples
  def saudacao():
      print("Olá, bem-vindo à PyTalento!")

  # Chamar a função
  saudacao()
      
    

Este exemplo define uma função chamada saudacao() que imprime uma mensagem. A função é chamada usando o nome da função seguido de parênteses.

Passagem de Argumentos para Funções

Podes passar informações para uma função através de parâmetros (ou argumentos). Os parâmetros são variáveis que a função utiliza para realizar operações específicas. Podes passar um ou mais parâmetros, conforme necessário.

Exemplo de Função com Argumentos:

      
  # Definir uma função com argumentos
  def saudacao_com_nome(nome):
      print(f"Olá, {nome}! Bem-vindo à PyTalento!")

  # Chamar a função com um argumento
  saudacao_com_nome("Ana")
      
    

A função saudacao_com_nome(nome) aceita um argumento nome, que é utilizado para personalizar a mensagem de saudação. Quando chamamos a função com o valor "Ana", a mensagem é ajustada para "Olá, Ana!"

Retornar Valores de uma Função

As funções podem devolver valores usando a palavra-chave return. Isto permite que uma função execute cálculos ou operações e devolva o resultado ao código que a chamou.

Exemplo de Função que Retorna um Valor:

      
  # Definir uma função que calcula a soma de dois números
  def soma(a, b):
      return a + b

  # Chamar a função e guardar o resultado
  resultado = soma(5, 3)
  print("O resultado da soma é:", resultado)
      
    

Neste exemplo, a função soma(a, b) recebe dois argumentos, calcula a soma e devolve o resultado com return. O valor devolvido é guardado na variável resultado, que depois é impresso no ecrã.

Parâmetros Opcionais

Podes definir funções com parâmetros opcionais, que assumem um valor padrão se o utilizador não fornecer um argumento. Isto permite que uma função tenha flexibilidade adicional, sem a necessidade de passar sempre todos os parâmetros.

Exemplo de Função com Parâmetros Opcionais:

      
  # Definir uma função com um parâmetro opcional
  def saudacao_opcional(nome="convidado"):
      print(f"Olá, {nome}! Bem-vindo à PyTalento!")

  # Chamar a função sem passar argumentos
  saudacao_opcional()

  # Chamar a função passando um argumento
  saudacao_opcional("João")
      
    

No exemplo acima, o parâmetro nome tem um valor padrão de "convidado". Se chamarmos a função sem passar um argumento, ela usa o valor padrão. Se passarmos um nome, a função usa o valor fornecido.

Modularização do Código com Funções

Uma das grandes vantagens de utilizar funções é a capacidade de modularizar o código. Em vez de ter todo o código num único bloco, podemos dividir tarefas específicas em funções e chamar essas funções quando necessário. Isso torna o código mais organizado e mais fácil de manter.

Exemplo de Modularização com Funções:

      
  # Função para calcular a soma de dois números
  def soma(a, b):
      return a + b

  # Função para calcular o produto de dois números
  def produto(a, b):
      return a * b

  # Usar as funções no programa principal
  num1 = 10
  num2 = 5

  resultado_soma = soma(num1, num2)
  resultado_produto = produto(num1, num2)

  print("Soma:", resultado_soma)
  print("Produto:", resultado_produto)
      
    

Neste exemplo, criamos duas funções separadas para calcular a soma e o produto de dois números. O código principal usa essas funções para realizar as operações, o que torna o código mais modular e fácil de compreender.

Exercício Prático

A empresa PyTalento pediu-te que desenvolvas um programa modularizado que utilize funções para calcular a média de notas de estudantes. O programa deve seguir os seguintes passos:

Requisitos:

  1. Cria uma função que receba uma lista de notas e calcule a média.
  2. Cria uma função que receba uma lista de notas e devolva a nota máxima.
  3. Pede ao utilizador para introduzir as notas e usa as funções para calcular e imprimir a média e a nota máxima.

Exemplo de Código:

      
  # Função para calcular a média das notas
  def calcular_media(notas):
      return sum(notas) / len(notas)

  # Função para encontrar a nota máxima
  def nota_maxima(notas):
      return max(notas)

  # Programa principal
  notas = []

  # Pedir ao utilizador para introduzir 5 notas
  for i in range(5):
      nota = float(input("Introduz a nota do estudante: "))
      notas.append(nota)

  # Calcular e imprimir a média e a nota máxima
  media = calcular_media(notas)
  maxima = nota_maxima(notas)

  print("A média das notas é:", media)
  print("A nota máxima é:", maxima)
      
    
<< 4.3: Comparar Ciclos e Al... Índice 6: Listas – Compreender e... >>