38
[email protected] Roteiro Execucão de programas (estruturas de prioridade) Pilhas Pilhas como vetor Pilhas como Lista Encadeada TAD Exemplo: Calculadora com lógica polonesa

Aula Pil Has

Embed Size (px)

Citation preview

Page 1: Aula Pil Has

[email protected]

Roteiro

● Execucão de programas (estruturas de prioridade)● Pilhas● Pilhas como vetor● Pilhas como Lista Encadeada● TAD● Exemplo: Calculadora com lógica polonesa

Page 2: Aula Pil Has

[email protected]

Observem um Programinha em C...

#include<stdio.h>int main (void) {int a, b, c, d;scanf(“ %d %d %d\n”, &b, &c, &d);a = b + c * d;printf(“\n a: %d\n”, a);return 0;}

Page 3: Aula Pil Has

[email protected]

● Como os valores são carregados e guardados em ordem?

● Como as operacões são executadas na ordem?● Qual estrutura organiza essa sequência prioritária

de tarefas?● Como modelar tal estrutura?

Page 4: Aula Pil Has

[email protected]

Pilhas

● A idéia fundamental da pilha é que todo o acesso a seus elementos é feito através do seu topo. Assim, quando um elemento novo é introduzido na pilha, passa a ser o elemento do topo, e o único elemento que pode ser removido da pilha é o do topo.

● LIFO (Last In, First Out)

Page 5: Aula Pil Has

[email protected]

Uso/aplicacões

● Ex: O exemplo de utilização de pilha mais próximo é a própria pilha de execução da linguagem C. As variáveis locais das funções são dispostas numa pilha e uma função só tem acesso às variáveis que estão no topo (não é possível acessar as variáveis da função locais às outras funções).

● Operacões pós-fixas● Editores de texto● ...

Page 6: Aula Pil Has

[email protected]

Funcionamento de uma pilha

Page 7: Aula Pil Has

[email protected]

Exemplo (Pilha de ExecuÇão de funÇões)

Page 8: Aula Pil Has

[email protected]

Exemplo (execuÇão de funÇões)

Page 9: Aula Pil Has

[email protected]

OperaÇões básicas

● criar uma estrutura de pilha;● inserir um elemento no topo (push);● remover o elemento do topo (pop);● verificar se a pilha está vazia;● liberar a estrutura de pilha.

Page 10: Aula Pil Has

[email protected]

TAD em C

Page 11: Aula Pil Has

[email protected]

ImplementaÇão como um Vetor

Page 12: Aula Pil Has

[email protected]

Criar estrutura de pilha

Page 13: Aula Pil Has

[email protected]

InserÇão

Page 14: Aula Pil Has

[email protected]

RemoÇão

Page 15: Aula Pil Has

[email protected]

Testar se pilha está vazia

Page 16: Aula Pil Has

[email protected]

Libera memória de pilha

Page 17: Aula Pil Has

[email protected]

Outras funÇões (pilha com Vetor)

Page 18: Aula Pil Has

[email protected]

ImplementaÇão de pilha com Lista Encadeada

Page 19: Aula Pil Has

[email protected]

Criar pilha (com Lista)

Page 20: Aula Pil Has

[email protected]

Inserir elemento

Page 21: Aula Pil Has

[email protected]

Retirar elemento (desempilhar)

Page 22: Aula Pil Has

[email protected]

Testa se pilha está vazia

Page 23: Aula Pil Has

[email protected]

Libera memória de pilha

Page 24: Aula Pil Has

[email protected]

Outras funcões (pilha com Lista)

Page 25: Aula Pil Has

[email protected]

Exemplo: NotaÇão polonesa (ou calculadora com notaÇão pós-fixa)

Page 26: Aula Pil Has

[email protected]

Exemplo

Page 27: Aula Pil Has

[email protected]

Criando funÇões da TAD (Exemplo)

Page 28: Aula Pil Has

[email protected]

Criacão a partir da pilha

Page 29: Aula Pil Has

[email protected]

Exemplo

Page 30: Aula Pil Has

[email protected]

Exemplo (empilhar)

Page 31: Aula Pil Has

[email protected]

Exemplo

Page 32: Aula Pil Has

[email protected]

Exemplo (desempilhar)

Page 33: Aula Pil Has

[email protected]

cont...calcula

Page 34: Aula Pil Has

[email protected]

Exemplo (programa)

Page 35: Aula Pil Has

[email protected]

cont...programa

Page 36: Aula Pil Has

[email protected]

Exemplo de uso

Page 37: Aula Pil Has

[email protected]

Exercício para casa

● Estender a funcionalidade da calculadora pós-fixa com operacões de: (- unário), exponenciacão, raiz quadrada.

Page 38: Aula Pil Has

[email protected]

Referências

● Celes, W.; Cerqueira, R. & Rangel, J.L. Introducão a Estruturas de Dados, Editora Campus (Elsevier), RJ, 2004.

● Cormen, T.; Leiserson, C. & Rivest, R. Algoritmos: teoria e prática, Campus Editora, RJ, 2002.

● Tenenbaum, A.; Langsam, Y. & Augenstein, M. Estruturas de Dados usando C, Makron Books, RJ, 1995.