SlideShare une entreprise Scribd logo
1  sur  37
Télécharger pour lire hors ligne
Introdução a Algoritmos e
Linguagens de Programação
                 Aula 13 | Trabalhando com strings




             Apresentação
       Luiz Augusto de M. Morais
Roteiro

   Strings
      ●
       Uma sequência de caracteres
      ●
       Usando o interpretador
      ●
       Repetindo cada elemento

                    Mensagem secreta
                       ●
                        Entendendo o problema
                       ●
                        Cifra de César
                       ●
                        Código ASCII
                       ●
                        Primeira tentativa
                       ●
                        Escolhendo a chave certa
                       ●
                        Segunda tentativa

                           UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
Strings
Uma sequência
de caracteres




          UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
Uma sequência de caracteres

         Caractere




    'Olá, mundo!'
        0   1    2 3 4    5 6 7 8                9 10


                              Índice da string




                         UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
Uma sequência de caracteres



       nome = 'Luiz Augusto'
       sobrenome = 'Macedo Morais'
       nome_completo = nome + ' ' + sobrenome                  Juntando
                                                               strings
       print(nome_completo)
       tamanho_nome = len(nome_completo)
       print(tamanho_nome)
       primeira_letra = nome[0]
       print(primeira_letra)


                                                     Sabendo o
                       Acessando o                   tamanho da string
                       índice da string


                              UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
Strings
Usando o interpretador




          UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
Usando o Interpretador 1/3



   >>> nome = 'Luiz Augusto'
   >>> sobrenome = 'Macedo Morais'
   >>> nome_completo = nome + ' ' + sobrenome
   >>> nome_completo
   'Luiz Augusto Macedo Morais'
   >>> len(nome_completo)
   26
   >>> primeira_letra, ultima_letra = nome[0], nome[-1]
   >>> primeira_letra
   'L'
   >>> ultima_letra
   'o'




                             UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
Usando o Interpretador 2/3



   >>> nome = 'Luiz'
   >>> nome[1] = 'a'
   Traceback (most recent call last):
     File "<stdin>", line 1, in <module>
   TypeError: 'str' object does not support item assignment
   >>> novo_nome = nome.replace('u', 'a')
   >>> novo_nome
   'Laiz'
   >>> nome
   'Luiz'




                             UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
Usando o Interpretador 3/3



   >>> nome = 'Luiz'
   >>> indice = 0
   >>> while indice < len(nome):
   ...    print(nome[indice])
   ...    indice += 1
   ...
   L
   u
   i
   z




                             UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
Strings
Repetindo
cada elemento




          UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
Repetindo cada elemento




 nome = 'Luiz'                     nome = 'Luiz'
 indice = 0                        for letra in nome:
 while indice < len(nome):             print(letra)
     print(nome[indice])
     indice += 1




                             UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
Strings
Usando o interpretador




          UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
Usando o Interpretador 1/2



   >>> nome = 'Luiz Augusto'
   >>> for letra in nome:
   ...    print(letra)
   ...
   L
   u
   i
   z




                               UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
Usando o Interpretador 2/2



   >>> prefixos = 'CPMN'
   >>> sufixo = 'ão'
   >>> for prefixo in prefixos:
   ...    print(prefixo + sufixo)
   ...
   Cão
   Pão
   Mão
   Não




                             UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
Mensagem secreta
Entendendo
o problema




       UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
Entendendo o problema

Você é um membro da APE (Associação de Programadores
Espiões) e tem uma vida dupla.

Além de ser programador durante
o dia, ainda passa as madrugadas
no quartel general capturando
informações valiosas de prováveis
inimigos do Estado.
Esta semana você tem uma nova
missão...



                            UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
Entendendo o problema


  Você conseguiu interceptar         uma       mensagem
  criptografada do inimigo.
  Seu objetivo é desenvolver um programa que consiga
  descriptografar a mensagem antes que aconteça uma
  tragédia.
  Uma pista: seu colega disse que a mensagem se
  parece com uma cifra de César. Investigue isso.




                          UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
Mensagem secreta
Cifra de César




        UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
Cifra de César | História

●
 É um tipo muito simples de criptografia, no qual as letras
são substituídas por outras próximas, com um número fixo
de “casas”;
●
 Júlio César usou para se comunicar com seus generais;
●
 Muito fácil de ser quebrada;




                                UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
Cifra de César | Como funciona



           Y   Z   A   B     C     D      E      F




           Y   Z   A   B     C     D      E      F

                       chave = 2



                       UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
Mensagem secreta
Código ASCII




        UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
Código ASCII


   Finalmente você teve acesso à mensagem e descobriu
   que todos os elementos da mensagem estão
   presentes na tabela ASCII.

  Mensagem secreta

   Whyhiðuz(']vjñ'jvuzln|
   p|'klzjypw{vnyhmhy'lz{h'tluzhnlt5Wvy'jh|
   zh'kpzzv'}vjñ'nhuohyè'|t'h|
   tlu{v5HzzpuhkvA'Jolml5




                          UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
Código ASCII


   ASCII significa American Standard Code for
   Information Interchange, ou Código Padrão
   Americano para o Intercâmbio de Informação.
   A tabela ASCII contém os caracteres que são
   utilizados para representar o texto em computadores.


   Para saber mais informações sobre o código ASCII,
   acesse a página da tabela na Wikipedia.




                           UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
Código ASCII


   Em Python, existem duas funções para manipular
   caracteres da tabela ASCII.


   ord: Recebe um caractere e retorna o número
   correspondente na tabela.
   chr: Recebe um número e retorna o caractere
   correspondente na tabela.




                        UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
Mensagem secreta
Usando o interpretador




               UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
Usando o Interpretador 1/2



      letra = 'a'
      numero = ord(letra)
      numero
   97
      nova_letra = chr(numero + 2)
      nova_letra
   'c'




                               UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
Usando o Interpretador 2/2



    palavra = 'ialp'
    for letra in palavra:
   ...    print('%s: %d' % (letra, ord(letra)))
   ...
   i: 105
   a: 97
   l: 108
   p: 112




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




           UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
Primeira tentativa

        Abrindo o arquivo
        mensagem.txt


arquivo = open('mensagem.txt')
                                                             Lendo o conteúdo
mensagem = arquivo.read()                                    do arquivo
arquivo.close()                   Fechando o
nova_mensagem = ''                arquivo
for letra in mensagem:
    nova_mensagem += chr(ord(letra) - 2)                     Trocando as letras
print('Possível mensagem: %s' % (chave, nova_mensagem))




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




      UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
Segunda tentativa


   Nós já descobrimos que a mensagem possui
   caracteres da tabela ASCII e que foi criptografada por
   meio da cifra de César.
   No entanto, não sabemos qual é a chave empregada
   na cifra. Por isso, vamos tentar descriptografar por
   força bruta.




                           UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
Segunda tentativa

   MAX_CHAVES = 10                            Número máximo
                                              de chaves
   arquivo = open('mensagem.txt')
   mensagem = arquivo.read()
   arquivo.close()
   chave = 1
                                            Repetindo até o nº
   while chave = MAX_CHAVES:
                                            máximo de chaves
       nova_mensagem = ''
       for letra in mensagem:
           nova_mensagem += chr(ord(letra) - chave)
       print('Chave %d: %sn' % (chave, nova_mensagem))
       chave += 1
                                 Mostrando a
                                 mensagem gerada a
                                 partir de cada chave

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




      UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
Mensagem secreta
Perguntas Idiotas




           UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
Perguntas Idiotas


 ●
  Por que eu não posso modificar o valor de uma string?
 ●
  É melhor usar a estrutura for ao invés do while?
 ●
  Por que eu tenho que fechar o arquivo?




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


    ●
      String
    ●
      Estrutura de repetição for
    ●
      Funções:
       ● len()

       ● ord()

       ● chr()

       ● open()




                            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

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
 
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
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
apolllorj
 
Conceitos e técnicas de programação aula 1
Conceitos e técnicas de programação aula 1Conceitos e técnicas de programação aula 1
Conceitos e técnicas de programação aula 1
Robson Ferreira
 
A linguagem de programação c
A linguagem de programação cA linguagem de programação c
A linguagem de programação c
Clausia Antoneli
 
Conceitos e técnicas de programação introdução
Conceitos e técnicas de programação introduçãoConceitos e técnicas de programação introdução
Conceitos e técnicas de programação introdução
Robson Ferreira
 
Conceitos e técnicas de programação apresentação
Conceitos e técnicas de programação apresentaçãoConceitos e técnicas de programação apresentação
Conceitos e técnicas de programação apresentação
Robson Ferreira
 
Algoritmos e linguagem pascal
Algoritmos e linguagem pascalAlgoritmos e linguagem pascal
Algoritmos e linguagem pascal
angelicamenegassi
 

Tendances (20)

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
 
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)
 
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
 
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
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScript
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
 
Curso de Delphi - Linguagem Pascal
Curso de Delphi - Linguagem PascalCurso de Delphi - Linguagem Pascal
Curso de Delphi - Linguagem Pascal
 
Lógica de Programação - Unimep/Pronatec - Aula02
Lógica de Programação - Unimep/Pronatec - Aula02Lógica de Programação - Unimep/Pronatec - Aula02
Lógica de Programação - Unimep/Pronatec - Aula02
 
Lógica de Programação - Unimep/Pronatec - Aula08
Lógica de Programação - Unimep/Pronatec - Aula08Lógica de Programação - Unimep/Pronatec - Aula08
Lógica de Programação - Unimep/Pronatec - Aula08
 
Algoritmos - Procedimentos
Algoritmos - ProcedimentosAlgoritmos - Procedimentos
Algoritmos - Procedimentos
 
Curso de Delphi - Lógica de Programacao
Curso de Delphi - Lógica de ProgramacaoCurso de Delphi - Lógica de Programacao
Curso de Delphi - Lógica de Programacao
 
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
 
Curso de OO com C# - Parte 02 - Introdução ao C#
Curso de OO com C# - Parte 02 - Introdução ao C#Curso de OO com C# - Parte 02 - Introdução ao C#
Curso de OO com C# - Parte 02 - Introdução ao C#
 
Conceitos e técnicas de programação aula 1
Conceitos e técnicas de programação aula 1Conceitos e técnicas de programação aula 1
Conceitos e técnicas de programação aula 1
 
A linguagem de programação c
A linguagem de programação cA linguagem de programação c
A linguagem de programação c
 
Algoritimo - Raul
Algoritimo - RaulAlgoritimo - Raul
Algoritimo - Raul
 
Conceitos e técnicas de programação introdução
Conceitos e técnicas de programação introduçãoConceitos e técnicas de programação introdução
Conceitos e técnicas de programação introdução
 
Conceitos e técnicas de programação apresentação
Conceitos e técnicas de programação apresentaçãoConceitos e técnicas de programação apresentação
Conceitos e técnicas de programação apresentação
 
Algoritmos - Pascal
Algoritmos - PascalAlgoritmos - Pascal
Algoritmos - Pascal
 
Algoritmos e linguagem pascal
Algoritmos e linguagem pascalAlgoritmos e linguagem pascal
Algoritmos e linguagem pascal
 

Similaire à Aula 13 - Trabalhando com strings

Paradigmas de Linguagens de Programação - Tipos primitivos e compostos
Paradigmas de Linguagens de Programação - Tipos primitivos e compostosParadigmas de Linguagens de Programação - Tipos primitivos e compostos
Paradigmas de Linguagens de Programação - Tipos primitivos e compostos
Adriano Teixeira de Souza
 
Estrutura de Dados - Características da linguagem C - 1
Estrutura de Dados - Características da linguagem C - 1Estrutura de Dados - Características da linguagem C - 1
Estrutura de Dados - Características da linguagem C - 1
Adriano Teixeira de Souza
 
Aula de programacao_final.dizando
Aula de programacao_final.dizandoAula de programacao_final.dizando
Aula de programacao_final.dizando
João Gomes
 
Introdução a programação
Introdução a programaçãoIntrodução a programação
Introdução a programação
Gustavo Nazário
 
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
 
Estrutura de dados - Introdução a linguagem C
Estrutura de dados - Introdução a linguagem CEstrutura de dados - Introdução a linguagem C
Estrutura de dados - Introdução a linguagem C
Adriano Teixeira de Souza
 

Similaire à Aula 13 - Trabalhando com strings (20)

Paradigmas de Linguagens de Programação - Tipos primitivos e compostos
Paradigmas de Linguagens de Programação - Tipos primitivos e compostosParadigmas de Linguagens de Programação - Tipos primitivos e compostos
Paradigmas de Linguagens de Programação - Tipos primitivos e compostos
 
Python2.5.ppt
Python2.5.pptPython2.5.ppt
Python2.5.ppt
 
Aprendendo ruby
Aprendendo rubyAprendendo ruby
Aprendendo ruby
 
Javafx Introdução
Javafx IntroduçãoJavafx Introdução
Javafx Introdução
 
Estrutura de Dados - Características da linguagem C - 1
Estrutura de Dados - Características da linguagem C - 1Estrutura de Dados - Características da linguagem C - 1
Estrutura de Dados - Características da linguagem C - 1
 
Aula de programacao_final.dizando
Aula de programacao_final.dizandoAula de programacao_final.dizando
Aula de programacao_final.dizando
 
Introdução a programação
Introdução a programaçãoIntrodução a programação
Introdução a programação
 
Aula2 ambientação a linguagem deprogramação python
Aula2   ambientação a linguagem deprogramação pythonAula2   ambientação a linguagem deprogramação python
Aula2 ambientação a linguagem deprogramação python
 
Capítulo 12 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 12 Livro Algoritmos e Programação de Computadores Autores JR., Diler...Capítulo 12 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 12 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
 
Desvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptDesvendando a linguagem JavaScript
Desvendando a linguagem JavaScript
 
Estruturação de Linguagens de Programação (Pascal e C++)
Estruturação de Linguagens de Programação (Pascal e C++)Estruturação de Linguagens de Programação (Pascal e C++)
Estruturação de Linguagens de Programação (Pascal e C++)
 
Curso de introdução ao ruby
Curso de introdução ao rubyCurso de introdução ao ruby
Curso de introdução ao ruby
 
Algoritmo
AlgoritmoAlgoritmo
Algoritmo
 
programação c 8 9_aula
programação c 8 9_aulaprogramação c 8 9_aula
programação c 8 9_aula
 
StringBuilder, Caracteres e Expressões Regulares
StringBuilder, Caracteres e Expressões RegularesStringBuilder, Caracteres e Expressões Regulares
StringBuilder, Caracteres e Expressões Regulares
 
StringBuilder, Caracteres e Expressões Regulares
StringBuilder, Caracteres e Expressões RegularesStringBuilder, Caracteres e Expressões Regulares
StringBuilder, Caracteres e Expressões Regulares
 
Python
PythonPython
Python
 
Estrutura de dados - Introdução a linguagem C
Estrutura de dados - Introdução a linguagem CEstrutura de dados - Introdução a linguagem C
Estrutura de dados - Introdução a linguagem C
 
Introdução a Python - Python Poli
Introdução a Python  - Python PoliIntrodução a Python  - Python Poli
Introdução a Python - Python Poli
 
Aula 2 aed - pseudocódigo
Aula 2   aed - pseudocódigoAula 2   aed - pseudocódigo
Aula 2 aed - pseudocódigo
 

Plus de Luiz Augusto Macêdo Morais

Plus de Luiz Augusto Macêdo Morais (13)

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 ...
 
Minicurso: Python e suas baterias incluídas
Minicurso: Python e suas baterias incluídasMinicurso: Python e suas baterias incluídas
Minicurso: Python e suas baterias incluídas
 
Expressões Regulares: Teoria e Prática
Expressões Regulares: Teoria e PráticaExpressões Regulares: Teoria e Prática
Expressões Regulares: Teoria e Prática
 
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 10 - Estruturas de repeticao
Aula 10 - Estruturas de repeticaoAula 10 - Estruturas de repeticao
Aula 10 - Estruturas de repeticao
 
Aula 9 - Estruturas Condicionais
Aula 9 - Estruturas CondicionaisAula 9 - Estruturas Condicionais
Aula 9 - Estruturas Condicionais
 
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 5 - Tipos de dados
Aula 5 - Tipos de dadosAula 5 - Tipos de dados
Aula 5 - Tipos de dados
 
Aula 6 - Constantes e variáveis
Aula 6 - Constantes e variáveisAula 6 - Constantes e variáveis
Aula 6 - Constantes e variáveis
 
Aula 4 - Introducão a algoritmos
Aula 4 - Introducão a algoritmosAula 4 - Introducão a algoritmos
Aula 4 - Introducão a algoritmos
 
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
 
Aula 1 - Apresentação
Aula 1 - ApresentaçãoAula 1 - Apresentação
Aula 1 - Apresentação
 
Otimizador de Rotas - PythonBrasil[6]
Otimizador de Rotas - PythonBrasil[6]Otimizador de Rotas - PythonBrasil[6]
Otimizador de Rotas - PythonBrasil[6]
 

Dernier

Expansão Marítima- Descobrimentos Portugueses século XV
Expansão Marítima- Descobrimentos Portugueses século XVExpansão Marítima- Descobrimentos Portugueses século XV
Expansão Marítima- Descobrimentos Portugueses século XV
lenapinto
 
Artigo Científico - Estrutura e Formatação.ppt
Artigo Científico - Estrutura e Formatação.pptArtigo Científico - Estrutura e Formatação.ppt
Artigo Científico - Estrutura e Formatação.ppt
RogrioGonalves41
 
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
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
TailsonSantos1
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
azulassessoria9
 
QUIZ ensino fundamental 8º ano revisão geral
QUIZ ensino fundamental 8º ano revisão geralQUIZ ensino fundamental 8º ano revisão geral
QUIZ ensino fundamental 8º ano revisão geral
AntonioVieira539017
 

Dernier (20)

Cópia de AULA 2- ENSINO FUNDAMENTAL ANOS INICIAIS - LÍNGUA PORTUGUESA.pptx
Cópia de AULA 2- ENSINO FUNDAMENTAL ANOS INICIAIS - LÍNGUA PORTUGUESA.pptxCópia de AULA 2- ENSINO FUNDAMENTAL ANOS INICIAIS - LÍNGUA PORTUGUESA.pptx
Cópia de AULA 2- ENSINO FUNDAMENTAL ANOS INICIAIS - LÍNGUA PORTUGUESA.pptx
 
Expansão Marítima- Descobrimentos Portugueses século XV
Expansão Marítima- Descobrimentos Portugueses século XVExpansão Marítima- Descobrimentos Portugueses século XV
Expansão Marítima- Descobrimentos Portugueses século XV
 
Artigo Científico - Estrutura e Formatação.ppt
Artigo Científico - Estrutura e Formatação.pptArtigo Científico - Estrutura e Formatação.ppt
Artigo Científico - Estrutura e Formatação.ppt
 
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
 
O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
 
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
 
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
 
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.docGUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
 
A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...
A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...
A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...
 
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 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
 
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
 
QUIZ ensino fundamental 8º ano revisão geral
QUIZ ensino fundamental 8º ano revisão geralQUIZ ensino fundamental 8º ano revisão geral
QUIZ ensino fundamental 8º ano revisão geral
 
Aula prática JOGO-Regencia-Verbal-e-Nominal.pdf
Aula prática JOGO-Regencia-Verbal-e-Nominal.pdfAula prática JOGO-Regencia-Verbal-e-Nominal.pdf
Aula prática JOGO-Regencia-Verbal-e-Nominal.pdf
 
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
 
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de LedAula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
 
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
 

Aula 13 - Trabalhando com strings

  • 1. Introdução a Algoritmos e Linguagens de Programação Aula 13 | Trabalhando com strings Apresentação Luiz Augusto de M. Morais
  • 2. Roteiro Strings ● Uma sequência de caracteres ● Usando o interpretador ● Repetindo cada elemento Mensagem secreta ● Entendendo o problema ● Cifra de César ● Código ASCII ● Primeira tentativa ● Escolhendo a chave certa ● Segunda tentativa UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  • 3. Strings Uma sequência de caracteres UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  • 4. Uma sequência de caracteres Caractere 'Olá, mundo!' 0 1 2 3 4 5 6 7 8 9 10 Índice da string UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  • 5. Uma sequência de caracteres nome = 'Luiz Augusto' sobrenome = 'Macedo Morais' nome_completo = nome + ' ' + sobrenome Juntando strings print(nome_completo) tamanho_nome = len(nome_completo) print(tamanho_nome) primeira_letra = nome[0] print(primeira_letra) Sabendo o Acessando o tamanho da string índice da string UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  • 6. Strings Usando o interpretador UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  • 7. Usando o Interpretador 1/3 >>> nome = 'Luiz Augusto' >>> sobrenome = 'Macedo Morais' >>> nome_completo = nome + ' ' + sobrenome >>> nome_completo 'Luiz Augusto Macedo Morais' >>> len(nome_completo) 26 >>> primeira_letra, ultima_letra = nome[0], nome[-1] >>> primeira_letra 'L' >>> ultima_letra 'o' UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  • 8. Usando o Interpretador 2/3 >>> nome = 'Luiz' >>> nome[1] = 'a' Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'str' object does not support item assignment >>> novo_nome = nome.replace('u', 'a') >>> novo_nome 'Laiz' >>> nome 'Luiz' UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  • 9. Usando o Interpretador 3/3 >>> nome = 'Luiz' >>> indice = 0 >>> while indice < len(nome): ... print(nome[indice]) ... indice += 1 ... L u i z UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  • 10. Strings Repetindo cada elemento UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  • 11. Repetindo cada elemento nome = 'Luiz' nome = 'Luiz' indice = 0 for letra in nome: while indice < len(nome): print(letra) print(nome[indice]) indice += 1 UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  • 12. Strings Usando o interpretador UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  • 13. Usando o Interpretador 1/2 >>> nome = 'Luiz Augusto' >>> for letra in nome: ... print(letra) ... L u i z UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  • 14. Usando o Interpretador 2/2 >>> prefixos = 'CPMN' >>> sufixo = 'ão' >>> for prefixo in prefixos: ... print(prefixo + sufixo) ... Cão Pão Mão Não UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  • 15. Mensagem secreta Entendendo o problema UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  • 16. Entendendo o problema Você é um membro da APE (Associação de Programadores Espiões) e tem uma vida dupla. Além de ser programador durante o dia, ainda passa as madrugadas no quartel general capturando informações valiosas de prováveis inimigos do Estado. Esta semana você tem uma nova missão... UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  • 17. Entendendo o problema Você conseguiu interceptar uma mensagem criptografada do inimigo. Seu objetivo é desenvolver um programa que consiga descriptografar a mensagem antes que aconteça uma tragédia. Uma pista: seu colega disse que a mensagem se parece com uma cifra de César. Investigue isso. UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  • 18. Mensagem secreta Cifra de César UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  • 19. Cifra de César | História ● É um tipo muito simples de criptografia, no qual as letras são substituídas por outras próximas, com um número fixo de “casas”; ● Júlio César usou para se comunicar com seus generais; ● Muito fácil de ser quebrada; UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  • 20. Cifra de César | Como funciona Y Z A B C D E F Y Z A B C D E F chave = 2 UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  • 21. Mensagem secreta Código ASCII UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  • 22. Código ASCII Finalmente você teve acesso à mensagem e descobriu que todos os elementos da mensagem estão presentes na tabela ASCII. Mensagem secreta Whyhiðuz(']vjñ'jvuzln| p|'klzjypw{vnyhmhy'lz{h'tluzhnlt5Wvy'jh| zh'kpzzv'}vjñ'nhuohyè'|t'h| tlu{v5HzzpuhkvA'Jolml5 UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  • 23. Código ASCII ASCII significa American Standard Code for Information Interchange, ou Código Padrão Americano para o Intercâmbio de Informação. A tabela ASCII contém os caracteres que são utilizados para representar o texto em computadores. Para saber mais informações sobre o código ASCII, acesse a página da tabela na Wikipedia. UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  • 24. Código ASCII Em Python, existem duas funções para manipular caracteres da tabela ASCII. ord: Recebe um caractere e retorna o número correspondente na tabela. chr: Recebe um número e retorna o caractere correspondente na tabela. UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  • 25. Mensagem secreta Usando o interpretador UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  • 26. Usando o Interpretador 1/2 letra = 'a' numero = ord(letra) numero 97 nova_letra = chr(numero + 2) nova_letra 'c' UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  • 27. Usando o Interpretador 2/2 palavra = 'ialp' for letra in palavra: ... print('%s: %d' % (letra, ord(letra))) ... i: 105 a: 97 l: 108 p: 112 UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  • 28. Mensagem secreta Primeira tentativa UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  • 29. Primeira tentativa Abrindo o arquivo mensagem.txt arquivo = open('mensagem.txt') Lendo o conteúdo mensagem = arquivo.read() do arquivo arquivo.close() Fechando o nova_mensagem = '' arquivo for letra in mensagem: nova_mensagem += chr(ord(letra) - 2) Trocando as letras print('Possível mensagem: %s' % (chave, nova_mensagem)) UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  • 30. Mensagem secreta Test Drive UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  • 31. Segunda tentativa Nós já descobrimos que a mensagem possui caracteres da tabela ASCII e que foi criptografada por meio da cifra de César. No entanto, não sabemos qual é a chave empregada na cifra. Por isso, vamos tentar descriptografar por força bruta. UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  • 32. Segunda tentativa MAX_CHAVES = 10 Número máximo de chaves arquivo = open('mensagem.txt') mensagem = arquivo.read() arquivo.close() chave = 1 Repetindo até o nº while chave = MAX_CHAVES: máximo de chaves nova_mensagem = '' for letra in mensagem: nova_mensagem += chr(ord(letra) - chave) print('Chave %d: %sn' % (chave, nova_mensagem)) chave += 1 Mostrando a mensagem gerada a partir de cada chave UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  • 33. Mensagem secreta Test Drive UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  • 34. Mensagem secreta Perguntas Idiotas UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  • 35. Perguntas Idiotas ● Por que eu não posso modificar o valor de uma string? ● É melhor usar a estrutura for ao invés do while? ● Por que eu tenho que fechar o arquivo? UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  • 36. O que aprendemos hoje? ● String ● Estrutura de repetição for ● Funções: ● len() ● ord() ● chr() ● open() UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
  • 37. 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