Você está na página 1de 18

TIPOS ABSTRATOS DE

DADOS
Dilvan Moreira, parcialmente baseado em
material do prof. Ricardo Campello
Tipos de Dados
Conjunto de valores que podem ser
assumidos por uma varivel ou expresso,
atribudos a uma constante, retornados por
uma chamada, etc, em uma dada linguagem
de programao

Tipos de Dados
Tipos primitivos
Tambm denominados simples ou bsicos,
representam valores indivisveis, como int, float,
char, ... em C
Tipos compostos
So colees ou agregados de tipos (simples ou
compostos) possivelmente diferentes, como
arranjos, strings e dados estruturados:
Por exemplo: struct em C, record em Pascal,
object em C++
Tipos de Dados: Pontos de
vista
Do computador
Tipos de dados so vistos como mtodos para
interpretar o contedo da memria do
computador
como interpretar os bits/bytes
Dos programadores:
O que desejam fazer p. ex., somar dois inteiros
O programador se importa mais com o conceito
matemtico de inteiro do que com a
representao no hardware
Um tipo inteiro suportacertas operaes...
Tipos Abstratos de Dados
(TAD)
Um TAD:
Descrio de alto nvel que especifica quais
operaes so suportadas por uma estrutura de
dados
Mas que no fornece detalhes de como so
realizadas (estruturas de dados e algoritmos)
Exemplo:
TAD: Conjunto Simples
Tipos de Dados: Inteiros
Operaes: Interseo, Unio e Diferena
Implementao em diferentes linguagens:
Arquivos de Cabealho.hde C,
Interfaces Java ...
Estruturas de Dados
Colees de unidades (clulas) capazes de
suportar diferentes tipos de dados e que podem
se conectar e inter-relacionar de diferentes
formas
Arranjos e registros so exemplos de estruturas de
dados elementares
EDs so realizaes de TADs, diferindo entre si
pelas regras ou esquemas de disposio e
manipulao dos dados:
Um mesmo TAD pode ser realizado com estruturas
de dados diferentes:
fila com arranjo ou lista encadeada,
grafo com lista de arestas ou matriz de adjacncias,
etc.
Estruturas de Dados
Descrevem de forma sistemtica maneiras de
organizar, acessar e manipular dados
um nvel intermedirio de descrio entre o
TAD e a implementao concreta do cdigo
em alguma linguagem

TAD
Estrutura de Dados
Programa
Tipos Abstratos de Dados
(TAD)
estabelece o conceito de tipo de dado
divorciado da sua representao
Pode ser formalmente definido como um
modelo matemtico, por meio de um par (v,o)
em que
V um conjunto de valores
O um conjunto de operaes sobre esses
valores
x.: Nmero real
v=
o= {+, -, *, /, =, <, >, <=, >=}
Tipos Abstratos de Dados
(TAD)
Ocultamento de informao (information
hiding)
Um TAD requer que operaes sejam definidas
sobre os dados sem uma representao
especfica
Um programador que usa um tipo de dado
float, int, etc no precisa saber como tais
valores so representados internamente:
Mesmo princpio pode ser aplicado a listas,
pilhas, filas, ...
Programador pode utilizar como uma caixa
preta
apenas por meio das operaes que ela suporta
Programando com TAD
Programador descreve o TAD em dois mdulos
separados:
Interface de acesso (TAD conceitual):
apresenta as operaes e valores possveis
Implementao
contm a representao da estrutura de dados e
a implementao de cada operao
Programando com TAD
Outros programadores:
Usam a TAD por meio da interface de acesso
Sem conhecer os detalhes de representao
No acessam o mdulo de implementao
Idealmente, a implementao invisvel:
Programador usa TAD e cria uma lista de clientes
e aplica operaes sobre ela,
Sem saber como ela representada
internamente

Vantagens dos TAD
Clareza: Estrutura interna do TAD abstrada
Corretido: TAD foi testado e funciona
corretamente
Reuso: TAD pode ser usado por diferentes
programas
Manuteno:
Mudanas na implementao do TAD no afetam
o cdigo fonte dos programas que o utilizam se a
interface de acesso no mudar
decorrncia do ocultamento de informao
Implementao de TAD em C
Usando modularizao:
Interface: Arquivo de cabealhos, associado a
cada mdulo, com:
cabealhos das funes oferecidas pelo mdulo
e,
os tipos de dados que ele exporte
typedefs, structs, etc.
Tem o mesmo nome do porm com a extenso .h
Implementao
arquivo .c com os programas
Implementao de TAD em C
/* Racionais.h: Interface de TAD Nmeros Racionais */

/* Tipo Exportado */
Typedef struct{
intNum, Den;
} Racional;

/* Funes Exportadas */
Racional Define(intN, intD);
/* Gera um nmero racional a partir de dois inteiros, sendo o segundo no
nulo */

Racional Soma(Racional R1, Racional R2);
/* Soma dois nmeros racionais R1 e R2 e retorna o resultado */

Racional Multiplica(Racional R1, Racional R2);
/* Multiplica dois nmeros racionais R1 e R2 e retorna o resultado */

Int TestaIgualdade(Racional R1, Racional R2);
/* Verifica se 2 nmeros racionais R1 e R2 sao iguais */
Implementao de TAD em C
#include <stdio.h>
#include"Racionais.h"

Void main(void){
/* Teste do TAD: Exerccio... */
}

/* Soma dois nmeros racionais R1 e R2 e retorna o
resultado */
Racional Soma(Racional R1, Racional R2) {

}

Impementao do TAD em C++
TADs podem ser implementados como
classes em C++
Os conceitos de programao orientada a
objetos estendem os conceitos de TAD
Checando
Escrever um programa C que executa
operaes sobre nmeros racionais,
utilizando o TAD definido em aula
Perguntas?

Você também pode gostar