O documento apresenta uma aula sobre funções em programação. Ele discute como funcionam funções, como criar suas próprias funções, como usar o interpretador de Python para executar funções e a diferença entre parâmetros e atributos de funções. Ele também apresenta um exemplo prático de como usar funções para criptografar e descriptografar mensagens, removendo código duplicado.
1. Introdução a Algoritmos e
Linguagens de Programação
Aula 14 | Funções: não duplique seu código
Apresentação
Luiz Augusto de M. Morais
2. Roteiro
Funções
●
Como funciona uma função
●
Criando sua própria função
●
Usando o interpretador
●
Parâmetros ou atributos?
Mensagem secreta
●
Entendendo o novo problema
●
Encapsulando o código
●
Primeira tentativa
●
Segunda tentativa
●
Removendo código duplicado
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
4. Como funciona uma função
Imprime
algo na tela
saudacao = 'oi'
print(saudacao)
numero = int('1234') Converte algo
para inteiro
caractere = chr(97)
Retorna o caractere
correspondente
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
5. Como funciona uma função
Função
Resultado
Atributos
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
7. Criando sua própria função
Parâmetros da
Nome da função função
Comando para
def somar(n1, n2):
definir função
soma = n1 + n2
return soma
Comando de retorno
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
8. Usando o Interpretador 1/3
>>> def somar(n1, n2):
... soma = n1 + n2
... return soma
...
>>> somar(2, 3)
5
>>> subtrair(3, 5)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'subtrair' is not defined
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
9. Usando o Interpretador 2/3
>>> def subtrair(x, y):
... return x – y
...
>>> subtrair(3, 5)
-2
>>> subtrair(somar(2, 2), 3)
1
>>> a = 3
>>> b = 7
>>> c = somar(a, b)
>>> c
10
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
10. Usando o Interpretador 3/3
>>> def fatorial(numero):
... fat = 1
... while numero > 1:
... fat *= numero
... numero -= 1
... return fat
...
>>> fatorial(2)
2
>>> fatorial(4)
24
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
14. Entendendo o novo problema
Você é agora é responsável por enviar e receber informações
criptografadas para a companhia.
Seu objetivo agora é criar uma
função que facilite descriptografar
as mensagens recebidas de seus
colegas.
Lembre-se: Agora você conhece a
chave.
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
16. Encapsulando o código
Agora vamos reutilizar o código desenvolvido
anteriormente para criar uma função para
descriptografar mensagens.
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
21. Segunda tentativa
Agora que já temos uma função que descriptografa
mensagens, que tal criar uma que faça o processo
contrário?
Já ao trabalho!
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
22. Segunda tentativa 1/2
def cript(mensagem, chave):
nova_mensagem = ''
for letra in mensagem:
nova_mensagem += chr(ord(letra) + chave)
return nova_mensagem
def descript(mensagem, chave):
nova_mensagem = ''
for letra in mensagem:
nova_mensagem += chr(ord(letra) - chave)
return nova_mensagem
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
23. Segunda tentativa 2/2
while True:
opcao = input('c = criptografar, d = descriptografar; s = sair: ')
nome_arquivo = 'mensagem2.txt'
if opcao == 'c':
arquivo = open(nome_arquivo, 'w')
mensagem = input('Informe a mensagem a ser criptografada: ')
chave = int(input('Informe a chave: '))
mensagem_cript = cript(mensagem, chave)
arquivo.write(mensagem_cript)
arquivo.close()
print('Mensagem criptografada com sucesso!')
elif opcao == 'd':
arquivo = open(nome_arquivo)
mensagem = arquivo.read()
arquivo.close()
chave = int(input('Informe a chave: '))
mensagem_descript = descript(mensagem, chave)
print('Mensagem: %s' % mensagem_descript)
elif opcao == 's':
break
else:
print('Comando inválido!')
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
26. Removendo código duplicado
def cript(mensagem, chave):
nova_mensagem = ''
for letra in mensagem:
nova_mensagem += chr(ord(letra) + chave)
return nova_mensagem
O que
def descript(mensagem, chave): repete
nova_mensagem = ''
for letra in mensagem:
nova_mensagem += chr(ord(letra) - chave)
return nova_mensagem
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
27. Removendo código duplicado
def cifra(mensagem, chave, modo):
nova_mensagem = ''
for letra in mensagem:
if modo == 'c':
nova_mensagem += chr(ord(letra) + chave)
else:
nova_mensagem += chr(ord(letra) - chave)
return nova_mensagem
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
29. Perguntas Idiotas
●
Ainda não entendi a diferença entre parâmetros e atributos
●
Por que eu devo criar funções?
●
Pra que serve o argumento 'w' na função open?
●
O que significa elif, mesmo?
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
30. O que aprendemos hoje?
●
Funções
●
Estrutura condicional if-elif-else
●
Comandos:
●
def
●
return
●
break
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
31. Referências
DOWNEY, Allen. Think Python: How to Think Like a Computer Scientist.
Needham: Green Tea Press, 2008.
SWEIGART, Al. Invent Your Own Computer Games with Python.
2. ed. [S. l. : s. n.]. 2010.
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETO HERMES