estruturas de dados · um tipo abstrato de dados (tad) consiste em um ... determinada estrutura de...
TRANSCRIPT
Tipo Abstrato de Dados
“[...] A abstração é nossa mais importante ferramenta mental
para lidar com a complexidade. Portanto, um problema
complexo não poderia ser visto imediatamente em termos de
instruções de computador [...] mas, antes, em termos de
entidades naturais ao próprio problema, abstraído de maneira
adequada.”
Niklaus Wirth (1989)
Tipo Abstrato de Dados
Significados do termo “abstrair”
Segundo o Dicionário Aurélio
Considerar isoladamente um ou mais elementos de um todo.
Em programação
Imaginar um problema maior dividido em problemas
menores, para resolvê-los isoladamente e, posteriormente,
uni-los, produzindo a solução do problema.
Tipo Abstrato de Dados
Um Tipo Abstrato de Dados (TAD) consiste em um
módulo que define um novo tipo de dado e um conjunto
de operações para manipular dados desse tipo.
É também conhecido como Tipo de Dado Abstrato (TDA)
ou tipo de dados definido pelo usuário.
Os TAD’s encapsulam um tipo de dados e seus valores e
definem ou exportam uma interface externa de
procedimentos que acessam e manipulam os dados.
Tipo Abstrato de Dados
Separação entre conceito (definição do tipo) e
implementação das operações
Visibilidade da estrutura interna do tipo fica limitada às
operações
Aplicações que usam o TAD são denominadas clientes do
tipo de dado
Cliente tem acesso somente à forma abstrata do TAD
Tipo Abstrato de Dados
Um TAD é um tipo de dado que satisfaz as condições:
A representação ou a definição do tipo e as operações sobre
variáveis desse tipo estão contidas numa única unidade
sintática:
MÓDULO
A representação interna do tipo (a implementação) não é
visível de outras unidades sintáticas, de modo que só as
operações oferecidas na definição do tipo podem ser usadas
com as variáveis desse tipo.
Tipo Abstrato de Dados
Acesso e mudanças nos dados podem somente ser feitos
através dos procedimentos de interface.
Um Tipo Abstrato de Dados apresenta as seguintes
características:
Uma definição de tipo que permite que as unidades de
programa declarem suas variáveis, mas oculta a sua
representação;
Um conjunto de operações para manipular objetos do tipo.
Tipo Abstrato de Dados
Vantagens:
Programas organizados em unidades lógicas que podem ser
compiladas separadamente;
Modificações nas representações ou operações do tipo são
feitas em uma única área do programa;
Clientes não veem os detalhes da representação, portanto seu
código não depende dessa representação;
Tipo Abstrato de Dados
Vantagens:
Confiabilidade. Clientes não podem mudar as representações
intencionalmente ou acidentalmente.
Reutilização. Possibilidade de utilização do mesmo TAD em
diversas aplicações diferentes
Tipo Abstrato de Dados
Projeto de um TAD
Envolve a escolha de operações adequadas para uma
determinada estrutura de dados, definindo seu
comportamento
Dicas para definir um TAD
Definir pequeno número de operações;
O conjunto de operações deve ser suficiente para realizar as
computações necessárias às aplicações que utilizarem o TAD;
cada operação deve ter um propósito bem definido, com
comportamento constante e coerente;
Tipo Abstrato de Dados
Exemplo 1: array como tipo abstrato de dados
Nome do tipo: vetor
Componentes: número de elementos e espaço de
armazenamento.
Operações:
produto_por_escalar (x, k) y
soma_dos_elementos (x) a
num_elementos (x) n
leitura() x
imprime (x)
Consideremos:
• x,y do tipo vetor
• k, n do tipo inteiro
• a do tipo real
Tipo Abstrato de Dados
Exemplo 1: array como tipo abstrato de dados
PROBLEMA
Ler um conjunto de notas de alunos, calcular a média da
turma, imprimir as notas lidas e a média da turma.
Tipo Abstrato de Dados
Exemplo 1: array como tipo abstrato de dados
SOLUÇÃO
Tipo Abstrato de Dados
Exemplo 2: criando tipo abstrato de dados conta
Nome do tipo: conta
Componentes: registro com os campos referentes aos dados
da conta e espaço de armazenamento.
Operações:
abrirConta (c)
creditar (c, v)
debitar (c, v)
transferir(c1, c2, v)
mostrarDados(c)
Consideremos:
• c , c1 e c2 do tipo conta
• v do tipo real
Tipo Abstrato de Dados
Exemplo 2: criando tipo abstrato de dados conta
PROBLEMA
Fazer a abertura de duas contas. Creditar e debitar valores
nas contas. Realizar a transferência de valores entre as contas
e ao final exibir os dados de ambas as contas.
Tipo Abstrato de Dados
Exemplo 2: criando tipo abstrato de dados conta
SOLUÇÃO
Exercícios
Utilize o TDA vetor e faça um programa para ler dois
conjuntos de pontuações relativas aos resultados
obtidos por dois participantes do Rally Paris-Dakar.
Calcular a média de cada um e indicar qual deles teve a
melhor média. Imprimir as pontuações lidas, as médias
e quem obteve a melhor média.
Exercícios
Crie um TDA para a representação de um ponto no
plano cartesiano. O ponto será representado pelo par
ordenado (x, y). Defina as seguintes operações:
cria: operação que cria um ponto nas coordenadas x e y;
acessa: operação que devolve as coordenadas de um ponto;
atribui: operação que atribui novos valores às coordenadas
de um ponto;
distancia: operação que calcula a distância entre dois
pontos.