SlideShare uma empresa Scribd logo
1 de 57
ESTRUTURA DE DADOS I
Prof. Alan Mello
Email: alan_dbpva@Hotmail.com
AULA 1: 20/01/2013 (SEGUNDA)
EMENTA
 Conceitos básicos em estruturas de dados. Organização linear e
não-linear. Organização aleatória. Listas lineares: filas e pilhas.
Listas não-lineares: arvores e grafos.
BIBLIOGRAFIA
 GUIMARÃES, A. M.; LAGES, N. A. C. Algoritmos e Estrutura de Dados.
Rio de Janeiro: LTC, 1994.
 VELOSO, P. [et al]. Estrutura de Dados. Rio de Janeiro: Elsevier, 1983 –
28° impressão.
 VILLAS, M. V. [et al]. Estrutura de Dados: Conceitos e Técnicas de
Implementação. Rio de Janeiro: Campus, 1983
 PEREIRA, S. L. Estrutura de Dados: Conceitos e Aplicações. São Paulo:
Érica, 1996, 2° edição.
 SZWAREFITER, J. L.; MARKENZON, L. Estrutura de Dados e Seus
Algoritmos. Rio de Janeiro: LTC, 1994.
INTRODUÇÃO
 O que significa abstração?
 O que é um algoritmo?
 O que é um programa de computador?
 O que é computação?
 O que são estruturas de Dados?
INTRODUÇÃO
Objetivos das Estruturas de Dados
- Teórico: Identificar e desenvolver modelos matemáticos,
determinando que classes de problemas podem ser resolvidos
com o uso deles. Obs: um modelo matemático representa um
aspecto físico.
- Prática: Criar representações concretas dos objetos e
desenvolver rotinas capazes de atuar sobre estas
representações, de acordo com o modelo considerado.
INTRODUÇÃO
 Benefícios das Estruturas de Dados:
– Organização da informação
– Melhora o desempenho
– Proporciona o reuso de código
- Proporciona interoperabilidade
INTRODUÇÃO
 Desenvolvimento de programas
– Especificações do problema
– Projeto em alto nível
– Análise das alternativas
- Refinamento e codificação
– Verificação do comportamento
INTRODUÇÃO
 Desenvolvimento de programas
 Destaque em três pontos
- Estruturas de dados
- Operações
- Estrutura de representação
INTRODUÇÃO
 Desenvolvimento de programas
Resumindo, um programa é encarado como (representação de)
um algoritmo que manipula (representações de) dados.
INTRODUÇÃO
 Tipos de Dados
A noção de tipo de dados ocorre na maioria das linguagens de
programação. Ao declararmos o tipo de uma variável ,
delimitamos o conjunto de valores que ela pode tomar e as
operações que podemos efetuar sobre ela.
INTRODUÇÃO
 Tipos de Dados
 Tipos Primitivos
São tipos básicos predefinidos, ex: Inteiro, real, lógico, caracter.
INTRODUÇÃO
 Tipos de Dados
 Tipos Primitivos
 Tipo Inteiro
- São valores inteiros (negativos, zero ou positivos)
- Operações permissíveis: soma, subtração, multiplicação, divisão
inteira, resto da divisão.
- Formato: int
INTRODUÇÃO
 Tipos de Dados
 Tipos Primitivos
 Tipo real
- São números racionais, isto é, números normalmente
representados por uma parte inteira e uma parte fracionária.
- Operações permissíveis: soma, subtração, multiplicação e
divisão.
- Formato: real
INTRODUÇÃO
 Tipos de Dados
 Tipos Primitivos
 Tipo lógico
- Consistem em exatamente dois valores: Verdadeiro e falso.
- Operações permissíveis: e, ou, não.
- Formato: log
INTRODUÇÃO
 Tipos de Dados
 Tipos Primitivos
 Tipo caractere
- São chamados “caracteres alfanuméricos”: os dígitos decimais
(0-9), as letras (A-Z) e alguns sinais especiais (espaço em branco,
sinais de pontuação etc.)
- Operações permissíveis: comparação.
- Formato: car
INTRODUÇÃO
 Tipos de Dados
 Tipos estáticos de dados
A estrutura desses dados são completamente definidos antes de
começarmos a efetuar operações. Logo, este tipo de dado tem
tamanho definido.
 Tipos dinâmicos de dados
São aqueles que sofrem alteração estruturas quando estão sendo
manipulados. Logo, este tipo de dado não tem tamanho definido.
INTRODUÇÃO
 Tipos de Dados
 Funções de Transferência
Em muitos casos basta considerar operações que manipulam
valores de um determinado tipo e produzem resultados no mesmo
tipo. Porém, em alguns casos, mais de um tipo de dado é
manipulado, assim como, o resultado da manipulação um tipo de
dado pode ser outro tipo de dado. Ex: trunc(a : float) : int
INTRODUÇÃO
 Tipos de Dados
 Mecanismos para construção de tipos
Permitem a construção de outro tipo a partir dos tipos primitivos. Ex
de mecanismos: vetor, registro, sequência, referência, alternativa.
INTRODUÇÃO
 Tipos de Dados
 Mecanismos para construção de tipos
 Vetor
O vetor permite a construção de um tipo cujos valores são
agregados homogêneos de um tamanho definido, isto é, seus
componentes são todas de um mesmo tipo. Ex: vetor [1...10] de
inteiros.
Formato: tipo valor-mensal : vet [1...12] de real
INTRODUÇÃO
 Tipos de Dados
 Mecanismos para construção de tipos
 Registro
Agregados heterogêneos, isto é, os componentes desta
construção não são necessariamente de um mesmo tipo. Ex:
registro (código do funcionário: inteiro, salário: real )
Formato: tipo funcionario : reg (código : int, salario: real)
INTRODUÇÃO
 Tipos de Dados
 Mecanismos para construção de tipos
 Sequência
Tipo cujos objetos são coleção ordenadas de objetos do tipo de
dados, sem qualquer limitação no seu tamanho (exceto por ser
finito). Ex: cadeia de caracteres.
Formato: tipo cadeia : seq car
INTRODUÇÃO
 Tipos de Dados
 Mecanismos para construção de tipos
 Enumeração
Permite definir tipos de dados por meio dos valores que os dados
daquele tipo podem tomar. Ex: mês possíveis em um ano.
Formato: tipo mês : enum <jan, fev, mar, abr, maio, jun, jul, ago,
set...dez>
INTRODUÇÃO
 Tipos de Dados
 Variáveis, declarações e expressões
Nomes (identificadores) podem ser utilizados para denotar
variáveis. Tal identificador é atribuído explicitamente na
declaração da variável. Ademais, cada variável possui um
conjunto de expressões válidas.
Formato: var nome : tipo
INTRODUÇÃO
 Tipos de Dados
 Comandos básicos
São utilizados para descrever algoritmos que manipulem variáveis
que, por sua vez, estão associadas com tipos de dados. São
exemplos de comandos: Atribuição, Entrada, Saída, Condicionais,
Iteração e Seleção.
INTRODUÇÃO
 Tipos de Dados
 Comandos básicos
 Atribuição: v <- e
A avaliação da expressão “e” fornece um valor, que deve ser do
tipo declarado para a variável “v” e que passa a ser o valor de
“v”.
INTRODUÇÃO
 Tipos de Dados
 Comandos básicos
 Entrada: leia(v1, v2,...,vn)
A execução deste comando faz com que as variáveis listadas
recebam valores do dispositivo de entrada.
INTRODUÇÃO
 Tipos de Dados
 Comandos básicos
 Saída: escreva(v1, v2,...,vn)
A execução deste comando faz com que o dispositivo de saída
escreva os valores atuais dessas variáveis.
INTRODUÇÃO
 Tipos de Dados
 Comandos básicos
 Condicional: se L então A (senão B)
Primeiramente, a condição L é avaliada, dando um valor lógico.
Se este valor é verdadeiro então o comando A é executado; caso
contrário, é executado o comando B.
INTRODUÇÃO
 Tipos de Dados
 Comandos básicos
 Iteração: enquanto L faça A
Continua a realizar a tarefa A desde de que a condição exposta
em L seja atendida; caso contrário, deixará de realizar a tarefa A.
INTRODUÇÃO
 Tipos de Dados
 Comandos básicos
 Iteração: repita A até (que) L
O comando A é executado, pelo menos uma vez, antes da
avaliação de L.
INTRODUÇÃO
 Tipos de Dados
 Comandos básicos
 Iteração: para v de i incr p até f faça A
INTRODUÇÃO
 Tipos de Dados
 Comandos básicos
 Seleção: conforme v faça v1:c1; v2:c2;...;vn:cn; (outro : c)
INTRODUÇÃO
 Tipos de Dados
 Procedimentos
- Procedimento rotina
- Procedimento função
INTRODUÇÃO
 Tipos de Dados
 Procedimentos
 Procedimento rotina
Formato: proc nome (lista_de_parâmetros)
INTRODUÇÃO
 Tipos de Dados
 Procedimentos
 Procedimento função
Formato: proc nome (lista_de_parâmetros) : retorno
AULA 2: 21/01/2014 (TERÇA)
INTRODUÇÃO
 Matrizes
- Bidimensional: dois índices devem ser fornecidos: linha e coluna
Formato: tipo matriz : vet [ i...i ] [ j...j ]
- Unidimensionais: apenas um índice deve ser fornecido.
Formato : tipo matriz : vet [ i ...i ]
INTRODUÇÃO
 Matrizes
 Matrizes Unidimensionais
 Operações
1) Consulta: dado um índice i é fornecido o valor M(i), desde que i
esteja dentro dos limites, isto é, -N <= i <= N. Formato: consul (M,
i ) : valor
2) Alteração: dado um índice i e um valor r, coloca-se na posição
i o valor r. Formato: alter (M, i, r) : M
INTRODUÇÃO
 Matrizes
 Matrizes Unidimensionais
 Exercício
1) Considera a matriz M: [ -2 | 4 | 7 | 8 | 3.2 ], mostre qual Tipo de Dados Primitivo ela foi
declarada. Ademais, demonstre os resultados das operações:
A. consul (M, 2);
B. consul (M , 6);
C. consul (N, 3);
D. alter (M, 2, 1);
E. alter (M, 4, 2);
F. alter (M, i, 1);
G. alter (G, 0, -3);
INTRODUÇÃO
 Matrizes
 Matrizes Unidimensionais
 Exercício
2) Declare uma matriz M com tamanho 4 de real e atribua valores.
Ademais, escreva os procedimento: consul (M, i) e alter (M, i, r).
Por fim, chame o procedimentos consul e alter enviando como
parâmetro a matriz M e índices ou valores aleatórios. Demostre os
resultados.
INTRODUÇÃO
 Matrizes
 Matrizes Unidimensionais
 Representação Natural : índices podem ser negativos.
Preocupação: 1) Limites da Matriz 2) Tipo de Dados definido;
proc consul (m : vet [-2...4] de real, i : int ) : real
se (-2 <= i <= 4)
então
retorne m [ i ]
senão
escreva (“índice inadmissível”)
INTRODUÇÃO
 Matrizes
 Matrizes Unidimensionais
 Representação Natural
Preocupação: 1) Limites da Matriz 2) Tipo de Dados definido;
proc alter (m : vet [-2...4] de real, i : int, r : real ) : vet [-2...4] de real
var novaMatriz : vet [-2..4] de real
se (-2 <= i <= 4)
então
inicio
novaMatriz = m;
novaMatriz[ i ] = r;
retorne novaMatriz
fim
senão
escreva (“índice inadmissível”)
INTRODUÇÃO
 Matrizes
 Matrizes Unidimensionais
 Representação Natural
 Exercício
1) Explique por que o procedimento anterior usa a variável auxiliar
novaMatriz.
INTRODUÇÃO
 Matrizes
 Matrizes Unidimensionais
 Representação Baseada : índices começam a partir de 1
Preocupação: 1) Limites da Matriz 2) Tipo de Dados definido;
proc consul (m : vet [4] de real, i : int ) : real
se (1 <= i <= 4)
então
retorne m [ i ]
senão
escreva (“índice inadmissível”)
INTRODUÇÃO
 Matrizes
 Representação na Memória: linear
var vetor : vet [4] de int
Em geral vet será armazenado na memória em células contíguas,
cada um contendo um inteiro, a partir de um endereço de base,
como a seguir: [ [b...b+n] ]
LISTA LINEARES
 Motivação
Frequentemente nos deparamos, na solução de determinados
problemas, com conjuntos de dados que se relacionam entre si de
alguma forma, refletindo algumas propriedades que estes dados
apresentam no problema real. Naturalmente, queremos que tal
formato seja preservado quando representado no computador.
Em lista lineares, a relação de ordem é estudada.
LISTA LINEARES
 Definição
Uma lista linear é uma coleção L [a1, a2, ..., an], n >= 0, cuja
propriedade estrutural baseia-se 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:
1) a1 é o primeiro elemento de L;
2) an é o último elemento de L;
3) Ak, 1 < k < n, é precedido pelo elemento ak-1 e seguido por ak +1
em L.
LISTA LINEARES
 Operações
Entre diversas operações que podem ser realizadas sobre listas lineares, temos:
 Acessar o k-ésimo nó da lista, para o obter ou alterar o dado nele contido;
 Inserir um novo nó após (ou antes) o k-ésimo nó da lista;
 Remover o k-ésimo nó da lista;
 Concatenar duas listas;
 Determinar o número de nós de uma lista;
 Localizar o nó que contêm um dado valor;
LISTA LINEARES
 Representações
A escolha da representação dependerá da frequência com que
determinadas operações serão executadas sobre a lista. A seguir
são apresentadas as duas formas mais frequentes usadas para
representar listas lineares: por contiguidade dos nós e por
encadeamento dos nós.
LISTA LINEARES
 Representações
A escolha da representação dependerá da frequência com que
determinadas operações serão executadas sobre a lista. A seguir
são apresentadas as duas formas mais frequentes usadas para
representar listas lineares: por contiguidade dos nós e por
encadeamento dos nós.
LISTA LINEARES
 Representações
 Por contiguidade dos nós
- Explora a sequencialidade da memória do computador.
- Esta estrutura é a mesma do agregado homogêneo.
Definição: tipo lista : vet [N] de tipo
Declaração: var l : lista
Representação: l1 = l [1]
l2 = l [2]
ln = l [n]
LISTA LINEARES
 Algoritmos em lista representadas por contiguidade
1) Acessar o K-ésimo nó de uma lista
Proc acessar (l : lista, k: int, fim: int, sinal: log, val: tipo)
Se k <= 0 ou k > fim
Então
sinal = F;
Senão
Início
val = l [k];
sinal = V;
fim
LISTA LINEARES
 Algoritmos em lista representadas por contiguidade
1) Alterar o valor do K-ésimo nó de uma lista
Proc alterar (l : lista, k: int, fim: int, sinal: log, val: tipo)
Se k <= 0 ou k > fim
Então
sinal = F;
Senão
Início
l [k] = val;
sinal = V;
fim
LISTA LINEARES
 Algoritmos em lista representadas por contiguidade
1) Inserir um nó antes do K-ésimo nó de uma lista
Proc inserir (l : lista, k: int, fim: int, sinal: log, val: tipo)
Var i: int;
Se k <= 0 ou k > fim
Então
sinal = F;
Senão
Início
para i de fim incr – 1 até k faça
l[i+ 1] = l [i];
fim = fim + 1;
l [k] = val;
sinal = V;
fim
LISTA LINEARES
 Algoritmos em lista representadas por contiguidade
1) Remover o K-ésimo nó de uma lista
Proc remover (l : lista, k: int, fim: int, sinal: log, val: tipo)
Var i: int;
Se k <= 0 ou k > fim
Então
sinal = F;
Senão
Início
para i de k incr 1 até fim - 1 faça
l[i] = l [i + 1];
fim = fim - 1;
sinal = V;
fim
LISTA LINEARES
 Algoritmos em lista representadas por contiguidade
 Exercício
1) Explique a finalidade do comando para nos procedimentos
para inserir e remover um nó. O tempo necessário para se remover
um nó depende de sua posição?

Mais conteúdo relacionado

Mais procurados

Algoritmos e lp parte 4-vetores matrizes e registros
Algoritmos e lp parte 4-vetores matrizes e registrosAlgoritmos e lp parte 4-vetores matrizes e registros
Algoritmos e lp parte 4-vetores matrizes e registrosMauro Pereira
 
Análise de Componentes Principais
Análise de Componentes PrincipaisAnálise de Componentes Principais
Análise de Componentes PrincipaisCélia M. D. Sales
 
Excel aula estatística com excel
Excel   aula estatística com excelExcel   aula estatística com excel
Excel aula estatística com excelgisa_legal
 
Excel estatistica usando excel
Excel   estatistica usando excelExcel   estatistica usando excel
Excel estatistica usando excelgisa_legal
 
Turorial Básico de Matlab.
Turorial Básico de Matlab. Turorial Básico de Matlab.
Turorial Básico de Matlab. Lourran Freire
 
Estrutura de Dados - Alocação dinâmica de memória
Estrutura de Dados - Alocação dinâmica de memóriaEstrutura de Dados - Alocação dinâmica de memória
Estrutura de Dados - Alocação dinâmica de memóriaAdriano Teixeira de Souza
 

Mais procurados (19)

Spss aula2
Spss aula2Spss aula2
Spss aula2
 
Apostila spss
Apostila spssApostila spss
Apostila spss
 
Cap09
Cap09Cap09
Cap09
 
Spss 01 Desvendando
Spss 01 DesvendandoSpss 01 Desvendando
Spss 01 Desvendando
 
Algoritmos e lp parte 4-vetores matrizes e registros
Algoritmos e lp parte 4-vetores matrizes e registrosAlgoritmos e lp parte 4-vetores matrizes e registros
Algoritmos e lp parte 4-vetores matrizes e registros
 
Análise de Componentes Principais
Análise de Componentes PrincipaisAnálise de Componentes Principais
Análise de Componentes Principais
 
Aula8 diagrama sequencia
Aula8 diagrama sequenciaAula8 diagrama sequencia
Aula8 diagrama sequencia
 
Regressão Linear Múltipla
Regressão Linear MúltiplaRegressão Linear Múltipla
Regressão Linear Múltipla
 
Análise exploratória de dados no SPSS
Análise exploratória de dados no SPSSAnálise exploratória de dados no SPSS
Análise exploratória de dados no SPSS
 
SPSS – Tutorial para Iniciantes
SPSS – Tutorial para IniciantesSPSS – Tutorial para Iniciantes
SPSS – Tutorial para Iniciantes
 
Excel aula estatística com excel
Excel   aula estatística com excelExcel   aula estatística com excel
Excel aula estatística com excel
 
Excel estatistica usando excel
Excel   estatistica usando excelExcel   estatistica usando excel
Excel estatistica usando excel
 
Apostila de Alocação Dinâmica em C
Apostila de Alocação Dinâmica em CApostila de Alocação Dinâmica em C
Apostila de Alocação Dinâmica em C
 
Turorial Básico de Matlab.
Turorial Básico de Matlab. Turorial Básico de Matlab.
Turorial Básico de Matlab.
 
Análise de Sistemas Orientado a Objetos - 08 - Diagrama de Sequência
Análise de Sistemas Orientado a Objetos - 08 - Diagrama de SequênciaAnálise de Sistemas Orientado a Objetos - 08 - Diagrama de Sequência
Análise de Sistemas Orientado a Objetos - 08 - Diagrama de Sequência
 
Análise de regressão linear
Análise de regressão linearAnálise de regressão linear
Análise de regressão linear
 
Prática de Regressão no SPSS
Prática de Regressão no SPSSPrática de Regressão no SPSS
Prática de Regressão no SPSS
 
Algoritmo 06 - Array e Matrizes
Algoritmo 06 - Array e MatrizesAlgoritmo 06 - Array e Matrizes
Algoritmo 06 - Array e Matrizes
 
Estrutura de Dados - Alocação dinâmica de memória
Estrutura de Dados - Alocação dinâmica de memóriaEstrutura de Dados - Alocação dinâmica de memória
Estrutura de Dados - Alocação dinâmica de memória
 

Destaque

Estrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - ApresentaçãoEstrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - ApresentaçãoLeinylson Fontinele
 
Estrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisEstrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisFabrício Lopes Sanchez
 
(ED1) Tópico 01 - Conceitos Básicos
(ED1) Tópico 01 - Conceitos Básicos(ED1) Tópico 01 - Conceitos Básicos
(ED1) Tópico 01 - Conceitos BásicosFabricio Narcizo
 
Estrutura de Dados - Aula 03
Estrutura de Dados - Aula 03Estrutura de Dados - Aula 03
Estrutura de Dados - Aula 03thomasdacosta
 
Estrutura de Dados - Aula 02
Estrutura de Dados - Aula 02Estrutura de Dados - Aula 02
Estrutura de Dados - Aula 02thomasdacosta
 
Estrutura de Dados - Aula 01
Estrutura de Dados - Aula 01Estrutura de Dados - Aula 01
Estrutura de Dados - Aula 01thomasdacosta
 
INTERIOR DO COMPUTADOR
INTERIOR DO COMPUTADORINTERIOR DO COMPUTADOR
INTERIOR DO COMPUTADORelectricgirl
 
Arquitetura interna do computador
Arquitetura interna do computadorArquitetura interna do computador
Arquitetura interna do computadorAndleloli
 
Estrutura de Dados - Aula 04
Estrutura de Dados - Aula 04Estrutura de Dados - Aula 04
Estrutura de Dados - Aula 04thomasdacosta
 
EDII02 [2012.1] Introdução (Estruturas de Dados)
EDII02 [2012.1]   Introdução (Estruturas de Dados)EDII02 [2012.1]   Introdução (Estruturas de Dados)
EDII02 [2012.1] Introdução (Estruturas de Dados)KianeLedok
 
EDII02 [2012.1] Introdução (Estruturas de Dados)
EDII02 [2012.1]   Introdução (Estruturas de Dados)EDII02 [2012.1]   Introdução (Estruturas de Dados)
EDII02 [2012.1] Introdução (Estruturas de Dados)KianeLedok
 
Estrutura de Dados Aula 04 - Listas Estáticas
Estrutura de Dados Aula 04 - Listas EstáticasEstrutura de Dados Aula 04 - Listas Estáticas
Estrutura de Dados Aula 04 - Listas EstáticasLeinylson Fontinele
 
Estrutura de Dados - Aula 03 - Ponteiros e Funções
Estrutura de Dados - Aula 03 - Ponteiros e FunçõesEstrutura de Dados - Aula 03 - Ponteiros e Funções
Estrutura de Dados - Aula 03 - Ponteiros e FunçõesLeinylson Fontinele
 
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADEstrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADLeinylson Fontinele
 
Estrutura de Dados - Aula 04 - Listas Estáticas
Estrutura de Dados - Aula 04 - Listas EstáticasEstrutura de Dados - Aula 04 - Listas Estáticas
Estrutura de Dados - Aula 04 - Listas EstáticasLeinylson Fontinele
 

Destaque (20)

Estrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - ApresentaçãoEstrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - Apresentação
 
Estruturas de dados
Estruturas de dadosEstruturas de dados
Estruturas de dados
 
Estrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisEstrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentais
 
Introdução à Estrutura de Dados
Introdução à Estrutura de DadosIntrodução à Estrutura de Dados
Introdução à Estrutura de Dados
 
(ED1) Tópico 01 - Conceitos Básicos
(ED1) Tópico 01 - Conceitos Básicos(ED1) Tópico 01 - Conceitos Básicos
(ED1) Tópico 01 - Conceitos Básicos
 
Estrutura de Dados - Aula 03
Estrutura de Dados - Aula 03Estrutura de Dados - Aula 03
Estrutura de Dados - Aula 03
 
Estrutura de Dados - Aula 02
Estrutura de Dados - Aula 02Estrutura de Dados - Aula 02
Estrutura de Dados - Aula 02
 
Estrutura de Dados - Aula 01
Estrutura de Dados - Aula 01Estrutura de Dados - Aula 01
Estrutura de Dados - Aula 01
 
INTERIOR DO COMPUTADOR
INTERIOR DO COMPUTADORINTERIOR DO COMPUTADOR
INTERIOR DO COMPUTADOR
 
Arquitetura interna do computador
Arquitetura interna do computadorArquitetura interna do computador
Arquitetura interna do computador
 
Estrutura de Dados - Aula 04
Estrutura de Dados - Aula 04Estrutura de Dados - Aula 04
Estrutura de Dados - Aula 04
 
EDII02 [2012.1] Introdução (Estruturas de Dados)
EDII02 [2012.1]   Introdução (Estruturas de Dados)EDII02 [2012.1]   Introdução (Estruturas de Dados)
EDII02 [2012.1] Introdução (Estruturas de Dados)
 
EDII02 [2012.1] Introdução (Estruturas de Dados)
EDII02 [2012.1]   Introdução (Estruturas de Dados)EDII02 [2012.1]   Introdução (Estruturas de Dados)
EDII02 [2012.1] Introdução (Estruturas de Dados)
 
Estrutura de Dados em Java (Introdução)
Estrutura de Dados em Java (Introdução)Estrutura de Dados em Java (Introdução)
Estrutura de Dados em Java (Introdução)
 
Estrutura de Dados Aula 04 - Listas Estáticas
Estrutura de Dados Aula 04 - Listas EstáticasEstrutura de Dados Aula 04 - Listas Estáticas
Estrutura de Dados Aula 04 - Listas Estáticas
 
Estrutura de dados em Java - Pilhas
Estrutura de dados em Java - PilhasEstrutura de dados em Java - Pilhas
Estrutura de dados em Java - Pilhas
 
Estrutura de dados em Java - Filas
Estrutura de dados em Java - FilasEstrutura de dados em Java - Filas
Estrutura de dados em Java - Filas
 
Estrutura de Dados - Aula 03 - Ponteiros e Funções
Estrutura de Dados - Aula 03 - Ponteiros e FunçõesEstrutura de Dados - Aula 03 - Ponteiros e Funções
Estrutura de Dados - Aula 03 - Ponteiros e Funções
 
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADEstrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
 
Estrutura de Dados - Aula 04 - Listas Estáticas
Estrutura de Dados - Aula 04 - Listas EstáticasEstrutura de Dados - Aula 04 - Listas Estáticas
Estrutura de Dados - Aula 04 - Listas Estáticas
 

Semelhante a ESTRUTURA DE DADOS I: Conceitos e Organização

Semelhante a ESTRUTURA DE DADOS I: Conceitos e Organização (20)

Estrutura de dados
Estrutura de dadosEstrutura de dados
Estrutura de dados
 
Apostila estrutura de dados 2
Apostila estrutura de dados 2Apostila estrutura de dados 2
Apostila estrutura de dados 2
 
Alg aula 07 - matrizes tp1
Alg   aula 07 - matrizes tp1Alg   aula 07 - matrizes tp1
Alg aula 07 - matrizes tp1
 
Algoritmo e Estrutura de dados em C - Aula 01 - 2019
Algoritmo e Estrutura de dados em C - Aula 01 - 2019Algoritmo e Estrutura de dados em C - Aula 01 - 2019
Algoritmo e Estrutura de dados em C - Aula 01 - 2019
 
Ed1
Ed1Ed1
Ed1
 
Cap09
Cap09Cap09
Cap09
 
Cap09
Cap09Cap09
Cap09
 
Linguagem R
Linguagem RLinguagem R
Linguagem R
 
Curso Básico de Java - Aula 5
Curso Básico de Java - Aula 5Curso Básico de Java - Aula 5
Curso Básico de Java - Aula 5
 
Slide_Python.pdf
Slide_Python.pdfSlide_Python.pdf
Slide_Python.pdf
 
Cap05
Cap05Cap05
Cap05
 
Cap05
Cap05Cap05
Cap05
 
Cap05
Cap05Cap05
Cap05
 
Excel - como funciona
Excel - como funcionaExcel - como funciona
Excel - como funciona
 
Matrizes
MatrizesMatrizes
Matrizes
 
8. matrizes
8. matrizes8. matrizes
8. matrizes
 
Aula 2 módulo i - psi
Aula 2   módulo i - psiAula 2   módulo i - psi
Aula 2 módulo i - psi
 
Estdescr
EstdescrEstdescr
Estdescr
 
Logica java ate slide 30
Logica java   ate slide 30Logica java   ate slide 30
Logica java ate slide 30
 
Aula de programacao_final.dizando
Aula de programacao_final.dizandoAula de programacao_final.dizando
Aula de programacao_final.dizando
 

ESTRUTURA DE DADOS I: Conceitos e Organização

  • 1. ESTRUTURA DE DADOS I Prof. Alan Mello Email: alan_dbpva@Hotmail.com
  • 2. AULA 1: 20/01/2013 (SEGUNDA)
  • 3. EMENTA  Conceitos básicos em estruturas de dados. Organização linear e não-linear. Organização aleatória. Listas lineares: filas e pilhas. Listas não-lineares: arvores e grafos.
  • 4. BIBLIOGRAFIA  GUIMARÃES, A. M.; LAGES, N. A. C. Algoritmos e Estrutura de Dados. Rio de Janeiro: LTC, 1994.  VELOSO, P. [et al]. Estrutura de Dados. Rio de Janeiro: Elsevier, 1983 – 28° impressão.  VILLAS, M. V. [et al]. Estrutura de Dados: Conceitos e Técnicas de Implementação. Rio de Janeiro: Campus, 1983  PEREIRA, S. L. Estrutura de Dados: Conceitos e Aplicações. São Paulo: Érica, 1996, 2° edição.  SZWAREFITER, J. L.; MARKENZON, L. Estrutura de Dados e Seus Algoritmos. Rio de Janeiro: LTC, 1994.
  • 5. INTRODUÇÃO  O que significa abstração?  O que é um algoritmo?  O que é um programa de computador?  O que é computação?  O que são estruturas de Dados?
  • 6. INTRODUÇÃO Objetivos das Estruturas de Dados - Teórico: Identificar e desenvolver modelos matemáticos, determinando que classes de problemas podem ser resolvidos com o uso deles. Obs: um modelo matemático representa um aspecto físico. - Prática: Criar representações concretas dos objetos e desenvolver rotinas capazes de atuar sobre estas representações, de acordo com o modelo considerado.
  • 7. INTRODUÇÃO  Benefícios das Estruturas de Dados: – Organização da informação – Melhora o desempenho – Proporciona o reuso de código - Proporciona interoperabilidade
  • 8. INTRODUÇÃO  Desenvolvimento de programas – Especificações do problema – Projeto em alto nível – Análise das alternativas - Refinamento e codificação – Verificação do comportamento
  • 9. INTRODUÇÃO  Desenvolvimento de programas  Destaque em três pontos - Estruturas de dados - Operações - Estrutura de representação
  • 10. INTRODUÇÃO  Desenvolvimento de programas Resumindo, um programa é encarado como (representação de) um algoritmo que manipula (representações de) dados.
  • 11. INTRODUÇÃO  Tipos de Dados A noção de tipo de dados ocorre na maioria das linguagens de programação. Ao declararmos o tipo de uma variável , delimitamos o conjunto de valores que ela pode tomar e as operações que podemos efetuar sobre ela.
  • 12. INTRODUÇÃO  Tipos de Dados  Tipos Primitivos São tipos básicos predefinidos, ex: Inteiro, real, lógico, caracter.
  • 13. INTRODUÇÃO  Tipos de Dados  Tipos Primitivos  Tipo Inteiro - São valores inteiros (negativos, zero ou positivos) - Operações permissíveis: soma, subtração, multiplicação, divisão inteira, resto da divisão. - Formato: int
  • 14. INTRODUÇÃO  Tipos de Dados  Tipos Primitivos  Tipo real - São números racionais, isto é, números normalmente representados por uma parte inteira e uma parte fracionária. - Operações permissíveis: soma, subtração, multiplicação e divisão. - Formato: real
  • 15. INTRODUÇÃO  Tipos de Dados  Tipos Primitivos  Tipo lógico - Consistem em exatamente dois valores: Verdadeiro e falso. - Operações permissíveis: e, ou, não. - Formato: log
  • 16. INTRODUÇÃO  Tipos de Dados  Tipos Primitivos  Tipo caractere - São chamados “caracteres alfanuméricos”: os dígitos decimais (0-9), as letras (A-Z) e alguns sinais especiais (espaço em branco, sinais de pontuação etc.) - Operações permissíveis: comparação. - Formato: car
  • 17. INTRODUÇÃO  Tipos de Dados  Tipos estáticos de dados A estrutura desses dados são completamente definidos antes de começarmos a efetuar operações. Logo, este tipo de dado tem tamanho definido.  Tipos dinâmicos de dados São aqueles que sofrem alteração estruturas quando estão sendo manipulados. Logo, este tipo de dado não tem tamanho definido.
  • 18. INTRODUÇÃO  Tipos de Dados  Funções de Transferência Em muitos casos basta considerar operações que manipulam valores de um determinado tipo e produzem resultados no mesmo tipo. Porém, em alguns casos, mais de um tipo de dado é manipulado, assim como, o resultado da manipulação um tipo de dado pode ser outro tipo de dado. Ex: trunc(a : float) : int
  • 19. INTRODUÇÃO  Tipos de Dados  Mecanismos para construção de tipos Permitem a construção de outro tipo a partir dos tipos primitivos. Ex de mecanismos: vetor, registro, sequência, referência, alternativa.
  • 20. INTRODUÇÃO  Tipos de Dados  Mecanismos para construção de tipos  Vetor O vetor permite a construção de um tipo cujos valores são agregados homogêneos de um tamanho definido, isto é, seus componentes são todas de um mesmo tipo. Ex: vetor [1...10] de inteiros. Formato: tipo valor-mensal : vet [1...12] de real
  • 21. INTRODUÇÃO  Tipos de Dados  Mecanismos para construção de tipos  Registro Agregados heterogêneos, isto é, os componentes desta construção não são necessariamente de um mesmo tipo. Ex: registro (código do funcionário: inteiro, salário: real ) Formato: tipo funcionario : reg (código : int, salario: real)
  • 22. INTRODUÇÃO  Tipos de Dados  Mecanismos para construção de tipos  Sequência Tipo cujos objetos são coleção ordenadas de objetos do tipo de dados, sem qualquer limitação no seu tamanho (exceto por ser finito). Ex: cadeia de caracteres. Formato: tipo cadeia : seq car
  • 23. INTRODUÇÃO  Tipos de Dados  Mecanismos para construção de tipos  Enumeração Permite definir tipos de dados por meio dos valores que os dados daquele tipo podem tomar. Ex: mês possíveis em um ano. Formato: tipo mês : enum <jan, fev, mar, abr, maio, jun, jul, ago, set...dez>
  • 24. INTRODUÇÃO  Tipos de Dados  Variáveis, declarações e expressões Nomes (identificadores) podem ser utilizados para denotar variáveis. Tal identificador é atribuído explicitamente na declaração da variável. Ademais, cada variável possui um conjunto de expressões válidas. Formato: var nome : tipo
  • 25. INTRODUÇÃO  Tipos de Dados  Comandos básicos São utilizados para descrever algoritmos que manipulem variáveis que, por sua vez, estão associadas com tipos de dados. São exemplos de comandos: Atribuição, Entrada, Saída, Condicionais, Iteração e Seleção.
  • 26. INTRODUÇÃO  Tipos de Dados  Comandos básicos  Atribuição: v <- e A avaliação da expressão “e” fornece um valor, que deve ser do tipo declarado para a variável “v” e que passa a ser o valor de “v”.
  • 27. INTRODUÇÃO  Tipos de Dados  Comandos básicos  Entrada: leia(v1, v2,...,vn) A execução deste comando faz com que as variáveis listadas recebam valores do dispositivo de entrada.
  • 28. INTRODUÇÃO  Tipos de Dados  Comandos básicos  Saída: escreva(v1, v2,...,vn) A execução deste comando faz com que o dispositivo de saída escreva os valores atuais dessas variáveis.
  • 29. INTRODUÇÃO  Tipos de Dados  Comandos básicos  Condicional: se L então A (senão B) Primeiramente, a condição L é avaliada, dando um valor lógico. Se este valor é verdadeiro então o comando A é executado; caso contrário, é executado o comando B.
  • 30. INTRODUÇÃO  Tipos de Dados  Comandos básicos  Iteração: enquanto L faça A Continua a realizar a tarefa A desde de que a condição exposta em L seja atendida; caso contrário, deixará de realizar a tarefa A.
  • 31. INTRODUÇÃO  Tipos de Dados  Comandos básicos  Iteração: repita A até (que) L O comando A é executado, pelo menos uma vez, antes da avaliação de L.
  • 32. INTRODUÇÃO  Tipos de Dados  Comandos básicos  Iteração: para v de i incr p até f faça A
  • 33. INTRODUÇÃO  Tipos de Dados  Comandos básicos  Seleção: conforme v faça v1:c1; v2:c2;...;vn:cn; (outro : c)
  • 34. INTRODUÇÃO  Tipos de Dados  Procedimentos - Procedimento rotina - Procedimento função
  • 35. INTRODUÇÃO  Tipos de Dados  Procedimentos  Procedimento rotina Formato: proc nome (lista_de_parâmetros)
  • 36. INTRODUÇÃO  Tipos de Dados  Procedimentos  Procedimento função Formato: proc nome (lista_de_parâmetros) : retorno
  • 37. AULA 2: 21/01/2014 (TERÇA)
  • 38. INTRODUÇÃO  Matrizes - Bidimensional: dois índices devem ser fornecidos: linha e coluna Formato: tipo matriz : vet [ i...i ] [ j...j ] - Unidimensionais: apenas um índice deve ser fornecido. Formato : tipo matriz : vet [ i ...i ]
  • 39. INTRODUÇÃO  Matrizes  Matrizes Unidimensionais  Operações 1) Consulta: dado um índice i é fornecido o valor M(i), desde que i esteja dentro dos limites, isto é, -N <= i <= N. Formato: consul (M, i ) : valor 2) Alteração: dado um índice i e um valor r, coloca-se na posição i o valor r. Formato: alter (M, i, r) : M
  • 40. INTRODUÇÃO  Matrizes  Matrizes Unidimensionais  Exercício 1) Considera a matriz M: [ -2 | 4 | 7 | 8 | 3.2 ], mostre qual Tipo de Dados Primitivo ela foi declarada. Ademais, demonstre os resultados das operações: A. consul (M, 2); B. consul (M , 6); C. consul (N, 3); D. alter (M, 2, 1); E. alter (M, 4, 2); F. alter (M, i, 1); G. alter (G, 0, -3);
  • 41. INTRODUÇÃO  Matrizes  Matrizes Unidimensionais  Exercício 2) Declare uma matriz M com tamanho 4 de real e atribua valores. Ademais, escreva os procedimento: consul (M, i) e alter (M, i, r). Por fim, chame o procedimentos consul e alter enviando como parâmetro a matriz M e índices ou valores aleatórios. Demostre os resultados.
  • 42. INTRODUÇÃO  Matrizes  Matrizes Unidimensionais  Representação Natural : índices podem ser negativos. Preocupação: 1) Limites da Matriz 2) Tipo de Dados definido; proc consul (m : vet [-2...4] de real, i : int ) : real se (-2 <= i <= 4) então retorne m [ i ] senão escreva (“índice inadmissível”)
  • 43. INTRODUÇÃO  Matrizes  Matrizes Unidimensionais  Representação Natural Preocupação: 1) Limites da Matriz 2) Tipo de Dados definido; proc alter (m : vet [-2...4] de real, i : int, r : real ) : vet [-2...4] de real var novaMatriz : vet [-2..4] de real se (-2 <= i <= 4) então inicio novaMatriz = m; novaMatriz[ i ] = r; retorne novaMatriz fim senão escreva (“índice inadmissível”)
  • 44. INTRODUÇÃO  Matrizes  Matrizes Unidimensionais  Representação Natural  Exercício 1) Explique por que o procedimento anterior usa a variável auxiliar novaMatriz.
  • 45. INTRODUÇÃO  Matrizes  Matrizes Unidimensionais  Representação Baseada : índices começam a partir de 1 Preocupação: 1) Limites da Matriz 2) Tipo de Dados definido; proc consul (m : vet [4] de real, i : int ) : real se (1 <= i <= 4) então retorne m [ i ] senão escreva (“índice inadmissível”)
  • 46. INTRODUÇÃO  Matrizes  Representação na Memória: linear var vetor : vet [4] de int Em geral vet será armazenado na memória em células contíguas, cada um contendo um inteiro, a partir de um endereço de base, como a seguir: [ [b...b+n] ]
  • 47. LISTA LINEARES  Motivação Frequentemente nos deparamos, na solução de determinados problemas, com conjuntos de dados que se relacionam entre si de alguma forma, refletindo algumas propriedades que estes dados apresentam no problema real. Naturalmente, queremos que tal formato seja preservado quando representado no computador. Em lista lineares, a relação de ordem é estudada.
  • 48. LISTA LINEARES  Definição Uma lista linear é uma coleção L [a1, a2, ..., an], n >= 0, cuja propriedade estrutural baseia-se 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: 1) a1 é o primeiro elemento de L; 2) an é o último elemento de L; 3) Ak, 1 < k < n, é precedido pelo elemento ak-1 e seguido por ak +1 em L.
  • 49. LISTA LINEARES  Operações Entre diversas operações que podem ser realizadas sobre listas lineares, temos:  Acessar o k-ésimo nó da lista, para o obter ou alterar o dado nele contido;  Inserir um novo nó após (ou antes) o k-ésimo nó da lista;  Remover o k-ésimo nó da lista;  Concatenar duas listas;  Determinar o número de nós de uma lista;  Localizar o nó que contêm um dado valor;
  • 50. LISTA LINEARES  Representações A escolha da representação dependerá da frequência com que determinadas operações serão executadas sobre a lista. A seguir são apresentadas as duas formas mais frequentes usadas para representar listas lineares: por contiguidade dos nós e por encadeamento dos nós.
  • 51. LISTA LINEARES  Representações A escolha da representação dependerá da frequência com que determinadas operações serão executadas sobre a lista. A seguir são apresentadas as duas formas mais frequentes usadas para representar listas lineares: por contiguidade dos nós e por encadeamento dos nós.
  • 52. LISTA LINEARES  Representações  Por contiguidade dos nós - Explora a sequencialidade da memória do computador. - Esta estrutura é a mesma do agregado homogêneo. Definição: tipo lista : vet [N] de tipo Declaração: var l : lista Representação: l1 = l [1] l2 = l [2] ln = l [n]
  • 53. LISTA LINEARES  Algoritmos em lista representadas por contiguidade 1) Acessar o K-ésimo nó de uma lista Proc acessar (l : lista, k: int, fim: int, sinal: log, val: tipo) Se k <= 0 ou k > fim Então sinal = F; Senão Início val = l [k]; sinal = V; fim
  • 54. LISTA LINEARES  Algoritmos em lista representadas por contiguidade 1) Alterar o valor do K-ésimo nó de uma lista Proc alterar (l : lista, k: int, fim: int, sinal: log, val: tipo) Se k <= 0 ou k > fim Então sinal = F; Senão Início l [k] = val; sinal = V; fim
  • 55. LISTA LINEARES  Algoritmos em lista representadas por contiguidade 1) Inserir um nó antes do K-ésimo nó de uma lista Proc inserir (l : lista, k: int, fim: int, sinal: log, val: tipo) Var i: int; Se k <= 0 ou k > fim Então sinal = F; Senão Início para i de fim incr – 1 até k faça l[i+ 1] = l [i]; fim = fim + 1; l [k] = val; sinal = V; fim
  • 56. LISTA LINEARES  Algoritmos em lista representadas por contiguidade 1) Remover o K-ésimo nó de uma lista Proc remover (l : lista, k: int, fim: int, sinal: log, val: tipo) Var i: int; Se k <= 0 ou k > fim Então sinal = F; Senão Início para i de k incr 1 até fim - 1 faça l[i] = l [i + 1]; fim = fim - 1; sinal = V; fim
  • 57. LISTA LINEARES  Algoritmos em lista representadas por contiguidade  Exercício 1) Explique a finalidade do comando para nos procedimentos para inserir e remover um nó. O tempo necessário para se remover um nó depende de sua posição?