estruturas de dados · um tipo abstrato de dados (tad) consiste em um ... determinada estrutura de...

18

Click here to load reader

Upload: dinhkhue

Post on 12-Nov-2018

213 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Estruturas de Dados · Um Tipo Abstrato de Dados (TAD) consiste em um ... determinada estrutura de dados, ... debitar (c, v)

Profº Carlos Alberto Teixeira Batista

E-mail: [email protected]

[email protected]

Estruturas de Dados

Page 2: Estruturas de Dados · Um Tipo Abstrato de Dados (TAD) consiste em um ... determinada estrutura de dados, ... debitar (c, v)

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)

Page 3: Estruturas de Dados · Um Tipo Abstrato de Dados (TAD) consiste em um ... determinada estrutura de dados, ... debitar (c, v)

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.

Page 4: Estruturas de Dados · Um Tipo Abstrato de Dados (TAD) consiste em um ... determinada estrutura de dados, ... debitar (c, v)

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.

Page 5: Estruturas de Dados · Um Tipo Abstrato de Dados (TAD) consiste em um ... determinada estrutura de dados, ... debitar (c, v)

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

Page 6: Estruturas de Dados · Um Tipo Abstrato de Dados (TAD) consiste em um ... determinada estrutura de dados, ... debitar (c, v)

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.

Page 7: Estruturas de Dados · Um Tipo Abstrato de Dados (TAD) consiste em um ... determinada estrutura de dados, ... debitar (c, v)

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.

Page 8: Estruturas de Dados · Um Tipo Abstrato de Dados (TAD) consiste em um ... determinada estrutura de dados, ... debitar (c, v)

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;

Page 9: Estruturas de Dados · Um Tipo Abstrato de Dados (TAD) consiste em um ... determinada estrutura de dados, ... debitar (c, v)

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

Page 10: Estruturas de Dados · Um Tipo Abstrato de Dados (TAD) consiste em um ... determinada estrutura de dados, ... debitar (c, v)

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;

Page 11: Estruturas de Dados · Um Tipo Abstrato de Dados (TAD) consiste em um ... determinada estrutura de dados, ... debitar (c, v)

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

Page 12: Estruturas de Dados · Um Tipo Abstrato de Dados (TAD) consiste em um ... determinada estrutura de dados, ... debitar (c, v)

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.

Page 13: Estruturas de Dados · Um Tipo Abstrato de Dados (TAD) consiste em um ... determinada estrutura de dados, ... debitar (c, v)

Tipo Abstrato de Dados

Exemplo 1: array como tipo abstrato de dados

SOLUÇÃO

Page 14: Estruturas de Dados · Um Tipo Abstrato de Dados (TAD) consiste em um ... determinada estrutura de dados, ... debitar (c, v)

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

Page 15: Estruturas de Dados · Um Tipo Abstrato de Dados (TAD) consiste em um ... determinada estrutura de dados, ... debitar (c, v)

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.

Page 16: Estruturas de Dados · Um Tipo Abstrato de Dados (TAD) consiste em um ... determinada estrutura de dados, ... debitar (c, v)

Tipo Abstrato de Dados

Exemplo 2: criando tipo abstrato de dados conta

SOLUÇÃO

Page 17: Estruturas de Dados · Um Tipo Abstrato de Dados (TAD) consiste em um ... determinada estrutura de dados, ... debitar (c, v)

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.

Page 18: Estruturas de Dados · Um Tipo Abstrato de Dados (TAD) consiste em um ... determinada estrutura de dados, ... debitar (c, v)

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.