Estruturas de Dados - alged.webnode.com · Estruturas de Dados são construções de uma linguagem...

28
Estruturas de Dados Prof.: Carlos Alberto Página da Disciplina: http://alged.webnode.com/ E-mail: [email protected]

Transcript of Estruturas de Dados - alged.webnode.com · Estruturas de Dados são construções de uma linguagem...

Estruturas de Dados

Prof.: Carlos Alberto

Página da Disciplina: http://alged.webnode.com/

E-mail: [email protected]

Estruturas de dados

Programa da disciplina

Estruturas de dados - referências 1. JUNIOR, D. P.; NAKAMITI, G. S.; BIANCHI, F.; FREITAS, R. L. de;

XASTRE, L. A. Estrutura de Dados e Técnicas de Programação.

Editora Campus/Elsevier, 2014.

2. CELES, W.; CERQUEIRA, R.; RANGEL, J. L. Introdução a estrutura de

dados. Rio de Janeiro: Elsevier, 2004.

3. EDELWEISS, N.; GALANTE, R. Estruturas de Dados. Porto Alegre:

Bookman, 2009. (COMPLEMENTAR).

4. ASCENCIO, A. F. G.; ARAUJO, G. S. de. Estruturas de Dados:

algoritmos, análise da complexidade e implementações em Java e

C/C++. São Paulo: Pearson, 2010. (COMPLEMENTAR).

Estruturas de dados - referências

Estruturas de dados - referências

Abstração de Dados

Um processo é uma sequência finita de passos que

transformam uma matéria-prima num determinado produto

final.

Os dados processados representam uma abstração da

realidade, ou seja, são características selecionadas de

entidades do mundo real, necessárias para a solução de um

determinado problema.

Quando a entrada de um processo é abstrata, apresentando-

se em forma de valores ou símbolos, temos um contexto

denominado processamento de dados.

Abstração de Dados

Exemplo: Cálculo do perímetro de uma circunferência,

onde o valor do raio (r) é fornecido como entrada.

Atenção: dado e informação são conceitos relativos;

Devido à importância da abstração para o processamento de

dados em computadores, duas questões são fundamentais:

Como representar a abstração da realidade no computador?

Como representar o conhecimento necessário para manipular

essa abstração?

Tipos de Dados Abstratos

Tipo dados abstrato (TDA) é um modelo matemático

definido por um conjunto de valores e por um conjunto de

operadores que atuam sobre esses valores;

Por ser um modelo matemático, sua definição não leva em

conta como os valores serão armazenados na memória do

computador nem se preocupa com o tempo gasto para

efetuar operações com esses valores;

Para usar um TDA para resolver problemas no computador, é

preciso transformá-lo em um tipo de dados concreto;

Tipos de Dados Abstratos

A transformação de um TDA em um tipo de dados é chamada

implementação;

Durante a implementação é definida a estrutura de

armazenamento dos valores e são projetados os algoritmos

que efetuam as operações;

Geralmente, nenhuma implementação é capaz de representar

um TDA completamente;

Tipos de Dados

A unidade básica de memória no computador é chamada bit

(binary digit);

Uma grande quantidade de bits agrupados e devidamente

interpretados são capazes de armazenar uma enorme

quantidade e variedade de informações;

Num programa, áreas de memória para armazenamento de

dados são representadas por variáveis;

A forma como os bits numa variável são agrupados,

interpretados e manipulados pelo computador é definida pelo

seu tipo de dados.

Tipos de Dados

Tipo de dado

Definição do conjunto de valores (domínio) que

uma variável pode assumir.

Exemplo:

Inteiro

<..., -2, -1, 0, 1, 2, ...>

Lógico

<verdadeiro, falso>

Tipos de Dados

Tipos básicos (primitivos)

Inteiro, real, lógico e caracter

Tipos estruturados

Arranjos (vetores e matrizes)

Registros

Conjuntos

Tipos definidos pelo usuário

Tipos de Dados

Exemplo: para calcular o perímetro de uma circunferência a

partir do seu raio, precisamos usar variáveis do tipo real:

Tipos de Dados

Felizmente, a maioria das linguagens de programação oferece

um conjunto básico de tipos de dados predefinidos (inteiro,

real, caracter e lógico);

As linguagens de programação fornecem mecanismos que

permitem criar tipos de dados a partir de outros predefinidos

(ex.: vetores e registros)

Tipos e estruturas de dados

Aplicação:

Representação dos funcionários e alunos de uma

faculdade

Tipo de dado? ? ? ?

Tipos e estruturas de dados

Relacionamento de hierarquia

Como representar com os tipos de uma linguagem de

programação?

Diretor

Chefe

do Depto A

Chefe

do Depto B

Professores Funcionários

Alunos

Professores Funcionários

Alunos

Tipos e estruturas de dados

Tipos de dados básicos

Fornecidos pela linguagem de programação

Estruturas de dados

Estruturação conceitual dos dados

Reflete um relacionamento lógico entre dados, de acordo

com o problema considerado

Estruturas de dados

À medida que evoluímos nos tipos de programas que

projetamos surge a necessidade de armazenar as

informações;

Somente utilizando os tipos de dados torna-se inviável,

devido a pequena quantidade de informações que uma

variável armazena;

Daí a necessidade da existência dos tipos de dados compostos

ou estruturados, ou simplesmente: Estrutura de Dados;

Estruturas de dados

Uma estrutura de dados é um meio para armazenar e

organizar dados com o objetivo de facilitar o acesso e

as modificações.

Estruturas de Dados são construções de uma linguagem de

programação que agregam um ou mais elementos de

dados para formar um tipo de dado que armazena uma

quantidade maior de informações.

Estruturas de dados

As estruturas se diferem umas das outras pela disposição

ou manipulação de seus dados.

A disposição dos dados em uma estrutura obedece a

condições preestabelecidas e caracteriza a estrutura.

os elementos que uma estrutura de dados armazena podem

ser:

homogêneos (ex.: vetores)

heterogêneos (ex.: registro).

Estruturas de dados

Exemplos de estruturas de dados:

Listas lineares

a b c d

• Relação de ordem entre os dados

• Linear - sequencial

Ex:

Aplicação: empresa

Problema: dados dos funcionários – cada nó um funcionário

Estruturas de dados

Exemplos de estruturas de dados:

Árvores

• Relação de subordinação entre os dados

Ex:

Aplicação: empresa

Problema: organograma de funções

a

c b

h g f e d

l k j i

Estruturas de dados

Estruturas de dados incluem as operações para a

manipulação de seus dados;

Operações básicas:

Criação da estrutura de dados

Inclusão de um novo elemento

Remoção de um elemento

Acesso a um elemento

Destruição da estrutura de dados

Estruturas de dados

Solução para uma aplicação:

1. Identificar as relações lógicas

existentes entre os dados,

relevantes ao problema

2. Identificar as

operações

sobre estes dados

Criação

Manutenção

Inserção de componente

Remoção de componente

Alteração de componente

Consulta

Destruição

Outras

Ordem linear

pai / filhos

...

Estruturas de dados

Programa: manipula dados dos alunos matriculados

Operações sobre os dados dos alunos:

– inserir os nomes

– buscar os nomes dos alunos e armazenar na memória

– pesquisar os nomes ordenados para folha de frequência

– alterar os nomes

– excluir os nomes

Exemplo: Folha de frequência

Estruturas de dados

A área de estruturas de dados tem dois objetivos básicos e

complementares:

Teórico: especificar TDAs e determinar que classes de

problemas podem ser resolvidas com eles.

Prático: implementar TDAs, isto é, criar representações

concretas de seus valores e projetar algoritmos para efetuar

operações com elas.

Estruturas de dados

As estruturas de dados podem ser subdivididas em:

Estáticas e Dinâmicas.

Estáticas

Não oferecem suporte adequado para a inserção e remoção de

elementos dinamicamente;

São baseadas na utilização de formas primitivas de estruturação

de dados disponibilizadas pela linguagem de programação.

Exemplo: Vetores e registros.

Estruturas de dados

As estruturas de dados podem ser subdivididas em:

Estáticas e Dinâmicas.

Dinâmicas

Em geral, oferecem suporte adequado para a inserção e a

remoção de elementos;

Alocam dinamicamente memória para o armazenamento de

cada elemento, portanto não são estruturas pré-dimensionadas.

Exemplo: listas e árvores;