estrutura de ados - caetano exercício 2 •construa um programa que leia um vetor de chars e,...
TRANSCRIPT
![Page 1: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/1.jpg)
ESTRUTURA DE DADOS
Prof. Dr. Daniel Caetano
2012 - 2
PILHAS SEQUENCIAIS
![Page 2: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/2.jpg)
Objetivos
• Compreender o que é uma estrutura em pilha
• Compreender sua aplicação
• Capacitar para implementar pilhas
• Atividade Estruturada!
![Page 3: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/3.jpg)
Material de Estudo
Material Acesso ao Material
Apresentação http://www.caetano.eng.br/ (Aula 5)
Biblioteca Virtual Estruturas de Dados – -?
![Page 4: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/4.jpg)
RECORDANDO...
![Page 5: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/5.jpg)
Recordando...
• Podemos criar listas
– Ordenadas e não ordenadas
• Listas: acrescento...
– Não ordenada: no fim
– Ordenada: no lugar correto
• Listas: removo...
– De qualquer lugar
• Sempre precisamos dessa flexibilidade?
![Page 6: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/6.jpg)
ORDEM DE RETIRADA X ORDEM DE ARMAZENAMENTO
![Page 7: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/7.jpg)
Ordem de Retirada x Armazenam.
• É comum: ordem de remoção → armazenam.
• Exemplo: organizando entregas de Pizza
![Page 8: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/8.jpg)
Ordem de Retirada x Armazenam.
• O que ocorre na Pizzaria?
![Page 9: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/9.jpg)
Ordem de Retirada x Armazenam.
• O que ocorre na Pizzaria?
![Page 10: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/10.jpg)
Ordem de Retirada x Armazenam.
• O que ocorre na Pizzaria?
![Page 11: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/11.jpg)
Ordem de Retirada x Armazenam.
• O que ocorre na Pizzaria?
![Page 12: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/12.jpg)
Ordem de Retirada x Armazenam.
• O que ocorre na Pizzaria?
![Page 13: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/13.jpg)
Ordem de Retirada x Armazenam.
• O que ocorre na Pizzaria?
![Page 14: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/14.jpg)
Ordem de Retirada x Armazenam.
• O que ocorre na Pizzaria?
![Page 15: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/15.jpg)
Ordem de Retirada x Armazenam.
• O que ocorre na Pizzaria?
![Page 16: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/16.jpg)
Ordem de Retirada x Armazenam.
• E nas entregas?
![Page 17: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/17.jpg)
Ordem de Retirada x Armazenam.
• E nas entregas?
![Page 18: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/18.jpg)
Ordem de Retirada x Armazenam.
• E nas entregas?
![Page 19: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/19.jpg)
Ordem de Retirada x Armazenam.
• E nas entregas?
![Page 20: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/20.jpg)
Ordem de Retirada x Armazenam.
• E nas entregas?
![Page 21: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/21.jpg)
Ordem de Retirada x Armazenam.
• E nas entregas?
![Page 22: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/22.jpg)
Ordem de Retirada x Armazenam.
• E nas entregas?
![Page 23: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/23.jpg)
Ordem de Retirada x Armazenam.
• E nas entregas?
![Page 24: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/24.jpg)
Ordem de Retirada x Armazenam.
• Observe...
– A última pizza a entrar...
– Será a primeira a sair...
1ª
2ª
3ª
4ª
5ª
6ª
7ª
8ª
LIFO:
Last In First Out
![Page 25: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/25.jpg)
MOMENTO LÚDICO: PILHA DE CADERNOS
![Page 26: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/26.jpg)
PILHAS DE DADOS
![Page 27: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/27.jpg)
Pilhas
• Estrutura de dados Pilha: Lista LIFO
• Inserir: sempre no fim da lista (topo da pilha)
• Remover: sempre do fim da lista (topo da pilha)
• Isso é útil em software?
– Vejamos alguns casos!
![Page 28: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/28.jpg)
Pilhas
• Já observou o recurso de “desfazer” do Word?
• Qual operação ele desfaz?
• Word coloca as operações em uma pilha!
![Page 29: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/29.jpg)
Pilhas – Invertendo Elementos
• Se você tem uma lista crescente...
• Uma série de trocas... Ou...
– Empilhar e desempilhar!
2 5 7 8 10
![Page 30: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/30.jpg)
Pilhas – Invertendo Elementos
• Se você tem uma lista crescente...
• Uma série de trocas... Ou...
– Empilhar e desempilhar!
2 5 7 8 10
2
![Page 31: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/31.jpg)
Pilhas – Invertendo Elementos
• Se você tem uma lista crescente...
• Uma série de trocas... Ou...
– Empilhar e desempilhar!
2 5 7 8 10
5
2
![Page 32: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/32.jpg)
Pilhas – Invertendo Elementos
• Se você tem uma lista crescente...
• Uma série de trocas... Ou...
– Empilhar e desempilhar!
2 5 7 8 10
7
5
2
![Page 33: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/33.jpg)
Pilhas – Invertendo Elementos
• Se você tem uma lista crescente...
• Uma série de trocas... Ou...
– Empilhar e desempilhar!
2 5 7 8 10
8
7
5
2
![Page 34: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/34.jpg)
Pilhas – Invertendo Elementos
• Se você tem uma lista crescente...
• Uma série de trocas... Ou...
– Empilhar e desempilhar!
10
2 5 7 8 10
10
8
7
5
2
![Page 35: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/35.jpg)
Pilhas – Invertendo Elementos
• Se você tem uma lista crescente...
• Uma série de trocas... Ou...
– Empilhar e desempilhar!
10
2 5 7 8 10
8
7
5
2
![Page 36: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/36.jpg)
Pilhas – Invertendo Elementos
• Se você tem uma lista crescente...
• Uma série de trocas... Ou...
– Empilhar e desempilhar!
10, 8
2 5 7 8 10
8
7
5
2
![Page 37: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/37.jpg)
Pilhas – Invertendo Elementos
• Se você tem uma lista crescente...
• Uma série de trocas... Ou...
– Empilhar e desempilhar!
10, 8
2 5 7 8 10
7
5
2
![Page 38: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/38.jpg)
Pilhas – Invertendo Elementos
• Se você tem uma lista crescente...
• Uma série de trocas... Ou...
– Empilhar e desempilhar!
10, 8, 7
2 5 7 8 10
7
5
2
![Page 39: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/39.jpg)
Pilhas – Invertendo Elementos
• Se você tem uma lista crescente...
• Uma série de trocas... Ou...
– Empilhar e desempilhar!
10, 8, 7
2 5 7 8 10
5
2
![Page 40: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/40.jpg)
Pilhas – Invertendo Elementos
• Se você tem uma lista crescente...
• Uma série de trocas... Ou...
– Empilhar e desempilhar!
10, 8, 7, 5
2 5 7 8 10
5
2
![Page 41: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/41.jpg)
Pilhas – Invertendo Elementos
• Se você tem uma lista crescente...
• Uma série de trocas... Ou...
– Empilhar e desempilhar!
10, 8, 7, 5
2 5 7 8 10
2
![Page 42: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/42.jpg)
Pilhas – Invertendo Elementos
• Se você tem uma lista crescente...
• Uma série de trocas... Ou...
– Empilhar e desempilhar!
10, 8, 7, 5, 2
2 5 7 8 10
2
![Page 43: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/43.jpg)
Pilhas – Fazendo Cálculos
• Como fazemos esse cálculo?
(((2 + 3) * 5) + (3 / (3 * 7)))
![Page 44: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/44.jpg)
Pilhas – Fazendo Cálculos
• Como fazemos esse cálculo?
(((2 + 3) * 5) + (3 / (3 * 7)))
![Page 45: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/45.jpg)
Pilhas – Fazendo Cálculos
• Como fazemos esse cálculo?
(((2 + 3) * 5) + (3 / (3 * 7)))
2
![Page 46: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/46.jpg)
Pilhas – Fazendo Cálculos
• Como fazemos esse cálculo?
(((2 + 3) * 5) + (3 / (3 * 7)))
+
2
![Page 47: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/47.jpg)
Pilhas – Fazendo Cálculos
• Como fazemos esse cálculo?
(((2 + 3) * 5) + (3 / (3 * 7)))
3
+
2
3 + 2 = 5
![Page 48: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/48.jpg)
Pilhas – Fazendo Cálculos
• Como fazemos esse cálculo?
(((2 + 3) * 5) + (3 / (3 * 7)))
5
![Page 49: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/49.jpg)
Pilhas – Fazendo Cálculos
• Como fazemos esse cálculo?
(((2 + 3) * 5) + (3 / (3 * 7)))
5
![Page 50: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/50.jpg)
Pilhas – Fazendo Cálculos
• Como fazemos esse cálculo?
(((2 + 3) * 5) + (3 / (3 * 7)))
*
5
![Page 51: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/51.jpg)
Pilhas – Fazendo Cálculos
• Como fazemos esse cálculo?
(((2 + 3) * 5) + (3 / (3 * 7)))
5
*
5
5 * 5 = 25
![Page 52: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/52.jpg)
Pilhas – Fazendo Cálculos
• Como fazemos esse cálculo?
(((2 + 3) * 5) + (3 / (3 * 7)))
25
![Page 53: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/53.jpg)
Pilhas – Fazendo Cálculos
• Como fazemos esse cálculo?
(((2 + 3) * 5) + (3 / (3 * 7)))
25
![Page 54: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/54.jpg)
Pilhas – Fazendo Cálculos
• Como fazemos esse cálculo?
(((2 + 3) * 5) + (3 / (3 * 7)))
+
25
![Page 55: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/55.jpg)
Pilhas – Fazendo Cálculos
• Como fazemos esse cálculo?
(((2 + 3) * 5) + (3 / (3 * 7)))
3
+
25
![Page 56: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/56.jpg)
Pilhas – Fazendo Cálculos
• Como fazemos esse cálculo?
(((2 + 3) * 5) + (3 / (3 * 7)))
/
3
+
25
![Page 57: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/57.jpg)
Pilhas – Fazendo Cálculos
• Como fazemos esse cálculo?
(((2 + 3) * 5) + (3 / (3 * 7)))
3
/
3
+
25
![Page 58: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/58.jpg)
Pilhas – Fazendo Cálculos
• Como fazemos esse cálculo?
(((2 + 3) * 5) + (3 / (3 * 7)))
*
3
/
3
+
25
![Page 59: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/59.jpg)
Pilhas – Fazendo Cálculos
• Como fazemos esse cálculo?
(((2 + 3) * 5) + (3 / (3 * 7)))
7
*
3
/
3
+
25
7 * 3 = 21
![Page 60: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/60.jpg)
Pilhas – Fazendo Cálculos
• Como fazemos esse cálculo?
(((2 + 3) * 5) + (3 / (3 * 7)))
21
/
3
+
25
![Page 61: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/61.jpg)
Pilhas – Fazendo Cálculos
• Como fazemos esse cálculo?
(((2 + 3) * 5) + (3 / (3 * 7)))
21
/
3
+
25
21 / 3 = 7
![Page 62: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/62.jpg)
Pilhas – Fazendo Cálculos
• Como fazemos esse cálculo?
(((2 + 3) * 5) + (3 / (3 * 7)))
7
+
25
![Page 63: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/63.jpg)
Pilhas – Fazendo Cálculos
• Como fazemos esse cálculo?
(((2 + 3) * 5) + (3 / (3 * 7)))
7
+
25
7 + 25 = 32
![Page 64: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/64.jpg)
Pilhas – Fazendo Cálculos
• Como fazemos esse cálculo?
(((2 + 3) * 5) + (3 / (3 * 7)))
32
![Page 65: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/65.jpg)
IMPLEMENTANDO UMA PILHA
![Page 66: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/66.jpg)
Implementando Pilhas
• Pilha: Essencialmente uma lista
pilha:
topo: ??
• Operações:
– Inicializar
– Empilhar
– Desempilhar
0 1 2 3 4 5 6 7 8 9
? ? ? ? ? ? ? ? ? ?
![Page 67: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/67.jpg)
Implementando Pilhas
• Inicializar Pilha
pilha:
topo: -1
• Topo sempre indica último elemento!
– Como indicar que elemento não existe?
• Vamos implementar
0 1 2 3 4 5 6 7 8 9
? ? ? ? ? ? ? ? ? ?
![Page 68: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/68.jpg)
Implementando Pilhas
• Empilhar
pilha:
topo: -1
• Como empilhar um valor?
– Se topo < (n-1)... Pode empilhar
– Soma 1 no topo... E acrescenta-se elemento lá
• Vamos empilhar o número 8?
0 1 2 3 4 5 6 7 8 9
? ? ? ? ? ? ? ? ? ?
![Page 69: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/69.jpg)
Implementando Pilhas
• Empilhar
pilha:
topo: -1
• Como empilhar um valor?
– Se topo < (n-1)... Pode empilhar
– Soma 1 no topo... E acrescenta-se elemento lá
• Vamos empilhar o número 8?
0 1 2 3 4 5 6 7 8 9
? ? ? ? ? ? ? ? ? ?
-1 < 9... Posso Empilhar!
![Page 70: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/70.jpg)
Implementando Pilhas
• Empilhar
pilha:
topo: 0
• Como empilhar um valor?
– Se topo < (n-1)... Pode empilhar
– Soma 1 no topo... E acrescenta-se elemento lá
• Vamos empilhar o número 8?
0 1 2 3 4 5 6 7 8 9
? ? ? ? ? ? ? ? ? ?
![Page 71: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/71.jpg)
Implementando Pilhas
• Empilhar
pilha:
topo: 0
• Como empilhar um valor?
– Se topo < (n-1)... Pode empilhar
– Soma 1 no topo... E acrescenta-se elemento lá
• Vamos empilhar o número 8?
• Vamos empilhar o 5?
0 1 2 3 4 5 6 7 8 9
8 ? ? ? ? ? ? ? ? ?
![Page 72: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/72.jpg)
Implementando Pilhas
• Empilhar
pilha:
topo: 0
• Como empilhar um valor?
– Se topo < (n-1)... Pode empilhar
– Soma 1 no topo... E acrescenta-se elemento lá
• Vamos empilhar o número 8?
• Vamos empilhar o 5?
0 1 2 3 4 5 6 7 8 9
8 ? ? ? ? ? ? ? ? ?
0 < 9... Posso Empilhar!
![Page 73: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/73.jpg)
Implementando Pilhas
• Empilhar
pilha:
topo: 1
• Como empilhar um valor?
– Se topo < (n-1)... Pode empilhar
– Soma 1 no topo... E acrescenta-se elemento lá
• Vamos empilhar o número 8?
• Vamos empilhar o 5?
0 1 2 3 4 5 6 7 8 9
8 ? ? ? ? ? ? ? ? ?
![Page 74: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/74.jpg)
Implementando Pilhas
• Empilhar
pilha:
topo: 1
• Como empilhar um valor?
– Se topo < (n-1)... Pode empilhar
– Soma 1 no topo... E acrescenta-se elemento lá
• Vamos empilhar o número 8?
• Vamos empilhar o 5?
0 1 2 3 4 5 6 7 8 9
8 5 ? ? ? ? ? ? ? ?
![Page 75: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/75.jpg)
Implementando Pilhas
• Empilhar
• Vamos implementar?
int empilhar(int v[], int &topo, int valor);
![Page 76: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/76.jpg)
Implementando Pilhas
• Desempilhar
pilha:
topo: 5
• Como desempilhar um valor?
– Se topo >= 0... Pode desempilhar
– Lê o elemento... E subtrai 1 do topo...
• Vamos desempilhar um número?
0 1 2 3 4 5 6 7 8 9
7 6 44 22 1 6 ? ? ? ?
![Page 77: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/77.jpg)
Implementando Pilhas
• Desempilhar
pilha:
topo: 5
• Como desempilhar um valor?
– Se topo >= 0... Pode desempilhar
– Lê o elemento... E subtrai 1 do topo...
• Vamos desempilhar um número?
0 1 2 3 4 5 6 7 8 9
7 6 44 22 1 6 ? ? ? ?
5 ≥ 0... Posso Desempilhar!
![Page 78: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/78.jpg)
Implementando Pilhas
• Desempilhar
pilha:
topo: 5
• Como desempilhar um valor?
– Se topo >= 0... Pode desempilhar
– Lê o elemento... E subtrai 1 do topo...
• Vamos desempilhar um número?
0 1 2 3 4 5 6 7 8 9
7 6 44 22 1 6 ? ? ? ?
Desempilhamos:
6
![Page 79: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/79.jpg)
Implementando Pilhas
• Desempilhar
pilha:
topo: 4
• Como desempilhar um valor?
– Se topo >= 0... Pode desempilhar
– Lê o elemento... E subtrai 1 do topo...
• Vamos desempilhar um número?
• Vamos desempilhar outro número?
0 1 2 3 4 5 6 7 8 9
7 6 44 22 1 6 ? ? ? ?
![Page 80: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/80.jpg)
Implementando Pilhas
• Desempilhar
pilha:
topo: 4
• Como desempilhar um valor?
– Se topo >= 0... Pode desempilhar
– Lê o elemento... E subtrai 1 do topo...
• Vamos desempilhar um número?
• Vamos desempilhar outro número?
0 1 2 3 4 5 6 7 8 9
7 6 44 22 1 6 ? ? ? ?
4 ≥ 0... Posso Desempilhar!
![Page 81: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/81.jpg)
Implementando Pilhas
• Desempilhar
pilha:
topo: 4
• Como desempilhar um valor?
– Se topo >= 0... Pode desempilhar
– Lê o elemento... E subtrai 1 do topo...
• Vamos desempilhar um número?
• Vamos desempilhar outro número?
0 1 2 3 4 5 6 7 8 9
7 6 44 22 1 6 ? ? ? ?
Desempilhamos:
1
![Page 82: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/82.jpg)
Implementando Pilhas
• Desempilhar
pilha:
topo: 3
• Como desempilhar um valor?
– Se topo >= 0... Pode desempilhar
– Lê o elemento... E subtrai 1 do topo...
• Vamos desempilhar um número?
• Vamos desempilhar outro número?
0 1 2 3 4 5 6 7 8 9
7 6 44 22 1 6 ? ? ? ?
![Page 83: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/83.jpg)
Implementando Pilhas
• Desempilhar
• Vamos implementar?
int desempilhar(int v[], int &topo, int &valor);
![Page 84: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/84.jpg)
EXERCÍCIO DE FIXAÇÃO
![Page 85: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/85.jpg)
Exercício 1 • Converter um número para binário:
– Dividir por 2 e anotar o resto (da dir para esq.)
– Pegar parte inteira...
– Dividir por 2 e anotar o resto...
![Page 86: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/86.jpg)
Conversão D→B
• Regra prática: converter 13 para binário
• 13/2 = 6... Resto 1
1b
![Page 87: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/87.jpg)
Conversão D→B
• Regra prática: converter 13 para binário
• 13/2 = 6... Resto 1
• 6/2 = 3... Resto 0
1b 01b
![Page 88: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/88.jpg)
Conversão D→B
• Regra prática: converter 13 para binário
• 13/2 = 6... Resto 1
• 6/2 = 3... Resto 0
• 3/2 = 1... Resto 1
01b 101b
![Page 89: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/89.jpg)
Conversão D→B
• Regra prática: converter 13 para binário
• 13/2 = 6... Resto 1
• 6/2 = 3... Resto 0
• 3/2 = 1... Resto 1
• 1/2 = 0... Resto 1
101b 1101b
![Page 90: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/90.jpg)
Conversão D→B
• Regra prática: converter 13 para binário
• 13/2 = 6... Resto 1
• 6/2 = 3... Resto 0
• 3/2 = 1... Resto 1
• 1/2 = 0... Resto 1
• 0 Fim!
1101b
![Page 91: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/91.jpg)
Exercício 1 • Converter um número para binário:
– Dividir por 2 e anotar o resto (da dir para esq.)
– Pega parte inteira...
– Divide por 2 e anotar o resto...
• Dicas
x = a / b → x armazena o quociente se for int
x = a % b → x armazena o resto da div. a/b
![Page 92: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/92.jpg)
Exercício 2 • Construa um programa que leia um vetor de
chars e, usando duas pilhas (ambas de chars) separe em pilhas diferentes os dígitos e as letras.
• Dicas
– cin.getline(char v[], max)
– Último caractere de um texto: ‘\0’
– #include <cctype>
• isdigit(char valor)
• isalpha(char valor)
![Page 93: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/93.jpg)
CONCLUSÕES
![Page 94: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/94.jpg)
Resumo
• Pilhas: lista do tipo LIFO
• São úteis para
– Inverter resultados / listas
– Armazenar resultados temporariamente
• TAREFA
– Estudar!
![Page 95: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/95.jpg)
Próxima Aula
• Só isso dá pra fazer com pilha?
–Não!
• Vamos construir algo mais útil! – Calculadora!
![Page 96: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/96.jpg)
PERGUNTAS?
![Page 97: ESTRUTURA DE ADOS - Caetano Exercício 2 •Construa um programa que leia um vetor de chars e, usando duas pilhas (ambas de chars)](https://reader033.vdocuments.com.br/reader033/viewer/2022060320/5f0ce5f97e708231d437ad8a/html5/thumbnails/97.jpg)
BOM DESCANSO A TODOS!