SlideShare ist ein Scribd-Unternehmen logo
1 von 31
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

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 2engenhariadecomputacao
 
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çãoAndré Constantino da Silva
 
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çãorodfernandes
 
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çãoaldoirjava
 
Algoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigoAlgoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigoMauro Pereira
 
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 AlgoritmosMario Jorge 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 2Robson Ferreira
 
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)Gercélia Ramos
 
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)Gercélia Ramos
 
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 1engenhariadecomputacao
 
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 VisualgRegis Magalhães
 
Apresentação 20130805 algoritmos
Apresentação 20130805 algoritmos Apresentação 20130805 algoritmos
Apresentação 20130805 algoritmos João moreira
 
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 2José Araújo
 

Was ist angesagt? (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
 

Andere mochten auch

Andere mochten auch (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
 

Ähnlich wie 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
 
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çaossuserc6132d
 
Curso de introdução ao ruby
Curso de introdução ao rubyCurso de introdução ao ruby
Curso de introdução ao rubyFrancis Wagner
 
Objetos Pythonicos - compacto
Objetos Pythonicos - compactoObjetos Pythonicos - compacto
Objetos Pythonicos - compactoLuciano Ramalho
 
Linguagem de Programação Java
Linguagem de Programação JavaLinguagem de Programação Java
Linguagem de Programação Javathomasdacosta
 
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ásicoNorton Guimarães
 
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ênciaAndrei Formiga
 
mod3-programação-estruturada
mod3-programação-estruturadamod3-programação-estruturada
mod3-programação-estruturadadiogoa21
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScriptBruno Catão
 
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.xNorton Guimarães
 
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çãoCarlos Schults
 
javascript_funcional.pdf
javascript_funcional.pdfjavascript_funcional.pdf
javascript_funcional.pdfronaldo ramos
 
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íciosArthur Emanuel
 
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 IniciantesOziel Moreira Neto
 
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 RubyDiego Rubin
 

Ähnlich wie 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
 

Kürzlich hochgeladen

QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptxQUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptxIsabellaGomes58
 
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxOsnilReis1
 
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chave
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chaveAula - 2º Ano - Cultura e Sociedade - Conceitos-chave
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chaveaulasgege
 
FCEE - Diretrizes - Autismo.pdf para imprimir
FCEE - Diretrizes - Autismo.pdf para imprimirFCEE - Diretrizes - Autismo.pdf para imprimir
FCEE - Diretrizes - Autismo.pdf para imprimirIedaGoethe
 
A galinha ruiva sequencia didatica 3 ano
A  galinha ruiva sequencia didatica 3 anoA  galinha ruiva sequencia didatica 3 ano
A galinha ruiva sequencia didatica 3 anoandrealeitetorres
 
ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024Jeanoliveira597523
 
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniModelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniCassio Meira Jr.
 
Educação São Paulo centro de mídias da SP
Educação São Paulo centro de mídias da SPEducação São Paulo centro de mídias da SP
Educação São Paulo centro de mídias da SPanandatss1
 
DIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdf
DIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdfDIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdf
DIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdfIedaGoethe
 
Investimentos. EDUCAÇÃO FINANCEIRA 8º ANO
Investimentos. EDUCAÇÃO FINANCEIRA 8º ANOInvestimentos. EDUCAÇÃO FINANCEIRA 8º ANO
Investimentos. EDUCAÇÃO FINANCEIRA 8º ANOMarcosViniciusLemesL
 
Gerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalGerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalJacqueline Cerqueira
 
William J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfWilliam J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfAdrianaCunha84
 
Apostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptx
Apostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptxApostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptx
Apostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptxIsabelaRafael2
 
Habilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasHabilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasCassio Meira Jr.
 
geografia 7 ano - relevo, altitude, topos do mundo
geografia 7 ano - relevo, altitude, topos do mundogeografia 7 ano - relevo, altitude, topos do mundo
geografia 7 ano - relevo, altitude, topos do mundonialb
 
Família de palavras.ppt com exemplos e exercícios interativos.
Família de palavras.ppt com exemplos e exercícios interativos.Família de palavras.ppt com exemplos e exercícios interativos.
Família de palavras.ppt com exemplos e exercícios interativos.Susana Stoffel
 
637743470-Mapa-Mental-Portugue-s-1.pdf 4 ano
637743470-Mapa-Mental-Portugue-s-1.pdf 4 ano637743470-Mapa-Mental-Portugue-s-1.pdf 4 ano
637743470-Mapa-Mental-Portugue-s-1.pdf 4 anoAdelmaTorres2
 
cartilha-pdi-plano-de-desenvolvimento-individual-do-estudante.pdf
cartilha-pdi-plano-de-desenvolvimento-individual-do-estudante.pdfcartilha-pdi-plano-de-desenvolvimento-individual-do-estudante.pdf
cartilha-pdi-plano-de-desenvolvimento-individual-do-estudante.pdfIedaGoethe
 
Currículo escolar na perspectiva da educação inclusiva.pdf
Currículo escolar na perspectiva da educação inclusiva.pdfCurrículo escolar na perspectiva da educação inclusiva.pdf
Currículo escolar na perspectiva da educação inclusiva.pdfIedaGoethe
 
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024HORA DO CONTO3_BECRE D. CARLOS I_2023_2024
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024Sandra Pratas
 

Kürzlich hochgeladen (20)

QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptxQUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
 
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
 
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chave
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chaveAula - 2º Ano - Cultura e Sociedade - Conceitos-chave
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chave
 
FCEE - Diretrizes - Autismo.pdf para imprimir
FCEE - Diretrizes - Autismo.pdf para imprimirFCEE - Diretrizes - Autismo.pdf para imprimir
FCEE - Diretrizes - Autismo.pdf para imprimir
 
A galinha ruiva sequencia didatica 3 ano
A  galinha ruiva sequencia didatica 3 anoA  galinha ruiva sequencia didatica 3 ano
A galinha ruiva sequencia didatica 3 ano
 
ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024
 
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniModelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
 
Educação São Paulo centro de mídias da SP
Educação São Paulo centro de mídias da SPEducação São Paulo centro de mídias da SP
Educação São Paulo centro de mídias da SP
 
DIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdf
DIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdfDIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdf
DIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdf
 
Investimentos. EDUCAÇÃO FINANCEIRA 8º ANO
Investimentos. EDUCAÇÃO FINANCEIRA 8º ANOInvestimentos. EDUCAÇÃO FINANCEIRA 8º ANO
Investimentos. EDUCAÇÃO FINANCEIRA 8º ANO
 
Gerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalGerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem Organizacional
 
William J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfWilliam J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdf
 
Apostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptx
Apostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptxApostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptx
Apostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptx
 
Habilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasHabilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e Específicas
 
geografia 7 ano - relevo, altitude, topos do mundo
geografia 7 ano - relevo, altitude, topos do mundogeografia 7 ano - relevo, altitude, topos do mundo
geografia 7 ano - relevo, altitude, topos do mundo
 
Família de palavras.ppt com exemplos e exercícios interativos.
Família de palavras.ppt com exemplos e exercícios interativos.Família de palavras.ppt com exemplos e exercícios interativos.
Família de palavras.ppt com exemplos e exercícios interativos.
 
637743470-Mapa-Mental-Portugue-s-1.pdf 4 ano
637743470-Mapa-Mental-Portugue-s-1.pdf 4 ano637743470-Mapa-Mental-Portugue-s-1.pdf 4 ano
637743470-Mapa-Mental-Portugue-s-1.pdf 4 ano
 
cartilha-pdi-plano-de-desenvolvimento-individual-do-estudante.pdf
cartilha-pdi-plano-de-desenvolvimento-individual-do-estudante.pdfcartilha-pdi-plano-de-desenvolvimento-individual-do-estudante.pdf
cartilha-pdi-plano-de-desenvolvimento-individual-do-estudante.pdf
 
Currículo escolar na perspectiva da educação inclusiva.pdf
Currículo escolar na perspectiva da educação inclusiva.pdfCurrículo escolar na perspectiva da educação inclusiva.pdf
Currículo escolar na perspectiva da educação inclusiva.pdf
 
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024HORA DO CONTO3_BECRE D. CARLOS I_2023_2024
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024
 

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