introdução a estruturas de dados em python

36
Antonio Álvaro Oliveira da Silva Wallysson Ferreira Araruna Opção 1 Para adicionar

Upload: alvaro-oliveira

Post on 09-Jul-2015

1.278 views

Category:

Education


3 download

TRANSCRIPT

Page 1: Introdução a estruturas de dados em python

Antonio Álvaro Oliveira da SilvaWallysson Ferreira Araruna

Opção 1 Para adicionar

Page 2: Introdução a estruturas de dados em python

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

Page 3: Introdução a estruturas 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

Page 4: Introdução a estruturas 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

Page 5: Introdução a estruturas 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

Page 6: Introdução a estruturas 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

Page 7: Introdução a estruturas 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

Page 8: Introdução a estruturas 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

Page 9: Introdução a estruturas 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

Page 10: Introdução a estruturas 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

print

exibi(wall)

mudarEstado(wall, 1.50, 70, "ruim", "altas")

exibi(wall)10

Introdução a Estrutura de Dados em Python

Page 11: Introdução a estruturas 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

Page 12: Introdução a estruturas 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

Page 13: Introdução a estruturas 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

Page 14: Introdução a estruturas 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

Page 15: Introdução a estruturas de dados em python

15Introdução a Estrutura de Dados em Python

Page 16: Introdução a estruturas 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

Page 17: Introdução a estruturas 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

Page 18: Introdução a estruturas 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

Page 19: Introdução a estruturas de dados em python

19Introdução a Estrutura de Dados em Python

Page 20: Introdução a estruturas de dados em python

20Introdução a Estrutura de Dados em Python

Page 21: Introdução a estruturas 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

Page 22: Introdução a estruturas 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

Page 23: Introdução a estruturas 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

Page 24: Introdução a estruturas 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

Page 25: Introdução a estruturas 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

Page 26: Introdução a estruturas 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

Page 27: Introdução a estruturas 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

Page 28: Introdução a estruturas 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

Page 29: Introdução a estruturas 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

Page 30: Introdução a estruturas 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

Page 31: Introdução a estruturas 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

Page 32: Introdução a estruturas 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

Page 33: Introdução a estruturas 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

Page 34: Introdução a estruturas de dados em python

Introdução a Estrutura de Dados em Python35

Page 35: Introdução a estruturas de dados em python

Introdução a Estrutura de Dados em Python36

Page 36: Introdução a estruturas de dados em python

Introdução a Estrutura de Dados em Python37

Obrigado pela

Atenção!