0% acharam este documento útil (0 voto)
5 visualizações30 páginas

Prog t06 Funcoes

O documento aborda o conceito de funções em Python, incluindo sua definição, utilização, retorno e reutilização. Ele também discute regras básicas para a criação de funções, escopo de variáveis e exemplos práticos, como o cálculo de fatorial e validação de entradas. Além disso, menciona a passagem de parâmetros, funções como parâmetros e funções lambda.

Enviado por

lula
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
5 visualizações30 páginas

Prog t06 Funcoes

O documento aborda o conceito de funções em Python, incluindo sua definição, utilização, retorno e reutilização. Ele também discute regras básicas para a criação de funções, escopo de variáveis e exemplos práticos, como o cálculo de fatorial e validação de entradas. Além disso, menciona a passagem de parâmetros, funções como parâmetros e funções lambda.

Enviado por

lula
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 30

Programação de Computadores:

Funções

2019
Tópicos

- Sobre Funções

- Definição de Funções

- Utilização de Funções

- Retorno de Funções

- Reutilização de Funções em Outras Funções

- Regras Básicas para Criação de Funções

- Escopo das Variáveis (locais e globais)


Sobre Funções
- Podemos definir nossas próprias funções em Python.
- Já sabemos como usar várias funções, como len, int, float,
print e input.
- Agora veremos como declarar novas funções e como utilizá-las em
programas.
- Funções são especialmente interessantes para isolar uma tarefa
específica em um trecho de programa. Isso permite que a solução de
um problema seja reutilizada em outras partes do programa, sem
precisar repetir as mesmas linhas.
- Conforme formos criando funções, podemos armazená-las para uso
em outros programas. Com o tempo, você vai colecionar essas
funções, criando uma biblioteca ou módulo.

Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014.


Definição de Funções
Para definir uma nova função, utilizaremos a instrução def.
Vejamos como declarar uma função de soma que recebe dos números
como parâmetros e os imprime na tela:
Definição de uma nova função:
def soma(a,b): #1
print(a+b) #2
soma(2,9) #3
soma(10,15)

Usamos a instrução def seguida pelo nome da função, no caso, soma.


Após o nome e entre parênteses, especificamos o nome dos
parâmetros que a função receberá. Chamamos o primeiro de a e o
segundo de b. Usamos também : para indicar o início de um bloco.
Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014.
Utilização de Funções
Usamos a função print para exibir a+b. Observe que escrevemos
esse comando dentro do bloco da função, ou seja, mais à direita.
Diferentemente do que já vimos até agora, essas linhas não serão
executadas imediatamente.
Na realidade, a definição prepara o interpretador para executar a
função quando esta for chamada em outras partes do programa.
Para chamar uma função definida no programa, faremos da mesma
forma que as funções já definidas na linguagem, ou seja, nome da
função seguido dos parâmetros entre parênteses.
Os parâmetros são substituídos na mesma ordem em que foram
definidos, ou seja, o primeiro valor como a e o segundo como b.

Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014.


Retorno de Funções
O exemplo anterior utiliza dois parâmetros e imprime sua soma. Essa
função não retorna valores como a função len ou a int. Vamos
reescrever essa função de forma que o valor da soma seja retornado.
Definição do retorno de um valor:
def soma(a,b):
return(a+b)
print(soma(2,9))

Veja que agora utilizamos a instrução return para indicar o valor a


retornar. Observe também que retiramos o print da função. Isso é
interessante porque a soma e a impressão da soma de dois números
são dois problemas diferentes. Nem sempre vamos somar e imprimir a
soma, por isso, vamos deixar a função realizar apenas o cálculo. Se
precisarmos imprimir o resultado, podemos utilizar a função print.
Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014.
Retorno de Funções
Vejamos outro exemplo, uma função que retorne verdadeiro ou falso,
dependendo se o número é par ou impar.
Retornando se o valor é par ou não:
def isEven(x):
return(x%2==0)
print(isEven(2))
print(isEven(3))

Imagine agora que precisamos definir uma função para retornar a


palavra par ou impar. Podemos reutilizar a função isEven.

Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014.


Reutilização de Funções em Outras Funções
Reutilização da função isEven em outra função:
def isEven(x):
return(x%2==0)
def oddOrEven(x):
if isEven(x):
return "even"
else
return "odd"
print(oddOrEven(2))
print(oddOrEven(3))

Chamamos a função isEven dentro da função oddOrEven. Se a


função retornar verdadeiro, retornaremos par, caso contrário, impar.
Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014.
Reutilização de Funções em Outras Funções
Utilizamos dois return na função oddOrEven.
A instrução return faz com que a função pare de executar e que o
valor seja retornado imediatamente ao programa ou função que a
chamou.
Assim, podemos entender a instrução return como uma interrupção
da execução da função, seguido do retorno do valor.
As linhas da função após a instrução return são ignoradas de forma
similar à instrução break dentro de um while.

Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014.


Exercícios
- Escreva uma função que retorne o maior de dois números.

- Escreva uma função que receba dois números e retorne True se o


primeiro número for múltiplo do segundo.

- Escreva uma função que receba o lado (L) de um quadrado e retorne


sua área (A = L*L).

- Escreva uma função que receba a base e a altura de um triângulo e


retorne sua área (A = (base * altura)/2).

Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014.


Regras Básicas para Criação de Funções
Por enquanto, tente fixar duas regras: uma função deve resolver
apenas um problema e, quanto mais genérica for sua solução, melhor
ela será em longo prazo.
Para saber se sua função resolve apenas um problema, tente define-la
sem utilizar a conjunção “e”. Se ela faz isso e aquilo, já é um indicativo
que efetua mais de uma tarefa e que talvez tenha que ser
desmembrada em outras funções.
Não se preocupe agora em definir funções perfeitas, pois à medida
que você for ganhando experiência na programação esses conceitos se
tornarão mais claros.
Resolver os problemas da maneira mais genérica possível é se
preparar para reutilizar a função em outros programas.

Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014.


Função para Cálculo do Fatorial
Um problema clássico de programação é o cálculo do fatorial.
O fatorial de um número é utilizado em estatística para calcular o
número de combinações e permutações de conjuntos.
Seu cálculo é simples, por isso, é muito utilizado como exemplo em
cursos de programação.
Para calcular o fatorial, multiplicamos o número por todos os números
que o precedem até chegarmos em 1.
Por exemplo:
- Fatorial de 3: 3 x 2 x 1 = 6
- Fatorial de 4: 4 x 3 x 2 x 1 = 24
E assim por diante...
Um caso especial é o fatorial de 0 que é definido como 1.

Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014.


Função para Cálculo do Fatorial
Função que calcula o fatorial de um número:
def fatorial(n):
fat = 1
while n>1:
fat*=n
n-=1
return fat

Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014.


Função para Cálculo do Fatorial
Função que calcula o fatorial de um número:
def fatorial(n): def fatorial(n):
fat = 1 fat=1
while n>1: x=1
fat*=n while x<=n:
n-=1 fat*=x
return fat x+=1
return fat

Existem várias forma de resolver o problema, e todas podem estar


corretas.
Para decidir se nossa implementação está correta, temos que observar
os valores retornados e compará-los aos valores de referência.
Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014.
Passagem de Parâmetro (por valor ou referência?)
Troca de valores entre duas variáveis:
a = 4
b = 2
print("valor de a antes: %d" % a)
print("valor de b antes: %d" % b)
temp = b
b = a
a = temp
print("valor de a depois: %d" % a)
print("valor de b depois: %d" % b)

Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014.


Passagem de Parâmetro (por valor ou referência?)
Troca de valores entre duas variáveis usando função :
def swap(a,b):
temp = b
b = a
a = temp
print("valor de a dentro: %d" % a)
print("valor de b dentro: %d" % b)
a = 4
b = 2
swap(a,b)
print("valor de a depois: %d" % a)
print("valor de b depois: %d" % b)

Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014.


Escopo das Variáveis (Locais e Globais)
Quando usamos funções, começamos a trabalhar com variáveis
internas ou locais e com variáveis externas ou globais. A diferença
entre elas é a visibilidade ou escopo.
Uma variável local a uma função existe apenas dentro dela, sendo
normalmente inicializada a cada chamada. Assim não podemos
acessar o valor de uma variável local fora da função que a criou e, por
isso, passamos parâmetros e retornamos valores nas funções, de
forma a possibilitar a troca de dados no programa.
Uma variável global é definida fora de uma função, pode ser vista por
todas as funções do módulo e por todos os módulos que importam o
módulo que a definiu.
Variáveis globais devem ser evitadas o máximo possível, pois
dificultam a leitura e violam o encapsulamento da função.

Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014.


Escopo das Variáveis (Locais e Globais)
Uso de variável global dentro de função:
a = 5
b = 6
def muda_e_imprime():
a=7
print("a dentro da função: %d" % a)
print("b dentro da função: %d" % b)
print("a antes da função: %d" % a)
print("b antes da função: %d" % b)
muda_e_imprime()
print("a depois da função: %d" % a)
print("b depois da função: %d" % b)

Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014.


Escopo das Variáveis (Locais e Globais)
Uso de variável global dentro de função:
a = 5
b = 6
def muda_e_imprime():
a=7
print("a dentro da função: %d" % a)
print("b dentro da função: %d" % b)
print("a antes da função: %d" % a)
print("b antes da função: %d" % b)
muda_e_imprime()
print("a depois da função: %d" % a)
print("b depois da função: %d" % b)

Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014.


Escopo das Variáveis (Locais e Globais)
Se quisermos modificar uma variável flobal dentro de uma função,
devemos informar que estamos usando uma variável global antes de
inicializa-la, com a instrução global, na primeira linha de nossa função:
a = 5
def muda_e_imprime():
global a
a=7
print("a dentro da função: %d" % a)
print("a antes da função: %d" % a)
muda_e_imprime()
print("a depois da função: %d" % a)

Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014.


Funções Recursivas
Uma função pode chamar a si mesma, e quando isso ocorre temos
uma função recursiva.
O problema de fatorial é interessante para demonstrar o conceito de
recursividade. Podemos definir o fatorial de um número como sendo
esse número multiplicado pelo fatorial do seu antecessor.
Função recursiva para cálculo do fatorial:
def fatorial(n):
if n==0 or n==1:
return 1
else
return n*fatorial(n-1)

Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014.


Validação
Funções são muito úteis para validar a entrada de dados.
Exemplo de validação sem usar função:
while True:
v=int(input("Digite um valor entre 0 e 5:"))
if v<0 or v>5:
print("Valor invalido.")
else:
break

Código para ler um valor inteiro, limitado por um valor de mínimo e


máximo. Esse código repete a entrada de dados até termos um valor
válido.

Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014.


Validação
Validação de inteiro usando função:
def faixa_int(pergunta, minimo, maximo):
while True:
v=int(input(pergunta))
if v<minimo or v>maximo:
print("Valor invalido. Digite um valor entre %d e
%d" % (minimo,maximo))
else:
return v

Esse tipo de verificação é muito importante quando nosso programa


só funciona com uma faixa de valores. Quando verificamos os dados
do programa, estamos realizando uma validação, que é importante
para evitarmos erros difíceis de detectar após a escrita do programa.
Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014.
Parâmetros Opcionais
Nem sempre precisaremos passar todos os parâmetros para uma
função, preferindo utilizar um valor previamente escolhido como
padrão, mas deixando a possibilidade de alterá-lo, caso necessário.
Função para imprimir uma barra na tela:
def barra():
print("*" * 40)

Função para imprimir uma barra na tela com parâmetros opcionais:


def barra(n=40, caractere="*"):
print(caractere * n)

Parâmetro opcionais são úteis para evitar a passagem desnecessária


dos mesmos valores, mas preservando a opção de passar valores, se
necessário. Os parâmetros opcionais devem sempre ser os últimos!

Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014.


Nomeando Parâmetros
Quando especificamos o nome dos parâmetros, podemos passá-los
em qualquer ordem.
Função retângulo com parâmetros obrigatórios e opcionais:
def retângulo(largura, altura, caractere="*"):
linha = caractere * largura
for i in range(altura):
print(linha)

Chamando a função retângulo nomeando os argumentos:


>>> retângulo(3,4)
>>> retângulo(largura=3, altura=4)
>>> retângulo(altura=4, largura=3)
>>> retângulo(caractere="-", altura=4, largura=3)

Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014.


Funções como Parâmetro
Um poderoso recurso em Python é permitir a passagem de funções
como parâmetro, permitindo combinar vária funções para realizar uma
tarefa.
Funções como parâmetro:
def soma(a,b):
return a+b
def subtracao(a,b):
return a-b
def imprime(a,b,foper):
print(foper(a,b))
imprime(5,4,soma)
imprime(10,1,subtracao)

Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014.


Funções Lambda
Função lambda que recebe um valor e retorna o dobro dele:
a=lambda x: x*2
print(a(3))

Funções lambda que recebe mais de um parâmetro :


aumento=lambda a,b: (a*b/100)
aumento(100,5)

Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014.


Módulos
Módulo fat (fat.py):
def fatorial(n):
fat = 1
while n>1:
fat*=n
n-=1
return fat

Módulo main (main.py) que importa fat:


import fat
print(fat.fatorial(4))

Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014.


Módulos
Módulo fat (fat.py):
def fatorial(n):
fat = 1
while n>1:
fat*=n
n-=1
return fat

Módulo main (main.py) que importa fat:


import fat from fat import fatorial
print(fat.fatorial(4)) print(fatorial(4))

Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014.


Função Type
A função type:
>>> a=5 >>> d=0.5
>>> print(type(a)) >>> print(type(d))
<class ‘int’> <class ‘float’>
>>> b=“Olá” >>> f=print
>>> print(type(b)) >>> print(type(f))
<class ‘str’> <class ‘builtin_function_or_met’>
>>> c=False >>> g=[]
>>> print(type(c)) >>> print(type(g))
<class ‘bool’> <class ‘list’>

Fonte: [MEN14] Menezes. Introdução a Programação com Python, 2014.

Você também pode gostar