Estrutura de dados - WordPress.comEstruturas de dados e Tipos Abstratos de Dados •Introdução...

22
Joyce França Professora de Ciência da Computação - IFNMG Estrutura de dados

Transcript of Estrutura de dados - WordPress.comEstruturas de dados e Tipos Abstratos de Dados •Introdução...

Page 1: Estrutura de dados - WordPress.comEstruturas de dados e Tipos Abstratos de Dados •Introdução Bons modelos computacionais Expressar os detalhes do problema que se deseja modelar

Joyce FrançaProfessora de Ciência da Computação - IFNMG

Estrutura de dados

Page 2: Estrutura de dados - WordPress.comEstruturas de dados e Tipos Abstratos de Dados •Introdução Bons modelos computacionais Expressar os detalhes do problema que se deseja modelar

Tipo Abstrato de Dados

• Introdução• Descrição formal da TAD• Exemplo: TAD Ponto▫ Implementação TAD Ponto

• Exercício: Racional

2

Page 3: Estrutura de dados - WordPress.comEstruturas de dados e Tipos Abstratos de Dados •Introdução Bons modelos computacionais Expressar os detalhes do problema que se deseja modelar

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

Page 4: Estrutura de dados - WordPress.comEstruturas de dados e Tipos Abstratos de Dados •Introdução Bons modelos computacionais Expressar os detalhes do problema que se deseja modelar

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

Page 5: Estrutura de dados - WordPress.comEstruturas de dados e Tipos Abstratos de Dados •Introdução Bons modelos computacionais Expressar os detalhes do problema que se deseja modelar

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

Page 6: Estrutura de dados - WordPress.comEstruturas de dados e Tipos Abstratos de Dados •Introdução Bons modelos computacionais Expressar os detalhes do problema que se deseja modelar

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)

Page 7: Estrutura de dados - WordPress.comEstruturas de dados e Tipos Abstratos de Dados •Introdução Bons modelos computacionais Expressar os detalhes do problema que se deseja modelar

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

Page 8: Estrutura de dados - WordPress.comEstruturas de dados e Tipos Abstratos de Dados •Introdução Bons modelos computacionais Expressar os detalhes do problema que se deseja modelar

Exemplo 1 - Ponto

• Ponto

8

Page 9: Estrutura de dados - WordPress.comEstruturas de dados e Tipos Abstratos de Dados •Introdução Bons modelos computacionais Expressar os detalhes do problema que se deseja modelar

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

Page 10: Estrutura de dados - WordPress.comEstruturas de dados e Tipos Abstratos de Dados •Introdução Bons modelos computacionais Expressar os detalhes do problema que se deseja modelar

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

Page 11: Estrutura de dados - WordPress.comEstruturas de dados e Tipos Abstratos de Dados •Introdução Bons modelos computacionais Expressar os detalhes do problema que se deseja modelar

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

Page 12: Estrutura de dados - WordPress.comEstruturas de dados e Tipos Abstratos de Dados •Introdução Bons modelos computacionais Expressar os detalhes do problema que se deseja modelar

Para entender melhor –linguagem C

12

Page 13: Estrutura de dados - WordPress.comEstruturas de dados e Tipos Abstratos de Dados •Introdução Bons modelos computacionais Expressar os detalhes do problema que se deseja modelar

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

Page 14: Estrutura de dados - WordPress.comEstruturas de dados e Tipos Abstratos de Dados •Introdução Bons modelos computacionais Expressar os detalhes do problema que se deseja modelar

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

Page 15: Estrutura de dados - WordPress.comEstruturas de dados e Tipos Abstratos de Dados •Introdução Bons modelos computacionais Expressar os detalhes do problema que se deseja modelar

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

Page 16: Estrutura de dados - WordPress.comEstruturas de dados e Tipos Abstratos de Dados •Introdução Bons modelos computacionais Expressar os detalhes do problema que se deseja modelar

Exercício 2 – TAD Racional

• Implementar a TAD Racional e um programa que a utilize.

16

Page 17: Estrutura de dados - WordPress.comEstruturas de dados e Tipos Abstratos de Dados •Introdução Bons modelos computacionais Expressar os detalhes do problema que se deseja modelar

Exercício2 -TAD Racional

• Introdução• Descrição formal da TAD• Exemplo2: TAD Racional

• Implementação TAD Racional - exercício

17

Page 18: Estrutura de dados - WordPress.comEstruturas de dados e Tipos Abstratos de Dados •Introdução Bons modelos computacionais Expressar os detalhes do problema que se deseja modelar

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

Page 19: Estrutura de dados - WordPress.comEstruturas de dados e Tipos Abstratos de Dados •Introdução Bons modelos computacionais Expressar os detalhes do problema que se deseja modelar

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

Page 20: Estrutura de dados - WordPress.comEstruturas de dados e Tipos Abstratos de Dados •Introdução Bons modelos computacionais Expressar os detalhes do problema que se deseja modelar

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

Page 21: Estrutura de dados - WordPress.comEstruturas de dados e Tipos Abstratos de Dados •Introdução Bons modelos computacionais Expressar os detalhes do problema que se deseja modelar

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

Page 22: Estrutura de dados - WordPress.comEstruturas de dados e Tipos Abstratos de Dados •Introdução Bons modelos computacionais Expressar os detalhes do problema que se deseja modelar

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