profa. juliana mafra ([email protected]) estrutura de dados 21 de setembro de 2009 faculdade de...

15
Profa. Juliana Mafra ([email protected]) ESTRUTURA DE DADOS 21 de Setembro de 2009 Faculdade de Informática e Tecnologia de Pernambuco

Upload: internet

Post on 19-Apr-2015

103 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Profa. Juliana Mafra (jmafra.pe@gmail.com) ESTRUTURA DE DADOS 21 de Setembro de 2009 Faculdade de Informática e Tecnologia de Pernambuco

Profa. Juliana Mafra

([email protected])

ESTRUTURA DE DADOS

21 de Setembro de 2009

Faculdade de Informática e Tecnologia de Pernambuco

Page 2: Profa. Juliana Mafra (jmafra.pe@gmail.com) ESTRUTURA DE DADOS 21 de Setembro de 2009 Faculdade de Informática e Tecnologia de Pernambuco

Ementa

ESTRUTURA DE DADOS Profa. Juliana Mafra2

Introdução às Estruturas de DadosEstruturas ElementaresAlgoritmos de Ordenação e RecursãoÁrvores e Grafos Algoritmos para Estruturas Complexas

Page 3: Profa. Juliana Mafra (jmafra.pe@gmail.com) ESTRUTURA DE DADOS 21 de Setembro de 2009 Faculdade de Informática e Tecnologia de Pernambuco

Objetivo Geral

3

Possibilitar aos alunos a utilização otimizada das diversas estruturas de dados apresentadas, levando em consideração o problema a ser resolvido ou otimizado, e também o contexto no qual ocorre esse problema.

ESTRUTURA DE DADOS Profa. Juliana Mafra

Page 4: Profa. Juliana Mafra (jmafra.pe@gmail.com) ESTRUTURA DE DADOS 21 de Setembro de 2009 Faculdade de Informática e Tecnologia de Pernambuco

Objetivos Específicos

4

Fornecer domínio da alocação dinâmica de memória;

Apresentar as principais estruturas de dados e suas implementações, em termos de representação física e algoritmos de manipulação, guiando-se pelo conceito de tipos abstratos de dados;

Apresentar os principais processos de pesquisa e classificação de dados;

Introduzir aspectos básicos da complexidade de algoritmos;

Consolidar os conhecimentos sobre programação previamente adquiridos, utilizando estruturas de dados em aplicações particulares.

ESTRUTURA DE DADOS Profa. Juliana Mafra

Page 5: Profa. Juliana Mafra (jmafra.pe@gmail.com) ESTRUTURA DE DADOS 21 de Setembro de 2009 Faculdade de Informática e Tecnologia de Pernambuco

Metodologia

5

A disciplina será trabalhada com aulas expositivo-dialogadas, onde serão fornecidos os componentes teóricos e será feita a prática de exercícios.

ESTRUTURA DE DADOS Profa. Juliana Mafra

Page 6: Profa. Juliana Mafra (jmafra.pe@gmail.com) ESTRUTURA DE DADOS 21 de Setembro de 2009 Faculdade de Informática e Tecnologia de Pernambuco

Bibliografia

6

Livro Texto:Veloso, P.A . da S. – Estrutura de Dados –Editora Campus,

1983.

Livros de Referência:Horowitz, E e Shani, S. - Fundamentos de Estruturas de

Dados - Editora Campus, Rio de Janeiro, 1983.

Referências Complementares:Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest,

Clifford Stein - Algoritmos: Teoria e Prática, Editora Campus, Rio de Janeiro, 2002.

ESTRUTURA DE DADOS Profa. Juliana Mafra

Page 7: Profa. Juliana Mafra (jmafra.pe@gmail.com) ESTRUTURA DE DADOS 21 de Setembro de 2009 Faculdade de Informática e Tecnologia de Pernambuco

Introdução às Estruturas de Dados

ESTRUTURA DE DADOS Profa. Juliana Mafra7

Tipo Abstrato de Dados (TDA)

Page 8: Profa. Juliana Mafra (jmafra.pe@gmail.com) ESTRUTURA DE DADOS 21 de Setembro de 2009 Faculdade de Informática e Tecnologia de Pernambuco

Tipos de Dados

8

Define a forma como um dado deve ser armazenado ou recuperado, bem como os possíveis valores que ele pode assumir e as operações que podem ser efetuadas sobre os mesmos.

Exemplo em Pascal: integer - permite valores inteiros e operações de adição, multiplicação,

subtração e divisão; string - permite valores literais e operações de concatenação;

Obs. Esses tipos estão intrinsecamente relacionados com o hardware.

ESTRUTURA DE DADOS Profa. Juliana Mafra

Page 9: Profa. Juliana Mafra (jmafra.pe@gmail.com) ESTRUTURA DE DADOS 21 de Setembro de 2009 Faculdade de Informática e Tecnologia de Pernambuco

Tipo Abstrato de Dados (TAD)

9

Um tipo abstrato de dados (TAD) é a especificação matemática de um conjunto de dados e das operações que podem ser executadas sobre esses dados.

O conceito de tipo de dado abstrato é dissociado do hardware.

TAD define o que cada operação faz, mas não como faz.

Assim, um mesmo tipo abstrato de dados pode ser concretizado (ou implementado) de diversas formas.

ESTRUTURA DE DADOS Profa. Juliana Mafra

Page 10: Profa. Juliana Mafra (jmafra.pe@gmail.com) ESTRUTURA DE DADOS 21 de Setembro de 2009 Faculdade de Informática e Tecnologia de Pernambuco

10

TADs são materializados pelas estruturas de dados.

– Lista Encadeada (implementação com referências)

– Lista com alocação estática (implementação usando array)

Estruturas de dados são formas genéricas de se estruturar informação de modo a serem registradas e processadas pelo computador.

Contudo, estas só adquirem significado quando associadas a um conjunto de operações, que visam, de um modo geral, manipulá-las (algoritmos).

ESTRUTURA DE DADOS Profa. Juliana Mafra

Tipo Abstrato de Dados (TAD)

Page 11: Profa. Juliana Mafra (jmafra.pe@gmail.com) ESTRUTURA DE DADOS 21 de Setembro de 2009 Faculdade de Informática e Tecnologia de Pernambuco

11

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çãoNomeDoTAD.c: com a implementação

O programa ou outros TADs que utilizam o seu TAD devem dar um #include no arquivo.h

ESTRUTURA DE DADOS Profa. Juliana Mafra

TAD em C

Page 12: Profa. Juliana Mafra (jmafra.pe@gmail.com) ESTRUTURA DE DADOS 21 de Setembro de 2009 Faculdade de Informática e Tecnologia de Pernambuco

12

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.

ESTRUTURA DE DADOS Profa. Juliana Mafra

TAD:Exemplo

Page 13: Profa. Juliana Mafra (jmafra.pe@gmail.com) ESTRUTURA DE DADOS 21 de Setembro de 2009 Faculdade de Informática e Tecnologia de Pernambuco

13

// 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);

ESTRUTURA DE DADOS Profa. Juliana Mafra

ContaBancaria.h

Page 14: Profa. Juliana Mafra (jmafra.pe@gmail.com) ESTRUTURA DE DADOS 21 de Setembro de 2009 Faculdade de Informática e Tecnologia de Pernambuco

14

#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);

}

ESTRUTURA DE DADOS Profa. Juliana Mafra

ContaBancaria.c

Page 15: Profa. Juliana Mafra (jmafra.pe@gmail.com) ESTRUTURA DE DADOS 21 de Setembro de 2009 Faculdade de Informática e Tecnologia de Pernambuco

15

#include <stdio.h>#include <stdlib.h>#include "ContaBancaria.h“

int main(int argc, char *argv[])

{

ContaBancaria conta1;

Inicializa(&conta1,918556,300.00);

printf("\n Antes da movimentacao: \n");

Imprime(conta1);

Deposito(&conta1, 50.00);

Saque(&conta1, 70.00);

printf("\n Depois da movimentacao: \n");

Imprime(conta1);

}

ESTRUTURA DE DADOS Profa. Juliana Mafra

Main.c