TAD: Tipo Abstrato de Dados (parte 1)

Documentos relacionados
TAD: Tipo Abstrato de Dados (parte 1)

SCC-202 Algoritmos e Estruturas de Dados I. Profa. Graça Nunes 2º. Semestre 2010

Motivação. Estrutura de Dados. Motivação. Motivação. Por que estudar os tipos de dados? Duas são as principais preocupações em um projeto de software

Slide 01 16/03/2017. Estruturas de Dados. Prof. Cleziel Franzoni da /Cleziel.

TAD: Tipo Abstrato de Dados (parte 2)

Variação de implementação. Variação de implementação (2) Variação de implementação (3)

Estrutura de Dados Conceitos Iniciais

ALGORITMOS E ESTRUTURA DE DADOS

SCC Algoritmos e Estruturas de Dados I

TAD: Tipo Abstrato de Dados (parte 2)

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE DEPARTAMENTO DE INFORMÁTICA E MATEMÁTICA APLICADA. DIM0320 Algoritmos e Programação de Computadores

Estruturas de Dados Aula 8: Tipos Abstratos de Dados 30/03/2011

ANHANGUERA ESTRUTURA DE DADOS AULA 02 O QUE É ESTRUTURA DE DADOS? Prof. Thomás da Costa

Aula 03 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

Programação II. Aula 3

Revisão. Profa Marina Gomes

Aula 06 Introdução à Programação Matrizes

Carlos Eduardo Batista. Centro de Informática - UFPB

Unidade: Introdução à POO (Programação Orientada a Objetos)

LÓGICA DE PROGRAMAÇÃO. Algoritmos Computacionais. Sérgio Carlos Portari Júnior

Arquitetura Von Neumann Dados e instruções são obtidos da mesma forma, simplificando o desenho do microprocessador;

PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS

Aula 4: Introdução à Linguagem C++

Introdução a Linguagem C. Prof. Me. Hélio Esperidião

Introdução e Conceitos

22/08/2011. Fila. SCC0202 Algoritmos e Estruturas de Dados I. Prof. Thiago A. S. Pardo. Fila. O que é? Para que serve?

Algoritmos. Conceitos e Comandos

Disciplina de Algoritmos e Programação

Aula 1 Conceitos Básicos

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

Programação I A Linguagem C. Prof. Carlos Alberto

Linguagem de Programação I Prof. Tiago Eugenio de Melo.

Algoritmos. Algoritmos e Linguagem de Programação - Prof Carlos Vetorazzi

Listas generalizadas. SCC-202 Algoritmos e Estruturas de Dados I

Estruturas de Dados. Prof.: Carlos Alberto Página da Disciplina:

Introdução aos Algoritmos

1 TECNOLOGIA ELEMENTAR CAPÍTULO 3 E-books PCNA. Vol. 1 TECNOLOGIA ELEMENTAR CAPÍTULO 3 APRESENTANDO A LINGUAGEM C. Página 1

PORTAS E OPERAÇÕES LÓGICAS

Introdução aos Algoritmos

Algoritmos, Estruturas de Dados e Tipos Abstratos de Dados (TADs)

Aula 10: Introdução a Vetores e Matrizes

AULA 3. Conceitos de Abstração de Dados

Ederson Luiz da Silva Ciência da Computação. Algoritmos e Programação

LINGUAGEM C: PONTEIROS

08/05/2012. Tipos de dados. Tipos de dados. Elementos Básicos. Tipos de dados. Elementos Básicos Tipos de dados. Dados e seus tipos:

Banco de Dados? Banco de Dados Professor Vanderlei Frazão

Fila. SCC0502 Algoritmos e Estruturas de Dados I. Prof. Thiago A. S. Pardo

Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica.

Conceitos Básicos Linguagem C

O que é um jogo digital?

ESTRUTURA DE DADOS LISTAS LINEARES

Olá pessoal, Hoje vamos entender os conceitos sobre linguagem de programação. Definição, tipos de linguagens e as linguagens mais utilizadas

Programação: Vetores

Java Variáveis e Controle Fluxo

Web site. Profa. Patrícia Dockhorn Costa.

Resposta dos Exercícios para Fixar

Algoritmo e Programação Matemática

Introdução à Programação. Introdução a Linguagem C. Prof. José Honorato F. Nunes

Fila. SCC-202 Algoritmos e Estruturas de Dados I. Lucas Antiqueira

Unidade Acadêmica: Faculdade de Computação FACOM Disciplina: Programação Orientada a Objetos I Professor: Fabiano Azevedo Dorça Prática 01

Introdução a Programação de Jogos

Tipos Abstratos de Dados

Introdução a Programação

Lista: conceito, representação e algoritmos

FACULDADE BATISTA MINEIRA - CST Banco de Dados Estruturas de Dados - Variáveis

ESTRUTURA DE DADOS VETORES E LISTAS LINEARES

Técnicas de Programação

Lista: conceito, representação e algoritmos

Algoritmos, Estruturas de Dados e Tipos Abstratos de Dados (TADs)

Estrutura de Dados (DPADF 0056)

Pseudocódigo e Visualg

Linguagem Computacional

Algoritmos II prof. Daniel Oliveira

Introdução à Ciência da Computação

AULA 02 DADOS PRIMITIVOS E EXERCÍCIOS

A figura abaixo representa uma classe denominada Carteira. Esta classe é composta dos métodos depositar(valor) e retirar(valor) e do atributo saldo.

Lógica de Programação, Algoritmos e Estruturas de Dados

Estruturas de Dados. Profº Carlos Alberto Teixeira Batista

Linguagem de Programação

Estruturas de Dados Aula 1: Introdução e conceitos básicos 28/02/2011

Análise e Técnicas de Algoritmos

Algoritmos II Aula 2 Vetores

I - CONCEITOS INICIAIS

Conhecendo a Linguagem de Programação C

Fundamentos de Programação

Computação Eletrônica. Vetores e Matrizes. Prof: Luciano Barbosa. CIn.ufpe.br

Algoritmos e Estrutura de Dados I Conceitos de Algoritmos. Prof. Elyssandro Piffer

ALGORITMOS. Professor: Diego Oliveira. Aula 06 - Tipos Primitivos de Dados

Modularização. Prof. Antonio Almeida de Barros Junior

Introdução à Programação Estruturada Parte 2. Material da Prof. Ana Eliza

Algoritmos e Estruturas de Dados I (DCC/003) 2013/1. Estruturas Básicas. Aula Tópico 4

Pascal. -Cabeçalho do programa. - label - const - type - var - procedure - function. - integer - real - byte - boolean - char - string

Introdução. Por que desenvolver ALGORITMO?

Aplicações de listas Outras estruturas

Programação Orientada a Objetos JAVA - NETBEANS

Prof. Jesus José de Oliveira Neto

Linguagem de Programação

Fluxogramas e variáveis

Transcrição:

TAD: Tipo Abstrato de Dados (parte 1) SCC0502 Algoritmos e Estruturas de Dados I Prof. Thiago A. S. Pardo

TADs e termos relacionados Termos relacionados, mas diferentes Tipo de dados Tipo abstrato de dados Estrutura de dados 2

Tipo de dados Em linguagens de programação, o tipo de uma variável define o conjunto de valores que ela pode assumir e como ela pode ser manipulada Uma variável inteira pode receber números inteiros e ser submetida a operações aritméticas, por exemplo Uma variável booleana pode ser true ou false, sendo que operações de AND, OR e NOT podem ser aplicadas sobre ela Novos tipos de dados podem ser definidos em função dos existentes 3

Tipo de dados Por exemplo, a declaração de uma variável especifica Quantidade de bytes que deve ser reservada a ela Variação entre linguagens Como é em C? Como o dado representado por esses bytes deve ser interpretado É inteiro ou real? 4

Tipo de dados Por exemplo, a declaração de uma variável especifica Quantidade de bytes que deve ser reservada a ela Variação entre linguagens char - 1 byte; integer - 2 bytes; float - 4 bytes; etc. Como o dado representado por esses bytes deve ser interpretado É inteiro ou real? 5

Tipo de dados Perspectivas Computador: formas de se interpretar o conteúdo da memória Usuário: o que pode ser feito em uma linguagem, sem se importar como isso é feito em baixo nível Conceito Também sentem isso? 6

Problema Você foi contratado para implementar um sistema de cálculos matemáticos que trabalha com números racionais 7

Problema Você foi contratado para implementar um sistema de cálculos matemáticos que trabalha com números racionais 8

Problema Como definir um número racional? 9

Problema Como definir um número racional? Possivelmente como 2 inteiros, um para o numerador e outro para o denominador Um vetor de 2 elementos inteiros, cujo primeiro poderia ser o numerador e o segundo o denominador Um registro de 2 campos inteiros: numerador e denominador Etc. 10

Variação de implementação Há diferentes implementações possíveis para o mesmo tipo de dado, podendo priorizar: Velocidade do código Eficiência em termos de espaço Clareza, etc. Todas definem o mesmo domínio e não mudam o significado das operações Para racionais, podemos: criar, somar, multiplicar, ver se são iguais, imprimir, etc. 11

Substituição das implementações As mudanças nas implementações têm grande impacto nos programas dos usuários Por exemplo Re-implementação do código Possíveis erros 12

Exemplo programa cálculos matemáticos declarar i, vetor(10 linhas, 2 colunas) inteiros declarar media real media=0 para i=1 até 10 faça ler vetor(i,1) e vetor(i,2) media=media + vetor(i,1)/vetor(i,2) media=media/10; imprimir(media); 13

Exemplo programa cálculos matemáticos declarar i, vetor(10 linhas, 2 colunas) inteiros declarar media real media=0 para i=1 até 10 faça ler vetor(i,1) e vetor(i,2) media=media + vetor(i,1)/vetor(i,2) media=media/10; imprimir(media); Qual o impacto de se alterar a forma de representar os números racionais? 14

Exemplo programa cálculos matemáticos declarar i, vetor(10 linhas, 2 colunas) inteiros declarar media real media=0 para i=1 até 10 faça ler vetor(i,1) e vetor(i,2) media=media + vetor(i,1)/vetor(i,2) media=media/10; imprimir(media); Qual o impacto de se alterar a forma de representar os números racionais? 15

Exemplo E se quisermos um programa de ensino de números racionais, para uma escola, por exemplo? Dá para reutilizar prontamente a implementação anterior? 16

Exemplo E se quisermos um programa de ensino de números racionais, para uma escola, por exemplo? Dá para reutilizar prontamente a implementação anterior? Não Qual o problema? 17

Exemplo E se decidirmos que a forma de implementar os números racionais não foi a melhor e quisermos alterar os programas que fizemos anteriormente? É prático? 18

Exemplo E se decidirmos que a forma de implementar os números racionais não foi a melhor e quisermos alterar os programas que fizemos anteriormente? É prático? Não Qual o problema? 19

Pergunta principal Como podemos modificar as implementações dos tipos com o menor impacto possível para os programas que o usam? Podemos esconder (encapsular) de quem usa o tipo de dado a forma como foi implementado? 20

Tipo abstrato de dados Tipo de dados independente da implementação Definido pelo par (v,o) v: valores, dados a serem manipulados o: operações sobre os valores/dados Coleção bem definida de dados e um grupo de operadores que podem ser aplicados em tais dados 21

Tipo abstrato de dados 22

TAD dicionário inglês-português Dados? Operações? 23

TAD dicionário inglês-português Dados Pares de palavras Operações Buscar tradução de uma palavra Inserir novo par de palavras Alterar informação 24

Tipo abstrato de dados Os dados armazenados podem ser manipulados apenas pelos operadores Ocultamento dos detalhes de representação e implementação, apenas funcionalidade é conhecida Encapsulam dados e comportamento Só se tem acesso às operações de manipulação dos dados, e não aos dados em si 25

Tipo abstrato de dados e estrutura de dados Uma vez que um TAD é definido, escolhe-se a estrutura de dados mais apropriada para representá-lo Exemplos de estruturas de dados? 26

Exemplo programa principal programa cálculos matemáticos usar TAD de números racionais declarar i inteiro declarar r(10) racional para i=1 até 10 faça ler_numeros(r,i) calcular_media(r,10) TAD de números racionais definir tipo racional vetor(2) procedimento ler_numeros procedimento calcular_media 27

Exemplo programa principal programa ensino números racionais usar TAD de números racionais declarar r racional imprimir( Agora vamos aprender ) ler_numeros(r,1) TAD de números racionais definir tipo racional vetor(2) procedimento ler_numeros procedimento calcular_media 28

Exemplo programa principal programa ensino números racionais usar TAD de números racionais declarar r racional imprimir( Agora vamos aprender ) ler_numeros(r,1) Qual o impacto de se alterar a forma de representar os números racionais? TAD de números racionais definir tipo racional vetor(2) procedimento ler_numeros procedimento calcular_media 29

Programa 1 Exemplo programa ensino números racionais usar TAD de números racionais declarar r racional imprimir( Agora vamos aprender ) ler_numeros(r,1) TAD de números racionais Programa 2 programa cálculos matemáticos usar TAD de números racionais declarar i inteiro declarar r(10) racional para i=1 até 10 faça ler_numeros(r,i) calcular_media(r,10) definir tipo racional vetor(2) procedimento ler_numeros 30

Programa 1 Exemplo programa ensino números racionais usar TAD de números racionais declarar r racional imprimir( Agora vamos aprender ) ler_numeros(r,1) TAD de números racionais Programa 2 programa cálculos matemáticos usar TAD de números racionais declarar i inteiro declarar r(10) racional para i=1 até 10 faça ler_numeros(r,i) calcular_media(r,10) definir tipo racional vetor(2) procedimento ler_numeros Como fazer isso em C? 31

32

Tipo abstrato de dados Vantagens Mais fácil programar Não é necessário se preocupar com detalhes de implementação Logicamente mais claro Mais seguro programar Apenas os operadores podem mexer nos dados Maior independência, portabilidade e facilidade de manutenção do código Maior potencial de reutilização de código Abstração Consequência: custo menor de desenvolvimento 33

Tipo abstrato de dados Em termos de implementação, sugere-se Passagem de parâmetros Um parâmetro pode especificar um objeto em particular, deixando a operação genérica Não importa se o objeto veio do programa 1 ou 2 34

Tipo abstrato de dados Em termos de implementação, sugere-se Flag para erro, sem emissão de mensagem no código principal Independência do TAD 35

Programa 1 Exemplo programa ensino números racionais usar TAD de números racionais declarar r racional imprimir( Agora vamos aprender ) ler_numeros(r,1) TAD de números racionais Programa 2 programa cálculos matemáticos usar TAD de números racionais declarar i inteiro declarar r(10) racional para i=1 até 10 faça ler_numeros(r,i) calcular_media(r,10) definir tipo racional vetor(2) procedimento ler_numeros imprimir( Aprendizado falhou! ) Qual o problema? 36

Exercício em duplas Fazer um sistema de agenda de endereços 1. Especificação do TAD Dados/informação Operações 2. Implementação Representação Código 37

Parte 1: especificação do TAD Dados: nome (string) e endereço (string) Operações de manipulação dos dados esta-na-agenda(nome) insere-na-agenda(nome,endereço) tira-da-agenda(nome) busca-o-endereço(nome) Etc. 38

Parte 2: implementação Exercício Implementação em C E/Ou implemente o TAD Racional! Se entregar a implementação (impresso) na próxima aula, ganha ponto! 39