Tipos Abstratos de Dados TADs

Documentos relacionados
INF 1007 Programação II

INF1007: Programação 2 9 Tipos Abstratos de Dados. (c) Dept. Informática - PUC-Rio 1

Métodos Computacionais. Tipos Abstratos de Dados

Tipos de Dados, Tipos Abstratos de Dados Estruturas de Dados

Aula 1 Tipo Abstrato de Dados

Introdução à orientação a objetos

struct LISTA item quant

17 - Funções e Procedimentos em C Programação Modular

LISTAS ENCADEADAS OU NÃO- SEQÜENCIAIS. Estrutura de Dados

Tipo Abstrato de Dados

INF 1620 P1-10/04/02 Questão 1 Nome:

INF 1007 Programação II

1ª versão. #include <stdio.h> #include <string.h> #include <stdlib.h> #define maxdiscos 1000

Estrutura da linguagem de programação C Prof. Tiago Eugenio de Melo tiago@comunidadesol.org

Métodos Computacionais. Fila

O que é um algoritmo? O que é um programa? Algoritmos. Programas. Aula 1 Tipo Abstrato de Dados

Exercício 1. Tabela 1: Cadastro de usuários, senhas e privilégios (exemplo). Login Senha Privilégio Armamento

INF 1007 Programação II

Programação. MEAer. Bertinho Andrade da Costa. Instituto Superior Técnico. Introdução ao Pré-Processador. 2011/2012 1º Semestre

INF PROGRAMAÇÃO II LISTA DE EXERCÍCIOS 15

CIÊNCIA DA COMPUTAÇÃO PROVA PARA TRANSFERÊNCIA

Operaçõe õ s c om o Strings Intr oduç ão a o Ponte iros o e Funçõe õ s

UNIVERSIDADE DO TOCANTINS TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PRÁTICA EM PROGRAMAÇÃO DE SISTEMAS

Algoritmos e Programação Estruturada

UNIVERSIDADE DO VALE DO RIO DOS SINOS - UNISINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS - CENTRO 06. Funções, variáveis, parâmetros formais

Estruturas (Registros)

Fundamentos de Programação

Aula 06 - Funções. O que é uma Função - Comando return - Protótipos de Funções - Tipos de Funções - Escopo de Variáveis - Passagem de parâmetros

PROGRAMAÇÃO FUNÇÕES NA LINGUAGEM C

Resumo da Introdução de Prática de Programação com C. A Linguagem C

Module Introduction. Programação. Cap. 10 Estruturas (Structs)

Conceitos de Linguagens de Programação

Esta apresentação ensinará os conceitos de Orientação a Objetos com C++, do mais básico para o mais avançado. É suposto que o aluno já tenha

Métodos Computacionais. Árvores

Estruturas de Dados Aula 9: Listas (parte 1) 05/04/2011

INF 1005 Programação I

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br

PROGRAMAÇÃO INSTRUÇÕES DA LINGUAGEM C

Aula 3 Alocação Dinâmica

Arquivos. Estruturas de Dados II Vanessa Braganholo

Curso de Linguagem C

INF PROGRAMAÇÃO II LISTA DE EXERCÍCIOS 4

Conteúdo programático

MC-102 Aula 19 Registros

Método de ordenação - objetivos:

Curso de C. Procedimentos e Funções. 6/4/200901/04/09 09:42 Copyright@Arnaldo V Moura, Daniel F Ferber 1

Algoritmo para converter uma temperatura em Fahrenheit para Celsius

Universidade Federal de Uberlândia Faculdade de Computação. A Linguagem C

Funções e Estrutura de Blocos

Figura 13.1: Um exemplo de árvore de diretório.

Module Introduction. Programação. Cap. 4 Algoritmos e Programação Estruturada

Tipos de Dados Simples

Para entender o conceito de objetos em programação devemos fazer uma analogia com o mundo real:

Capítulo 2: Introdução à Linguagem C

Edwar Saliba Júnior. Dicas, Comandos e Exemplos Comparativos entre Linguagem Algorítmica e Linguagem C

Programação Estruturada I

2. OPERADORES ALGORITMOS, FLUXOGRAMAS E PROGRAMAS FUNÇÕES... 10

Estruturas de Dados Aula 11: TAD Pilha 09/05/2011

Análise e Projeto Orientado a Objetos. Nazareno Andrade Baseado no material dos profs. Hyggo Almeida e Jacques Sauvé

Elementos de programação em C

Árvores. ! utilizada em muitas aplicações. ! modela uma hierarquia entre elementos. ! O conceito de árvores está diretamente ligado à recursão

INF 1007 Programação II

PROVA P2 INF /10/2014 Programação II

Trabalho 3: Agenda de Tarefas

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA INFORMÁTICA APLICADA

INF 1010 Estruturas de Dados Avançadas

UFSM Introdução ao Dev-C++ Profa. Patrícia Pitthan. Introdução ao Dev-C++

Linguagem C Funções definidas pelo usuário. Lógica de Programação

INF1007: Programação 2 10 Árvores Binárias. (c) Dept. Informática - PUC-Rio 1

9. Estruturas em C Registros

Curso C: Ponteiros e Arrays

POO Programação Orientada a Objetos. Classes em Java

Análise de Sistemas 3º Bimestre (material 2)

14. Arquivos. W. Celes e J. L. Rangel. Estruturas de Dados PUC-Rio 13-1

INTRODUÇÃO À PROGRAMAÇÃO II VARIÁVEIS COMPOSTAS HOMOGÊNEAS UNIDIMENSIONAIS

Algoritmo e Técnica de Programação - Linguagem C

Alocação dinâmica de memória

INTRODUÇÃO À LINGUAGEM PASCAL PREFÁCIO

Orientação a Objetos

Estrutura, União e Enumeração em C

2ª Lista de Exercícios

Analise o código abaixo:

Q1 Q2 Q3 Nota. Departamento de Informática - PUC-Rio INF 1005 Programação I P2 20/10/2010. Aluno: Exemplo (apenas um exemplo!):

ESTRUTURAS DE DADOS I. Notas de Aula. Prof. Dr. Gilberto Nakamiti

Funções recursivas. O exemplo mais comum: int fat(int n){ if(n == 0) return 1; return n*fat(n-1); }

1.2 OPERAÇÕES BÁSICAS EM ALGORITMOS E PROGRAMAS 18

CONTEÚDOS PROGRAMÁTICOS

Pesquisa Sequencial e Binária

Fundamentos de Programação

10. Listas Encadeadas

CRIAÇÃO DE TABELAS NO ACCESS. Criação de Tabelas no Access

INF 1005 Programação I

Algoritmos e Programação II

PROGRAMAÇÃO FUNÇÕES NA LINGUAGEM C

Introdução a Programação. Ponteiros e Strings, Alocação Dinâmica

Linguagem C. Programação Estruturada. Fundamentos da Linguagem. Prof. Luis Nícolas de Amorim Trigo

Transcrição:

Tipos Abstratos de Dados TADs

Exemplo Folha de freqüência Disciplina: Estruturas de Dados I Semestre: 2013-2 Turmas: U Professor: Sandra matricula nome......... XXXX ZZZZ YYYY Ana Maria Pedro Operações: Insere consulta excluir altera calculamedia Programa: manipula dados a respeito dos alunos matriculados

Conceito de Abstração Representação de uma entidade onde apenas os atributos mais significativos em um dado contexto são apresentados; Permite representar uma coleção de entidades; Arma contra a complexidade em programação: permite focar nos atributos essenciais e ignorar os não essenciais

Abstração Mundo Real DADOS PROCESSOS Informações relevantes para o sistema Omissão de detalhes abstração de dados abstração de processos

Abstração de Processos Funções e procedimentos: função: abstração de um valor (expressão) Exemplo: x:= y + sqrt(z) / 3; procedimento: abstração de um comando Exemplo: ImprimeCabecalho; utilização: invocação parametrizada ou não meu programa: comando 1; comando 2; valor:= minhafuncao(10);... comando n; fim. minhafuncao(par);...comandos...

Abstração de Dados Abstraem a representação e as operações Tipos de abstração de dados: Tipos de dados primitivos Tipos de dados estruturados Tipos abstratos de dados (TAD)

Abstração de Dados dados operações TAD

Tipos Abstratos de Dados Um TAD é uma forma de definir um novo tipo de dado juntamente com as operações que manipulam esse novo tipo de dado

Tipos Abstratos de Dados Um tipo abstrato de dados (em LP) é um tipo de dado que satisfaz as condições: A representação ou a definição do tipo e as operações sobre variáveis desse tipo estão contidas numa única unidade sintática MÓDULO A representação interna do tipo (a implementação) não é visível de outras unidades sintáticas, de modo que só as operações oferecidas na definição do tipo podem ser usadas com as variáveis desse tipo

Para que servem? Esquecer a forma de implementação (tipo concreto) Separar o código da aplicação do código da implementação Vantagens: usar o mesmo tipo em diversas aplicações pode-se alterar o tipo concreto usado sem alterar a aplicação REUTILIZAÇÃO

Exemplo - Representar um Ponto y x

Exemplo - Representar um Ponto y Modelo Par ordenado (x,y) Dados representando o modelo Coordenada X Coordenada Y x

Exemplo - Representar um Ponto y x Operações: cria: operação que cria um ponto, alocando memória para as coordenadas x e y; libera: operação que libera a memória alocada por um ponto; acessa: operação que devolve as coordenadas de um ponto; atribui: operação que atribui novos valores às coordenadas de um ponto; distancia: operação que calcula a distância entre dois pontos.

Exemplo - Representar um Ponto y x Operações: cria (x,y) libera (ponto P) acessa (ponto P) atribui (ponto P, x,y) distancia (ponto P1, ponto P2)

TADs: propriedades Satisfazem as propriedades de - encapsulamento: definição isolada de outras unidades do programa - invisibilidade e proteção: representação do tipo deve ser acessada somente no ambiente encapsulado A LP deve possibilitar ambiente encapsulado proteção de dados interface para acesso operações básicas dados operações

Vantagens proteção de dados Código do cliente do TAD não depende da implementação A representação do tipo pode ser alterada sem ser necessário notificar o cliente Segurança: clientes não podem alterar a representação clientes não podem tornar os dados inconsistentes cliente cliente cliente usa TAD

Implementação em C

Exemplo - Representar um Ponto y Modelo Par ordenado (x,y) Dados representando o modelo Coordenada X Coordenada Y x

Exemplo - Representar um Ponto y x Operações: cria: operação que cria um ponto, alocando memória para as coordenadas x e y; libera: operação que libera a memória alocada por um ponto; acessa: operação que devolve as coordenadas de um ponto; atribui: operação que atribui novos valores às coordenadas de um ponto; distancia: operação que calcula a distância entre dois pontos.

Exemplo - Representar um Ponto y x Operações: cria (x,y) libera (ponto P) acessa (ponto P) atribui (ponto P, x,y) distancia (ponto P1, ponto P2)

TAD em C Interface (PROTÓTIPO) # include arquivo.h -> TAD usuários # include <arquivo.h> -> TAD linguagem C Programa.c Código fonte

Exemplo - Implementação C /* TAD: Ponto (x,y) */ /* Tipo exportado */ typedef struct ponto Ponto; /* Funções Exportadas */ /* Cria coordenada */ Ponto* pto_cria (float x, float y); /* Libera ponto */ void pto_libera(ponto* p); ponto.h Interface, chamada protótipo /* Acessa ponto */ void pto_acessa(ponto* p, float* x, float* y); /* Atribui */ void pto_atribui(ponto* p, float x, float y); /* Distância */ float pto_distancia(ponto* p1, Ponto* p2);

Exemplo - Implementação C # include <stdio.h> # include <stdlib.h> # include ponto.h struct ponto { float x; float y; }; Ponto* pto_cria (float x, float y) { Ponto* p = (Ponto*) malloc(sizeof(ponto)); if (p == NULL) printf( Memória Insuficiente!\n ); else{ p->x = x; p->y = y; return p; } } ponto.c Implementação da Interface

Exemplo - Implementação C # include <stdio.h> # include <stdlib.h> # include "ponto.h" int main (void) { Ponto* p = pto_cria(2.0, 1.0); Ponto* q = pto_cria(3.4, 2.1); float d = pto_distancia(p,q); printf( Distância entre ponto: %\n, d); pto_libera(q); pto_libera(p); system("pause"); return 0; } main.c Aplicação que usa a Interface

Bibliografia 1. Estruturas de Dados. Nina Edelweiss, Renata Galante, Editora Bookman Série de Livros Didáticos Informática UFRGS, 2009, Primeira Edição. Capítulo 2