Vous êtes sur la page 1sur 17

Universidade Federal do Vale do So Francisco

Estruturas de Dados
Professor: Marcelo Santos Linder E-mail: marcelo.linder@univasf.edu.br

Ementa
Alocao dinmica de memria; Vetores, pilhas, filas, listas: representao e algoritmos para manipulao; Mtodos de ordenao; Mtodos de pesquisa; Noes de abstrao de dados, de complexidade de algoritmos e de recursividade; Desenvolvimento, implementao e testes de programas, na linguagem de programao C, utilizando tcnicas de estruturao de dados em aplicaes particulares.
2

Objetivos

Objetivo Geral Possibilitar aos alunos a utilizao otimizada das diversas estruturas de dados apresentadas, levando em considerao o problema a ser resolvido ou otimizado, e tambm o contexto no qual ocorre esse problema.

Objetivos
Objetivos Especficos Consolidar os conhecimentos sobre programao previamente adquiridos; Fornecer domnio da alocao dinmica de memria; Apresentar as principais estruturas de dados e suas implementaes, em termos de representao fsica e algoritmos de manipulao, guiando-se pelo conceito de tipos abstratos de dados; Introduzir aspectos bsicos da complexidade de algoritmos; Prover uma introduo s tcnicas de programao, com desenvolvimento, implementao e teste de programas, baseando-se no emprego de estruturas de dados em aplicaes particulares; Apresentar os principais processos de pesquisa e classificao de dados.

Metodologia

A disciplina ser trabalhada com aulas expositivo-dialogadas, onde sero fornecidos os componentes tericos e ser feita a prtica de exerccios.
Recursos

Quadro branco, marcador, notebook e projetor multimdia.

Forma de Avaliao

A avaliao ser realizada mediante 2 provas escritas e um trabalho prtico (passvel de alteraes).

Bibliografia
Bibliografia Bsica:
Estruturas de Dados Usando C Aaron M. Tenanbaum, Yedidyah Langsam, Mosha J. Augenstein Editora Pearson Makron Books 2005 Estruturas de Dados e Seus Algoritmos Markenzon, Lilia Editora LTC 1994

Bibliografia Complementar:
C Completo e Total Herbert Schildt Editora Pearson Makron Books 2006 Algoritmos, Teoria e Prtica Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein Editora Campus 2002

Informaes Gerais
Material de apoio
Os slides utilizados em aula, descrio de trabalhos, datas de avaliaes e demais informaes referentes disciplina encontramse na pgina www.univasf.edu.br/~marcelo.linder
7

Introduo

Programa

Um programa pode ser visto como a especificao formal da soluo de um problema. N.Wirth expressa em sua equao programa = algoritmo + estruturas de dados onde: o algoritmo contm a lgica do programa e os dados so organizados em estruturas de dados.
9

Estruturas de Dados

A qualidade da soluo de um problema depende, entre outros fatores, da forma como esto organizados os dados relevantes.
Encontrar o nmero do telefone de um certo assinante no conjunto de todos os assinantes. Representao interna de uma string:
4 G G A A T T O O \0

; .

Toda uma classe de modelos desenvolveuse, ao longo do tempo, com o objetivo de viabilizar o processamento de dados.
10

Estruturas de Dados

Estruturas de dados so formas genricas de se estruturar informao de modo a serem registradas e processadas pelo computador. Ex.:
lista ordenada; vetores; rvores; grafos, etc.

Contudo estas s adquirem significado quando associadas a um conjunto de operaes, que visam, de um modo geral, manipul-las (algoritmos).
11

Tipos Abstratos de Dados

Embora os termos tipo de dado, estrutura de dados e tipo abstrato de dados em essncia se refiram aos mesmos objetos formais, eles so usados em contextos prprios. O termo tipo de dado usado no contexto de uma linguagem de programao (tipos primitivos) e est associado a um mtodo de interpretar um padro de bits.
12

Tipos Abstratos de Dados

O termo tipo abstrato de dado (TAD) denota um modelo junto com um conjunto de operaes definidas sobre o modelo. (tipo + operaes validas). Por fim, estrutura de dados uma forma concreta de se implementar um TAD, ou seja, uma representao computacional do modelo matemtico em questo.
13

Tipos Abstratos de Dados

Para viabilizar a implementao de tipos abstratos de dados vamos nos valer das estruturas em C. Para exemplificar este conceito, definiremos um TAD RACIONAL. Um nmero racional o que pode ser expresso como quociente de dois inteiros. Definiremos a operao de criao e multiplicao de nmeros racionais.
14

Tipos Abstratos de Dados

typedef struct { int num; int den; }RACIONAL; void criar_racional (int, int, RACIONAL *); void multiplicar_racionais (RACIONAL *, RACIONAL *, RACIONAL *);

15

Tipos Abstratos de Dados


void criar_racional (int n, int d, RACIONAL *r) { r->num = n; (*r).den = d; } void multiplicar_racionais (RACIONAL *a, RACIONAL *b, RACIONAL *c) { c->num = a->num * b->num; c->den = a->den * b->den; }
16

Tipos Abstratos de Dados - Exerccio

Implemente as operaes de soma e verificao de equivalncia entre elementos do TAD RACIONAL, definido anteriormente.

17

Vous aimerez peut-être aussi