tipos abstratos de dados dilvan moreira, parcialmente baseado em material do prof. ricardo campello

18
TIPOS ABSTRATOS DE DADOS Dilvan Moreira, parcialmente baseado em material do prof. Ricardo Campello

Upload: internet

Post on 16-Apr-2015

108 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: TIPOS ABSTRATOS DE DADOS Dilvan Moreira, parcialmente baseado em material do prof. Ricardo Campello

TIPOS ABSTRATOS DE DADOSDilvan Moreira, parcialmente baseado em material do prof. Ricardo Campello

Page 2: 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 variável ou expressão, atribuídos a uma constante, retornados por uma chamada, etc, em uma dada linguagem de programação

Page 3: TIPOS ABSTRATOS DE DADOS Dilvan Moreira, parcialmente baseado em material do prof. Ricardo Campello

Tipos de Dados

Tipos primitivos Também denominados simples ou básicos, representam valores indivisíveis, como int, float, char, ... em C

Tipos compostos São coleções 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++

Page 4: TIPOS ABSTRATOS DE DADOS Dilvan Moreira, parcialmente baseado em material do prof. Ricardo Campello

Tipos de Dados: Pontos de vista Do computador

Tipos de dados são vistos como métodos para interpretar o conteúdo da memória 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 matemático de inteiro do que com a representação no hardware

Um tipo inteiro ´suporta´certas operações...

Page 5: TIPOS ABSTRATOS DE DADOS Dilvan Moreira, parcialmente baseado em material do prof. Ricardo Campello

Tipos Abstratos de Dados (TAD) Um TAD:

Descrição de alto nível que especifica quais operações são suportadas por uma estrutura de dados

Mas que não fornece detalhes de como são realizadas (estruturas de dados e algoritmos)

Exemplo: TAD: Conjunto Simples Tipos de Dados: Inteiros Operações: Interseção, União e Diferença

Implementação em diferentes linguagens: Arquivos de Cabeçalho“.h”de C, Interfaces Java ...

Page 6: TIPOS ABSTRATOS DE DADOS Dilvan Moreira, parcialmente baseado em material do prof. Ricardo Campello

Estruturas de Dados

Coleções de unidades (células) capazes de suportar diferentes tipos de dados e que podem se conectar e inter-relacionar de diferentes formas Arranjos e registros são exemplos de estruturas de dados elementares

EDs são realizações de TADs, diferindo entre si pelas regras ou esquemas de disposição e manipulação 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 adjacências,

etc.

Page 7: TIPOS ABSTRATOS DE DADOS Dilvan Moreira, parcialmente baseado em material do prof. Ricardo Campello

Estruturas de Dados

Descrevem de forma sistemática maneiras de organizar, acessar e manipular dados

É um nível intermediário de descrição entre o TAD e a implementação concreta do código em alguma linguagem

Page 8: TIPOS ABSTRATOS DE DADOS Dilvan Moreira, parcialmente baseado em material do prof. Ricardo Campello

Tipos Abstratos de Dados (TAD) estabelece o conceito de tipo de dado divorciado da sua representação

Pode ser formalmente definido como um modelo matemático, por meio de um par (v,o) em que V é um conjunto de valores O é um conjunto de operações sobre esses valores

x.: Número real v= ℜ o= {+, -, *, /, =, <, >, <=, >=}

Page 9: TIPOS ABSTRATOS DE DADOS Dilvan Moreira, parcialmente baseado em material do prof. Ricardo Campello

Tipos Abstratos de Dados (TAD) Ocultamento de informação (information hiding) Um TAD requer que operações sejam definidas sobre os dados sem uma representação específica

Um programador que usa um tipo de dado float, int, etc não precisa saber como tais valores são representados internamente: Mesmo princípio pode ser aplicado a listas, pilhas, filas, ...

Programador pode utilizar como uma “caixa preta” apenas por meio das operações que ela suporta

Page 10: TIPOS ABSTRATOS DE DADOS Dilvan Moreira, parcialmente baseado em material do prof. Ricardo Campello

Programando com TAD

Programador descreve o TAD em dois módulos separados:

Interface de acesso (TAD conceitual): apresenta as operações e valores possíveis

Implementação contém a representação da estrutura de dados e a implementação de cada operação

Page 11: TIPOS ABSTRATOS DE DADOS Dilvan Moreira, parcialmente baseado em material do prof. Ricardo Campello

Programando com TAD

Outros programadores: Usam a TAD por meio da interface de acesso Sem conhecer os detalhes de representação

Não acessam o módulo de implementação Idealmente, a implementação é “invisível”: Programador usa TAD e cria uma lista de clientes e aplica operações sobre ela,

Sem saber como ela é representada internamente

Page 12: TIPOS ABSTRATOS DE DADOS Dilvan Moreira, parcialmente baseado em material do prof. Ricardo Campello

Vantagens dos TAD

Clareza: Estrutura interna do TAD é abstraída

Corretidão: TAD foi testado e funciona corretamente

Reuso: TAD pode ser usado por diferentes programas

Manutenção: Mudanças na implementação do TAD não afetam o código fonte dos programas que o utilizam se a interface de acesso não mudar decorrência do ocultamento de informação

Page 13: TIPOS ABSTRATOS DE DADOS Dilvan Moreira, parcialmente baseado em material do prof. Ricardo Campello

Implementação de TAD em CUsando modularização: Interface: Arquivo de cabeçalhos, associado a cada módulo, com: cabeçalhos das funções oferecidas pelo módulo e,

os tipos de dados que ele exporte typedef’s, struct’s, etc.

Tem o mesmo nome do porém com a extensão .h

Implementação arquivo .c com os programas

Page 14: TIPOS ABSTRATOS DE DADOS Dilvan Moreira, parcialmente baseado em material do prof. Ricardo Campello

Implementação de TAD em C/* Racionais.h: Interface de TAD Números Racionais */

/* Tipo Exportado */

Typedef struct{

intNum, Den;

} Racional;

/* Funções Exportadas */

Racional Define(intN, intD);

/* Gera um número racional a partir de dois inteiros, sendo o segundo não nulo */

Racional Soma(Racional R1, Racional R2);

/* Soma dois números racionais R1 e R2 e retorna o resultado */

Racional Multiplica(Racional R1, Racional R2);

/* Multiplica dois números racionais R1 e R2 e retorna o resultado */

Int TestaIgualdade(Racional R1, Racional R2);

/* Verifica se 2 números racionais R1 e R2 sao iguais */

Page 15: TIPOS ABSTRATOS DE DADOS Dilvan Moreira, parcialmente baseado em material do prof. Ricardo Campello

Implementação de TAD em C#include <stdio.h>

#include"Racionais.h"

Void main(void){

/* Teste do TAD: Exercício... */

}

/* Soma dois números racionais R1 e R2 e retorna o resultado */

Racional Soma(Racional R1, Racional R2) {

}

Page 16: TIPOS ABSTRATOS DE DADOS Dilvan Moreira, parcialmente baseado em material do prof. Ricardo Campello

Impementação do TAD em C++ TADs podem ser implementados como classes em C++

Os conceitos de programação orientada a objetos estendem os conceitos de TAD

Page 17: TIPOS ABSTRATOS DE DADOS Dilvan Moreira, parcialmente baseado em material do prof. Ricardo Campello

Checando

Escrever um programa C que executa operações sobre números racionais, utilizando o TAD definido em aula

Page 18: TIPOS ABSTRATOS DE DADOS Dilvan Moreira, parcialmente baseado em material do prof. Ricardo Campello

Perguntas?