45
Introdução Tipo Abstrato de Dados Hebert Coelho e Nádia Félix Prof. Hebert Coelho e Profa. Nádia Félix Tipo Abstrato de Dados (TAD)

Tipo Abstrato de Dados - Instituto de Informática (INF)hebert/disc/aed1/AED1_06_TAD.pdfModularização e Implementação do TAD A convenção em linguagem C é preparar dois arquivos

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Tipo Abstrato de Dados - Instituto de Informática (INF)hebert/disc/aed1/AED1_06_TAD.pdfModularização e Implementação do TAD A convenção em linguagem C é preparar dois arquivos

Introdução

Tipo Abstrato de Dados

Hebert Coelho e Nádia Félix

Prof. Hebert Coelho e Profa. Nádia Félix Tipo Abstrato de Dados (TAD)

Page 2: Tipo Abstrato de Dados - Instituto de Informática (INF)hebert/disc/aed1/AED1_06_TAD.pdfModularização e Implementação do TAD A convenção em linguagem C é preparar dois arquivos

Introdução

Quando iniciamos nossos estudos em uma linguagem deprogramação, vários conceitos são apresentados. Um dosconceitos é o de tipo de dados.

Tipo de DadosDefine um conjunto de valores (domínio) e operaçõesque uma variável pode assumir.Exemplos:

inteiro: admite valores < ? -2, -1, 0, +1, +2, ? > e suportaoperações de soma, subtração, etc.realcaractere

Prof. Hebert Coelho e Profa. Nádia Félix Tipo Abstrato de Dados (TAD)

Page 3: Tipo Abstrato de Dados - Instituto de Informática (INF)hebert/disc/aed1/AED1_06_TAD.pdfModularização e Implementação do TAD A convenção em linguagem C é preparar dois arquivos

Introdução

Tipos de Dados

Podem ser classificados em:Primitivos ou básicosEstruturadosDefinidos pelo usuário

Prof. Hebert Coelho e Profa. Nádia Félix Tipo Abstrato de Dados (TAD)

Page 4: Tipo Abstrato de Dados - Instituto de Informática (INF)hebert/disc/aed1/AED1_06_TAD.pdfModularização e Implementação do TAD A convenção em linguagem C é preparar dois arquivos

Introdução

Tipos de dados Primitivos ou básicos

Prof. Hebert Coelho e Profa. Nádia Félix Tipo Abstrato de Dados (TAD)

Page 5: Tipo Abstrato de Dados - Instituto de Informática (INF)hebert/disc/aed1/AED1_06_TAD.pdfModularização e Implementação do TAD A convenção em linguagem C é preparar dois arquivos

Introdução

Tipos de dados estruturados (construídos)

Uma estrutura de dados é uma forma de armazenar eorganizar os dados de modo que eles possam ser usadosde forma eficiente.

Consiste em:um conjunto de tipos de dados;Definição de operações que podem ser realizadas sobreeste conjunto de dados.

Exemplos:arranjos (vetores e matrizes);estruturas (struct);referências (ponteiros).

Prof. Hebert Coelho e Profa. Nádia Félix Tipo Abstrato de Dados (TAD)

Page 6: Tipo Abstrato de Dados - Instituto de Informática (INF)hebert/disc/aed1/AED1_06_TAD.pdfModularização e Implementação do TAD A convenção em linguagem C é preparar dois arquivos

Introdução

Tipos de dados estruturados (construídos)

Uma estrutura de dados é uma forma de armazenar eorganizar os dados de modo que eles possam ser usadosde forma eficiente.Consiste em:

um conjunto de tipos de dados;Definição de operações que podem ser realizadas sobreeste conjunto de dados.

Exemplos:arranjos (vetores e matrizes);estruturas (struct);referências (ponteiros).

Prof. Hebert Coelho e Profa. Nádia Félix Tipo Abstrato de Dados (TAD)

Page 7: Tipo Abstrato de Dados - Instituto de Informática (INF)hebert/disc/aed1/AED1_06_TAD.pdfModularização e Implementação do TAD A convenção em linguagem C é preparar dois arquivos

Introdução

Tipos de dados estruturados (construídos)

Uma estrutura de dados é uma forma de armazenar eorganizar os dados de modo que eles possam ser usadosde forma eficiente.Consiste em:

um conjunto de tipos de dados;Definição de operações que podem ser realizadas sobreeste conjunto de dados.

Exemplos:arranjos (vetores e matrizes);estruturas (struct);referências (ponteiros).

Prof. Hebert Coelho e Profa. Nádia Félix Tipo Abstrato de Dados (TAD)

Page 8: Tipo Abstrato de Dados - Instituto de Informática (INF)hebert/disc/aed1/AED1_06_TAD.pdfModularização e Implementação do TAD A convenção em linguagem C é preparar dois arquivos

Introdução

Tipos definidos pelo usuário

Muitas vezes, os tipos de dados e as estruturas de dadospresentes na linguagem podem não ser suficientes paranossa aplicação.

Podemos necessitar de uma melhor estruturação dosdados, assim como especificar quais operações estarãodisponíveis para manipular esses dados.Assim convém criar um tipo abstrato de dado, tambémconhecido como TAD.

Prof. Hebert Coelho e Profa. Nádia Félix Tipo Abstrato de Dados (TAD)

Page 9: Tipo Abstrato de Dados - Instituto de Informática (INF)hebert/disc/aed1/AED1_06_TAD.pdfModularização e Implementação do TAD A convenção em linguagem C é preparar dois arquivos

Introdução

Tipos definidos pelo usuário

Muitas vezes, os tipos de dados e as estruturas de dadospresentes na linguagem podem não ser suficientes paranossa aplicação.Podemos necessitar de uma melhor estruturação dosdados, assim como especificar quais operações estarãodisponíveis para manipular esses dados.

Assim convém criar um tipo abstrato de dado, tambémconhecido como TAD.

Prof. Hebert Coelho e Profa. Nádia Félix Tipo Abstrato de Dados (TAD)

Page 10: Tipo Abstrato de Dados - Instituto de Informática (INF)hebert/disc/aed1/AED1_06_TAD.pdfModularização e Implementação do TAD A convenção em linguagem C é preparar dois arquivos

Introdução

Tipos definidos pelo usuário

Muitas vezes, os tipos de dados e as estruturas de dadospresentes na linguagem podem não ser suficientes paranossa aplicação.Podemos necessitar de uma melhor estruturação dosdados, assim como especificar quais operações estarãodisponíveis para manipular esses dados.Assim convém criar um tipo abstrato de dado, tambémconhecido como TAD.

Prof. Hebert Coelho e Profa. Nádia Félix Tipo Abstrato de Dados (TAD)

Page 11: Tipo Abstrato de Dados - Instituto de Informática (INF)hebert/disc/aed1/AED1_06_TAD.pdfModularização e Implementação do TAD A convenção em linguagem C é preparar dois arquivos

Introdução

Tipos e Estruturas de Dados

Tipos de dados básicosFornecidos pela Linguagem de Programação

Estruturas de DadosEstruturação conceitual dos dados;Reflete um relacionamento lógico entre dados, de acordocom o problema considerado.

Prof. Hebert Coelho e Profa. Nádia Félix Tipo Abstrato de Dados (TAD)

Page 12: Tipo Abstrato de Dados - Instituto de Informática (INF)hebert/disc/aed1/AED1_06_TAD.pdfModularização e Implementação do TAD A convenção em linguagem C é preparar dois arquivos

Introdução

Tipos e Estruturas de Dados

Um TAD é uma forma de definir um novo tipo de dadojuntamente com as operações que manipulam esse novo tipode dado.

Prof. Hebert Coelho e Profa. Nádia Félix Tipo Abstrato de Dados (TAD)

Page 13: Tipo Abstrato de Dados - Instituto de Informática (INF)hebert/disc/aed1/AED1_06_TAD.pdfModularização e Implementação do TAD A convenção em linguagem C é preparar dois arquivos

Introdução

TAD

TADSeparação entre conceito (definição do tipo) eimplementação das operações;Visibilidade da estrutura interna do tipo fica limitada àsoperações;Aplicações que usam o TAD são denominadas clientes dotipo de dado;Cliente tem acesso somente à forma abstrata do TAD.

Prof. Hebert Coelho e Profa. Nádia Félix Tipo Abstrato de Dados (TAD)

Page 14: Tipo Abstrato de Dados - Instituto de Informática (INF)hebert/disc/aed1/AED1_06_TAD.pdfModularização e Implementação do TAD A convenção em linguagem C é preparar dois arquivos

Introdução

TAD

TADSeparação entre conceito (definição do tipo) eimplementação das operações;Visibilidade da estrutura interna do tipo fica limitada àsoperações;Aplicações que usam o TAD são denominadas clientes dotipo de dado;Cliente tem acesso somente à forma abstrata do TAD.

Prof. Hebert Coelho e Profa. Nádia Félix Tipo Abstrato de Dados (TAD)

Page 15: Tipo Abstrato de Dados - Instituto de Informática (INF)hebert/disc/aed1/AED1_06_TAD.pdfModularização e Implementação do TAD A convenção em linguagem C é preparar dois arquivos

Introdução

TAD

TADO TAD estabelece o conceito de tipo de dado separado dasua representação.

Prof. Hebert Coelho e Profa. Nádia Félix Tipo Abstrato de Dados (TAD)

Page 16: Tipo Abstrato de Dados - Instituto de Informática (INF)hebert/disc/aed1/AED1_06_TAD.pdfModularização e Implementação do TAD A convenção em linguagem C é preparar dois arquivos

Introdução

TAD

TADO TAD estabelece o conceito de tipo de dado separado dasua representação.Definido como um modelo matemático por meio de um par(v ,o) em que:

v é um conjunto de valoreso é um conjunto de operações sobre esses valores

Prof. Hebert Coelho e Profa. Nádia Félix Tipo Abstrato de Dados (TAD)

Page 17: Tipo Abstrato de Dados - Instituto de Informática (INF)hebert/disc/aed1/AED1_06_TAD.pdfModularização e Implementação do TAD A convenção em linguagem C é preparar dois arquivos

Introdução

TAD

TADO TAD estabelece o conceito de tipo de dado separado dasua representação.Definido como um modelo matemático por meio de um par(v ,o) em que:

v é um conjunto de valoreso é um conjunto de operações sobre esses valoresEx.: tipo real

v = <o = {+,−, ∗, /,=, <,>,<=, >=}

Prof. Hebert Coelho e Profa. Nádia Félix Tipo Abstrato de Dados (TAD)

Page 18: Tipo Abstrato de Dados - Instituto de Informática (INF)hebert/disc/aed1/AED1_06_TAD.pdfModularização e Implementação do TAD A convenção em linguagem C é preparar dois arquivos

Introdução

Vatangens do TAD

Código do cliente do TAD não depende da implementação

Prof. Hebert Coelho e Profa. Nádia Félix Tipo Abstrato de Dados (TAD)

Page 19: Tipo Abstrato de Dados - Instituto de Informática (INF)hebert/disc/aed1/AED1_06_TAD.pdfModularização e Implementação do TAD A convenção em linguagem C é preparar dois arquivos

Introdução

Vatangens do TAD

Código do cliente do TAD não depende da implementaçãoSegurança:

Prof. Hebert Coelho e Profa. Nádia Félix Tipo Abstrato de Dados (TAD)

Page 20: Tipo Abstrato de Dados - Instituto de Informática (INF)hebert/disc/aed1/AED1_06_TAD.pdfModularização e Implementação do TAD A convenção em linguagem C é preparar dois arquivos

Introdução

Vatangens do TAD

Código do cliente do TAD não depende da implementaçãoSegurança:

clientes não podem alterar a representação

Prof. Hebert Coelho e Profa. Nádia Félix Tipo Abstrato de Dados (TAD)

Page 21: Tipo Abstrato de Dados - Instituto de Informática (INF)hebert/disc/aed1/AED1_06_TAD.pdfModularização e Implementação do TAD A convenção em linguagem C é preparar dois arquivos

Introdução

Vantagens do TAD

Código do cliente do TAD não depende da implementaçãoSegurança:

clientes não podem alterar a representaçãoclientes não podem tornar os dados inconsistentes

Prof. Hebert Coelho e Profa. Nádia Félix Tipo Abstrato de Dados (TAD)

Page 22: Tipo Abstrato de Dados - Instituto de Informática (INF)hebert/disc/aed1/AED1_06_TAD.pdfModularização e Implementação do TAD A convenção em linguagem C é preparar dois arquivos

Introdução

Projeto de um TAD

Envolve a escolha de operações adequadas para umadeterminada estrutura de dados, definindo seucomportamento

Prof. Hebert Coelho e Profa. Nádia Félix Tipo Abstrato de Dados (TAD)

Page 23: Tipo Abstrato de Dados - Instituto de Informática (INF)hebert/disc/aed1/AED1_06_TAD.pdfModularização e Implementação do TAD A convenção em linguagem C é preparar dois arquivos

Introdução

Projeto de um TAD

Envolve a escolha de operações adequadas para umadeterminada estrutura de dados, definindo seucomportamentoDicas para definir um TAD:

definir pequeno número de operaçõesconjunto de operações deve ser suficiente para realizar ascomputações necessárias às aplicações que utilizarem oTADcada operação deve ter um propósito bem definido, comcomportamento constante e coerente

Prof. Hebert Coelho e Profa. Nádia Félix Tipo Abstrato de Dados (TAD)

Page 24: Tipo Abstrato de Dados - Instituto de Informática (INF)hebert/disc/aed1/AED1_06_TAD.pdfModularização e Implementação do TAD A convenção em linguagem C é preparar dois arquivos

Introdução

Exemplo de TAD:: representação de um ponto

Ponto (x,y)Coordenada xCoordenada y

Prof. Hebert Coelho e Profa. Nádia Félix Tipo Abstrato de Dados (TAD)

Page 25: Tipo Abstrato de Dados - Instituto de Informática (INF)hebert/disc/aed1/AED1_06_TAD.pdfModularização e Implementação do TAD A convenção em linguagem C é preparar dois arquivos

Introdução

Exemplo de TAD:: representação de um ponto

Ponto (x,y)Coordenada xCoordenada y

Prof. Hebert Coelho e Profa. Nádia Félix Tipo Abstrato de Dados (TAD)

Page 26: Tipo Abstrato de Dados - Instituto de Informática (INF)hebert/disc/aed1/AED1_06_TAD.pdfModularização e Implementação do TAD A convenção em linguagem C é preparar dois arquivos

Introdução

Exemplo de TAD:: representação de um ponto

Ponto (x,y)Coordenada xCoordenada y

Par (v,o):v – dupla formada por dois reais: Ponto(x,y)o – operações aplicáveis sobre o tipo Ponto

Prof. Hebert Coelho e Profa. Nádia Félix Tipo Abstrato de Dados (TAD)

Page 27: Tipo Abstrato de Dados - Instituto de Informática (INF)hebert/disc/aed1/AED1_06_TAD.pdfModularização e Implementação do TAD A convenção em linguagem C é preparar dois arquivos

Introdução

Exemplo de TAD:: representação de um ponto

Operaçõespto_cria: operação que cria um ponto, alocando memóriapara as coordenadas x e y;pto_libera : operação que libera a memória alocada por umponto;pto_acessa : operação que devolve as coordenadas de umponto;pto_atribui :operação que atribui novos valores àscoordenadas de um ponto;pto_distancia : operação que calcula a distância entre doispontos.

Prof. Hebert Coelho e Profa. Nádia Félix Tipo Abstrato de Dados (TAD)

Page 28: Tipo Abstrato de Dados - Instituto de Informática (INF)hebert/disc/aed1/AED1_06_TAD.pdfModularização e Implementação do TAD A convenção em linguagem C é preparar dois arquivos

Introdução

Modularização e Implementação do TAD

A convenção em linguagem C é preparar dois arquivospara implementar uma TAD

Prof. Hebert Coelho e Profa. Nádia Félix Tipo Abstrato de Dados (TAD)

Page 29: Tipo Abstrato de Dados - Instituto de Informática (INF)hebert/disc/aed1/AED1_06_TAD.pdfModularização e Implementação do TAD A convenção em linguagem C é preparar dois arquivos

Introdução

Modularização e Implementação do TAD

A convenção em linguagem C é preparar dois arquivospara implementar uma TADArquivo .H : protótipos das funções, tipos de ponteiro, edados globalmente acessíveis. Aqui é definida a interfacevisível pelo usuário.

Prof. Hebert Coelho e Profa. Nádia Félix Tipo Abstrato de Dados (TAD)

Page 30: Tipo Abstrato de Dados - Instituto de Informática (INF)hebert/disc/aed1/AED1_06_TAD.pdfModularização e Implementação do TAD A convenção em linguagem C é preparar dois arquivos

Introdução

Modularização e Implementação do TAD

A convenção em linguagem C é preparar dois arquivospara implementar uma TADArquivo .H : protótipos das funções, tipos de ponteiro, edados globalmente acessíveis. Aqui é definida a interfacevisível pelo usuário.Arquivo .C: declaração do tipo de dados e implementaçãodas suas funções. Aqui é definido tudo que ficará ocultodo cliente da TAD.

Prof. Hebert Coelho e Profa. Nádia Félix Tipo Abstrato de Dados (TAD)

Page 31: Tipo Abstrato de Dados - Instituto de Informática (INF)hebert/disc/aed1/AED1_06_TAD.pdfModularização e Implementação do TAD A convenção em linguagem C é preparar dois arquivos

Introdução

Modularização e Implementação do TAD

A convenção em linguagem C é preparar dois arquivospara implementar uma TADArquivo .H : protótipos das funções, tipos de ponteiro, edados globalmente acessíveis. Aqui é definida a interfacevisível pelo usuário.Arquivo .C: declaração do tipo de dados e implementaçãodas suas funções. Aqui é definido tudo que ficará ocultodo cliente da TAD.Assim separamos o “conceito” (definição do tipo) de sua“implementação”.A esse processo de separação da definição do TAD emdois arquivos damos o nome de modularização.

Prof. Hebert Coelho e Profa. Nádia Félix Tipo Abstrato de Dados (TAD)

Page 32: Tipo Abstrato de Dados - Instituto de Informática (INF)hebert/disc/aed1/AED1_06_TAD.pdfModularização e Implementação do TAD A convenção em linguagem C é preparar dois arquivos

Introdução

Interface

Eu não estou falando de Interface gráfica ok?Trata-se do Protótipo de função ou declaração de umafunção

int fac(int n);

Através da utilização de protótipos de função em arquivosde cabeçalho (normalmente, em programas escritos nalinguagem C, em arquivos com a extensão “.h”) é possívelespecificar interfaces para bibliotecas de software.Na interface também podemos especificar tipos que sãoglobais e portanto acessíveis globalmenteE também podemos especificar ponteiros

Prof. Hebert Coelho e Profa. Nádia Félix Tipo Abstrato de Dados (TAD)

Page 33: Tipo Abstrato de Dados - Instituto de Informática (INF)hebert/disc/aed1/AED1_06_TAD.pdfModularização e Implementação do TAD A convenção em linguagem C é preparar dois arquivos

Introdução

Exemplo Ponto

1 Definir o arquivo “.H”protótipos das funçõestipos de ponteirosDados globalmente acessíveisDefinir o arquivo “.C”Na condição de cliente, usar...

Prof. Hebert Coelho e Profa. Nádia Félix Tipo Abstrato de Dados (TAD)

Page 34: Tipo Abstrato de Dados - Instituto de Informática (INF)hebert/disc/aed1/AED1_06_TAD.pdfModularização e Implementação do TAD A convenção em linguagem C é preparar dois arquivos

Introdução

Arquivo Ponto.h

Prof. Hebert Coelho e Profa. Nádia Félix Tipo Abstrato de Dados (TAD)

Page 35: Tipo Abstrato de Dados - Instituto de Informática (INF)hebert/disc/aed1/AED1_06_TAD.pdfModularização e Implementação do TAD A convenção em linguagem C é preparar dois arquivos

Introdução

Arquivo Ponto.c

Prof. Hebert Coelho e Profa. Nádia Félix Tipo Abstrato de Dados (TAD)

Page 36: Tipo Abstrato de Dados - Instituto de Informática (INF)hebert/disc/aed1/AED1_06_TAD.pdfModularização e Implementação do TAD A convenção em linguagem C é preparar dois arquivos

Introdução

Continuação do Arquivo Ponto.c

Prof. Hebert Coelho e Profa. Nádia Félix Tipo Abstrato de Dados (TAD)

Page 37: Tipo Abstrato de Dados - Instituto de Informática (INF)hebert/disc/aed1/AED1_06_TAD.pdfModularização e Implementação do TAD A convenção em linguagem C é preparar dois arquivos

Introdução

Continuação do Arquivo Ponto.c

Prof. Hebert Coelho e Profa. Nádia Félix Tipo Abstrato de Dados (TAD)

Page 38: Tipo Abstrato de Dados - Instituto de Informática (INF)hebert/disc/aed1/AED1_06_TAD.pdfModularização e Implementação do TAD A convenção em linguagem C é preparar dois arquivos

Introdução

Programa Cliente ? que usa o TAD

Prof. Hebert Coelho e Profa. Nádia Félix Tipo Abstrato de Dados (TAD)

Page 39: Tipo Abstrato de Dados - Instituto de Informática (INF)hebert/disc/aed1/AED1_06_TAD.pdfModularização e Implementação do TAD A convenção em linguagem C é preparar dois arquivos

Introdução

Exercícios

Desenvolva um TAD que represente um cubo. Inclua asfunções de inicialização necessárias e as operações queretornem o tamanhos de cada lado, a sua área e o seuvolume.

Prof. Hebert Coelho e Profa. Nádia Félix Tipo Abstrato de Dados (TAD)

Page 40: Tipo Abstrato de Dados - Instituto de Informática (INF)hebert/disc/aed1/AED1_06_TAD.pdfModularização e Implementação do TAD A convenção em linguagem C é preparar dois arquivos

Introdução

Cubo.h

Prof. Hebert Coelho e Profa. Nádia Félix Tipo Abstrato de Dados (TAD)

Page 41: Tipo Abstrato de Dados - Instituto de Informática (INF)hebert/disc/aed1/AED1_06_TAD.pdfModularização e Implementação do TAD A convenção em linguagem C é preparar dois arquivos

Introdução

Cubo.c

Prof. Hebert Coelho e Profa. Nádia Félix Tipo Abstrato de Dados (TAD)

Page 42: Tipo Abstrato de Dados - Instituto de Informática (INF)hebert/disc/aed1/AED1_06_TAD.pdfModularização e Implementação do TAD A convenção em linguagem C é preparar dois arquivos

Introdução

Cubo.c - Continuação

Prof. Hebert Coelho e Profa. Nádia Félix Tipo Abstrato de Dados (TAD)

Page 43: Tipo Abstrato de Dados - Instituto de Informática (INF)hebert/disc/aed1/AED1_06_TAD.pdfModularização e Implementação do TAD A convenção em linguagem C é preparar dois arquivos

Introdução

Programa Cliente – que usa o TAD

Prof. Hebert Coelho e Profa. Nádia Félix Tipo Abstrato de Dados (TAD)

Page 44: Tipo Abstrato de Dados - Instituto de Informática (INF)hebert/disc/aed1/AED1_06_TAD.pdfModularização e Implementação do TAD A convenção em linguagem C é preparar dois arquivos

Introdução

Exercícios

Desenvolva um TAD que represente um cilindro. Inclua asfunções de inicializações necessárias e as operações queretornem a sua altura, o raio, e seu volume. Os arquivosdevem ser zipados e enviados pelo SIGAA.

Prof. Hebert Coelho e Profa. Nádia Félix Tipo Abstrato de Dados (TAD)

Page 45: Tipo Abstrato de Dados - Instituto de Informática (INF)hebert/disc/aed1/AED1_06_TAD.pdfModularização e Implementação do TAD A convenção em linguagem C é preparar dois arquivos

Introdução

Exercícios

Desenvolva um TAD que represente uma esfera. Inclua asfunções de inicializações necessárias e as operações queretornem o seu raio, a sua área e o seu volume. Osarquivos devem ser zipados e enviados pelo SIGAA.

Prof. Hebert Coelho e Profa. Nádia Félix Tipo Abstrato de Dados (TAD)