workshops
  • Workshop fc
  • Workshop latex
  • Workshop mathematica

Workshop FC - Funções e Bibliotecas

Data sex 02 julho 2021 Workshop Parte 7 de 20 do Workshop FC Tags Programação / Física / Secundário

Open In Colab

Funções¶

Num contexto de programação, uma função tem um papel muito semelhante a uma função matemática. Se considerarmos a função $f(x) = ax + b$, $x$ é o argumento da função, $f$ é o nome da função, e valor de $ax+b$ será o seu "resultado" ou valor retornado.

Em programação, mais especificamente em Python, podemos definir uma função da seguinte forma:

def nome_da_funcao(argumento1,argumento2,...):
    {Efetuar as operações desejadas}
    return {resultado}

A declaração de uma função começa com def (definir), seguido do nome que queremos dar à função (segue as mesmas regras relativas ao nome de variáveis), dentro de parêntesis os argumentos desejados com os respetivos nomes e, por fim, :.

A seguir à declaração do nome e dos argumentos, podemos efetuar todas as operações que desejarmos, e, por fim, quando tivermos o resultado, podemos retorná-lo usando a expressão return (o retorno de um valor é opcional). Mais uma vez, é muito importante ter em conta a indentação que define o que está a ser escrito dentro ou fora da função.

Vejamos um exemplo.

In [ ]:
def soma(x,y):
    resultado = x + y
    return resultado


resultado = soma(5,2)
print(resultado)
7

A função definida tem o nome soma, recebe dois argumentos x e y e retorna o valor da soma dos dois argumentos.

Depois da declaração da função, podemos "chamá-la" (usar a função, dando-lhe valores nos argumentos) escrevendo o nome da função seguido dos argumentos dentre de parêntesis.

Neste caso, estamos a chamar a função soma com os argumentos 5 e 2 e a guardar o valor retornado pela função na variável resultado. Como era de esperar, obteve-se o valor 7.

As operações efetuadas numa função podem ser muito mais complicadas que uma soma, os argumentos podem ser de qualquer tipo e o retorno pode ser de nenhum ou múltiplos valores. Deixamos mais alguns exemplos.

In [ ]:
def inutil():
  print("Esta função não faz nada")

inutil()
Esta função não faz nada
In [ ]:
def quadrados(lista):
  quadrados = []
  for i in lista:
    quadrados.append(i**2)

  return quadrados

print(quadrados([1,2,3,4,5,6,7,8,9,10]))
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

Desafio

  • Criar uma função que receba uma lista de números e retorne uma lista com os quadrados da lista recebida.

Bibliotecas¶

Anteriormente usamos a função print(), que permite imprimir no ecrã resultados. Esta função já está definida de raiz, ou seja, não necessitamos de a declarar, como fizemos para as funções anteriores.

Por vezes necessitamos de usar funções que ainda não estão implementadas de raiz, mas que se podem encontrar numa biblioteca. Por exemplo, se quisermos usar funções matemáticas mais avançadas, podemos usar a biblioteca math. Isto é feito através da seguinte linha de código:

import math

Uma biblioteca é um conjunto de comandos e funções definidos fora do ficheiro atual que podem ser utilizados após a sua importação. De notar que para utilizar esse códigos, estes devem estar precedidos por math.

Seguem alguns exemplo:

In [2]:
# Importar a biblioteca
import math

x = math.pi 

# Atuar nas variáveis com funções da biblioteca math
print("Raiz Quadrada: math.sqrt(x) =", math.sqrt(x))
print("Exponencial (e^x): math.exp(x) =", math.exp(x))
print("Logaritmo de Base Natural: math.log(x) =", math.log(x))
print("Seno: math.sin(x) =", math.sin(x))
print("Cosseno: math.cos(x) =", math.cos(x))
Raiz Quadrada: math.sqrt(x) = 1.7724538509055159
Exponencial (e^x): math.exp(x) = 23.140692632779267
Logaritmo de Base Natural: math.log(x) = 1.1447298858494002
Seno: math.sin(x) = 1.2246467991473532e-16
Cosseno: math.cos(x) = -1.0

Atenção que as funções trigonométricas usam todas os argumentos em radianos!

Esta biblioteca guarda também algumas constantes, como é exemplo π:

math.pi

Uma vez importada, não precisamos mais de a importar neste documento.

Neste caso, escrever math. no início de cada função da biblioteca não é muito chato, uma vez que o nome da biblioteca até é pequeno. No entanto, para bibliotecas maiores, é usual usar uma opção de importação que altera o nome da biblioteca. Por exemplo, a biblioteca numpy costuma ser abreviada para np.

In [1]:
import numpy as np

print(np.pi)
3.141592653589793

A sintaxe é, então, acrescentar as {abreviatura} no final do import que já tínhamos visto anteriormente. Neste caso, a biblioteca numpy também é uma biblioteca matemática, pelo que tem também a definição do valor de π.

Há ainda a possibilidade de importar uma única função de uma biblioteca, quando for apenas nisso que estivermos interessados.

Por exemplo, se apenas quiser usar a função time() da biblioteca time, basta fazer

In [3]:
from time import time

print(time())
#Esta função devolve os segundos que passaram desde 1 de jan
#de 1970 às 00:00:00 UTC
1625781088.206219

em vez de ter que escrever time.time().

A sintaxe é

from {biblioteca} import {funcao1}, {funcao2}, ...

Neste caso já não é necessário escrever o nome da biblioteca antes da função.

A utilização destas bibliotecas é fulcral, uma vez que nos permite expandir as funcionalidades do Python com um esforço muito reduzido. Caso tenhas interesse, deixamos aqui algumas das bibliotecas mais usadas:

  • NumPy
  • Matplotlib
  • Scipy
  • Pandas
  • Pygame
  • Django
  • OpenCV

Iremos, mais à frente, focar-nos na biblioteca Matplotlib, que permite a visualização gráfica de dados.

Ficaste com dúvidas? Contacta-nos através das redes sociais ou de nfist.ist@gmail.com

Workshop FC - Parte 7

Anteriores:
  • 1. Introdução ao Workshop
  • 1.1. O que é a programação?
  • 1.2. Funcionamento
  • 2. Introdução à Programação em Python
  • 2.1. Variáveis
  • 2.2. Condições if
Seguintes:
  • 2.4. Ciclos
  • 2.5. A Biblioteca Matplotlib
  • 3. Conceitos Físicos e Matemáticos
  • 3.1. Equações do Movimento
  • 3.2. Equações do Movimento (12° ano)
  • 4. Exemplos Físicos
  • 4.1. Sistema Massa Mola
  • 4.2. O Pêndulo
  • 5. Conclusão
  • 5.1. Erros Comuns
  • 5.2. Soluções dos Desafios
  • 5.3. FAQ's
  • 5.4. Showcase Projetos
  • Segue-nos

    • Facebook
    • Instagram
    • Website
  • Workshop FC

    • Anterior:
      • Condições if
    • Seguinte:
      • Ciclos

© 2021 NFIST · Powered by pelican-bootstrap3, Pelican, Bootstrap

Creative Commons License Content licensed under a Creative Commons Attribution-ShareAlike 4.0 International License, except where indicated otherwise.

Voltar ao início