Programação de
Computadores
Instituto de Computação UFF
Departamento de Ciência da Computação
Conteúdo
● Alguns Conceitos sobre Linguagens ● Conceito de Algoritmo ● Pseudocódigo ● Tipos de Variáveis ● Operadores ● Estruturas de Controle ● Estruturas de Dados ● Subprogramação
Exemplos com caracteres
O tipo str em Python reserva espaço na memória do computador e permite atribuirmos os caracteres que estão definidos na tabela ASCII e suas extensões
Tabela ASCII
Exemplos com caracteres
Observe que temos um número inteiro associado a cada caracter. Por reconhecer o tipo da variável como str (e se referenciar ao número associado na tabela) é que os programas que estejam executando no computador reagem a estas variáveis de forma conveniente.
Exemplos com caracteres
As atribuições de caracteres são feitas de forma similar as outras variáveis já apresentadas, como apresentado no fragmento abaixo …
a = '/' b = 'B' c = a ...
Exemplos com caracteres
Podemos fazer comparações entre caracteres nos lembrando de que as referências serão sempre os valores da tabela ASCII
Mais um exemplo com
caracteres
Exemplos com caracteres
Experimente teclar algo como a letra S e a letra s e depois olhe a correspondência na tabela ASCII
Exemplos com caracteres
Podemos também ter “vetores” (sequências para ser mais exato) de tipo str e acessá-los pelo seus índices
Exemplos com caracteres
Cadeia de caracteres
Exemplos com cadeias
de caracteres
Cadeias de caracteres
Experimente usar type() para verificar se temos realmente uma lista como saída do input()
Cadeias de caracteres
Temos formas diferentes de trabalhar ao usarmos um tipo ou outro, cada um com suas vantagens e desvantagens
Há uma grande diferença entre o tipo str e list:
Enquanto list é mutável str é imutável, ou seja, podemos alterar
diretamente os valores de uma lista mas o mesmo não pode ser feito com uma cadeia de caracteres
Cadeias de caracteres
É bom observar aqui que diferente dos tipos como int, float, bool,
ditos tipos simples ou primitivos, str é um tipo composto, ou
seja, ele é constituído de partes menores.
Por exemplo, uma frase é constituída de ‘palavras’ (sub cadeias) e estas por caracteres (sub cadeias das ‘palavras’)
Operador in
Vejamos um operador que será útil no momento, embora ele já tenha sido apresentado informalmente
Operador in
Vejamos um operador que será útil no momento, embora ele já tenha sido apresentado informalmente
● in
Este operador retorna se falso ou verdadeiro se dada uma subcadeia (substring) se encontra em outra cadeia de caracteres
Operador in
Exemplos:
● ‘o‘ in “Tom“ retornará True ● ‘t‘ in “Tom“ retornará False
Operador in
...
Exemplos com cadeias
de caracteres
Aqui vemos que temos uma autêntica operação lógica que pode simplificar operações com cadeias de caracteres
Exemplos com cadeias
de caracteres
Aqui vemos que temos uma autêntica operação lógica que pode simplificar operações com cadeias de caracteres
Exemplos com cadeias
de caracteres
Exemplos com cadeias
de caracteres
Mais sobre o for
Aqui vemos mais sobre as possibilidades do for. Reescreveremos as sua expressão como
for elemento_da_sequência in sequência: comandos
onde sequências podem ser listas, cadeias de caracteres e outros tipos que são genericamente chamados de iteradores
Cadeias de caracteres
Podemos fazer uma lista se “transformar“ numa cadeia de caracteres De quebra no próximo exemplo faremos uso de uma função já
apresentada len() e também de uma sobrecarga do operador + que já vimos anteriormente
Cadeias de caracteres
Exemplos com cadeias
de caracteres
Observe que criamos uma cadeira de caracteres vazia introduzindo nenhum caracter
O “problema” que temos está na impressão sem espaços em branco da cadeia de caracteres.
Mas, é claro, foi precisamente o que pedimos para ser feito... Vamos adicionar espaços em branco para nosso conforto...
Cadeia de caracteres
Cadeia de caracteres
Ficou mais legível e ganhamos um pouco mais de conhecimento de manipulação de cadeia de caracteres
Cadeia de caracteres
Vejamos mais algumas operações que podemos fazer diretamente com o tipo str
● count(item_a) – conta o número de ocorrências de item_a
da cadeia
● replace(item_a, item_b) – substitui todas as ocorrências de item_a
por item_b
● find(item_a) – retorna o índice mais a esquerda onde
Cadeia de caracteres
Cadeia de caracteres
Mas aqui temos uma questão:
Se uma cadeia de caracteres é um tipo imutável, o que aconteceu quando usamos o replace?
Geramos uma outra cadeia de caracteres, ou seja, alocamos um espaço de memória diferente daquela cadeia original
Cadeia de caracteres
Um exercício:
Faça um programa em Python no qual se lê uma frase dada numa única cadeia de caracteres e que gere outra cadeia de caracteres sem os espaços em branco.
Cadeia de caracteres
Vamos introduzir mais algumas operações com cadeias de caracteres. Se cad é uma cadeia de caracteres:
● Fatiamento:
cad[n:m] gera uma cadeia do n-ésimo caracter ao m-ésimo caracter cad[n:m:p] gera uma cadeia do n-ésimo caracter ao m-ésimo caracter deslocando de p em p
● min(cad) – retorna o menor elemento da cadeia ● max(cad) – retorna o maior elemento da cadeia
Cadeia de caracteres
...
Cadeia de caracteres
Observe que maior e menor aqui estão referidos aos valores da
tabela ASCII e que o 'menor' caracter encontrado é o caracter espaço em branco, indicado na tabela ASCII como SP
Cadeia de caracteres
Vejamos como examinar uma cadeia de caracteres de várias maneiras, o que será útil para futuros exemplos e trabalhos.
Aqui novamente suporemos estar trabalhando com uma cadeia de caracteres de nome cad
● cad.isnumeric() – retorna True se a cadeia é constituída de apenas
caracteres numéricos
● cad.isspace() – retorna True se há somente espaços em branco ● cad.isalpha() – retorna True se há somente caracteres do alfabeto
Cadeia de caracteres
Observe que tais métodos podem ser, por exemplo, muito úteis em filtragem de dados de entrada
Cadeia de caracteres
Cadeia de caracteres
Este programa emitirá uma mensagem errada em algumas situações Descubra quais e corrija
Cadeia de caracteres
Repare que encontramos uma maneira pela qual podemos manipular o conteúdo de uma cadeia de caracteres. Basta criar uma nova ou usar o recurso do
Cadeia de caracteres
Cadeia de caracteres
Repare a forma com a qual imprimimos os elementos da lista antes e depois de modificarmos.
Em geral a operação do print() faz com que ao terminar a impressão solicitada, haja um salto para a próxima linha. Este salto é dado pelo uso de um caracter não imprimível.
Aqui substituímos o caracter padrão pelo espaço em branco numa impressão e por nenhum caracter para a outra impressão
Cadeia de caracteres
Também teve uma gambiarra:
usamos o print() sem argumentos para forçar um salto de linha, já que, seja lá o que você pedir para imprimir, o print() saltará para a próxima linha
Cadeia de caracteres
Mas esta história de ficar criando cadeia de caracteres fica enchendo a memória do computador.
Para programas como estes do curso, isto não é um grande problema mas, se você estiver trabalhando com uma massa de dados maior, podemos aí ter problemas
Cadeia de caracteres
Python permite você liberar o espaço de memória ocupado por uma variável de maneira direta usando o
Cadeia de caracteres
Cadeia de caracteres
Crie um programa em Python que, dada uma cadeia de caracteres, gere outra cadeia de caracteres na qual não há vogais. Imprima as duas cadeias.
Cadeia de caracteres
Faça um program em Python no qual se lê uma cadeia de caracteres com letras minúsculas e depois ordene as letras em ordem