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

Funções e Módulos em Python

Enviado por

Victor Menezes
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)
2 visualizações57 páginas

Funções e Módulos em Python

Enviado por

Victor Menezes
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

PARADIGMAS DE LINGUAGENS DE

PROGRAMAÇÃO EM PYTHON

FUNDAMENTOS DOS
SUBPROGRAMAS

Me. Max Castor Rodrigues Junior


madeinmax@[Link]
Compreendendo o problema
• Situação: Desenvolver um ERP...
– Contabilidade, RH, Suprimentos, Patrimônio....

– Dá pra fazer isso em um único bloco de Código?


Objetivos
• Compreender os módulos do Python
• Compreender as funções no Python
• Reforçar a ideia de escopos em Python
• Capacitar para a criação de funções em
Python
MÓDULOS
Módulos em Python
• Módulos são conjuntos de funções prontas
– “Pacotes”

• Já os usamos: import
– math [Link]
[Link]
– string ...
• Podemos criar os nossos...!
– Mas precisamos aprender a criar funções antes!
SUBPROGRAMAS:
FUNÇÕES SIMPLES
Funções Simples
• Situação: imprimir 5x o seguinte texto:
Sistema de Impressão v.1.0, (c) Max Castor
• Um jeito de fazer seria usar vários “print”:
[Link]

# Imprime 5x uma mensagem


print (“Sistema de Impressão v.1.0, (c) Max Castor”)
print (“Sistema de Impressão v.1.0, (c) Max Castor”)
print (“Sistema de Impressão v.1.0, (c) Max Castor”)
print (“Sistema de Impressão v.1.0, (c) Max Castor”)
print (“Sistema de Impressão v.1.0, (c) Max Castor”)
Funções Simples
• Será que não tem um jeito mais simples?
– Há vários!
• Um deles: definir uma função
[Link]

# Imprime 5x uma mensagem


def mostra_mensagem():
print (“Sistema de Impressão v.1.0, (c) Max Castor”)

Vamos
experimentar?
Funções Simples
• Será que não tem um jeito mais simples?
– Há vários!
• Um deles: definir uma função
[Link]

# Imprime 5x uma mensagem


def mostra_mensagem():
print (“Sistema de Impressão v.1.0, (c) Max Castor”)
mostra_mensagem() “chamar” a função:
Solicitar ao computador que a execute

Observe o uso dos parênteses!


Funções Simples
• Será que não tem um jeito mais simples?
– Há vários!
• Um deles: definir uma função
[Link]

# Imprime 5x uma mensagem


def mostra_mensagem():
print (“Sistema de Impressão v.1.0, (c) Max Castor”)
mostra_mensagem()
mostra_mensagem()
mostra_mensagem()
mostra_mensagem()
mostra_mensagem() # Repita quantas vezes quiser!
Funções Simples
• Será que não tem um jeito mais simples?
– Há vários!
• Um deles: definir uma função
[Link]

# Imprime 5x uma mensagem


def mostra_mensagem():
print (“Sistema de Impressão v.1.0, (c) Max Castor”)
mostra_mensagem()
mostra_mensagem() Declaração da Função:
mostra_mensagem()
define o nome e o
mostra_mensagem()
mostra_mensagem() # Repitacqóudaingtoasdvaezfeusnqçuãisoer!
Funções Simples
• Será que não tem um jeito mais simples?
– Há vários!
• Um deles: definir uma função
[Link]

# Imprime 5x uma mensagem


def mostra_mensagem():
print (“Sistema de Impressão v.1.0, (c) Max Castor”)
mostra_mensagem()
mostra_mensagem() As funções devem ser
mostra_mensagem() declaradas antes de
mostra_mensagem()
serem chamadas!
mostra_mensagem() # Repita quantas vezes quiser!
Outro Exemplo de Função
• Crie a função para a assinatura do e-mail:
Atenciosamente,
Prof. Max Castor
madeinmax@[Link]

[Link]

# Imprime a assinatura do e-mail


def assinar():
print (“Atenciosamente,”)
print (“Prof. Max Castor ”)
print(“madeinmax@[Link]”)

assinar()
Experimentemos!
NOSSO PRIMEIRO
MÓDULO
Criando um Módulo
• Crie o arquivo abaixo
[Link] Nome do Módulo

# Imprime a assinatura do e-mail


def assinar(): Nome da Função
print (“Atenciosamente,”)
print (“Prof. Max Castor”)
print(“madeinmax@[Link]“)
Usando um Módulo
• Crie o programa abaixo e execute
[Link]

import mensagem
# Usa o módulo “[Link]”
print (“Programa de demonstração do uso de um módulo”)

[Link]()

Tenho que escrever


tudo isso?
Apelido de um Módulo
• Crie o programa abaixo e execute
[Link]

import mensagem as msg


# Usa o módulo “[Link]”
print (“Programa de demonstração do uso de um módulo”)

[Link]()

Apelido do Módulo
Módulos Mais Úteis
• Como tornar nossos módulos mais úteis?
– Criando funções mais úteis!

• Como criar funções mais úteis?


SUBPROGRAMAS:
FUNÇÕES COM
PARÂMETROS
Funções com Parâmetro
• Até agora, funções funcionam sempre igual!
– Por exemplo: assinatura de um único professor
Atenciosamente,
Prof. Max Castor assinar()
• Como fazer função de assinatura genérica?
Atenciosamente,
Prof. [nome]
assinar(“Max Castor”)
Funções com Parâmetro
• Crie a função para a assinatura do e-mail:
Atenciosamente,
Prof. [nome]

[Link]

# Imprime a assinatura do e-mail genérica


def assinar(nome):
print (“Atenciosamente,”)
print (“Prof.”, nome)

assinar()
Funcionou?
Funções com Parâmetro
• Crie a função para a assinatura do e-mail:
Atenciosamente,
Prof. [nome]

[Link]

# Imprime a assinatura do e-mail genérica


def assinar(nome):
print (“Atenciosamente,”)
print (“Prof.”, nome)

assinar(“Max Castor”)
E agora?
Funções com Vários Parâmetros
• Crie a função para a assinatura completa:
Atenciosamente,
Prof. [nome]
[e-mail]
[Link]

# Imprime a assinatura do e-mail genérica completa


def assinar(nome, email):
print (“Atenciosamente,”)
print (“Prof.”, nome)
print (email)
Funcionou?

assinar(“Max”, “madeinmax@[Link]”)
Funções com Parâmetros
• Função para calcular IMC = P/A2
[Link]

# Calcula e imprime IMC


def imc(p, a):
imc = p/a**2
print(“O IMC é:”, imc)

# Testa função
imc(50, 1.60)
imc(75, 1.70)
imc(85, 1.75)
Funções com Parâmetros
• Calcular o volume de um cone
[Link]

# Imprime volume do cone


def volume_cone(r, h):
v = (1/3) * 3.1415 * r**2 * h
print(“O colume do cone é: %.2f” %(v))

# Testa função
volume_cone(10, 2)
Ou seja: criar uma função é
volume_cone(5, 3) ensinar uma tarefa nova ao
volume_cone(2.5, 10.2) computador... E dar um
nome para ela!
SUBPROGRAMAS:
FUNÇÕES COM
RETORNO
Funções com Retorno
• Vimos: fazer conta e mostrar o resultado
– Posso usar o resultado depois?
– Vamos testar?
[Link]
# Calcula área do círculo
def area_circulo(r): Funcionou?
area = 3.141592 * r**2

# Testa função As variáveis que existem


area_circulo(2) na função são diferentes
print(“A área do círculo é:”, area) das que existem no
programa principal!
Funções com Retorno
• Vimos: fazer conta e mostrar o resultado
– Posso usar o resultado depois?
– Como resolver?
[Link]
# Calcula área do círculo
def area_circulo(r): Funcionou?
area = 3.141592 * r**2
return area
Return serve para
# Testa função “devolver” um valor de
a = area_circulo(2) uma função para o
print(“A área do círculo é:”, a) programa principal
Funções x Procedimentos
• Subprogramas retornam resultados... ou não.
– Alguns autores dão nomes diferentes

• Procedimentos (procedures)
– Quando não retorna um valor print(“...”)
• Funções (functions)
– Quando retorna um valor int(“...”)
input(“...”)
[Link](n)
RECORDANDO:
ESCOPO DE VARIÁVEIS
Escopo de Variáveis
• Variáveis diferentes podem ter mesmo nome
– Seu professor chama “Max”
– Com certeza você conhece mais algum “Max”
• Como diferenciar?
– Contexto (ou Escopo)!
• Na faculdade, “Max” é o professor
• Em sua casa, “Max” pode ser seu irmão
• Em Python, qual o “escopo”?
– Escopo principal (ou global, fora das funções)
– Escopo da função (ou local)
Exemplo de Escopo de Variáveis
• Vamos ver escopos na prática
[Link]
# Função
def aniversário(idade):
idade = idade + 1

# Programa principal
idade = 10
print(“A idade antes do aniversário:”, idade)
aniversário(idade)
print(“A idade depois do aniversário:”, idade)

Funcionou?
Exemplo de Escopo de Variáveis
• Vamos ver escopos na prática
[Link]
E agora?
# Função
def aniversário(idade):
idade = idade + 1
return transfere de um
return idade
escopo para o outro!
# Programa principal
idade = 10
print(“A idade antes do aniversário:”, idade)
idade = aniversário(idade)
print(“A idade depois do aniversário:”, idade)
EXEMPLO DE EXECUÇÃO:
SUBPROGRAMAS COM
RETORNO DE VALORES
Subprogramas com Retorno
• Vejamos como funciona o programa abaixo:
[Link]
# Função que lê nome do usuário
def leitura_de_nome():
pnome = input(“Por favor, digite seu primeiro nome: ”)
snome = input(“Por favor, digite seu sobrenome: ”)
nome = pnome + “ ” + snome
return nome
# Programa de Boas Vindas
print(“Programa Exemplo com Funções”)
print(“===========================”)
usuario = leitura_de_nome ()
print(“Bom dia,”, usuario, “!”)
Subprogramas com Retorno
• Vejamos como funciona o programa abaixo:
[Link]
# Função que lê nome do usuário
def leitura_de_nome():
pnome = input(“Por favor, digite seu primeiro nome: ”)
snome = input(“Por favor, digite seu sobrenome: ”)
nome = pnome + “ ” + snome
return nome
# Programa de Boas Vindas
print(“Programa Exemplo com Funções”)
print(“===========================”)
usuario = leitura_de_nome ()
print(“Bom dia,”, usuario, “!”)
Subprogramas com Retorno
• Vejamos como funciona o programa abaixo:
[Link]
# Função que lê nome do usuário
def leitura_de_nome():
pnome = input(“Por favor, digite seu primeiro nome: ”)
snome = input(“Por favor, digite seu sobrenome: ”)
nome = pnome + “ ” + snome
return nome
# Programa de Boas Vindas
print(“Programa Exemplo com Funções”)
print(“===========================”)
usuario = leitura_de_nome ()
print(“Bom dia,”, usuario, “!”)
Subprogramas com Retorno
• Vejamos como funciona o programa abaixo:
[Link]
# Função que lê nome do usuário
def leitura_de_nome():
pnome = input(“Por favor, digite seu primeiro nome: ”)
snome = input(“Por favor, digite seu sobrenome: ”)
nome = pnome + “ ” + snome
return nome
# Programa de Boas Vindas
print(“Programa Exemplo com Funções”)
print(“===========================”)
usuario = leitura_de_nome ()
print(“Bom dia,”, usuario, “!”)
Subprogramas com Retorno
• Vejamos como funciona o programa abaixo:
[Link]
# Função que lê nome do usuário
def leitura_de_nome():
pnome = input(“Por favor, digite seu primeiro nome: ”)
snome = input(“Por favor, digite seu sobrenome: ”)
nome = pnome + “ ” + snome
return nome
# Programa de Boas Vindas
print(“Programa Exemplo com Funções”)
print(“===========================”)
usuario = leitura_de_nome ()
print(“Bom dia,”, usuario, “!”)
Subprogramas com Retorno
• Vejamos como funciona o programa abaixo:
[Link]
# Função que lê nome do usuário
def leitura_de_nome():
pnome = input(“Por favor, digite seu primeiro nome: ”)
snome = input(“Por favor, digite seu sobrenome: ”)
nome = pnome + “ ” + snome
return nome
# Programa de Boas Vindas
print(“Programa Exemplo com Funções”)
print(“===========================”)
usuario = leitura_de_nome ()
print(“Bom dia,”, usuario, “!”)
Subprogramas com Retorno
• Vejamos como funciona o programa abaixo:
[Link]
# Função que lê nome do usuário
def leitura_de_nome():
pnome = input(“Por favor, digite seu primeiro nome: ”)
snome = input(“Por favor, digite seu sobrenome: ”)
nome = pnome + “ ” + snome
return nome
# Programa de Boas Vindas
print(“Programa Exemplo com Funções”)
print(“===========================”)
usuario = leitura_de_nome ()
print(“Bom dia,”, usuario, “!”)
Subprogramas com Retorno
• Vejamos como funciona o programa abaixo:
[Link]
# Função que lê nome do usuário
def leitura_de_nome():
pnome = input(“Por favor, digite seu primeiro nome: ”)
snome = input(“Por favor, digite seu sobrenome: ”)
nome = pnome + “ ” + snome
return nome
# Programa de Boas Vindas
print(“Programa Exemplo com Funções”)
print(“===========================”)
usuario = leitura_de_nome ()
print(“Bom dia,”, usuario, “!”)
RECURSÃO
Recursão
• Forma de implementação em que...
– Executa a si própria em determinadas situações

def minhaFuncao()
print(“Ah!)
minhaFuncao()

• Algumas coisas são mais simples assim


– Mas usualmente gastam mais memória!
• Exemplo?
Cálculo de Fatorial – Sem recursão
[Link]
# Cálculo de Fatorial sem Recursão
print(“Programa Fatorial sem Recursão”)
print(“===========================”)
n = int( input(“Digite um inteiro não negativo: ”))
fat = 1
for i in range (1, n+1):
fat = fat * i
print(“O fatorial de”, n, “é”, fat)
Cálculo de Fatorial – Com recursão
[Link]
# Cálculo de Fatorial com Recursão
def fatorial(n):
if n == 1:
return n
else:
return n * fatorial(n-1)

print(“Programa Fatorial com Recursão”)


print(“===========================”)
n = int( input(“Digite um inteiro não negativo: ”)
fat = fatorial(n)
print(“O fatorial de”, n, “é”, fat)
EXEMPLO ADICIONAL:
FUNÇÕES NA PRÁTICA
Criando Funções
• Passo 1: criar um programa que calcule e
imprima o perímetro de um círculo de raio 2
– P = 2∙π∙R
– π = 3,141592
Criando Funções
• Passo 2: transformar o cálculo em uma
função chamada perimetro
Criando Funções
• Passo 3: coloque a função perimetro dentro
de um módulo chamado figuras e crie um
programa chamado calculo que use a
função perímetro.
Criando Funções
• Passo 4: modificar a função perimetro para
que ela para que ela retorne o resultado, ao
invés de imprimi-lo
Criando Funções
• Passo 5: modificar a função perímetro para
que ela receba o raio do círculo como
parâmetro
– No programa calculo, chame a função com o
valor 2 para o raio
Criando Funções
• Passo 6: modificar a função perimetro para
que ela receba o raio do círculo como
parâmetro
ATIVIDADE
Atividade 1
• Faça uma função que calcule a área de um tapézio,
dados:
– Base maior
– Base menor
– Altura
• Lembrando que a área pode ser calculada por:

(𝑏𝑚𝑎𝑖𝑜𝑟 + 𝑏𝑚𝑒𝑛𝑜𝑟). 𝑎𝑙𝑡𝑢𝑟𝑎


𝑎𝑟𝑒𝑎 =
2
• O programa principal deve pedir os valores e usar
a função para calcular a área
Atividade 1
• Solução
[Link]
# Função que Calcula a Área do Trapézio
def area_trapezio(base_maior, base_menor, altura):
area = (base_maior+base_menor)*altura/2
return area

# Programa Principal
print ("Calcula a área de um trapézio")
at = area_trapezio(5, 2, 7)
print ("A área é:", at, "m2.")
PERGUNTAS?

Você também pode gostar