1. Opção 1 Para adicionar
Antonio Álvaro Oliveira da Silva
Wallysson Ferreira Araruna
2. 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.
Introdução a Estrutura de Dados em Python
2
3. 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.
Introdução a Estrutura de Dados em Python
3
4. 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.
Introdução a Estrutura de Dados em Python
4
5. Tiposde Dados:
Os tipos de dados podemos definir em
dois tipos os simples e compostos.
Tipos de Compostos
Simples Dados
Numérico e Lista,Tupla ,
Texto Dicionário,
Filas e Pilhas
Introdução a Estrutura de Dados em Python
5
6. 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.
Introdução a Estrutura de Dados em Python
6
7. 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.
Introdução a Estrutura de Dados em Python
7
8. 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.y
Wall = final.x # acessando um item de dados de um objeto e
# atribuindo a variável wall.
# Diagrama
Introdução a Estrutura de Dados em Python
8
9. 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.
Introdução a Estrutura de Dados em Python
9
10. 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
print
exibi(wall)
mudarEstado(wall, 1.50, 70, "ruim", "altas")
exibi(wall) Introdução a Estrutura de Dados em Python
10
11. import copy
p3 = Ponto()
p3.x = 24
p3.y = 44
p4 = copy.copy(p3)
print
print
print "p4 == p3", p4 == p3
print mostrarPonto(p3,p4)
#para copiar um simples objeto sem nenhum objeto
embutido, isto é shallow copia.
Introdução a Estrutura de Dados em Python
11
12. 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 = alt
p1.peso = peso
p1.vida.profissional = trab
p1.vida.profissional = amor
return p1
wall2 = mudar(wall, 1.50, 70, "ruim", "altas")
exibi(wall2)
exibi(wall)
Introdução a Estrutura de Dados em Python
12
13. 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.
Introdução a Estrutura de Dados em Python
13
14. 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.
Introdução a Estrutura de Dados em Python
14
16. 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
Introdução a Estrutura de Dados em Python
16
17. 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 objeto
print carta1
Introdução a Estrutura de Dados em Python
17
18. 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]
Introdução a Estrutura de Dados em Python
18
21. 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.
Introdução a Estrutura de Dados em Python
21
22. As Filas (queues) são conjuntos de elementos é
adicionado em extremidade e removida em outra.
Seqüência armazenada em Fila
Novos Elementos O primeiro Elemento a
São Armazenados Entrar Será o Primeiro
Elemento a Sair
Introdução a Estrutura de Dados em Python
22
23. LEMBRETE: O TDA ou tipo
abstrato de dado especifica
um conjunto de operações (ou
métodos) e a semântica das
A Fila existe dois tipos TDA, a operações (o que elas fazem),
fila e fila por prioridade. mas não especifica a
implementação das
operações. Isto é o que o faz
A fila está na política de abstrato
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.
Introdução a Estrutura de Dados em Python
23
24. __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.
Introdução a Estrutura de Dados em Python
24
25. 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.
Introdução a Estrutura de Dados em Python
25
26. Novos Último
Elementos elemento que
sendo entrou será o
adicionado primeiro a
na Pilha. sair.
Sequencia de
Armazenament
o na Pilha
Introdução a Estrutura de Dados em Python
26
27. __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.
Introdução a Estrutura de Dados em Python
27
28. “É
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
Árvores são
estruturas de dados Remoção
recursivas já que elas Ordenação
são definidas E entre outros.
recursivamente.
Introdução a Estrutura de Dados em Python
28
29. 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.
Introdução a Estrutura de Dados em Python
30
30. 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.
Introdução a Estrutura de Dados em Python
31
31. 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
Introdução a Estrutura de Dados em Python
32
32. 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_bu
sca >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>A
cesso 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.
Introdução a Estrutura de Dados em Python
33
33. o Borges Eduardo Luiz.Python Para Desenvolvedores. Rio de
Janeiro, Edição do Autor, 2009.
Introdução a Estrutura de Dados em Python
34