You are on page 1of 15

Aula 7 - Programação Modular - Funções

Programação

Informática Web
João Cordeiro
jpcc@ubi.pt

Novembro 16, 2022

Programação (Informática Web) Aula 7 Novembro 16, 2022 1 / 15


Programação Modular - Funções

Sumário
A importância da programação modular. O conceito de função como unidade
modular de código. Definição de funções em Python. Parâmetros, retorno
e invocação de uma função. Exemplos e exercícios diversos.

Programação (Informática Web) Aula 7 Novembro 16, 2022 2 / 15


Programação Modular - Funções

Função
Uma função é uma unidade modular independente de código com eventuais
parâmetros de entrada e dados de retorno.

+ Uma função tem um nome bem definido, pode receber e retornar dados.
+ As funções servem para organizar melhor o código e obter um programa
mais fácil de manter e desenvolver.
+ As funções podem ser invocadas por outras funções ou blocos de código
que lhe tenham acesso e necessitem das suas funcionalidades.
+ Há um conjunto de funções pré-estabelecidas/criadas. Algumas já uti-
lizámos, como por exemplo a função print e a função sqrt:

print("Olá Programador!") x = sqrt(2)

Programação (Informática Web) Aula 7 Novembro 16, 2022 3 / 15


Programação Modular - Funções

Função
Uma função é uma unidade modular independente de código com eventuais
parâmetros de entrada e dados de retorno.

+ Vamos aprender a definir as nossas funções.


+ Em problemas complexos temos de apren-
der a subdividir o problema em subproblemas
mais simples e implementar cada um numa
função independente.
+ Depois, o nosso programa consistirá numa
conjugação harmoniosa das várias funções,
que cooperam para a resolução do problema
total inicial.

Programação (Informática Web) Aula 7 Novembro 16, 2022 4 / 15


Modularidade na Programação

Habitualmente, em programas mais elaborados existe uma dependência


hierárquica, com módulos mais gerais a depender dos mais específicos, tal
como ilustrado a seguir.

Figure 1: Hierarquia de chamadas a funções.

Programação (Informática Web) Aula 7 Novembro 16, 2022 5 / 15


Características de uma Função

Identificação: tem um nome/identificador único.


Invocação: é feita a partir de outra função.
Unicidade: deve realizar uma única tarefa, bem definida.
Utilização: opera como uma “caixa negra”.
Generalidade => Reutilização: codificação genérica e independente
de qualquer outra função, podendo assim ser reutilizada em diferentes
contextos.

11 quadrado 121

Programação (Informática Web) Aula 7 Novembro 16, 2022 6 / 15


Definição de uma Função em Python

Em linguagem Python, uma função é definida de acordo com a seguinte


formulação:
def NAME ( PARAMETERS ) : def quadrado ( x ) :
Instruction 1
... x2 = x * x
Instruction N
return VALUES return x2

Listing 1: Sintaxe. Listing 2: Exemplo.

+ A instrução return é opcional e provoca o terminus imediato da função


e o retorno ao ponto do código que invocou a função em causa.
+ Os PARAMETERS são opcionais, separados por virgulas, podendo ter ini-
cializações omissas, tal como o end na função print.
+ As variáveis definidas numa função, são locais a essa função. É o caso
de X2, no exemplo anterior.

Programação (Informática Web) Aula 7 Novembro 16, 2022 7 / 15


Comunicação entre funções

Invocação/Chamada:
É feita a partir de outra função
A função invocadora suspende temporariamente a sua execução.
A função invocada é executada.
A função invocadora retoma a sua execução.
Passagem de Argumentos/Parâmetros
Atribuição 1:1 de cada parâmetro efetivo a cada parâmetro formal.
Execução
Uma função é executada logo após a sua invocação/chamada, com a
respetiva passagem de parâmetros, a partir doutra função.
Retorno de Valor
Normalmente devolve um valor. Pode não devolver nada.

Programação (Informática Web) Aula 7 Novembro 16, 2022 8 / 15


Invocar/Chamar uma Função

Quando invocamos uma função o fluxo de execução “salta” para o código


da função. No final a execução continua na instrução imediatamente a
seguir à invocação. As variáveis de diferentes funções são independentes.

Figure 2: O fluxo de execução na invocação de uma função.

Source: https://cs.stanford.edu/people/nick/py/python-function.html

Programação (Informática Web) Aula 7 Novembro 16, 2022 9 / 15


Passagem de Parâmetros

Figure 3: Chamadas a funções com passagem de parâmetros.

+ Neste exemplo a e b designam-se por parâmetros formais, enquanto que


os valores 3 e 4 são denominados de parâmetros efectivos.

Programação (Informática Web) Aula 7 Novembro 16, 2022 10 / 15


Tipos de comunicação entre funções

Figure 4: Quatro possíveis cenários

Programação (Informática Web) Aula 7 Novembro 16, 2022 11 / 15


Exemplo

def soma (a , b ) :
return a + b Uma função pode ser invocada
em contextos diferentes,
passando diferentes parâmetros
if __name__ == " __main__ " :
c = soma (3 ,4) efetivos, para os correspondentes
print ( c ) parâmetros formais.

x = int ( input ( " x =? " ) ) A função "__main__" é a


y = int ( input ( " y =? " ) ) função principal de um programa
print ( soma (x , y ) )
em Python. Sempre que exista,
Listing 3: Sintaxe. é lá que começa a execução.

Programação (Informática Web) Aula 7 Novembro 16, 2022 12 / 15


Funções com Parâmetros Variáveis

Uma função pode receber uma número variável de parâmetros. A declaração


formal desses parâmetros é feita usando um único identificador precedido do
símbolo “*”. Esse identificador representa um tuplo – o tuplo dos parâmetros

def somar (* valores ) :


s = 0
for x in valores :
s = s + x
return s

if __name__ == " __main__ " :


c = somar (3 ,4)
print ( c )

print ( somar () )
print ( somar (1 ,2 ,3) )
print ( somar (1 ,2 ,3 ,4) )

Programação (Informática Web) Aula 7 Novembro 16, 2022 13 / 15


Funções com Parâmetros Omissos
Numa função podem existir parâmetros formais omissos. Estes são
definidos atribuindo um valor de omissão, na declaração da função.
from random import randint

def ge r a rL i staAleatoria ( N =10 , A =0 , B =100) :


L = N * [0]
for i in range ( len ( L ) ) :
L [ i ] = randint (A , B )
return L

if __name__ == " __main__ " :


LX = g e rarListaAleatoria ()
print ( LX )
LY = g e rarListaAleatoria (100)
print ( LY )
LZ = g e rarListaAleatoria (7 ,1 ,50)
print ( LZ )

Programação (Informática Web) Aula 7 Novembro 16, 2022 14 / 15


Exercício
Uma das operação matemáticas mais importantes consiste no cálculo do
produto interno entre dois vectores. Admitindo que temos vectores
definidos por listas de números, vamos escrever um programa que pede dois
vectores ao utilizador e calcula o seu produto interno.

Figure 5: Produto interno entre dois vectores.

Programação (Informática Web) Aula 7 Novembro 16, 2022 15 / 15

You might also like