Aula 14 - Funções: não duplique seu código

857 views

Published on

Published in: Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
857
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
70
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Aula 14 - Funções: não duplique seu código

  1. 1. Introdução a Algoritmos eLinguagens de Programação Aula 14 | Funções: não duplique seu código Apresentação Luiz Augusto de M. Morais
  2. 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
  3. 3. FunçõesComo funcionauma função UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  4. 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. 5. Como funciona uma função Função Resultado Atributos UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  6. 6. FunçõesCriandosua própria função UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  7. 7. Criando sua própria função Parâmetros da Nome da função funçãoComando para def somar(n1, n2):definir função soma = n1 + n2 return soma Comando de retorno UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  8. 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. 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. 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
  11. 11. FunçõesParâmetrosou atributos? UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  12. 12. Parâmetros ou atributos? Parâmetros da função def somar(n1, n2): soma = n1 + n2 return soma somar(2, 4) Atributos da função UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  13. 13. Mensagem secretaEntendendoo novo problema UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  14. 14. Entendendo o novo problemaVocê é agora é responsável por enviar e receber informaçõescriptografadas para a companhia.Seu objetivo agora é criar umafunção que facilite descriptografaras mensagens recebidas de seuscolegas.Lembre-se: Agora você conhece achave. UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  15. 15. Mensagem secretaEncapsulandoo código UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  16. 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
  17. 17. Mensagem secretaPrimeira tentativa UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  18. 18. 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) UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  19. 19. Mensagem secretaTest Drive UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  20. 20. Mensagem secretaSegunda tentativa UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  21. 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. 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. 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
  24. 24. Mensagem secretaTest Drive UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  25. 25. Mensagem secretaRemovendocódigo duplicado UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  26. 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. 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
  28. 28. Mensagem secretaPerguntas Idiotas UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  29. 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. 30. O que aprendemos hoje? ● Funções ● Estrutura condicional if-elif-else ● Comandos: ● def ● return ● break UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  31. 31. ReferênciasDOWNEY, 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

×