Aula 14 - Funções: não duplique seu código
-
Upload
luiz-augusto-macedo-morais -
Category
Education
-
view
656 -
download
3
Transcript of Aula 14 - Funções: não duplique seu código
![Page 1: Aula 14 - Funções: não duplique seu código](https://reader033.fdocumentos.tips/reader033/viewer/2022052623/559ebc691a28ab902a8b46ca/html5/thumbnails/1.jpg)
Introdução a Algoritmos e
Linguagens de Programação
ApresentaçãoLuiz Augusto de M. Morais
Aula 14 | Funções: não duplique seu código
![Page 2: Aula 14 - Funções: não duplique seu código](https://reader033.fdocumentos.tips/reader033/viewer/2022052623/559ebc691a28ab902a8b46ca/html5/thumbnails/2.jpg)
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
Roteiro
●Como funciona uma função●Criando sua própria função●Usando o interpretador●Parâmetros ou atributos?
Funções
●Entendendo o novo problema●Encapsulando o código●Primeira tentativa●Segunda tentativa●Removendo código duplicado
Mensagem secreta
![Page 3: Aula 14 - Funções: não duplique seu código](https://reader033.fdocumentos.tips/reader033/viewer/2022052623/559ebc691a28ab902a8b46ca/html5/thumbnails/3.jpg)
Funções
Como funcionauma função
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
![Page 4: Aula 14 - Funções: não duplique seu código](https://reader033.fdocumentos.tips/reader033/viewer/2022052623/559ebc691a28ab902a8b46ca/html5/thumbnails/4.jpg)
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
Como funciona uma função
saudacao = 'oi'
print(saudacao)
numero = int('1234')
caractere = chr(97)
Imprime algo na tela
Converte algo para inteiro
Retorna o caractere correspondente
![Page 5: Aula 14 - Funções: não duplique seu código](https://reader033.fdocumentos.tips/reader033/viewer/2022052623/559ebc691a28ab902a8b46ca/html5/thumbnails/5.jpg)
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
Como funciona uma função
Atributos
Função
Resultado
![Page 6: Aula 14 - Funções: não duplique seu código](https://reader033.fdocumentos.tips/reader033/viewer/2022052623/559ebc691a28ab902a8b46ca/html5/thumbnails/6.jpg)
Funções
Criandosua própria função
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
![Page 7: Aula 14 - Funções: não duplique seu código](https://reader033.fdocumentos.tips/reader033/viewer/2022052623/559ebc691a28ab902a8b46ca/html5/thumbnails/7.jpg)
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
Criando sua própria função
def somar(n1, n2):
soma = n1 + n2
return soma
Comando para definir função
Nome da função
Comando de retorno
Parâmetros da função
![Page 8: Aula 14 - Funções: não duplique seu código](https://reader033.fdocumentos.tips/reader033/viewer/2022052623/559ebc691a28ab902a8b46ca/html5/thumbnails/8.jpg)
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
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
![Page 9: Aula 14 - Funções: não duplique seu código](https://reader033.fdocumentos.tips/reader033/viewer/2022052623/559ebc691a28ab902a8b46ca/html5/thumbnails/9.jpg)
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
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)>>> c10
![Page 10: Aula 14 - Funções: não duplique seu código](https://reader033.fdocumentos.tips/reader033/viewer/2022052623/559ebc691a28ab902a8b46ca/html5/thumbnails/10.jpg)
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
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
![Page 11: Aula 14 - Funções: não duplique seu código](https://reader033.fdocumentos.tips/reader033/viewer/2022052623/559ebc691a28ab902a8b46ca/html5/thumbnails/11.jpg)
Funções
Parâmetrosou atributos?
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
![Page 12: Aula 14 - Funções: não duplique seu código](https://reader033.fdocumentos.tips/reader033/viewer/2022052623/559ebc691a28ab902a8b46ca/html5/thumbnails/12.jpg)
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
Parâmetros ou atributos?
def somar(n1, n2):
soma = n1 + n2
return soma
somar(2, 4)
Parâmetros da função
Atributos da função
![Page 13: Aula 14 - Funções: não duplique seu código](https://reader033.fdocumentos.tips/reader033/viewer/2022052623/559ebc691a28ab902a8b46ca/html5/thumbnails/13.jpg)
Mensagem secreta
Entendendoo novo problema
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
![Page 14: Aula 14 - Funções: não duplique seu código](https://reader033.fdocumentos.tips/reader033/viewer/2022052623/559ebc691a28ab902a8b46ca/html5/thumbnails/14.jpg)
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
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.
![Page 15: Aula 14 - Funções: não duplique seu código](https://reader033.fdocumentos.tips/reader033/viewer/2022052623/559ebc691a28ab902a8b46ca/html5/thumbnails/15.jpg)
Mensagem secreta
Encapsulandoo código
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
![Page 16: Aula 14 - Funções: não duplique seu código](https://reader033.fdocumentos.tips/reader033/viewer/2022052623/559ebc691a28ab902a8b46ca/html5/thumbnails/16.jpg)
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
Encapsulando o código
Agora vamos reutilizar o código desenvolvido anteriormente para criar uma função para descriptografar mensagens.
![Page 17: Aula 14 - Funções: não duplique seu código](https://reader033.fdocumentos.tips/reader033/viewer/2022052623/559ebc691a28ab902a8b46ca/html5/thumbnails/17.jpg)
Mensagem secreta
Primeira tentativa
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
![Page 18: Aula 14 - Funções: não duplique seu código](https://reader033.fdocumentos.tips/reader033/viewer/2022052623/559ebc691a28ab902a8b46ca/html5/thumbnails/18.jpg)
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
Primeira tentativa
def descript(mensagem, chave):
nova_mensagem = ''
for letra in mensagem:
nova_mensagem += chr(ord(letra) - chave)
return nova_mensagem
chave = int(input('Informe o número da chave: '))
arquivo = open('mensagem.txt')
mensagem = arquivo.read()
arquivo.close()
mensagem_descript = descript(mensagem, chave)
print('Mensagem: %s' % mensagem_descript)
![Page 19: Aula 14 - Funções: não duplique seu código](https://reader033.fdocumentos.tips/reader033/viewer/2022052623/559ebc691a28ab902a8b46ca/html5/thumbnails/19.jpg)
Mensagem secreta
Test Drive
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
![Page 20: Aula 14 - Funções: não duplique seu código](https://reader033.fdocumentos.tips/reader033/viewer/2022052623/559ebc691a28ab902a8b46ca/html5/thumbnails/20.jpg)
Mensagem secreta
Segunda tentativa
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
![Page 21: Aula 14 - Funções: não duplique seu código](https://reader033.fdocumentos.tips/reader033/viewer/2022052623/559ebc691a28ab902a8b46ca/html5/thumbnails/21.jpg)
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
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!
![Page 22: Aula 14 - Funções: não duplique seu código](https://reader033.fdocumentos.tips/reader033/viewer/2022052623/559ebc691a28ab902a8b46ca/html5/thumbnails/22.jpg)
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
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
![Page 23: Aula 14 - Funções: não duplique seu código](https://reader033.fdocumentos.tips/reader033/viewer/2022052623/559ebc691a28ab902a8b46ca/html5/thumbnails/23.jpg)
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
Segunda tentativa 2/2while 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!')
![Page 24: Aula 14 - Funções: não duplique seu código](https://reader033.fdocumentos.tips/reader033/viewer/2022052623/559ebc691a28ab902a8b46ca/html5/thumbnails/24.jpg)
Mensagem secreta
Test Drive
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
![Page 25: Aula 14 - Funções: não duplique seu código](https://reader033.fdocumentos.tips/reader033/viewer/2022052623/559ebc691a28ab902a8b46ca/html5/thumbnails/25.jpg)
Mensagem secreta
Removendocódigo duplicado
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
![Page 26: Aula 14 - Funções: não duplique seu código](https://reader033.fdocumentos.tips/reader033/viewer/2022052623/559ebc691a28ab902a8b46ca/html5/thumbnails/26.jpg)
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
Removendo código duplicado
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
O que repete
![Page 27: Aula 14 - Funções: não duplique seu código](https://reader033.fdocumentos.tips/reader033/viewer/2022052623/559ebc691a28ab902a8b46ca/html5/thumbnails/27.jpg)
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
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
![Page 28: Aula 14 - Funções: não duplique seu código](https://reader033.fdocumentos.tips/reader033/viewer/2022052623/559ebc691a28ab902a8b46ca/html5/thumbnails/28.jpg)
Mensagem secreta
Perguntas Idiotas
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
![Page 29: Aula 14 - Funções: não duplique seu código](https://reader033.fdocumentos.tips/reader033/viewer/2022052623/559ebc691a28ab902a8b46ca/html5/thumbnails/29.jpg)
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
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?
![Page 30: Aula 14 - Funções: não duplique seu código](https://reader033.fdocumentos.tips/reader033/viewer/2022052623/559ebc691a28ab902a8b46ca/html5/thumbnails/30.jpg)
●Funções●Estrutura condicional if-elif-else●Comandos:
● def● return● break
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
O que aprendemos hoje?
![Page 31: Aula 14 - Funções: não duplique seu código](https://reader033.fdocumentos.tips/reader033/viewer/2022052623/559ebc691a28ab902a8b46ca/html5/thumbnails/31.jpg)
Referências
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETO HERMES
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.