• Nenhum resultado encontrado

AULA 3. Conceitos de Abstração de Dados

N/A
N/A
Protected

Academic year: 2021

Share "AULA 3. Conceitos de Abstração de Dados"

Copied!
28
0
0

Texto

(1)

AULA 3

(2)

Introdução

 Conceito de abstração  Tipo Abstrato de Dados

(3)

DEFINIÇÃO DE ABSTRAÇÃO

Ato ou processo de separar qualidades ou

propriedades inatas do objeto físico as quais elas pertencem

Processo de representar um grupo de entidades

através de seus atributos comuns

Abstração é o processo de simplificar algo que

é difícil.

Ao começar a analisar um problema, não devemos

(4)

EXEMPLO DE ABSTRAÇÃO

Toda pessoa possui

 Nome

 Data de nascimento  Número de identidade

Uma pessoa em específico

 José da Silva  12/10/1950  …

(5)

EXEMPLO DE ABSTRAÇÃO

Toda variável de uma linguagem de programação

é uma abstração

Representa virtualmente um determinado objeto

que existe

Características:

Nome Valor Tipo

(6)

ABSTRAÇÕES EM PROGRAMAÇÃO

Abstração procedural

(7)

ABSTRAÇÃO PROCEDURAL

Subprogramas: abstrações de processo

Um dos conceitos mais antigos e cruciais para a

programação

Historicamente anterior à abstração de dados Permite o reaproveitamento de código já

construído (por você ou por outros programadores)

Evita repetição de código

Separa o programa em partes (blocos) que

possam ser logicamente compreendidos de forma isolada

(8)

PROCEDIMENTO EM PASCAL

Trocar dois valores inteiros

(9)

PROCEDIMENTO EM PASCAL

Trocar dois valores inteiros

Procedure Troca (Var Valor_1, Valor_2 : Integer); Var Aux : Integer;

Begin

Aux := Valor_1;

Valor_1 := Valor_2; Valor_2 := Aux;

(10)

INTERFACE DE UMA ROTINA

Nome da rotina Parâmetros  Quantidade  Ordem  Tipos Tipo do retorno Funcionalidade

(11)

ABSTRAÇÃO DE DADOS

Especificar dados sem se preocupar com sua

representação em memória

visão lógica em vez de visão física

Números inteiros, reais, etc.

Como representar um elemento pessoa?

 Nome

 Data de nascimento  Número de identidade

(12)

REGISTROS FIXOS

Objeto composto heterogêneo

Pode conter vários outros tipos associados a ele Agrupa dados pertinentes na memória

Type <NomeTipoReg> = Record

<list_identificadores_tipo_1>: tipo_1; ...

<list_identificadores_tipo_N>: tipo_N;

End;

(13)

EXEMPLO

Type TBookRec = Record

Title, Author, ISBN : String[25]; Price : Real;

End;

Var myBookRec, yourBookRec : TBookRec; Begin

myBookRec.Title := 'Some Book';

myBookRec.Author := 'Victor John Saliba'; myBookRec.ISBN := '0-12-345678-9';

myBookRec.Price := 25.5; yourBookRec = myBookRec;

(14)

REGISTROS PODEM CONTER

REGISTROS COMO CAMPO

Type TDateRec = Record

dd,mm,yy : Integer;

End;

Type TBookRec = Record

Title, Author, ISBN : String[25]; Price : Real;

DatePublication : TDateRec;

End;

Var myBookRec : TBookRec;

...

(15)

ESPAÇO EM MEMÓRIA

Registro fixo

 Soma dos tamanhos dos outros campos

E se nem todos os objetos possuem os mesmos

campos?

Title Author ISBN Price memory size

(16)

REGISTROS VARIANTES

Tamanho

 Soma das partes fixas + maior elemento da parte

variante

Type <NomeTipoReg> = Record

<list_identificadores_tipo_1>: tipo_1; ...

case <identificador_N>: tipo_N of

escalar_1: (declaração de campos 1) ...

End;

(17)

EXEMPLO

type

TipoDimensao = record

comprimento, altura, largura: real;

end;

TipoMovel = record

Dimensao : TipoDimensao;

case Tipo : (mesa,armario) of

mesa : (NoCadeiras:Integer);

armario : (NoGavetas,NoPortas: Integer);

(18)

EXEMPLO

program ProgMobilia; type

TipoDimensao = record

comprimento, altura, largura: real;

end;

TipoMovel = record

dimensao : TipoDimensao;

case Tipo : (mesa,armario) of

mesa : (NoCadeiras:Integer);

armario : (NoGavetas,NoPortas: Integer);

end; var M1,M2 : TipoMovel; begin M1.Tipo := armario; M1.NoGavetas := 5; M1.dimensao.comprimento := 2.5; end.

(19)

ESPAÇO EM MEMÓRIA

Registro variante parte fixa memory size parte variante caso escalar 1 caso escalar 2 caso escalar N

(20)

TIPOS ABSTRATOS DE DADOS (TAD)

Estruturas especificamente construídas para

armazenarem certos tipos de dados

Especificam operadores para manipular esses

dados

Combinação de objetos e as operações realizadas

sobre eles

Consiste em 2 partes

Definir API (Application Program Interface)

Definir dados e operações  Implementação

Codificação

(21)

EXEMPLO: AGENDA TELEFÔNICA

API

 Quais atributos?  Quais operações?

(22)

ATRIBUTOS

type TContato = record nome: TNome; telefone: TTel; email: TEmail; data: TData; end; TData = record dd,mm,aaaa: integer; end; TAgenda = record

contatos: array [1..MAX_CONTATOS] of TContato; numContatos: integer;

end;

TNome = string[50]; TEmail = string[30]; TTel = string[15];

(23)

OPERAÇÕES

//Insere a variavel "contato" no final do vetor "agenda" se a agenda nao estiver cheia nem houver outro contato com o mesmo nome.

//Retorna:

// OK se insercao nao falhar

// ERR_CONTATO_EXISTENTE se ja houver outro contato com o mesmo nome na agenda

// ERR_AGENDA_CHEIA se a agenda ja tiver MAX_CONTATOS contatos

//

//OBS: NAO INCLUA NENHUMA OPERACAO DE LEITURA OU ESCRITA NESTA ROTINA

function inserirContato(var agenda: TAgenda; contato:

(24)

OPERAÇÕES

//Remove da agenda o contato com nome igual a variavel "nome"

// OK se remoção nao falhar

// ERR_CONTATO_INEXISTENTE se nao houver contato com este nome na agenda

//

//OBS: NAO INCLUA NENHUMA OPERACAO DE LEITURA OU ESCRITA NESTA ROTINA

function removerContato(var agenda: TAgenda; nome:

(25)

OPERAÇÕES

//Retorna o indice no vetor do contato com mesmo nome

informado na variavel "nome" ou ERR_CONTATO_INEXISTENTE se o contato nao existir na agenda.

//

//OBS: NAO INCLUA NENHUMA OPERACAO DE LEITURA OU ESCRITA NESTA ROTINA

function buscarContato(var agenda: TAgenda; nome:

(26)

Exercício

Implementar um catálogo de computadores

 Capacidade para no máximo 100 computadores  Dados a armazenar (o aluno deve especificá-los)

Ex: Marca, processador, notebook, memória, HD, Valor etc  Operações

Inserir, remover, atualizar, buscar, imprimir dados de um

computador, imprimir dados de todos computadores, ordenar por ano de fabricação

Criar programa principal interativo com menu e opções para cada operação

(27)

API deverá ser bem documentada

 Implementar as estruturas, funções e

procedimentos de acordo com a API

 Nome de variável, rotina, parâmetros etc.

Não utilizar comando de entrada/saída (ex. read,

write) nas seguintes rotinas

 Inserir, remover, atualizar, buscar, ordenar por ano

de fabricação/modelo

Não utilizar variável global!!

Exercício

(28)

Créditos

 Parte do material foi cedido pelo Prof. Raphael

Referências

Documentos relacionados

• a) Políticas e responsabilidades, b) Interoperabilidade entre sistemas de informação, c) Boas práticas de gestão da informação/documentos de arquivo (ex.

• Acertar todas as traduções de polonês para o português (pl-pt) • Acertar todos os verbos do português para o polonês (pt-pl) • Acertar todas as terminações de

Ele fornece acesso total ao Qlik Sense, mas por um tempo limitado a 60 minutos por Login Access Pass utilizado. 1 Token = 10 Login

Processo Seletivo - MEDICINA ITUMBIARA - 2021-01.

O estudo tem como objetivo principal avaliar a relação entre o estado de saúde bucal de adolescentes de 13 a 15 anos e o senso de coerência de seus responsáveis, além

O Serviço Municipal de Proteção Civil tem em curso um projeto educativo direcionado para as escolas de todo o concelho de Santa Maria da Feira.. Intitulado “A

Distribuição - São Paulo: já foi registrada em colônias de esponjas de Ephydatia crateriformis, no sedimento do Rio Araguá (MARCUS, 1943); associada a gastrópodes da

O ponto negativo é o afastamento entre o professor e os alunos, não tendo uma relação física, mas é, ao mesmo tempo um ponto positivo, pois nos aproxima