Tipo Abstrato de Dados



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

Aula 1 Tipo Abstrato de Dados

Tipos Abstratos de Dados

Tipos Abstratos de Dados

BCC202 - Estrutura de Dados I

Tipos Abstratos de Dados

Implementando uma Classe e Criando Objetos a partir dela

Computação II Orientação a Objetos

Programação Orientada a Objeto

Introdução a Computação

Estruturas (registros)

5 Apresentando a linguagem C

Listas (Parte 2) Túlio Toffolo BCC202 Aula 10 Algoritmos e Estruturas de Dados I

Linguagem de Programação

Tipos de Dados, Tipos Abstratos de Dados Estruturas de Dados

Programação Estruturada I

Desenvolvimento OO com Java Orientação a objetos básica

Introdução ao Paradigma Orientado a Objetos. Principais conceitos

Linguagem de Programação I

Linguagem C Tipos de Dados. void; escalares; sizeof Vectores; strings em C Estruturas Introdução ao pré-processador

Convertendo Algoritmos para a Linguagem C

Orientação a Objetos com Java

Conceitos básicos da linguagem C

Analise o código abaixo:

Algoritmos e Programação

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

5 - Vetores e Matrizes Linguagem C CAPÍTULO 5 VETORES E MATRIZES

Introdução a Java. Hélder Nunes

Programação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre

Trabalho 3: Agenda de Tarefas

Métodos Computacionais. Árvores

Registros. Técnicas de Programação. Rafael Silva Guimarães

Prof. Jhonatan Fernando

Conversão de Tipos e Arrays

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

Filas: conceitos e implementações

Programação Orientada a Objetos: Lista de exercícios #1. Bruno Góis Mateus

Linguagem de Programação I. Orientação a Objetos em Java

Estrutura de Dados Básica

Definição de Programas de Computadores e Linguagem de Programação de Comutadores

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

1. Fazer um programa em C que pergunta um valor em metros e imprime o correspondente em decímetros, centímetros e milímetros.

Estruturas (Registros)

Algoritmos e Programação. Curso de Engenharia de Produção Prof. Ms. Rogério Cardoso rogerio.cardoso@aedu.com professor@rogeriocardoso.com.

Fundamentos de Programação

Este trabalho tem como objetivo praticar o uso de tipos abstratos de dados e estruturas do tipo Lista.

Plano de Aula. if(condição) { bloco de comandos; } else { bloco de comandos2; }

Estruturas de repetição (Ciclos)

Variáveis e Comandos de Atribuição

Introdução a POO. Introdução a Linguagem C++ e POO

ALGORITMOS E ESTRUTURAS DE DADOS Terceiro Trabalho Prático Recursividade e Pilhas

Algoritmos e Programação II. Sobrecarga

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

Algoritmos e Programação Estruturada

Neste artigo estudaremos os conceitos relacionados às matrizes unidimensionais (vetores) e multidimensionais.

Linguagem de Programação C

Vetores. Professor Dr Francisco Isidro Massettto

Algoritmos e Estruturas de Dados I

3. INTRODUÇÃO À LINGUAGEM C 3.1. CONCEITOS BÁSICOS. Lógica de Programação

UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO CENTRO UNIVERSITÁRIO NORTE DO ESPÍRITO SANTO

Filas. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Linguagem C: variáveis, operadores, entrada/saída. Prof. Críston Algoritmos e Programação

ITENS FUNDAMENTAIS. Profª Angélica da Silva Nunes

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

- Aulas 57, 58, 59 e 60 - Técnicas de programação. Funções

MC-102 Aula 19 Registros

Trabalho Prático 1 Revisão de Programação, Tipos Abstratos de Dados e Combinação de Alocação Estática e Dinâmica de Memória

15 a Aula Subprogramação /Subalgoritmos Função e Procedimento

GABARITO COMENTADO SISTEMAS OPERACIONAIS. PROF. Cláudio de C. Monteiro, Evanderson S. de Almeida, Vinícius de M. Rios

Influenciam nossa percepção; ajudam-nos a organizar e a coordenar a Classes estimulam projeto centrado em dados:

Métodos Computacionais. Fila

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À PROGRAMAÇÃO COM C/C++ Prof. Dr. Daniel Caetano

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

Exercícios de Revisão Java Básico

Apresentação. Rio de Janeiro, 19 de fevereiro de 2002 Waldemar Celes

insfcanceof new public switch transient while byte continue extends for int null

struct LISTA item quant

Programando em C++ Histórico da Linguagem C

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Bacharelado em Ciência e Tecnologia Processamento da Informação. Equivalência Portugol Java. Linguagem Java

Orientação a Objetos

ILP - Introdução à Linguagem de Programação. Plano de estudo: - Constantes e variáveis. - Atribuindo valores às variáveis.

Estruturas de Repetição

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 6 Filas

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

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

Princípios de programação em Linguagem C++

INF 1010 Estruturas de Dados Avançadas

/*(Atenção: Em se tratando de uma lista estaticamente alocada, temos utilizado a estratégia de passa o tamanho máximo do vetor.)*/

Curso de Linguagem C

7. Estrutura de Decisão

LÓGICA DE PROGRAMAÇÃO. PROFª. M.Sc. JULIANA H Q BENACCHIO

Algoritmos e programação

E/S CPU. Memória (Instruções e dados) 2 PARADIGMA IMPERATIVO. Instruções e dados. Resultados das operações. Unidade lógica e aritmética

Templates e Pilhas. 1. Introdução

PROF. MATEUS CONRAD BARCELLOS DA COSTA TÉCNICAS DE PROGRAMAÇÃO AVANÇADA

Análise de Programação

Transcrição:

Tipo Abstrato de Dados David Menotti Algoritmos e Estruturas de Dados II DInf - UFPR

Qual a diferença entre um algoritmo e um programa?

Algoritmos e Estruturas de Dados Algoritmo: Sequência de ações executáveis para a solução de um determinado tipo de problema Exemplo: Receita de Bolo Em geral, algoritmos trabalham sobre Estruturas de Dados Conjunto de dados que representa uma situação real Abstração da realidade Estruturas de Dados e Algoritmos estão intimamente ligados

Representação dos Dados Os dados podem estar representados (estruturados) de diferentes maneiras Normalmente, a escolha da representação é determinada pelas operações que serão utilizadas sobre eles Exemplo: números inteiros Representação por palitinhos: II + IIII = IIIIII Boa para pequenos números (operação simples) Representação decimal: 1278 + 321 = 1599 Boa para números maiores (operação complexa)

Programas Um programa é uma formulação concreta de um algoritmo abstrato, baseado em representações de dados específicas Os programas são feitos em alguma linguagem que pode ser entendida e seguida pelo computador Linguagem de máquina Linguagem de alto nível (uso de compilador) Aqui vamos utilizar a Linguagem C

Linguagem C Criada no início da década de 70 para a programação do sistema operacional Unix Uma das linguagens mais utilizadas no mundo, e serviu como base para outras como C++, C#, etc.

Exemplo #include<stdio.h> #define MAX 10 int LeInteiro() { int num; printf( Digite um numero: "); scanf("%d", &num); printf("\n"); return num; int main() { int v[10], cont, aux, i, soma; double media; cont = 0; aux = LeInteiro(); while(aux >= 0) { v[cont] = aux; aux = LeInteiro(); cont++; soma = 0; for(i=0;i<cont;i++) soma += v[i]; media = soma / (double) cont; printf("resultado: %lf\n",media);

Tipos Abstratos de Dados (TADs) Agrupa a estrutura de dados juntamente com as operações que podem ser feitas sobre esses dados O TAD encapsula a estrutura de dados. Os usuários do TAD só tem acesso a algumas operações disponibilizadas sobre esses dados Usuário do TAD x Programador do TAD Usuário só enxerga a interface, não a implementação

Tipos Abstratos de Dados (TADs) Dessa forma, o usuário pode abstrair da implementação específica. Qualquer modificação nessa implementação fica restrita ao TAD A escolha de uma representação específica é fortemente influenciada pelas operações a serem executadas

Exemplo: Lista de números inteiros Operações Faz Lista Vazia Insere número no começo da lista Remove de uma posição i Implementação por Vetores: 20 13 02 30 Programa usuário do TAD: void Insere(int x, Lista L) { for(i=0;...) {... L[0] = x; Implementação por Listas Encadeadas 20 13 02 30 void Insere(int x, Lista L) { p = CriaNovaCelula(x); L.primeiro = p;... int main() { Lista L; int x; x = 20; FazListaVazia(L); Insere(x,L);...

Implementação de TADs Em linguagens orientadas a objeto (C++, Java) a implementação é feita através de classes Em linguagens estruturadas (C, pascal) a implementação é feita pela definição de tipos juntamente com a implementação de funções Como vocês não viram o conceito de orientação a objetos*, vamos utilizar os conceitos de C (typedef e structs) Orientação a objetos (classes, etc) vai ser vista em outras disciplinas (POO)

Estruturas (Structs) em C / C++ Uma estrutura é uma coleção de uma ou mais variáveis, possivelmente de tipos diferentes, colocadas juntas sob um único nome para manipulação conveniente Por exemplo, para representar um aluno são necessárias as informações nome, matrícula, conceito Ao invés de criar três variáveis, é possível criar uma única variável contendo três campos. Em C, usa-se a construção struct para representar esse tipo de dado

Estruturas (Structs) em C #include <stdio.h> #include <string.h> struct Aluno { char nome[20]; int matricula; char conceito; ; al: Pedro 200712 A main() { struct Aluno al, aux; strcpy(al.nome, Pedro ); al.matricula = 200712; al.conceito = A ; aux = al; printf( %s,aux.nome); aux: Pedro 200712 A

Declaração de Tipos Para simplificar, uma estrutura ou mesmo outros tipos de dados podem ser definidos como um novo tipo Uso da construção typedef typedef struct { string nome; int matricula; char conceito; TipoAluno; int main() { TipoAluno al; Vetor v;... typedef int[10] Vetor;

TADs em C Para implementar um Tipo Abstrato de Dados em C, usa-se a definição de tipos juntamente com a implementação de funções que agem sobre aquele tipo Como boa regra de programação, evita-se acessar o dado diretamente, fazendo o acesso só através das funções Mas, diferentemente de C++ e Java, não há uma forma de proibir o acesso.

TADs em C 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 NomeDoTAD.c : com a implementação O programa ou outros TADs que utilizam o seu TAD devem dar um #include no arquivo.h

Exemplo Implemente um TAD ContaBancaria, com os campos número e saldo onde os 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 Faça um pequeno programa para testar o seu TAD

// definição do tipo typedef struct { int numero; double saldo; ContaBancaria; ContaBancaria.h // cabeçalho das funções void Inicializa (ContaBancaria*, int, double); void Deposito (ContaBancaria*, double); void Saque (ContaBancaria*, double); void Imprime (ContaBancaria);

#include <stdio.h> #include "Contabancaria.h" ContaBancaria.c void Inicializa(ContaBancaria* pconta, int numero, double saldo) { pconta->numero = numero; pconta->saldo = saldo; void Deposito (ContaBancaria* pconta, double valor) { pconta->saldo += valor; void Saque (ContaBancaria* pconta, double valor) { pconta->saldo -= valor; void Imprime (ContaBancaria conta) { printf("numero: %d\n", conta.numero); printf("saldo: %f\n", conta.saldo);

Main.c #include<stdio.h> #include<stdlib.h> #include "ContaBancaria.h" int main (void) { ContaBancaria conta1; Inicializa(&conta1, 918556, 300.00); printf("\nantes da movimentacao:\n "); Imprime(conta1); Deposito(&conta1, 50.00); Saque(&conta1, 70.00); printf("\ndepois da movimentacao:\n "); Imprime (conta1); system("pause"); return(0);

Exercício Implemente um TAD Número Complexo cada número possui os campos real e imaginário Implemente as operações: Atribui: atribui valores para os campos Imprime: imprime o número da forma R + Ci Copia: Copia o valor de um número para outro Soma: Soma dois números complexos EhReal: testa se um número é real Faça um pequeno programa para testar o seu TAD