Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
Joyce FrançaProfessora de Ciência da Computação - IFNMG
Estrutura de dados
Tipo Abstrato de Dados
• Introdução• Descrição formal da TAD• Exemplo: TAD Ponto▫ Implementação TAD Ponto
• Exercício: Racional
2
Estruturas de dados e Tipos Abstratos de Dados
• Introdução▫ Bons modelos computacionais� Expressar os detalhes do problema que se deseja
modelar através de uma estrutura de dados adequado
� Desenvolver algoritmo adequado que atue sobre essa estrutura .
� Programas = Estrutura de dados + Algoritmo
09/10/2018
3
Estruturas de dados e Tipos Abstratos de Dados
• Introdução▫ Tipos de dados� Tipos simples: valores indivisíveis• Tipos básicos: Em C:int, float, char, long int, etc...
� Tipos estruturados: definem uma coleção de tipos simples ou um agregado de tipos diferentes. Em C: vetores (int v[10]), strings (char *), estruturas/registros (struct), etc …
� Tipos Abstratos de Dados (TAD)
09/10/2018
4
TAD - Tipo Abstrato de Dado
• Importante técnica de programação baseada na definição de tipos estruturados;▫ Especificam conceitualmente os dados (sua organização
física e lógica);▫ Definem operações para manipulação da estrutura;
• TAD(v,o)▫ V = Conjunto de valores (dados)▫ O = Conjunto de operações aplicáveis sobre os valores
5
TAD - Tipo Abstrato de Dado
6
Programausuário
Descrição- valores- operações
E. D.
Operações
TAD
Escondido
Dados
(valores dos campos das estruturas)
Dados
(resultado das operações)
TAD - Tipo Abstrato de Dado
• Descrição de uma TAD – Formato específico:▫ Cabeçalho� Nome TAD� Descrição dos tipos de dados� Lista de operações (nomes)▫ Especificações das operações (para cada operação)
� Entrada: necessária para executar a operação� Pré-condição: verificar antes de executar a operação� Processo: o que deve ser executado� Saída: obtida após o processamento� Pós-condição: indica qualquer alteração que a execução da
operação causou no dado.
7
Exemplo 1 - Ponto
• Ponto
8
Exemplo 1 - Ponto
Etapa 1 – Definição Conceitual• No plano cartesiano, cada PONTO está associado a um par
ordenado, onde o primeiro e segundo elemento denotam respectivamente a abscissa (ou projeção do ponto no eixo horizontal) e a ordenada (ou projeção do ponto no eixo vertical).
• De que forma podemos armazenar um ponto?
typedef struct ponto {int x;int y;
} Ponto;
9
Exemplo 1 - Ponto
Etapa 2 – Definição das OperaçõesO que posso fazer com um ponto (exemplos):• Definir (criar um ponto atribuindo um valor para as
coordenadas x e y);Ponto criaPonto(int x, int y);
• Medir a distância entre dois pontos;float distancia(Ponto p1, Ponto p2);
• Responder a qual quadrante do plano um ponto faz parte;
int quadrante(Ponto p1);
10
Exemplo 1 - Ponto
Etapa 3 – Implementação e Utilização• Em linguagem C podemos implementar um TAD
separando a interface da implementação.• A interface é um arquivo “.h” que contém os
cabeçalhos (headers) ou protótipos das operações (procedimentos ou funções) que atuam sobre o TAD;• A implementação é um arquivo “.c” que implementa as
operações descritas no arquivo “.h”• A utilização de um TAD não exigirá necessariamente
acesso ao código do arquivo “.c”, mas sim do arquivo “.h”
11
Para entender melhor –linguagem C
12
Para entender melhor – linguagem C
• O arquivo “.h” (ex. ponto.h) contém apenas a declaração da estrutura (struct + typedef) e as interfaces das subrotinas;
• O arquivo “.c” (de mesmo nome do arquivo “.h”) importa (include) o arquivo “.h” e implementa suas subrotinas;▫ Esse arquivo é compilado e pode ser assim
distribuído juntamente com o arquivo “.h” para ser “linkado” a um outro programa que utiliza do TAD (ex. prog_ponto.c)
13
Para entender melhor – linguagem C
gcc -c ponto.c (Compila o TAD)
gcc -c prog_ponto.c (Compila o programa que utiliza o TAD)
gcc -O prog_ponto.exe ponto.o prog_ponto.o (Realiza a “linkedição” dos códigos objeto gerando um arquivo executável)
14
Exercício – TAD Ponto
• Especifique um TAD para representar um ponto do plano cartesiano. Implemente as seguintes operações:• Criar/Inicializar um ponto;• Retornar a distância entre dois pontos;• Retornar o quadrante ao qual o ponto faz parte
no plano cartesiano;• Retornar o valor da abscissa de um ponto (x);• Retornar o valor da ordenada de um ponto (y).
15
Exercício 2 – TAD Racional
• Implementar a TAD Racional e um programa que a utilize.
16
Exercício2 -TAD Racional
• Introdução• Descrição formal da TAD• Exemplo2: TAD Racional
• Implementação TAD Racional - exercício
17
Exercício2 -TAD Racional
• Racionais: expressa números como quociente de 2 inteiros. Exemplo: 1/2, 3/4, etc▫ Serão consideradas as operações multiplicação e
soma.
09/10/2018
18
Exercício2 -TAD Racional
• Descrição formal da TAD▫ Nome: número_racional▫ Dados: considere de 2 números inteiros, o
primeiro o numerador e o segundo denominador▫ Lista de equações: multiplica_rac, soma_rac
09/10/2018
19
Exercício2 -TAD Racional
• Operações▫ Multiplica_rac� Entrada: 2 números racionais, sendo que cada um é
representado por um par de inteiros (n1/d1, n2/d2)� Pré-condição: d1 e d2 devem ser diferentes de zero� Processo: calcular a multiplicação dos 2 números
racionais dado por: nr=n1*n2 e dr=d1*d2� Saída: se a pré-condição for atendida, retorna o
resultado da multiplicação (nr/dr). Caso contrário retorna 0/0.
� Pós-condição: nenhuma
09/10/2018
20
Exercício2 -TAD Racional
• Operações▫ Soma_rac� Entrada: 2 números racionais, sendo que cada um é
representado por um par de inteiros (n1/d1, n2/d2)� Pré-condição: d1 e d2 devem ser diferentes de zero� Processo: calcular a soma dos 2 números racionais dado
por: nr=n1*d2 + n2*d1 e dr=d1*d2� Saída: se a pré-condição for atendida, retorna o
resultado da soma (nr/dr). Caso contrário retorna 0/0.� Pós-condição: nenhuma
09/10/2018
21
Exercício2 -TAD Racional
• Implementação de uma TAD▫ A TAD e o programa principal que manipula a TAD
devem ser implementados em módulos separados em C:� Pelo menos um arquivo aplicação. Ex. principal.c� 1 arquivo com a implementação da TAD (estrutura e
funções). Ex. racional.c� 1 arquivo cabeçalho com as declarações de tipo e os
protótipos das funções. Ex. racional.h
09/10/2018
22