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çãoaldoirjava
 
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
 
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
 
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
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScriptBruno Catão
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem Capolllorj
 
Curso de Delphi - Linguagem Pascal
Curso de Delphi - Linguagem PascalCurso de Delphi - Linguagem Pascal
Curso de Delphi - Linguagem PascalJosé Araújo
 
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 - Aula02André Phillip Bertoletti
 
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 - Aula08André Phillip Bertoletti
 
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 ProgramacaoJosé Araújo
 
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
 
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#Leonardo Melo Santos
 
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 1Robson Ferreira
 
A linguagem de programação c
A linguagem de programação cA linguagem de programação c
A linguagem de programação cClausia 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çãoRobson 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çãoRobson Ferreira
 
Algoritmos e linguagem pascal
Algoritmos e linguagem pascalAlgoritmos e linguagem pascal
Algoritmos e linguagem pascalangelicamenegassi
 

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 compostosAdriano 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 - 1Adriano Teixeira de Souza
 
Aula de programacao_final.dizando
Aula de programacao_final.dizandoAula de programacao_final.dizando
Aula de programacao_final.dizandoJoão Gomes
 
Introdução a programação
Introdução a programaçãoIntrodução a programação
Introdução a programaçãoGustavo Nazário
 
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 pythonCleyton Fábio
 
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...Os Fantasmas !
 
Desvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptDesvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptRodrigo Branas
 
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++)Mauricio Volkweis Astiazara
 
Curso de introdução ao ruby
Curso de introdução ao rubyCurso de introdução ao ruby
Curso de introdução ao rubyFrancis Wagner
 
StringBuilder, Caracteres e Expressões Regulares
StringBuilder, Caracteres e Expressões RegularesStringBuilder, Caracteres e Expressões Regulares
StringBuilder, Caracteres e Expressões RegularesGabriel Matheus
 
StringBuilder, Caracteres e Expressões Regulares
StringBuilder, Caracteres e Expressões RegularesStringBuilder, Caracteres e Expressões Regulares
StringBuilder, Caracteres e Expressões RegularesSidneyCruz
 
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 CAdriano Teixeira de Souza
 
Introdução a Python - Python Poli
Introdução a Python  - Python PoliIntrodução a Python  - Python Poli
Introdução a Python - Python PoliRodrigo Lira
 

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

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.pdfcomercial400681
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxLuizHenriquedeAlmeid6
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxTailsonSantos1
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...azulassessoria9
 
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdfPROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdfHELENO FAVACHO
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.Mary Alvarenga
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdfAna Lemos
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfTutor de matemática Ícaro
 
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMPRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMHELENO FAVACHO
 
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfRecomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfFrancisco Márcio Bezerra Oliveira
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfHELENO FAVACHO
 
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdfLeloIurk1
 
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfPROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfHELENO FAVACHO
 
Revolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesRevolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesFabianeMartins35
 
Jogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para criançasJogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para criançasSocorro Machado
 
atividades_reforço_4°ano_231206_132728.pdf
atividades_reforço_4°ano_231206_132728.pdfatividades_reforço_4°ano_231206_132728.pdf
atividades_reforço_4°ano_231206_132728.pdfLuizaAbaAba
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Ilda Bicacro
 
apostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médioapostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médiorosenilrucks
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...IsabelPereira2010
 

Dernier (20)

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
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
 
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdfPROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdf
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
 
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMPRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
 
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfRecomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
 
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
 
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfPROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
 
Revolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesRevolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividades
 
Aula sobre o Imperialismo Europeu no século XIX
Aula sobre o Imperialismo Europeu no século XIXAula sobre o Imperialismo Europeu no século XIX
Aula sobre o Imperialismo Europeu no século XIX
 
Jogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para criançasJogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para crianças
 
atividades_reforço_4°ano_231206_132728.pdf
atividades_reforço_4°ano_231206_132728.pdfatividades_reforço_4°ano_231206_132728.pdf
atividades_reforço_4°ano_231206_132728.pdf
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!
 
apostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médioapostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médio
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
 

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