SlideShare une entreprise Scribd logo
1  sur  31
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

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
 

Tendances (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
 

En vedette

En vedette (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
 

Similaire à 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
 

Similaire à 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
 

Dernier

Manual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManuais Formação
 
Universidade Empreendedora como uma Plataforma para o Bem comum
Universidade Empreendedora como uma Plataforma para o Bem comumUniversidade Empreendedora como uma Plataforma para o Bem comum
Universidade Empreendedora como uma Plataforma para o Bem comumPatrícia de Sá Freire, PhD. Eng.
 
“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptx“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptxthaisamaral9365923
 
Simulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfSimulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfEditoraEnovus
 
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -Aline Santana
 
E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?Rosalina Simão Nunes
 
Slides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptxSlides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptxSilvana Silva
 
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBCRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBAline Santana
 
Época Realista y la obra de Madame Bovary.
Época Realista y la obra de Madame Bovary.Época Realista y la obra de Madame Bovary.
Época Realista y la obra de Madame Bovary.keislayyovera123
 
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
 
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
 
ALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolaresALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolaresLilianPiola
 
A horta do Senhor Lobo que protege a sua horta.
A horta do Senhor Lobo que protege a sua horta.A horta do Senhor Lobo que protege a sua horta.
A horta do Senhor Lobo que protege a sua horta.silves15
 
Pedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxPedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxleandropereira983288
 
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.
 
Música Meu Abrigo - Texto e atividade
Música   Meu   Abrigo  -   Texto e atividadeMúsica   Meu   Abrigo  -   Texto e atividade
Música Meu Abrigo - Texto e atividadeMary Alvarenga
 
D9 RECONHECER GENERO DISCURSIVO SPA.pptx
D9 RECONHECER GENERO DISCURSIVO SPA.pptxD9 RECONHECER GENERO DISCURSIVO SPA.pptx
D9 RECONHECER GENERO DISCURSIVO SPA.pptxRonys4
 

Dernier (20)

Manual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envio
 
Universidade Empreendedora como uma Plataforma para o Bem comum
Universidade Empreendedora como uma Plataforma para o Bem comumUniversidade Empreendedora como uma Plataforma para o Bem comum
Universidade Empreendedora como uma Plataforma para o Bem comum
 
“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptx“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptx
 
Simulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfSimulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdf
 
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -
 
E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?
 
Slides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptxSlides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptx
 
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBCRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
 
Época Realista y la obra de Madame Bovary.
Época Realista y la obra de Madame Bovary.Época Realista y la obra de Madame Bovary.
Época Realista y la obra de Madame Bovary.
 
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
 
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
 
ALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolaresALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolares
 
A horta do Senhor Lobo que protege a sua horta.
A horta do Senhor Lobo que protege a sua horta.A horta do Senhor Lobo que protege a sua horta.
A horta do Senhor Lobo que protege a sua horta.
 
Pedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxPedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.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
 
CINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULACINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULA
 
Música Meu Abrigo - Texto e atividade
Música   Meu   Abrigo  -   Texto e atividadeMúsica   Meu   Abrigo  -   Texto e atividade
Música Meu Abrigo - Texto e atividade
 
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
 
Em tempo de Quaresma .
Em tempo de Quaresma                            .Em tempo de Quaresma                            .
Em tempo de Quaresma .
 
D9 RECONHECER GENERO DISCURSIVO SPA.pptx
D9 RECONHECER GENERO DISCURSIVO SPA.pptxD9 RECONHECER GENERO DISCURSIVO SPA.pptx
D9 RECONHECER GENERO DISCURSIVO SPA.pptx
 

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