EWERTON AMORIM DE OLIVEIRA LUCAS HENRIQUE SILVA

Slides:



Advertisements
Apresentações semelhantes
Estruturas de Repetição
Advertisements

Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
Linguagem de Programação JAVA Técnico em Informática Professora Michelle Nery.
INE5408 Estruturas de Dados Ponteiros, passagem de parâmetros e modelos de memória.
TÉCNICO EM INFORMÁTICA Linguagem e Técnica de Programação III PROF. MARCELO N. SANTOS
Disciplina:PROA3V José Henrique Verhalem e Renan Tenório Professor: Alexandre Cassimiro Novembro 2015.
Introdução à Informática com Software Livre 12:58.
1 Aula 06 – Funções Prof. Filipe Mutz Colocar mais exemplos de funções simples no começo.
Algoritmos e Programação utilizando Visualg
Estruturas de Repetição
Aula 3 - Estruturas de Repetição
Estudo de caso: Seleção de estrutura de dados
Contagem Aula 2, ciclo 5.
Estruturas de Repetição
FUNÇÕES EWERTON AMORIM DE OLIVEIRA LUCAS HENRIQUE SILVA
Algoritmos e Estruturas de Dados I
Tuplas CHRISTOPHER FREIRE SOUZA EWERTON AMORIM DE OLIVEIRA
DICIONÁRIOS CHRISTOPHER FREIRE SOUZA EWERTON AMORIM DE OLIVEIRA
EGP, CPC, 2004/05 Manipulação de strings, colecções e ficheiros em Visual Basic .Net João Pascoal Faria Dezembro de 2004.
LISTAS CHRISTOPHER FREIRE SOUZA EWERTON AMORIM DE OLIVEIRA
INE5408 Estruturas de Dados
Estruturas de Decisão.
INE5408 Estruturas de Dados
Fundamentos de Programação 1
Introdução a Programação
Módulo I Capítulo 2: IDE e Variáveis
Introdução a Programação
Prof. Wellington Franco Sub-Rotinas:Funções e Procedimentos
3.1 Classes e Objetos Em um programa orientado a objetos normalmente existem vários objetos de um mesmo tipo. Por exemplo, um programa de controle de.
Métodos de Pesquisa e Ordenação
Estruturas de Repetição
FUNDAMENTO DE PROGRAMAÇÃO
Representação de um Algoritmo na Forma de Pseudocódigo
POO - Classes Dilvan Moreira.
Coleções: Listas Dilvan Moreira.
Estrutura de dados Pilhas e filas
FUNDAMENTO DE PROGRAMAÇÃO PROF. BRUNO DE CASTRO H. SILVA
FUNDAMENTO DE PROGRAMAÇÃO PROF. BRUNO DE CASTRO H. SILVA
ARRAYS Dilvan Moreira (baseado no livro Big Java e T. Munzner)
FUNDAMENTO DE PROGRAMAÇÃO
Algoritmos e Estruturas de Dados I
IP – Variáveis e Entrada de Dados
Algoritmos e Técnicas CEFET/RN.
Estruturas de Repetição
IP – Repetições for Prof. Eduardo Falcão.
Dilvan Moreira (baseado no livro Big Java e T. Munzner)
PROGRAMAÇÃO I UNIDADE 3.
Algoritmos e Programação I
Construções Lógico –Matemáticas – Aula 08
Tecnologia para Internet - II
Módulo I Capítulo 4: Operador de Repetição
Estudo de caso: Interface de função
Aula 22 Modularização 22/10/08.
Prof.: Carlos Alberto Algoritmos Prof.: Carlos Alberto
Programação Funcional
Professora Roberta Bonamichi Guidi Garcia
Linguagem de Programação I
Curso básico de PHP. 1 Vantagens: Gratuito Multiplataforma Estável Rapidez Comunicação.
Computação Eletrônica Vetores e Matrizes
Referências.
Arrays de caracteres: strings
Representação de Algoritmos
Tipos Primitivos de Dados
Introdução a progrmação Comandos condicionais: if e switch
Percorrendo coleções com Iterator
JAVA - BÁSICO COL. ESTADUAL MARIA AGUIAR TEIXEIRA
Aula 7 Professores: Conteúdo: Dante Corbucci Filho
Sobre a linguagem Criado em 1995 por Brendan Eich da Netscape nomeada inicialmente de Mocha, posteriormente LiveScript e por fim JavaScript. É um linguagem.
Aula 2 Professores: Conteúdo: Dante Corbucci Filho
Aula 3 Professores: Conteúdo: Dante Corbucci Filho
Transcrição da apresentação:

EWERTON AMORIM DE OLIVEIRA LUCAS HENRIQUE SILVA STRINGS EWERTON AMORIM DE OLIVEIRA LUCAS HENRIQUE SILVA

Uma string Uma string não é como inteiros, reais e booleanos. String é uma sequência, ou seja, é uma coleção ordenada de outros valores. Para acessar os caracteres de uma string um a um, você pode utilizar colchetes os quais especificam posição (neste caso, quantos recuos em relação ao início da string): O segundo comando seleciona o caractere de número 1 da string fruta e atribui este valor à variável letra. Este número entre colchetes é chamado de índice. Que valor você esperava que estivesse na variável letra e qual você obteve? ‘m’ é a letra 0 de fruta, ‘e’ é a letra 1, ‘l’ é a letra 2 e assim em diante. >>> fruta = ‘melancia’ >>> letra = fruta[1]

Uma string No lugar do índice você pode utilizar expressões e variáveis: Agora tente executar: Um índice deve ser um número inteiro! >>> i = 1 >>> letra = fruta[ i ] >>> letra = fruta[ i+1] >>> letra = fruta[ 1.5 ]

len len é uma função que já vem no Python. Pra quê ela serve? Esta função serve para saber o tamanho de uma string Assim, para obter o último valor de uma string, você pode tentar fazer algo do tipo: Algo errado? Lembre-se que os índices de uma string começam do 0! Outra forma de se conseguir o último elemento de uma string: Para penúltimo elemento, você pode usar “-2”, e etc... >>> len(‘banana’) >>> len(‘melancia’) >>> tamanho = len(fruta) >>> letra = fruta[tamanho] >>> letra = fruta[-1]

Percorrer uma string com um loop Um caminho para se percorrer os caracteres de uma string é utilizar um loop while: O comando em destaque é equivalente a: indice = indice +1 Escreva uma função que recebe uma string como argumento e imprime cada caractere dela em uma linha diferente. >>> indice = 0 >>> while indice < len(fruta): >>> letra = fruta[indice] >>> print(letra) >>> indice += 1 fruta -> ‘m e l a n c i a’ Índice -> 0 1 2 3 4 5 6 7

Percorrer uma string com um loop Outro caminho é utilizar um loop for: Na estrutura de repetição acima, a variável letra assumirá, a cada iteração, o valor de um caractere da string, até que chegue ao último No caso de fruta = ‘melancia’, quantas vezes a estrutura irá rodar? >>> for letra in fruta: >>> print(letra) fruta -> ‘m e l a n c i a’

Percorrer uma string com um loop No livro “Abrir caminho para patinhos” de Robert McCloskey, os nomes dos patos são: Jack, Kack, Lack, Mack, Nack, Ouack, Pack, e Quack. O loop a seguir imprime os nomes em ordem: O processo a partir do qual duas ou mais strings são “somadas” é chamado concatenação Note que os nomes Ouack e Quack saíram diferente do nome correto. Modifique este código para imprimir os nomes corretos >>> prefixos = 'JKLMNOPQ' >>> sufixo = 'ack' >>> for letra in prefixos: >>> print(letra + sufixo)

Exercícios Crie uma função que recebe uma string como argumento e imprime as suas letras, uma por vez, de trás para frente

Fatias de strings Agora suponha que queremos acessar apenas uma porção da string: Para acessar apenas o primeiro termo (Engenharia), podemos usar o comando: O operador [n : m] retorna a parte da string contida no intervalo que vai do caractere de índice “n” ao caractere de índice “m-1” Se omitirmos o primeiro índice (n), a fatia começará do início da string e se omitirmos o segundo índice (m), a fatia irá até o fim da string. Teste esses comandos! >>> curso = ‘Engenharia Ambiental’ >>> curso [0:10]

Fatias de strings Agora experimente a instrução a seguir: Se o primeiro índice for maior ou igual ao segundo, o resultado será uma string vazia representada por aspas Uma vez que a string vazia não contém caracteres, seu tamanho será sempre 0 E quanto ao comando abaixo? Pra que serve? Teste e descubra >>> fatia = curso [5:5] >>> len(fatia) >>> curso [:]

Strings são imutáveis Para alterar o valor de um caractere de uma string, somos tentados a fazer: O motivo do erro encontrado é que não é possível alterar uma string existente O que podemos fazer é criar uma nova string a partir da original e modificá-la a partir de uma concatenação, como é mostrado a seguir: >>> eng = ‘Engenheiro’ >>> eng [9] = ‘a’ >>> novo_eng = eng [0:9] +’a’ >>> novo_eng Engenheira

Rastreando Considere a função abaixo: Você consegue descrever o que essa função faz? Execute-a e tente entender >>> def indice (palavra,letra): >>> ind = 0 >>> while ind < len(palavra): >>> if (palavra[ind]==letra): >>> return ind >>> ind += 1 >>> return -1

Rastreando Se pensarmos bem, iremos perceber que essa função realiza o processo inverso ao do operador [ ]. Ao invés de receber um índice e retornar o caractere correspondente, ela recebe o caractere e encontra o índice referente a sua posição na string Quando “palavra [ind]==letra”, a função para o loop e retorna o valor encontrado imediatamente Quando o caractere procurado não aparece na string, o programa retorna o valor -1 Esse processo é denominado “procura”

Contando a partir de um loop Observe a código a seguir: O que esse código faz é contar quantas vezes uma determinada letra aparece na palavra fornecida Analise e tente entender, em detalhes, como esse processo ocorre O código acima representa outro processo bastante comum, denominado “contagem” >>> palavra = ‘melancia’ >>> contador = 0 >>> for letra in palavra: >>> if (letra==‘a’): >>> contador += 1 >>> print(contador)

Exercícios Encapsule o código anterior em uma função denominada contagem(p,l) que recebe duas strings como argumento (uma palavra e uma letra) Modifique a função índice(palavra,letra) do slide 13 para que ela receba um terceiro argumento referente ao índice a partir do qual ela deveria começar a procurar a letra na string fornecida

Métodos de Strings As strings fornecem alguns métodos a partir dos quais podemos realizar várias tarefas úteis Por exemplo: Como podemos perceber, o método upper pega a string fornecida e retorna uma nova string com todas as letras maiúsculas Note também que, por estarmos utilizando um método e não uma função, a sintaxe de chamada é diferente: palavra.upper() ao invés de upper(palavra) >>> palavra = ‘banana’ >>> nova_palavra = palavra.upper() >>> nova_palavra BANANA

Métodos de Strings Ao chamarmos um método como foi mostrado anteriormente, realizamos o que se chama de invocação Um outro método comum de strings funciona de forma semelhante à função que criamos para localizar letras em palavras Diferentemente do método anterior, o método find deve receber um argumento para funcionar corretamente Neste caso, nós invocamos o método find sobre a variável palavra e fornecemos a letra procurada como parâmetro >>> palavra = ‘banana’ >>> indice = palavra.find(‘a’) >>> indice 1

Métodos de Strings Agora experimente executar: Assim, utilizando esse método, é possível encontrar não só caracteres, como também substrings Ao fornecer um segundo argumento, determinamos o índice a partir do qual a procura será iniciada Se fornecermos um terceiro argumento, podemos determinar o índice até onde a procura será realizada >>> palavra = ‘banana’ >>> indice = palavra.find(‘na’) >>> palavra = ‘banana’ >>> indice = palavra.find(‘na’,2) >>> palavra = ‘banana’ >>> indice = palavra.find(‘na’,2,5)

O operador in Execute os comandos abaixo: A palavra in é um operador booleano que compara duas strings e retorna True se a primeira aparece na segunda como uma substring Perceba que podemos comparar tanto caracteres (‘a’) como strings completas (‘fruta’) a uma outra string qualquer(‘abacaxi’) >>> ‘a’ in ‘abacaxi’ >>> ‘fruta’ in ‘abacaxi’

O operador in Observe a função a seguir: Agora execute: Tente descrever como a função funciona quando fornecemos as strings acima como argumentos O loop utilizado dentro da função pode ser lido da seguinte forma: Para cada letra na primeira palavra, se a letra aparecer na segunda palavra, imprima a letra >>> def em_ambos(palavra1,palavra2): >>> for letra in palavra1: >>> if letra in palavra2: >>> print(letra) >>> em_ambos(‘abacaxi’,’banana’)

Comparação de Strings >>> palavra = ‘chocolate’ Os operadores relacionais funcionam com strings. Execute os seguintes comandos e tente entender o que acontece. O operador ‘==‘ verifica se uma palavra é exatamente igual a outra. Os operadores ‘<’, ‘>’, ‘<=‘ e ‘>=‘ são muito úteis para organizar palavras em ordem alfabética. O Python segue o código ASCII onde maiúsculas antecedem minúsculas. Assim, ‘P’ < ‘a’ resulta em True >>> palavra = ‘chocolate’ >>> palavra == ‘chocolate’ >>> palavra == ‘Chocolate’ >>> palavra < ‘abacaxi’ >>> palavra > ‘morango’

Depurando código A Função a seguir serve para comparar 2 palavras e retorna True se as palavras forem uma o inverso da outra e retorna False caso contrário. Porém, o código possui dois erros. def eh_reversa(palavra1, palavra2): if len(palavra1) != len(palavra2): return False i = 0 j = len(palavra2) while j > 0: if palavra1[i] != palavra2[j]: i = i+1 j = j-1 return True

Depurando código A primeira condição checa se as palavras são do mesmo tamanho. Caso as palavras não tenham o mesmo tamanho, já podemos retornar False imediatamente. i e j são índices. O incide i percorre a palavra do começo ao fim, enquanto j percorre a palavra de trás pra frente. Se testarmos a função com “arar” e “rara”, que esperamos obter True, temos um “IndexError” Para depurar este tipo de erro vamos ao Python Tutor. Percebemos que o primeiro valor de j deveria ser: j = len(palavra2)-1

Depurando código Se executarmos eh_reversa(‘pots’, ‘stop’), obtemos a resposta certa. Agora se você perceber no Python Tutor, para este caso, há apenas 3 iterações, mas temos 4 letras, o que é um pouco suspeito. Ainda há um erro, tente descobrir qual é e o conserte.

Outra alternativa para a função eh_reversa No slide 12, foi visto como obter um pedaço de uma string. Note que esta sintaxe é parecida com a função range(). Então podemos escrever o “passo”. Veja outro exemplo. Se você definir o tamanho do passo como -1, você obterá a palavra ao contrário. Com isso, crie uma função eh_reversa(), que retorna True se as palavras passadas como argumento forem reversas e False caso contrário. >>> palavra = “pre-vestibular” >>> prefixo = palavra [0:4] >>> palavra = “banana” >>> consoantes = palavra [0:5:2]

Exercícios Leia a documentação de métodos de strings do Python, lá há muita coisa interessante que pode ser útil. Os métodos strip() e replace(), por exemplo, são muito úteis. A documentação usa uma sintaxe que pode ser confusa. Por exemplo find(sub[, start[, end]]), os colchetes indicam argumentos opcionais, ou seja, sub é um argumento obrigatório e start e end são argumentos opcionais. Existe um método de strings chamado count(), que é similar à função criada no slide 16. Leia a documentação e tente utilizar este método para fazer o mesmo que a função.