introdução a estruturas de dados em python
Post on 09-Jul-2015
1.278 Views
Preview:
TRANSCRIPT
Antonio Álvaro Oliveira da SilvaWallysson Ferreira Araruna
Opção 1 Para adicionar
Tem como objetivo fazer uma breve apresentação
das características da linguagem de programação
Python e fazer uma introdução a estrutura de dados
da referida linguagem.
2Introdução a Estrutura de Dados em Python
Uma Linguagem de Programação de fonte aberta,
ou seja, Software Livre: Python Software
Foundation e orientada a objetos.
É de fácil aprendizado.
Linguagem de Programação de Alto Nivel.
Sua Sintaxe elegante e tipagem dinâmica e forte.
Funciona na maioria dos sistemas operacionais.
3Introdução a Estrutura de Dados em Python
Os Blocos de comandos são delimitados por meio
da indentação.
Não precisa ser compilado para a sua execução, o
programa é interpretado em tempo de execução.
A declaração de variáveis pode ocorrer em
qualquer ponto do programa, no entanto deve ser
utilizada a variavel.
4Introdução a Estrutura de Dados em Python
Tipos de Dados:
Os tipos de dados podemos definir em
dois tipos os simples e compostos.
Tipos de
DadosCompostosSimples
Numérico e
Texto
Lista,Tupla ,
Dicionário,
Filas e Pilhas
5Introdução a Estrutura de Dados em Python
Lista: E uma seqüencia de valores de qualquer tipo,são mutáveis podendo ser
alternadas a qualquer momento.
Tupla: É um tipo de lista com objetivo de armazenar um conjunto de elementos
acessíveis pelo índice inteiro.
Diferentes da lista ,são imutáveis.
Dicionário: São conhecidos também como “vetores de associação”,
tendo como diferença das listas na sua indexação, pois ela é feita através de chaves.
Classe:Estrutura fundamental para definir objetos.
6Introdução a Estrutura de Dados em Python
Def.:class Ponto: # criando a classe, criar um novo tipo de dado,
ponto.
pass # o comando não tem nenhum efeito no código.
# membros desse novo tipo são chamados instancia
deste tipo ou objetos.
# criar uma nova instancia é instanciar.
7Introdução a Estrutura de Dados em Python
final = Ponto( ) # A variável final contém uma referencia a um
novo objeto da classe Ponto.
final.x = 3.0 # adicionando novos dados a um objeto.
final.y = 4.0 # esse item de dados é o seu atributo.
# A variável final refere-se a um objeto ponto que
contem # dois atributos e cada atributo referencia a um
numero.
Print final.yWall = final.x # acessando um item de dados de um objeto e
# atribuindo a variável wall.# Diagrama
8Introdução a Estrutura de Dados em Python
def mostrarPonto(p):
print „ („ +str (p.x)+ ‟ , ‟ +str(p.y)+‟) ‟
# A função mostrarPonto pega o ponto (p) como um argumento e mostra-o no formato (x,y)
# Verificar se duas referências se referem ao mesmo objeto:
class Ponto:
pass
p1 = Ponto() #Mesmo que p1 e p2 contenham os mesmos valores , não presentam o mesmo
p1.x = 10.0 #objeto
p1.y = 5.0
p2 = Ponto()
p2.x = 10.0
p2.y = 5.0
print p1 == p2 #FALSE
p2 = p1 #se atribuímos p1 a p2 então as duas variáveis são o mesmo objeto
print p1 == p2 #TRUE
#chama-se de igualdade rasa, quando compara somente as referencias e não os conteúdos dos
objetos
def mostrarPonto(p1, p2):
return (p1.x == p2.x) and (p1.y == p2.y)
#comparar o conteúdo dos objetos, igualdade profunda.
9Introdução a Estrutura de Dados em Python
class Detalhes:
pass
wall = Detalhes()
wall.altura = 1.77
wall.peso = 90
wall.vida = Detalhes() # um novo objeto dentro de outro objeto.
wall.vida.profissional = "Otimo"
wall.vida.amorosa = "ruim"
#Diagrama
#mudando o estado de um objeto.
def mudarEstado(obj, alt, peso, trab, amor):
obj.altura = alt
obj.peso = peso
obj.vida.profissional = trab
obj.vida.profissional = amor
def exibi(algo): #o parâmetro „algo‟ é apelido para „wall „e qualquer mudança feita e „algo‟ afeta “bob”
print algo.altura
print algo.peso
print algo.vida.profissional
print algo.vida.amorosa
exibi(wall)
mudarEstado(wall, 1.50, 70, "ruim", "altas")
exibi(wall)10
Introdução a Estrutura de Dados em Python
import copy
p3 = Ponto()p3.x = 24p3.y = 44
p4 = copy.copy(p3)printprintprint "p4 == p3", p4 == p3
print mostrarPonto(p3,p4)#para copiar um simples objeto sem nenhum objeto embutido, isto é shallow copia.
11Introdução a Estrutura de Dados em Python
Mas caso o objeto contenha uma referencia para outro objeto, o método copy não ira executar corretamente.
#Diagrama
Solução é usar metodo deepcopy que copia todo e qualuqer objeto embutido em um objeto.
wall2 = copy.deepcopy(wall)
Agora wall2 e wall são objetos completamente separados com os mesmo conteúdos .
def mudar(obj, alt, peso, trab, amor):p1 = copy.deepcopy(obj)p1.altura = altp1.peso = pesop1.vida.profissional = trabp1.vida.profissional = amorreturn p1
wall2 = mudar(wall, 1.50, 70, "ruim", "altas")
exibi(wall2)exibi(wall)
12Introdução a Estrutura de Dados em Python
Funções Pura = Não modifica nenhum
dos objetos que são passados como
parâmetros e não tem efeito colateral de
imprimir um valor ou pegar entrada do
usuário.
Funções Modificadoras = funções que
modificar um ou mais dos objetos que
ela recebe como parâmetro.
13Introdução a Estrutura de Dados em Python
Métodos são como funções com duas
diferenças:• Métodos são definidos dentro da definição de
uma classe para tornar explicita a relação entre
a classe e o método.
• A sintaxe para a chamada do método é diferente
da sintaxe para a chamada de uma função.
14Introdução a Estrutura de Dados em Python
15Introdução a Estrutura de Dados em Python
Também chamado de construtor, é um método especial que é invocado automaticamente quando um novo objeto é criado e que inicializa os atributos deste objetos.
class Carta:def __init__(self, naipe=0, posicao=0): #fornecemos um
método de #inicialização
self.naipe = naipe # que recebe um parâmetro opcional para #cada atributo.
self.posicao = posicao
tresDePaus = Carta(0,3) #criando um objeto
16Introdução a Estrutura de Dados em Python
Um atributo de classe é definido fora de qualquer método, assim ele pode acessado por quaisquer método da classe.
class Carta:listaDeNaipes = ["paus","Ouro","Copas","Espadas"]listaDePosicoes =
["nada","Ás","2","3","4","5","6","7","8","9","10","Valete","Rainha","Rei"]
def __init__(self, naipe=0, posicao=0): #fornecemos um metodo de inicialização
self.naipe = naipe # que recebe um parametro opcional para cada atributo.self.posicao = posicao
def __str__(self):
return(self.listaDePosicoes[self.posicao] + " de "+self.listaDeNaipes[self.naipe])
carta1 = Carta(1,11) #criando um objetoprint carta1
17Introdução a Estrutura de Dados em Python
Uma lista (list) em Python tem como sintaxe uma
seqüência de valores separados por vírgula e
entre [].
Uma coleção Heterogêneas de Objeto,ou seja, os
valores não precisam ser do mesmo tipo.
São mutáveis em Python.
Sintaxe:
Lista=[1,2,3,4]
18Introdução a Estrutura de Dados em Python
19Introdução a Estrutura de Dados em Python
20Introdução a Estrutura de Dados em Python
Quem Nunca enfrentou Uma Fila?
Na programação é mesma lógica, o primeiro
elemento a entrar em uma fila será o primeiro a
sair conhecido como sigla de first-in-first-out ou
FIFO.
Os elementos são utilizados,sequencialmente,
na ordem que são armazenados.
Fila não é nativa de Python, mas podemos
utilizar as Listas.
Para Adicionar usa-se append().
Para remover usa-se pop() com Índice 0.
21Introdução a Estrutura de Dados em Python
As Filas (queues) são conjuntos de elementos é
adicionado em extremidade e removida em outra.
Seqüência armazenada em Fila
Novos Elementos
São Armazenados
O primeiro Elemento a
Entrar Será o Primeiro
Elemento a Sair
22Introdução a Estrutura de Dados em Python
LEMBRETE: O TDA ou tipo
abstrato de dado especifica
um conjunto de operações (ou
métodos) e a semântica das
operações (o que elas fazem),
mas não especifica a
implementação das
operações. Isto é o que o faz
abstrato
A Fila existe dois tipos TDA, a
fila e fila por prioridade.
A fila está na política de
enfileiramento,ou seja, a FIFO.
A fila por prioridade o próprio
nome já diz, os elementos que
tem prioridade são atendidos por
primeiro.
23Introdução a Estrutura de Dados em Python
__init__: Inicializar uma nova fila vazia.
Insert: Adicionar um novo item à fila.
remove: Remover e retornar um item da
fila. O item retornado é o que foi
adicionado primeiro.
isEmpty: Checar se a fila está vazia.
24Introdução a Estrutura de Dados em Python
As Pilhas são conhecidas como LIFO(last
in, first out – último a entrar) ou PEPS. O item adicionado por último é o primeiro a ser
removido.
Uma pilha é uma coleção que contem
múltiplos elementos.
O exemplo mais conhecido é de uma
pilha de pratos.
25Introdução a Estrutura de Dados em Python
Novos
Elementos
sendo
adicionado
na Pilha.
Último
elemento que
entrou será o
primeiro a
sair.
Sequencia de
Armazenament
o na Pilha
26Introdução a Estrutura de Dados em Python
__init__ : Inicializa uma nova pilha vazia.
push : Adiciona um novo item na pilha
pop : Remove um ítem da pilha e o
retorna, O ítem que é retornado é
sempre o último adicionado.
isEmpty :Verifica se a pilha está vazia.
27Introdução a Estrutura de Dados em Python
“É uma estrutura de dados
bidimensional, não-linear, que possui
propriedades especiais”Puga & Risseti,2009.
Admite muitas operações de conjuntos dinâmicos:
Pesquisa
Inserção
Remoção
Ordenação
E entre outros.
Árvores são
estruturas de dados
recursivas já que elas
são definidas
recursivamente.
28Introdução a Estrutura de Dados em Python
São Uteis para Implementação de algoritmos que
necessitam de estruturas hierárquicas.
Por exemplo:
Diretórios e Pasta de Arquivos de Um Computador.
30Introdução a Estrutura de Dados em Python
No topo das árvores é chamada de RAIZ,
e as outras células são chamadas de
GALHO e nas pontas contendo as
referencias vazias são chamadas
FOLHAS.
Uma célula superior pode ser chamada
de PAI e as células que se refere a ele
são FILHOS, e as células com o mesmo
pai são considerados IRMÃOS.
31Introdução a Estrutura de Dados em Python
O nó 8: É a Raiz
Os nós 3 ,10,14 e 6: São
chamadas de Pai
Os nós 1,4,7 e 13: São
Filhos
32Introdução a Estrutura de Dados em Python
Puga Sandra,Risseti Gerson.Lógica de Programação e Estruturas de Dados Com aplicações em Java.Ed. Person Prentice Hall,2009, 2ªedicão.
Árvore Binária de Busca. Disponível em : <http://pt.wikipedia.org/wiki/%C3%81rvore_bin%C3%A1ria_de_busca >Acesso No dia 17 de Julho de 2012 ás 14h:58min.
Rossum Van Guido.Tutorial Python Release 2.4.2.Disponivel em: <www.python.org.br/wiki/DocumentacaoPython?...python24.pdf>Acesso No dia 13 de Julho de 2012 ás 9h:10min.
Capitulo 18 : Pilhas. Disponível em:<http://py.franciscosouza.net/capitulo_18.html>. Acesso No dia 17 de Julho de 2012 ás 15h:10min.
Capitulo 19 : Filas. Disponível em:<http://py.franciscosouza.net/capitulo_19.html>. Acesso No dia 17 de Julho de 2012 ás 15h:00min.
Capitulo 20 : Árvores. Disponível em:<http://py.franciscosouza.net/capitulo_20.html>. Acesso No dia 17 de Julho de 2012 ás 15h:20min.
33Introdução a Estrutura de Dados em Python
o Borges Eduardo Luiz.Python Para Desenvolvedores. Rio de
Janeiro, Edição do Autor, 2009.
34Introdução a Estrutura de Dados em Python
Introdução a Estrutura de Dados em Python35
Introdução a Estrutura de Dados em Python36
Introdução a Estrutura de Dados em Python37
Obrigado pela
Atenção!
top related