ESTRUTURA DE DADOS
Professor: Marcelo Mendes
Turma: MBI-1
Período Letivo: 2015/1
Carga Horária: 80 horas
Período da disciplina: 31/03 a 30/04/2015
Número de Avaliações: 3
OBJETIVO DA DISCIPLINA
“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.”
ABSTRAÇÃO DE DADOS
Um processo é qualquer seqüência finita e ordenada de passos que visa promover
transformações definidas sobre uma determinada matéria-prima. Se denominamos
entrada a matéria-prima no seu estado inicial; e saída o que se obtém após as
transformações realizadas pelo processo, temos o esquema geral a seguir:
Matéria-prima abstrata: é processamento de dados.
Abstrata: apresenta-se sob a forma de valores.
Processamento realizado pelo computador:
Entrada: dados colhidos do mundo real externo ao computador;
Processo: série finita de operações que são realizadas a partir desses
dados;
Saída: transformação sofrida pelos dados através de um processo.
TIPOS DE DADOS (TDS)
Embora os termos "tipos de dados", "estruturas de dados" e "tipos abstratos
de dados" sejam parecidos, têm significados diferentes. Em linguagens de
programação o tipo de dados de uma variável define o conjunto de valores
que a variável pode assumir. Exemplo: BOOLEAN pode assumir valores TRUE
ou FALSE. A declaração de uma variável em Pascal especifica duas coisas:
Quantidade de bytes reservados para a variável (ex. 2bytes);
Como o dado representado por esses bytes pode ser interpretado. (ex. 2
bytes = 16 bits = 65536 combinações. Um integer é interpretado de -32767 a
32768 sendo o ponto "zero" bem no meio desses dois bytes).
Tipos de Dados: São métodos para interpretar o conteúdo da memória do
computador. Exemplo de conjunto básico de tipos de dados primitivos
(inteiro, real, caractere, lógico) oferecidos pelas linguagens de programação; e
agrupamentos complexos de dados desses tipos primitivos (vetor, registro,
ponteiro).
TIPOS ABSTRATOS DE DADOS (TADS)
TAD - formado por um conjunto de valores e uma série de
funções que podem ser aplicadas sobre estes valores.
Funções + valores (em conjunto) = modelo matemático
empregado para "modelar" e solucionar problemas do
mundo real:
 Especifica características relevantes dos objetos
envolvidos no problema;
 Especifica forma com que eles se relacionam; e
 Especifica como podem ser manipulados.
TIPOS ABSTRATOS DE DADOS (TADS)
TAD não leva em consideração como os valores são
representados na memória do computador e
nem se preocupa com o "tempo" gasto para
aplicar as funções sobre tais valores.
• Exemplos:
 Listas;
 Pilhas;
 Filas;
AS ESTRUTURAS DE DADOS (EDS)
• É um método particular de implementar um
TAD. A implementação de um TAD escolhe
uma ED para representá-lo. Cada ED é
constituída de tipos básicos (integer, char,
real) ou dos tipos estruturas (array, record) de
uma linguagem.
OBJETIVO DAS ESTRUTURAS DE DADOS:
Teórico: Identificar e desenvolver modelos
matemáticos, determinando que classes de
problemas podem ser resolvidos com o uso
deles.
Prático: Criar representações concretas dos
objetos e desenvolver rotinas capazes de
atuar sobre essas representações, de acordo
com o modelo considerado.
LISTAS LINEARES
• É uma estrutura que armazena elementos de
forma alinhada, ou seja, com elementos
dispostos um após o outro, como em uma lista
de nomes, peças, valores, pessoas, compras,
etc.
FUNDAMENTOS
Uma Lista Linear, é uma coleção L: [a1, a2, ...,
an], n>=0, cuja propriedade estrutural baseiase apenas na posição relativa dos elementos,
que são dispostos linearmente. Se n=0,
dizemos que a lista L é vazia; caso contrário,
são válidas as seguintes propriedades:
a1 é o primeiro elemento de L;
an é o último elemento de L;
Característica fundamental de uma lista linear é o sentido de
ordem unidimensional dos elementos que a compõem.
Assim, não temos dúvida onde inicia ou termina a lista.
Algumas operações com listas:
 acessar um elemento qualquer;
 inserir um elemento numa posição específica;
 remover um elemento de uma posição específica;
 combinar duas listas em uma única;
 particionar uma lista em duas;
 obter cópias de uma lista;
 determinar o total de elementos na lista;
 ordenar os elementos da lista;
 procurar um determinado elemento na lista;
 apagar uma lista;
 outras...
Uma lista com um array, pode ser implementada como uma seqüência
de records com elementos disponíveis:
de forma consecutiva - Lista Estática Seqüencial;
de forma não consecutiva - Lista Estática Encadeada;
Uma lista pode ser ordenada ou não. Pascal permite construir EDs
avançadas - Lista Dinâmicas; mais versáteis, utilizando ponteiros e
variáveis dinâmicas.
Considerando apenas operações de acesso, inserção e remoção
restritas aos extremos das listas, temos casos especiais:
 Pilha: inserção, remoção, acesso realizados em um único extremo.
Lista LIFO.
 Fila: inserção num extremo e remoção, acesso no outro extremo.
Lista FIFO.
ALOCAÇÃO DE MEMÓRIA
• Para implementar uma lista linear: como
podemos armazenar os elementos da lista
dentro do computador? Alocar área de
memória é responsabilidade do programador
e estará em uma das quatro categorias abaixo:
ALOCAÇÃO ESTÁTICA X ALOCAÇÃO DINÂMICA
ALOCAÇÃO ESTÁTICA:
 Quantidade total de memória utilizada pelos dados é
previamente conhecida e definida de modo imutável, no
próprio código-fonte do programa. Durante o programa não
varia a quantidade de memória.
ALOCAÇÃO DINÂMICA:
 Programa cria novas variáveis enquanto executa, ou seja,
áreas de memórias não declaradas no programa passam a
existir durante a execução.
Um ponteiro é uma variável que contém o endereço da memória de outra variável ou
estrutura de dados.
Download

Apres_Disciplina