Faculdade de Informática e Tecnologia de Pernambuco
ESTRUTURA DE DADOS
Profa. Juliana Mafra
([email protected])
21 de Setembro de 2009
Ementa
 Introdução às Estruturas de Dados
 Estruturas Elementares
 Algoritmos de Ordenação e Recursão
 Árvores e Grafos
 Algoritmos para Estruturas Complexas
2
ESTRUTURA DE DADOS
Profa. Juliana Mafra
Objetivo Geral
 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.
3
ESTRUTURA DE DADOS
Profa. Juliana Mafra
Objetivos Específicos
 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.
4
ESTRUTURA DE DADOS
Profa. Juliana Mafra
Metodologia
 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.
5
ESTRUTURA DE DADOS
Profa. Juliana Mafra
Bibliografia
 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.
6
ESTRUTURA DE DADOS
Profa. Juliana Mafra
Introdução às Estruturas de Dados
Tipo Abstrato de Dados (TDA)
7
ESTRUTURA DE DADOS
Profa. Juliana Mafra
Tipos de Dados
 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.
8
ESTRUTURA DE DADOS
Profa. Juliana Mafra
Tipo Abstrato de Dados (TAD)
 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.
9
ESTRUTURA DE DADOS
Profa. Juliana Mafra
Tipo Abstrato de Dados (TAD)
 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).
10
ESTRUTURA DE DADOS
Profa. Juliana Mafra
TAD 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
11
ESTRUTURA DE DADOS
Profa. Juliana Mafra
TAD: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.
12
ESTRUTURA DE DADOS
Profa. Juliana Mafra
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);
13
ESTRUTURA DE DADOS
Profa. Juliana Mafra
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);
}
14
ESTRUTURA DE DADOS
Profa. Juliana Mafra
Main.c
#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);
}
15
ESTRUTURA DE DADOS
Profa. Juliana Mafra
Download

Revisão - TAD e Apontadores