SlideShare uma empresa Scribd logo
1 de 31
Baixar para ler offline
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
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
Funções
Como funciona
uma função




          UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
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
Como funciona uma função


                                      Função




                                                Resultado

  Atributos




                    UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
Funções
Criando
sua própria função




          UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
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
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
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
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
Funções
Parâmetros
ou atributos?




          UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
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
Mensagem secreta
Entendendo
o novo problema




          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.




                            UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
Mensagem secreta
Encapsulando
o código




        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.




                        UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
Mensagem secreta
Primeira tentativa




           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)




                              UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
Mensagem secreta
Test Drive




      UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
Mensagem secreta
Segunda tentativa




           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!




                          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




                              UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
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
Mensagem secreta
Test Drive




      UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
Mensagem secreta
Removendo
código duplicado




          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
                                                     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
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
Mensagem secreta
Perguntas Idiotas




           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?




                            UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
O que aprendemos hoje?


    ●
      Funções
    ●
      Estrutura condicional if-elif-else
    ●
      Comandos:
       ●
         def
       ●
         return
       ●
         break




                              UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
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

Mais conteúdo relacionado

Mais procurados

Algoritmo e lógica de programação - aula 2
Algoritmo e lógica de programação - aula 2Algoritmo e lógica de programação - aula 2
Algoritmo e lógica de programação - aula 2
engenhariadecomputacao
 
Aula 10 - Comando de Decisão Múltipla e Comandos de Repetição
Aula 10 - Comando de Decisão Múltipla e Comandos de RepetiçãoAula 10 - Comando de Decisão Múltipla e Comandos de Repetição
Aula 10 - Comando de Decisão Múltipla e Comandos de Repetição
André Constantino da Silva
 
Videoulas de algoritmos e lógica de programação
Videoulas de algoritmos e lógica de programaçãoVideoulas de algoritmos e lógica de programação
Videoulas de algoritmos e lógica de programação
aldoirjava
 
Algoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigoAlgoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigo
Mauro Pereira
 
Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2
Robson Ferreira
 
Algoritmo e lógica de programação - Aula 1
Algoritmo e lógica de programação - Aula 1Algoritmo e lógica de programação - Aula 1
Algoritmo e lógica de programação - Aula 1
engenhariadecomputacao
 
Apresentação 20130805 algoritmos
Apresentação 20130805 algoritmos Apresentação 20130805 algoritmos
Apresentação 20130805 algoritmos
João moreira
 

Mais procurados (20)

Algoritmo e lógica de programação - aula 2
Algoritmo e lógica de programação - aula 2Algoritmo e lógica de programação - aula 2
Algoritmo e lógica de programação - aula 2
 
Aula 10 - Comando de Decisão Múltipla e Comandos de Repetição
Aula 10 - Comando de Decisão Múltipla e Comandos de RepetiçãoAula 10 - Comando de Decisão Múltipla e Comandos de Repetição
Aula 10 - Comando de Decisão Múltipla e Comandos de Repetição
 
Material de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de ProgramaçãoMaterial de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de Programação
 
Aula 3 algoritmos
Aula 3   algoritmosAula 3   algoritmos
Aula 3 algoritmos
 
Lista exercícios
Lista exercíciosLista exercícios
Lista exercícios
 
Algoritmos - capítulo 6
Algoritmos - capítulo 6Algoritmos - capítulo 6
Algoritmos - capítulo 6
 
Videoulas de algoritmos e lógica de programação
Videoulas de algoritmos e lógica de programaçãoVideoulas de algoritmos e lógica de programação
Videoulas de algoritmos e lógica de programação
 
Algoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigoAlgoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigo
 
Lógica de Programação e Algoritmos
Lógica de Programação e AlgoritmosLógica de Programação e Algoritmos
Lógica de Programação e Algoritmos
 
Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2
 
Aula 4 - Introducão a algoritmos
Aula 4 - Introducão a algoritmosAula 4 - Introducão a algoritmos
Aula 4 - Introducão a algoritmos
 
Algoritmos - Pseudocódigo
Algoritmos - PseudocódigoAlgoritmos - Pseudocódigo
Algoritmos - Pseudocódigo
 
Pseudocódigo ou Portugol (Lógica de Programação)
Pseudocódigo ou Portugol (Lógica de Programação)Pseudocódigo ou Portugol (Lógica de Programação)
Pseudocódigo ou Portugol (Lógica de Programação)
 
Descritiva Narrativa (Lógica de Programação)
Descritiva Narrativa (Lógica de Programação)Descritiva Narrativa (Lógica de Programação)
Descritiva Narrativa (Lógica de Programação)
 
Apostila Visualg
Apostila VisualgApostila Visualg
Apostila Visualg
 
Algoritmo e lógica de programação - Aula 1
Algoritmo e lógica de programação - Aula 1Algoritmo e lógica de programação - Aula 1
Algoritmo e lógica de programação - Aula 1
 
Apostila de Introdução aos Algoritmos - usando o Visualg
Apostila de Introdução aos Algoritmos - usando o VisualgApostila de Introdução aos Algoritmos - usando o Visualg
Apostila de Introdução aos Algoritmos - usando o Visualg
 
Apresentação 20130805 algoritmos
Apresentação 20130805 algoritmos Apresentação 20130805 algoritmos
Apresentação 20130805 algoritmos
 
Curso de Delphi - Lógica de Programação 2
Curso de Delphi - Lógica de Programação 2Curso de Delphi - Lógica de Programação 2
Curso de Delphi - Lógica de Programação 2
 
Algoritimo - Raul
Algoritimo - RaulAlgoritimo - Raul
Algoritimo - Raul
 

Destaque

Aula2 historico-computacao-e-oac-110926185118-phpapp02
Aula2 historico-computacao-e-oac-110926185118-phpapp02Aula2 historico-computacao-e-oac-110926185118-phpapp02
Aula2 historico-computacao-e-oac-110926185118-phpapp02
Polyanna Conrado
 
Aula4 introducao-a-algoritmos-110926191723-phpapp02
Aula4 introducao-a-algoritmos-110926191723-phpapp02Aula4 introducao-a-algoritmos-110926191723-phpapp02
Aula4 introducao-a-algoritmos-110926191723-phpapp02
Polyanna Conrado
 

Destaque (12)

Digital Fabrication Studio: 3D Printing
Digital Fabrication Studio: 3D PrintingDigital Fabrication Studio: 3D Printing
Digital Fabrication Studio: 3D Printing
 
Aula 5 - Tipos de dados
Aula 5 - Tipos de dadosAula 5 - Tipos de dados
Aula 5 - Tipos de dados
 
Aula 15 - Organizando os dados com listas
Aula 15 - Organizando os dados com listasAula 15 - Organizando os dados com listas
Aula 15 - Organizando os dados com listas
 
Aula 1 - Apresentação
Aula 1 - ApresentaçãoAula 1 - Apresentação
Aula 1 - Apresentação
 
SBIE 2014 - Student's satisfaction with Mastery Learning in an Introductory ...
SBIE 2014 -  Student's satisfaction with Mastery Learning in an Introductory ...SBIE 2014 -  Student's satisfaction with Mastery Learning in an Introductory ...
SBIE 2014 - Student's satisfaction with Mastery Learning in an Introductory ...
 
Aula 10 - Estruturas de repeticao
Aula 10 - Estruturas de repeticaoAula 10 - Estruturas de repeticao
Aula 10 - Estruturas de repeticao
 
Aula 6 - Constantes e variáveis
Aula 6 - Constantes e variáveisAula 6 - Constantes e variáveis
Aula 6 - Constantes e variáveis
 
Aula 2 - Histórico da Computação e OAC
Aula 2 - Histórico da Computação e OACAula 2 - Histórico da Computação e OAC
Aula 2 - Histórico da Computação e OAC
 
Aula2 historico-computacao-e-oac-110926185118-phpapp02
Aula2 historico-computacao-e-oac-110926185118-phpapp02Aula2 historico-computacao-e-oac-110926185118-phpapp02
Aula2 historico-computacao-e-oac-110926185118-phpapp02
 
Aula 7 - Expressões Aritméticas e Lógicas
Aula 7 - Expressões Aritméticas e LógicasAula 7 - Expressões Aritméticas e Lógicas
Aula 7 - Expressões Aritméticas e Lógicas
 
Aula 9 - Estruturas Condicionais
Aula 9 - Estruturas CondicionaisAula 9 - Estruturas Condicionais
Aula 9 - Estruturas Condicionais
 
Aula4 introducao-a-algoritmos-110926191723-phpapp02
Aula4 introducao-a-algoritmos-110926191723-phpapp02Aula4 introducao-a-algoritmos-110926191723-phpapp02
Aula4 introducao-a-algoritmos-110926191723-phpapp02
 

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

O que é que o Java não tem?
O que é que o Java não tem?O que é que o Java não tem?
O que é que o Java não tem?
Denis Costa
 
Curso de introdução ao ruby
Curso de introdução ao rubyCurso de introdução ao ruby
Curso de introdução ao ruby
Francis Wagner
 
Programação Funcional: Novos Horizontes para a Expansão da Consciência
Programação Funcional: Novos Horizontes para a Expansão da ConsciênciaProgramação Funcional: Novos Horizontes para a Expansão da Consciência
Programação Funcional: Novos Horizontes para a Expansão da Consciência
Andrei Formiga
 
10 Boas Práticas de Programação
10 Boas Práticas de Programação10 Boas Práticas de Programação
10 Boas Práticas de Programação
Carlos Schults
 

Semelhante a Aula 14 - Funções: não duplique seu código (20)

O que é que o Java não tem?
O que é que o Java não tem?O que é que o Java não tem?
O que é que o Java não tem?
 
Conceito de funçao e modularizaçao
Conceito de funçao e modularizaçaoConceito de funçao e modularizaçao
Conceito de funçao e modularizaçao
 
Curso de introdução ao ruby
Curso de introdução ao rubyCurso de introdução ao ruby
Curso de introdução ao ruby
 
Objetos Pythonicos - compacto
Objetos Pythonicos - compactoObjetos Pythonicos - compacto
Objetos Pythonicos - compacto
 
Linguagem de Programação Java
Linguagem de Programação JavaLinguagem de Programação Java
Linguagem de Programação Java
 
Curso Linguagem de Programação I - PHP Básico
Curso Linguagem de Programação I - PHP BásicoCurso Linguagem de Programação I - PHP Básico
Curso Linguagem de Programação I - PHP Básico
 
Programação Funcional: Novos Horizontes para a Expansão da Consciência
Programação Funcional: Novos Horizontes para a Expansão da ConsciênciaProgramação Funcional: Novos Horizontes para a Expansão da Consciência
Programação Funcional: Novos Horizontes para a Expansão da Consciência
 
mod3-programação-estruturada
mod3-programação-estruturadamod3-programação-estruturada
mod3-programação-estruturada
 
JavaScript - A Linguagem
JavaScript - A LinguagemJavaScript - A Linguagem
JavaScript - A Linguagem
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScript
 
Programação Web com PHP 7.x
Programação Web com PHP 7.xProgramação Web com PHP 7.x
Programação Web com PHP 7.x
 
Javascript
JavascriptJavascript
Javascript
 
Aula python
Aula pythonAula python
Aula python
 
10 Boas Práticas de Programação
10 Boas Práticas de Programação10 Boas Práticas de Programação
10 Boas Práticas de Programação
 
modulo1.pdf
modulo1.pdfmodulo1.pdf
modulo1.pdf
 
javascript_funcional.pdf
javascript_funcional.pdfjavascript_funcional.pdf
javascript_funcional.pdf
 
Java - Visão geral e Exercícios
Java - Visão geral e ExercíciosJava - Visão geral e Exercícios
Java - Visão geral e Exercícios
 
Python2.5.ppt
Python2.5.pptPython2.5.ppt
Python2.5.ppt
 
Linguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesLinguagem de Programação Java para Iniciantes
Linguagem de Programação Java para Iniciantes
 
Introdução a Linguagem de Programação Ruby
Introdução a Linguagem de Programação RubyIntrodução a Linguagem de Programação Ruby
Introdução a Linguagem de Programação Ruby
 

Último

matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecni
CleidianeCarvalhoPer
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf
marlene54545
 
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTeoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
TailsonSantos1
 
8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito
tatianehilda
 
Revolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesRevolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividades
FabianeMartins35
 
SSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffff
SSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffffSSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffff
SSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffff
NarlaAquino
 

Último (20)

Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
 
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIAPROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecni
 
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfPROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
 
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfRecomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
 
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
 
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfPROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
 
Seminário Biologia e desenvolvimento da matrinxa.pptx
Seminário Biologia e desenvolvimento da matrinxa.pptxSeminário Biologia e desenvolvimento da matrinxa.pptx
Seminário Biologia e desenvolvimento da matrinxa.pptx
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf
 
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
 
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTeoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
 
8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito
 
Camadas da terra -Litosfera conteúdo 6º ano
Camadas da terra -Litosfera  conteúdo 6º anoCamadas da terra -Litosfera  conteúdo 6º ano
Camadas da terra -Litosfera conteúdo 6º ano
 
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxMonoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.ppt
 
Revolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesRevolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividades
 
6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx
 
O PLANETA TERRA E SEU SATÉLITE NATURAL - LUA
O PLANETA TERRA E SEU SATÉLITE NATURAL - LUAO PLANETA TERRA E SEU SATÉLITE NATURAL - LUA
O PLANETA TERRA E SEU SATÉLITE NATURAL - LUA
 
SSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffff
SSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffffSSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffff
SSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffff
 
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdfPROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
 

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

  • 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
  • 3. Funções Como funciona uma função 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
  • 6. Funções Criando sua própria função 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
  • 11. Funções Parâmetros ou atributos? UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  • 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. Mensagem secreta Entendendo o novo problema 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
  • 15. Mensagem secreta Encapsulando o código 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
  • 17. Mensagem secreta Primeira tentativa UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  • 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. Mensagem secreta Test Drive UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  • 20. Mensagem secreta Segunda tentativa 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
  • 24. Mensagem secreta Test Drive UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  • 25. Mensagem secreta Removendo código duplicado 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
  • 28. Mensagem secreta Perguntas Idiotas 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