• Nenhum resultado encontrado

Definição. Conjunto ordenado de itens. Novos elementos podem ser inseridos Podem ser eliminados termos (itens) de uma extremidade (topo da pilha)

N/A
N/A
Protected

Academic year: 2022

Share "Definição. Conjunto ordenado de itens. Novos elementos podem ser inseridos Podem ser eliminados termos (itens) de uma extremidade (topo da pilha)"

Copied!
21
0
0

Texto

(1)

A PILHA

ED aula 6

(2)

Conceito

O conceito de pilha é um dos mais importantes na ciência da computação.

E um conceito muito simples

Desenvolve um papel muito importante nas áreas de programação e linguagens de programação.

É uma ferramenta valiosa na solução de diversos problemas

(3)

Definição

Conjunto ordenado de itens.

Novos elementos podem ser inseridos

Podem ser eliminados termos (itens) de uma extremidade (topo da pilha)

A B C D E F

Uma pilha contendo termos de pilha

(4)

Definição ...

Ao contrário de vetores compreende Inserção e eliminação de itens sendo um objeto dinâmico ou constantemente mutável

Como uma pilha muda???? Isso define o conceito de pilha

(5)

Definição ...

Na pilha uma única extremidade da pilha é designada como topo da pilha.

Novos itens são colocados no topo da pilha (o topo deve ser deslocado) ou os itens que estiverem no topo da pilha poderão ser removidos (o topo deverá ser deslocado para baixo)

Qual é o lado de cima????

(6)

Definição ...

Tem que ser determinado o extremo da pilha que será determinada como topo.

A B C D E F

Neste caso o desenho esta feito como se F estivesse fisicamente em cima da página em relação aos outros itens da pila. Então quando novos itens sejam adicionados serão colocados acima de F e se foram eliminados F será o primeiro em ser eliminado.

(7)

Filme de uma pilha

A B C D E F

A B C D E F

A B C D E F

A B C D E F

A B C D E

A B C D

A B C D E F

G H

I

H

F

E

•A pilha se expande e reduz com o passar do tempo

•Em cada a eliminação será feita a partir do topo e os elementos inseridos serão nesse instante o topo da pilha.

•Atributo mais importante da pilha, o ultimo elemento inserido numa pilha é o primeiro em ser eliminado

•A pilha as vezes é chamada lista last-in, first-out (LIFO) ou UEPS

(8)

Visão da pilha

No tem como se distinguir entre 2 estados iguais da pilha em diferentes momentos. A pilha pode conter os mesmos itens na mesma ordem, com o mesmo elemento no topo. Se quiser essa informação deve ser mantido num outro lugar, a pilha não é vista dessa forma fílmica.

A pilha não é observada de perfil e sim com uma visão de cima para baixo e em caso de elementos diferentes com iguais elementos no topo só poderá ser determinada a igualdade ou não é removendo todos elementos das duas pilhas e comparando-os individualmente

(9)

Operações primitivas da Pilha

Empilhado: Quando um elemento é incluído sobre pilha. Operação push(s, i). Incluirá o elemento i na pilha s

Desempilhado: Quando um item é removido de sobre a pilha. Operação pop(s).

Removerá o elemento superior da pilha s e o retornará como valor da função.Ex. i = pop(s)

Ver exemplo na figura anterior

(10)

Operações primitivas da Pilha

Não existe um limite máximo para o número de itens que podem ser mantidos numa pilha por definição.

Empilhar outro elemento na pilha simplesmente produz um conjunto maior de itens.

Se a pilha contem só um elemento e este for desempilhado, a pilha não conterá itens e será chamada de pilha vazia.

(11)

Operações primitivas da Pilha

push pode ser aplicado a qualquer pilha

pop não pode ser aplicada a uma pilha vazia

empty(s) definirá se a pilha está vazia o não devolvendo TRUE ou FALSE

Para a determinação do item superior da pilha sem removê-lo usaremos stacktop(s)

(12)

Operações primitivas da Pilha

A operação stacktop não é uma nova operação, ela pode ser descomposta de dois operações básicas. Quais??

Como a operação pop, stacktop, não está definida quando a pilha está empty. O resultado de uma tentativa de desempilhar ou acessar um item de uma pilha vazia é chamado de underflow Como evitar o underflow??

(13)

Exemplo de uso de uma pilha

)) 5 . 2 4

/(

) ))

3 /(

) ((

* ((

7 − X X + Y J − + Y

Para que a expressão este correta tem que se verificar que:

1. Existe um número igual de parênteses esquerdos e direitos. ((A+B) ou A+B(

2. Todo parêntese da direita esta precedido por um parêntese da esquerda correspondente )A+B (-C ou (A+B))-(C+D

Neste problema cada parêntese de esquerda a direita é um escopo e o cada parêntese da direita como um fechamento de escopo

A profundidade de agrupamento num ponto é a quantidade de parêntesis abertos e ainda não fechados nesse ponto, que correspondera ao número de parêntesis da direita que ainda não foram encontrados

(14)

Exemplo de uso de uma pilha

Definimos a contagem de parênteses

CP = #parent_esquerdos - #parent_direitos

encontrados ao rastrear a expressão a partir da extremidade esquerda ate o ponto em questão Se CP > 0 então é a profundidade de grupamento

Para cumprir a validez da expressão então devemos ter:

CP = 0 ao final da expressão (Nenhum escopo foi aberto sem ter encontrado outro para fechar)

CP em cada ponto é não negativa. Isso implica que não foi encontrado p. direita para o qual não exista p. esquerdo

(15)

Exemplo de uso de uma pilha

Se alteramos o problema suponhamos a existência de três tipos diferentes de

limitadores de escopo (), [] e {}. Nesse caso um finalizador de escopo deve ser o mesmo de seu iniciador Ex.. (A+B] [(A+B]) ou {A-(B]}

são inválidas

0 1 2 11222 2

2 432 433444

4 344 2

2 12 0

0

)) 5 . 2 4

/(

) ))

3 /(

) ((

* ((

7 − X X + Y J − + Y

(16)

Exemplo de uso de uma pilha

Então não só devemos contar os escopos abertos como também os tipos. Estas informações são importantes porque agora quando encontramos um finalizador de escopo precisamos conhecer o símbolo com o que o escopo foi aberto para assegurar que ele seja corretamente fechado

(17)

Exemplo de uso de uma pilha

Inicia pilha e enquanto não fim de string e valida

Sempre que um iniciador de escopo for encontrado ele será empilhado.

Sempre que um finalizador de escopo for encontrado a pilha será examinada.

Se estiver vazia invalida!!!

Se não estiver vazia, Desempilhamos

Se o item corresponde ao finalizador de escopo continuamos

Se não corresponde invalida!!!!

(18)

Exercício

Fazer o pseudocódigo do algoritmo

Por que neste problema usamos pilha??

(19)

A pilha como um TDA

abstract typedef <<thetype>> STACK (thetype);

abstract empty(s) STACK (thetype)s;

postcondition empty == (len(s) == 0);

abstract thetype pop(s) STACK (thetype)s;

precondition empty(s) == FALSE;

postcondition pop == first(s’);

s == sub(s’, 1, len(s’)- 1 );

abstract push(s, t) STACK (thetype)s;

thetype t;

postcondition s == <t> + s’;

(20)

Exercícios

Use push, pop e empty para construir operações que façam a. Definir i com o segundo elemento a partir do topo da pilha, deixando a pilha sem seus dois elementos superiores.

b.O anterior deixando a pilha inalterada

c. Dado um inteiro n, definir i como o enésimo elemento a partir do topo da pilha deixando a pilha sem seus n elementos superiores

d. O anterior deixando a pilha inalterada

e. Definir i como o ultimo elemento da pilha deixando a pilha vazia

f. O anterior deixando a pilha inalterada.

g. Definir i como o terceiro elemento a partir do final da pilha

(21)

Exercício

Escreva um algoritmo para determinar se um string de caracteres é complemento de outro

Se x = “ABABBA” y = “ABBABA” então x C y. Em cada ponto só poderá ler um caractere da string.

Referências

Documentos relacionados

Outras atividades como essa questão podem ser propostas, mas lembramos que não interessa tanto, nesse caso, a realização de muitos cálculos, quanto, por exemplo,

Nessa experiência, segundo Bataille, o indivíduo não pode alcançar o extremo do possível – e nem mesmo conhecê-lo profundamente –, sem se degradar.. E, ao se negar

10 unidades.. Meios de Comunicação | 12 unidades.. Animais Diversos para Colorir | 100. 20 unidades.. Meios de Transportes Animados | 009 12 unidades. interativo) 28

A população idosa tem apresentado forte crescimento nas últimas décadas, porém muitos ambientes, produtos e serviços ainda não modificaram seu perfil para suprir

alimentares: de crianças menores de seis meses: Aleitamento Materno Exclusivo (AME): nenhum outro alimento é oferecido à criança, além do leite materno; Aleitamento Materno

Neste caso, embora possam existir nestes locais, forrageiras de alta qualidade, como o capim-de-capivara (Hymenachne amplexicaulis), a disponibilidade de recursos forrageiros vai

De realçar que o número dos casos diminuiu para 144 em São Vicente e para 92 no concelho da Praia, em comparação com o mesmo período anterior, enquanto os concelhos de São Miguel

Com a missão de trabalhar para melhorar a qualidade de vida da comunidade com quem se relaciona, respeitando as diferenças, valorizando os seus talentos, estimulando a