Tipos Abstratos de Dados

Documentos relacionados
Tipos Abstratos de Dados

BCC202 - Estrutura de Dados I

Tipos Abstratos de Dados

Tipo Abstrato de Dados

Aula 1 Tipo Abstrato de Dados

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

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

BCC202 - Estrutura de Dados I

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

Algoritmos e Programação

Algoritmos e Estruturas de dados

TAD: Tipo Abstrato de Dados (parte 2)

Aula 16: Laços aninhados e desvios

TAD: Tipo Abstrato de Dados (parte 2)

Aula 14: Repetição (Parte 2)

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

Prova 2 - Computação

Tipos Abstratos de Dados TADs

Atividade de laboratório listas encadeadas simples

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

Estrutura de dados 2. Ponteiro. Prof. Jesuliana N. Ulysses

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).

Aula 03 -Introdução àlinguagc Programação: Estrutura-Repetição. OPL e IC1 Prof: Anilton Joaquim da Silva

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

Linguagem C: Introdução

Programação: Vetores

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

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

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

12 - Dados Estruturados Vetores, Matrizes e Strings

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

Linguagem C vetores. IF61A/IF71A - Computação 1 Prof. Leonelo Almeida. Universidade Tecnológica Federal do Paraná

Introdução aos Algoritmos

Conhecendo a Linguagem de Programação C

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

MC-102 Aula 13. Instituto de Computação Unicamp. 29 de Setembro de 2016

Aula 15: Repetição (Parte 3)

Programação Básica. Estrutura de um algoritmo

Algoritmos e Linguagem de Programação em C. Professor: Bernard Cardoso Oliveira

# Estrutura de Dados # Aula - Revisão de C/C++ na Prática. Prof. Leinylson Fontinele Pereira

Linguagem de Programação II Implementação

Introdução aos Algoritmos

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

Linguagem de Programação C

Lista de Exercícios de Algoritmos - 04 Para cada um dos exercícios abaixo, faça um programa (em laboratório) que teste a função.

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

Algoritmos e Introdução à Programação. Lógica e Linguagem de Programação

3. Linguagem de Programação C

MC102 Algoritmos e Programação de Computadores

Aula 05: Condicionais (if / else)

1) Operadores de auto incremento ++ e auto decremento --

POO fundamentos Parte II. Professor Vicente Paulo de Camargo

Linguagens de Programação

Programação de Computadores II

Trabalho Linguagem e Programação de Compiladores

Estruturas de Dados Aula 10: Listas (parte 2) 19/04/2011

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

Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO

1 Introdução e Conceitos básicos

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

PROGRAMAÇÃO DE COMPUTADORES V - TCC Modulo 6 : Funções Escopo de Variáveis: Globais x Locais Aura - Erick

Computação Informática

Introdução a Linguagem C

Algoritmos e Estruturas de Dados I

Transcrição:

Tipos Abstratos de Dados Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Aula 03 Algoritmos e Estruturas de Dados I

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 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 = IIIII 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 Filosofia: O programador sabe o que está fazendo Só se aprende a programar PROGRAMANDO

Exemplo printf(", &num); \n } return num; 10 "); int LeInteiro() { int num; printf("digite numero: "); scanf("%d", &num); printf("\n"); return num; } aux = LeInteiro(); soma } cont++; = 0 for ; (i = 0; i < cont media soma = += v[i]; ; i++) soma / (double ) cont; printf( "resultado: %lf\n",media); } (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

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

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.

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. Conceitos de C (typedef e structs) Conceitos de orientação a objetos (classes, etc) serão vistos em outras disciplinas (POO).

Estruturas (Structs) em C / C++ Uma estrutura é uma coleção de uma ou mais variáveis 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 / C++ #include <stdio.h> #include <string.h> struct Aluno { char nome[100]; int matricula; char conceito; }; void main() { struct Aluno al, aux; al: aux: Pedro 200712 A Pedro 200712 A } strcpy(al.nome, "Pedro"); al.matricula = 200712; al.conceito = 'A'; aux = al; printf("%s", aux.nome);

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, usase 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 somente 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 (ou NomeDoTAD.cpp) : 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

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

contabancaria.c #include <stdio.h> #include "contabancaria.h" 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);

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.

Perguntas?

O que é ter excelência? É uma atitude, um hábito!

Quem vê, entende... Quem faz, aprende!!!

Exercício Implemente um TAD Jogador de Futebol Cada jogador possui os campos nome, jogos, gols e assistências. Implemente as operações: Atribui: atribui valores para os campos. Imprime: imprime os dados/estatísticas do jogador. Soma: soma estatísticas de dois jogadores. EhBom: testa se o jogador é bom!!! (defina seu próprio critério de bom jogador) Crie o "main" para testar seu TAD (utilize alocação dinâmica)