Tipos Abstratos de Dados

Documentos relacionados
Tipos Abstratos de Dados

Tipos Abstratos de Dados

BCC202 - Estrutura de Dados I

Aula 1 Tipo Abstrato de Dados

Tipo Abstrato de Dados

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

INF 1620 P2-23/10/04 Questão 1 Nome:

INF 1620 P2-14/10/05 Questão 1 Nome:

INF 1620 P4-13/12/01 Questão 1 Nome:

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

CURSO BÁSICO DE PROGRAMAÇÃO AULA 11. Revisão Aula Anterior Vetores Cadeia de Caracteres

INF 1620 P2-01/11/03 Questão 1 Nome:

A regra de acesso aos dados de uma fila é a seguinte: O primeiro elemento que entra (na fila) é o primeiro que sai (FIFO first in, first out).

Algoritmos e Programação

INF 1007 Simulado P2 Nome: Instruções

Curso Básico de Programação Aula 11. Revisão Aula Anterior Laços de Repetição While; Do-While; For.

INF 1620 P3-29/06/04 Questão 1 Nome:

TAD: Tipo Abstrato de Dados (parte 2)

TAD: Tipo Abstrato de Dados (parte 2)

Tipos Abstratos de Dados TADs

Programação de Computadores II. Cap. 9 Tipos Abstratos de Dados (TAD)

Algoritmos e Estruturas de dados

Universidade Estadual de Mato Grosso do Sul Ciência da Computação Algoritmos e Estruturas de Dados I (AED-I) Prof. Nilton

Seqüências de Caracteres

Strings. Introdução. Definição de strings. Criação/Declaração de strings. Inicialização de strings. Manipulação de strings. Exemplos.

INF 1620 P3-27/11/04 Questão 1 Nome:

CURSO BÁSICO DE PROGRAMAÇÃO AULA 15. Revisão Vetores e Matrizes Trabalho

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

Introdução a Programação. Tipos Estruturados de Dados

3. Linguagem de Programação C

Orientação a Objetos e Java

Estrutura de Dados Funções e Procedimentos

#include <stdio.h> Void main() { printf( Cheguei!\n"); } INTRODUÇÃO A LINGUAGEM C

ESTRUTURAS COMPOSTAS

Departamento de Informática - PUC-Rio INF 1007 Programação 2 P3 26/11/2010

Aula 9 Oficina de Programação Strings. Profa. Elaine Faria UFU

INF 1620 P4-27/06/02 Questão 1 Nome:

Programação: Vetores

Suponha um conjunto habitacional, com várias famílias... imagina se todas elas morassem em uma única casa?

Filas. Prof. Rui Jorge Tramontin Jr. UDESC - Rui J. Tramontin Jr. 1

Algoritmos e Programação

Listas Lineares. Livro Projeto de Algoritmos Nívio Ziviani Capítulo 3 Seção 3.1

Programação de Computadores II

SITUAÇÃO VETORES. Imagine o seguinte problema:

Classificação das linguagens de programação

Tipos abstratos de dados; pilhas e filas

ESTRUTURAS COMPOSTAS VETOR

INF 1620 P3-06/12/03 Questão 1 Nome:

Classes o Objetos. Classes, objetos, métodos e variáveis de instância

O que é um jogo digital?

Aula 27: Estruturas heterogêneas e alocação dinâmica

Caracteres, Vetores e Matrizes

Linguagem de Programação III

PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS

MC-102 Aula 21 Registros

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

Estrutura de Dados. Cadeia de Caracteres. Roberto Araujo Ago/2013

Laboratório de Introdução à Ciência da Computação I Aula de Vetores e Matrizes

FUNÇÕES EM C Material adaptado da profa Silvana Maria Affonso de Lara

Departamento de Informática - PUC-Rio INF 1007 Programação 2 P3 23/06/2010

Transcrição:

Tipos Abstratos de Dados Prof. Rui Jorge Tramontin Jr. UDESC - Rui J. Tramontin Jr. 1 Índice Introdução Definição de Tipos Abstratos de Dados Exemplos de TADs Implementação de TADs Implementação em C Exemplo de TAD em C UDESC - Rui J. Tramontin Jr. 2

Introdução Algoritmo é uma sequência de instruções que manipulam estruturas de dados Algoritmos visam resolver problemas. Logo, um algoritmo e suas estruturas de dados representam uma abstração (modelo) de uma situação real. Abstração é um conceito fundamental para solução de problemas. Suprimir detalhes irrelevantes, enfatizar os relevantes. UDESC - Rui J. Tramontin Jr. 3 Introdução Como modelar um problema? Depende da linguagem de programação utilizada. Linguagens de programação oferecem tipos predefinidos (simples ou estruturados). Exemplo: dados de um aluno (nome, curso, etc.) Variáveis simples para cada atributo: char nome[30]; char curso[20];... Tipos estruturados: struct Aluno char nome[30];...; UDESC - Rui J. Tramontin Jr. 4

Introdução Além do repertório de tipos nativos, linguagens oferecem meios para a definição de tipos abstratos. Tipos abstratos: São tipos novos criados pelo usuário. Estendem o conjunto padrão de tipos. Definem um conjunto de operações. São definidos por usuários, na biblioteca padrão ou em bibliotecas de fornecedores diversos. UDESC - Rui J. Tramontin Jr. 5 Tipo Abstrato de Dados (TAD) Definição: um TAD é definido como: Uma coleção bem definida de dados a serem armazenados (estrutura de dados), e; Um grupo de operadores que são aplicados para manipulação desses dados; Os valores armazenados devem ser manipulados EXCLUSIVAMENTE pelos operadores do TAD. UDESC - Rui J. Tramontin Jr. 6

Tipo Abstrato de Dados (TAD) A especificação de um TAD descreve: quais dados podem ser armazenados, e; o que é possível fazer com esses dados através dos operadores do TAD. O TAD não descreve como as operações serão efetivamente implementadas. Operações podem ser implementadas de diferentes maneiras. UDESC - Rui J. Tramontin Jr. 7 Tipo Abstrato de Dados (TAD) O TAD encapsula a estrutura de dados. Os usuários do TAD usam operações para manipular os dados. Usuário do TAD x Programador do TAD Usuário só enxerga a interface, não a implementação. Usuários podem abstrair a implementação específica. Modificações na implementação ficam restritas ao TAD. UDESC - Rui J. Tramontin Jr. 8

Exemplos de TADs Mundo Real Dados Operações Pessoa Fila de Espera Cadastro de Funcionários idade da pessoa nome da pessoa posição na fila nome, cargo, salario nasce (idade = 0) aniversário (idade = idade +1) entra na fila (no fim) sai da fila (o primeiro) Cadastra funcionário Exclui funcionário modifica (cargo ou salário) Conta Bancária número da conta saldo saca deposita transfere UDESC - Rui J. Tramontin Jr. 9 Exemplo de TAD: Strings em C A linguagem C não possui um tipo primitivo para representar strings. Strings em C são arrays de caracteres. Biblioteca string.h define funções para manipulação de strings: strcpy() cópia strlen() tamanho strcmp() comparação strcat() concatenação UDESC - Rui J. Tramontin Jr. 10

Exemplo de TAD: listas Um TAD lista oferece as seguintes operações: Cria lista vazia; Insere número no fim da lista; Remove de uma posição i. Operações são independentes da implementação: Arrays; Listas encadeadas. int main() Lista lista; int x = 20; crialistavazia(lista); insere(x, lista);... UDESC - Rui J. Tramontin Jr. 11 Implementação de TADs Em linguagens orientadas a objetos (C++, Java) Implementação é feita através de classes; Em linguagens estruturadas (C, Pascal) Implementação é feita pela definição de tipos e implementação de funções; Foco da disciplina é linguagem C: Tipos de dados definidos por typedef e structs; Funções de manipulação desses tipos de dados; Ambos são agupados em módulos (arquivos.h e.c ). UDESC - Rui J. Tramontin Jr. 12

TADs em C: tipos de dados Novos tipos de dados são definidos usando o comando typedef: typedef struct char nome[100]; int matricula; char conceito; TipoAluno; typedef int[10] Vetor; int main() TipoAluno aluno; Vetor v; aluno.nome = João ;... UDESC - Rui J. Tramontin Jr. 13 TADs em C: funções Além da definição de tipos, um TAD precisa de um conjuntos de que agem sobre tais tipos. Essas operações são implementadas na forma de funções. Como boa regra de programação, evita-se acessar os dados diretamente, fazendo o acesso só através das funções. Em C, não há uma forma de proibir o acesso direto! UDESC - Rui J. Tramontin Jr. 14

TADs em C: módulos Uma boa técnica de programação é implementar os TADs em arquivos separados do programa principal. Para isso geralmente separa-se a declaração e a implementação do TAD em dois arquivos: NomeDoTAD.h : com a declaração do TAD (interface); NomeDoTAD.c : com a implementação. O programa ou outros TADs que utilizam o seu TAD devem dar um #include no arquivo.h. UDESC - Rui J. Tramontin Jr. 15 Exemplo de TAD em C Modelo de uma conta bancária. O TAD se chama ContaBancaria, com os campos número e saldo. Clientes podem fazer as seguintes operações: Iniciar uma conta com um número e saldo inicial; Depositar um valor; Sacar um valor; Imprimir o saldo. UDESC - Rui J. Tramontin Jr. 16

ContaBancaria.h // definição do tipo typedef struct int numero; double saldo; ContaBancaria; // cabeçalho das funções void inicializa(contabancaria* conta, int numero, double saldo); void deposito(contabancaria* conta, double valor); void saque(contabancaria* conta, double valor); void imprime(contabancaria conta); UDESC - Rui J. Tramontin Jr. 17 ContaBancaria.c #include <stdio.h> #include "Contabancaria.h" void inicializa(contabancaria* conta, int numero, double saldo) conta->numero = numero; conta->saldo = saldo; void deposito(contabancaria* conta, double valor) conta->saldo += valor; void saque(contabancaria* conta, double valor) conta->saldo -= valor; void imprime(contabancaria conta) printf("numero: %d\n", conta.numero); printf("saldo: %f\n", conta.saldo); UDESC - Rui J. Tramontin Jr. 18

Main.c #include <stdio.h> #include <stdlib.h> #include "ContaBancaria.h" int main (int argc, char **argv) ContaBancaria conta; inicializa(&conta, 918556, 300.00); printf("\nantes da movimentacao:\n "); imprime(conta); deposito(&conta, 50.00); saque(&conta, 70.00); printf("\ndepois da movimentacao:\n "); imprime(conta); UDESC - Rui J. Tramontin Jr. 19 Exercício Faça um TAD que represente um aluno. O tipo de dados deverá armazenar o nome, curso, fase, um vetor de notas e a quantidade de notas. O TAD deve possuir funções para: Inicializar dados do aluno: recebe como parâmetros uma variável do tipo Aluno (por referência), o nome, curso e fase do aluno, e define a quantidade de notas = 0; Adicionar uma nota: coloca a nota (passada de parâmetro) no vetor (na posição definida pelo campo quantidade ), e incrementa a quantidade; Calcular a média: retorna a média do aluno, com base nas suas notas. Imprimir dados do aluno. UDESC - Rui J. Tramontin Jr. 20