ESTRUTURA DE DADOS Professor Victor Sotero Estrutura de Dados 1.

39
ESTRUTURA DE DADOS Professor Victor Sotero Estrutura de Dados 1

Transcript of ESTRUTURA DE DADOS Professor Victor Sotero Estrutura de Dados 1.

Page 1: ESTRUTURA DE DADOS Professor Victor Sotero Estrutura de Dados 1.

ESTRUTURA DE DADOS

Professor Victor Sotero

Estrutura de Dados 1

Page 2: ESTRUTURA DE DADOS Professor Victor Sotero Estrutura de Dados 1.

MODELO DE COMPUTADOR

Estrutura de Dados 2

Page 3: ESTRUTURA DE DADOS Professor Victor Sotero Estrutura de Dados 1.

TIPOS DE DADOS BÁSICOS• 1- Inteiro• 2-Real• 3- Lógico• 4-Caracter

• Esses são os mais utilizados até agora, mas também existe outros tipos de dados, como os vetores, matrizes e registros que serão vistos mais na frente.

Estrutura de Dados 3

Page 4: ESTRUTURA DE DADOS Professor Victor Sotero Estrutura de Dados 1.

INÍCIO• Algoritmo:

– Sequência de ações executáveis para a solução de um determinado tipo de problema Exemplo: “Receita de Bolo”

– Em geral, algoritmos trabalham sobre Estruturas de Dados

• Conjunto de dados que representam uma situação real• Abstração da realidade

– Estruturas de Dados e Algoritmos estão intimamente ligados

Estrutura de Dados 4

Page 5: ESTRUTURA DE DADOS Professor Victor Sotero Estrutura de Dados 1.

REPRESENTAÇÃO DOS DADOS

Dados podem estar representados (estruturados) de diferentes maneiras. Normalmente, a escolha da representação é determinada pelas operações que serão utilizadas sobre eles. Exemplo: números inteiros

• Representação por palitinhos: II + IIII = IIIIIIBoa para pequenos números (operação simples)

• Representação decimal: 1278 + 321 = 1599Boa para números maiores (operação complexa)

Estrutura de Dados 5

Page 6: ESTRUTURA DE DADOS Professor Victor Sotero Estrutura de Dados 1.

O QUE É UMA ESTRUTURA DE DADOS?

Estrutura de Dados 6

Page 7: ESTRUTURA DE DADOS Professor Victor Sotero Estrutura de Dados 1.

ESTRUTURA DE DADOS• Geralmente, os algoritmos são elaborados para

manipulação de dados e quando estes dados estão organizados de forma coerente, representam uma estrutura de dados.

• Os tipos Primitivos (inteiro, real, caracter e lógico) não são suficientes para representar todos os tipos de dados. Geralmente são utilizados os tipos primitivos para construir outras estruturas de dados mais complexas.

Estrutura de Dados 7

Page 8: ESTRUTURA DE DADOS Professor Victor Sotero Estrutura de Dados 1.

ESTRUTURA DE DADOS

• A organização dos dados é chamada de estrutura composta de dados que se divide em duas formas fundamentais: homogêneas (vetores e matrizes) e heterogêneas (registros).

Estrutura de Dados 8

Page 9: ESTRUTURA DE DADOS Professor Victor Sotero Estrutura de Dados 1.

TIPOS DE ESTRUTURAS DE DADOS

• As estruturas de dados são chamadas tipos de dados compostos que dividem-se em homogêneos (vetores e matrizes) e heterogêneos (registros).

• As estruturas homogêneas são conjuntos de dados formados pelo mesmo tipo de dado primitivo.

• As estruturas heterogêneas são conjuntos de dados formados por tipos de dados primitivos diferentes (campos do registro) em uma mesma estrutura.

Estrutura de Dados 9

Page 10: ESTRUTURA DE DADOS Professor Victor Sotero Estrutura de Dados 1.

TIPOS DE DADOS BÁSICOS

• Tipos construídos– Vetor(array): agrega número fixo de dados de um

mesmo tipo.• vet [ limite_inf .. limite_sup ] de tipobásic

Estrutura de Dados 10

Page 11: ESTRUTURA DE DADOS Professor Victor Sotero Estrutura de Dados 1.

VETORES (VCU)

Variáveis compostas unidimensionais são variáveis compostas por um conjunto de dados referenciados por um mesmo nome e que necessitam de somente um índice para que seus elementos sejam endereçados.Sintaxe da declaração: tipo IDENTIFICADOR = vetor [LI..LF] de <tipo>; IDENTIFICADOR : lista de variáveis;

Estrutura de Dados 11

Onde: • LI : representa o limite inicial do vetor; • LF : representa o limite final do vetor; • <tipo> : representa qualquer um dos tipos básicos ou tipo anteriormente definido; • lista de variáveis : lista de variáveis (separadas por vírgula) que terão o mesmo tipo denotado por IDENTIFICADOR.

Page 12: ESTRUTURA DE DADOS Professor Victor Sotero Estrutura de Dados 1.

MANIPULAÇÃO DE VETORESAo imaginar o elevador de um prédio, sabemos que este é capaz de acessar qualquer um de seus andares. Entretanto, não basta saber que andar desejamos atingir se não soubermos o nome do edifício, pois qualquer um possui andares. O que precisamos de antemão é saber o nome do edifício e só então nos preocuparmos para qual daqueles andares queremos ir. O mesmo acontece com o vetor.

Estrutura de Dados 12

Page 13: ESTRUTURA DE DADOS Professor Victor Sotero Estrutura de Dados 1.

MANIPULAÇÃO DE VETORESO nome do vetor é determinado por meio do identificador que foi utilizado na definição de variáveis, e a posição, por meio da constante, expressão aritmética ou variável que estiver dentro dos colchetes, também denominada índice. Após isolar um único elemento do vetor, poderemos manipulá-lo através de qualquer operação de entrada, saída ou atribuição.

Estrutura de Dados 13

Exemplo: leia V[5]; V[5] ← V[5] + 1; escreva V[5];

Page 14: ESTRUTURA DE DADOS Professor Victor Sotero Estrutura de Dados 1.

CAMPO• CAMPO

É um conjunto de caracteres ou um campo isolado, por exemplo o Nome_Completo, que possui características próprias para armanezar dados sobre o nome de um funcionário.Essas características englobam o tipo de dados que devem possuir, o tamanho e outra informações importantes.

Estrutura de Dados 14

Page 15: ESTRUTURA DE DADOS Professor Victor Sotero Estrutura de Dados 1.

REGISTRO• Conjunto de campos com características sobre uma

pessoa, local, receita e outros. Por exemplo: um registro de um funcionário vai conter informações como: nome, data de nascimento, endereço, salário, data de admissão, etc...

• Nós podemos dizer que o registro é o único tipo de dado que pode agregar diversos tipos de dados dentro dele.

Estrutura de Dados 15

Page 16: ESTRUTURA DE DADOS Professor Victor Sotero Estrutura de Dados 1.

ARQUIVOS• Nada mais é que um conjunto de registros

(linhas) que identificam a informação através de uma chave ou índice agilizando a manipulação das informações.

Estrutura de Dados 16

Page 17: ESTRUTURA DE DADOS Professor Victor Sotero Estrutura de Dados 1.

BANCO DE DADOS

• Conjunto de arquivos ou tabelas com informações que podem ser compartilhadas com vários usuários e assim são relacionadas.

Estrutura de Dados 17

Page 18: ESTRUTURA DE DADOS Professor Victor Sotero Estrutura de Dados 1.

VARIÁVEIS COMPOSTAS HOMOGÊNIAS

Já sabemos que um conjunto homogêneo de dados é composto por variáveis do mesmo tipo primitivo, porém, se tivéssemos um conjunto em que os elementos não são do mesmo tipo, teríamos então um conjunto heterogêneo de dados. Exemplificando, poderíamos ter um conjunto de animais quadrúpedes, formado por cães (matilha), camelos (cáfila), búfalos (manada), etc.

Estrutura de Dados 18

Page 19: ESTRUTURA DE DADOS Professor Victor Sotero Estrutura de Dados 1.

REGISTROSUma das principais estruturas de dados é o registro. Para exemplificar, imagine uma passagem de ônibus, que é formada por um conjunto de dados logicamente relacionados, porém de tipos diferentes, tais como número da passagem (inteiro), origem e destino (caractere), data (caractere), horário (caractere), poltrona (inteiro), distância (real), que são subdivisões do registro (elementos do conjunto), também chamadas de campos. Logo, um registro é composto por campos que são partes que especificam cada um dos dados.

Estrutura de Dados 19

Page 20: ESTRUTURA DE DADOS Professor Victor Sotero Estrutura de Dados 1.

REGISTROS (SINTAXE)

tipo IDENTIFICADOR = registro tipo1 : campo1; tipo2 : campo2; . . . . tipon : campon; fim registro; IDENTIFICADOR : lista de variáveis;

Estrutura de Dados 20

Onde: • IDENTIFICADOR : representa o nome associado ao tipo registro construído; • tipo1, tipo2, tipon : representam qualquer um dos tipos básicos ou tipo anteriormente definido; • campo1, campo2, campon : representam nomes associados a cada campo do registro; • lista de variáveis : lista de variáveis (separadas por vírgula) que terão o mesmo tipo denotado por IDENTIFICADOR.

Page 21: ESTRUTURA DE DADOS Professor Victor Sotero Estrutura de Dados 1.

REGISTROS (cont.)

Estrutura de Dados 21

Page 22: ESTRUTURA DE DADOS Professor Victor Sotero Estrutura de Dados 1.

CRIANDO REGISTROS• Para declarar um registro em algoritmos deve ser feito da

mesma forma que declaramos uma variável, ou seja, no início do algoritmo.

• Ex:

Estrutura de Dados 22

File: REGISTRO <ínicio da estrutura com nome File> Nome_Completo: inteiro; Endereco: String [50]; Sexo: Char; Salario :real;Fim_Registro <fim da estrutura>

Page 23: ESTRUTURA DE DADOS Professor Victor Sotero Estrutura de Dados 1.

REGISTROS(exemplo)tipo REGPASSAGEM = registro inteiro : NUMERO, POLTRONA; caractere : ORIGEM, DESTINO, DATA, HORÁRIO; real: DISTANCIA; fim registro; REGPASSAGEM : PASSAGEM;

Estrutura de Dados 23

O exemplo corresponde à definição de um modelo REGPASSAGEM de um registro e à criação de uma área de memória chamada PASSAGEM, capaz de conter sete subdivisões.

Page 24: ESTRUTURA DE DADOS Professor Victor Sotero Estrutura de Dados 1.

MANIPULAÇÃO DE REGISTROS Em determinados momentos podemos precisar de todas as informações contidas no registro (PASSAGEM) ou de apenas algum campo do registro (como freqüentemente, o número da poltrona).Quando acessamos o registro genericamente, estamos referenciando obrigatoriamente todos os campos por ele envolvidos.

Exemplo: leia (PASSAGEM); escreva (PASSAGEM)

Estrutura de Dados 24

Page 25: ESTRUTURA DE DADOS Professor Victor Sotero Estrutura de Dados 1.

MANIPULANDO REGISTROS

Para utilizar um campo específico do registro, devemos diferenciar esse campo. Para tal utilizamos o caractere “.” (ponto) para estabelecer a separação entre o nome do registro e o nome do campo. Exemplo: leia (PASSAGEM.POLTRONA); escreva (PASSAGEM.NUMERO);

Estrutura de Dados 25

Page 26: ESTRUTURA DE DADOS Professor Victor Sotero Estrutura de Dados 1.

CRIANDO E LENDO UMA ESTRUTURA DE DADOS

1. Declarar as variáveis para criação do registro Cadastro:Cadastro=registro NomeAluno: String [50]; Nota1: real; Nota2: real; Nota3: real; Nota4: real;Fim_registro2- Criar uma variável de nome Alunoque terá o formato de Cadastro (registro):Aluno: Cadastro

Estrutura de Dados 26

3- Solicitar a digitação do nome e notas e armazenar nas variáveis: Ler Aluno.NomeAluno; Ler Aluno.Nota1; Ler Aluno.Nota2; Ler Aluno.Nota3; Ler Aluno.Nota4;Fim

Page 27: ESTRUTURA DE DADOS Professor Victor Sotero Estrutura de Dados 1.

REGISTRO DE CONJUNTOSOs registros vistos até agora possuíam em seus campos apenas informações de tipos primitivos, entretanto, podemos dispor também de campos que são compostos, ou seja, formados por outros tipos construídos.Por enquanto só trataremos de problemas com vetores.

Estrutura de Dados 27

Page 28: ESTRUTURA DE DADOS Professor Victor Sotero Estrutura de Dados 1.

REGISTRO DE CONJUNTOSDigamos que possuímos um registro de estoque de um produto, contendo como um de seus campos um valor numérico que indique baixas por dia do produto, por dia de semana. Temos então, um vetor de seis posições, na qual cada posição corresponde a um dia útil da semana.

Estrutura de Dados 28

Para declarar o tipo registro anterior, utilizamos um tipo construído vetor; então, precisamos primeiramente declarar tal tipo, e depois o tipo registro; isto é, precisamos declarar todos os conjuntos que serão incluídos no registro antes da sua declaração.

Page 29: ESTRUTURA DE DADOS Professor Victor Sotero Estrutura de Dados 1.

REGISTRO DE CONJUNTOS (exemplo)

Sintaxe da declaração: Exemplos: a) tipo VDIAS = vetor [1..6] de inteiro;

tipo REGPROD = registro caractere : NOME; inteiro : CODIGO; real : PRECO; VDIAS : BAIXA; fim registro;

REGPROD : PRODUTO;

Estrutura de Dados 29

Page 30: ESTRUTURA DE DADOS Professor Victor Sotero Estrutura de Dados 1.

REGISTRO DE CONJUNTOSNas estruturas compostas homogêneas (vetores e matrizes) utilizamos tipos de dados primitivos como sendo os elementos dessas estruturas. Agora utilizaremos como componente dessa estrutura não apenas um tipo primitivo, mas sim os tipos construídos, neste caso os registros. Supondo que quiséssemos manter um registro de informações relativas às passagens rodoviárias de todos os lugares de um ônibus, utilizaríamos um registro referente a cada poltrona (PASSAGEM), e para agrupar todos eles utilizaríamos um conjunto desses registros.

Estrutura de Dados 30

Page 31: ESTRUTURA DE DADOS Professor Victor Sotero Estrutura de Dados 1.

REGISTRO DE CONJUNTOS (cont.)

Como possuímos 44 lugares num ônibus, numerados seqüencialmente de 1 até 44, podemos, para uni-los, criar um vetor no qual cada posição é um elemento de tipo construído registro (PASSAGEM).

Estrutura de Dados 31

Page 32: ESTRUTURA DE DADOS Professor Victor Sotero Estrutura de Dados 1.

SINTAXE DE DECLARAÇÃOComo possuímos um vetor composto por registros, não podemos declarar esse vetor sem antes ter declarado seus elementos; devemos então declarar primeiro o tipo construído registro e depois o vetor.

Estrutura de Dados 32

a) tipo REGPASSAGEM = registro inteiro : NUMERO, POLTRONA; caractere : ORIGEM, DESTINO, DATA, HORÁRIO; real: DISTANCIA; fim registro; tipo VETPASSAGEM = vetor [1..44] de REGPASSAGEM; VETPASSAGEM : ONIBUS;

Page 33: ESTRUTURA DE DADOS Professor Victor Sotero Estrutura de Dados 1.

TIPOS DE DADOS X ESTRUTURA DE DADOS

Embora estes termos sejam parecidos, eles 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.

Estrutura de Dados 33

Page 34: ESTRUTURA DE DADOS Professor Victor Sotero Estrutura de Dados 1.

TIPOS DE DADOS• Uma declaração de variável em uma linguagem como C

ou Pascal especifica:1. O conjunto de valores que pode assumir.2. O conjunto de operações que podemos efetuar.3. A quantidade de bytes que deve ser reservada

para ela.4. Como o dado representado por esses bytes

deve ser interpretado (por exemplo, uma cadeia de bits pode ser interpretada como um inteiro ou real...).

Estrutura de Dados 34

Resumindo: tipos de dados podem ser vistos como métodos para interpretar o conteúdo da memória do computador.

Page 35: ESTRUTURA DE DADOS Professor Victor Sotero Estrutura de Dados 1.

TIPOS DE DADOS• Podemos ver também o conceito de Tipo de Dados de

uma outra perspectiva: não em termos do que um computador pode fazer (interpretar os bits...) mas em termos do que os usuários desejam fazer (somar dois inteiros...).

• Este conceito de Tipo de Dado divorciado do hardware é chamado Tipo Abstrato de Dado - TAD.

• Estrutura de Dados é um método particular de se implementar uma TAD.

Estrutura de Dados 35

Page 36: ESTRUTURA DE DADOS Professor Victor Sotero Estrutura de Dados 1.

TIPO ABSTRATO DE DADOS - TAD

• A implementação de um TAD escolhe uma ED para representá-lo. Cada ED é construída dos tipos primitivos (inteiro,real, char,...) ou dos tipos compostos (array, registro,...) de uma linguagem de programação.

Estrutura de Dados 36

Page 37: ESTRUTURA DE DADOS Professor Victor Sotero Estrutura de Dados 1.

EXEMPLOS DE ED

LINEARES NÃO LINEARES

Listas Ordenadas Árvores

Pilhas Grafos

Filas

Deques

Estrutura de Dados 37

Page 38: ESTRUTURA DE DADOS Professor Victor Sotero Estrutura de Dados 1.

PILHAS, FILAS E DEQUES• Arrays, assim como listas*, são freqüentemente usados para

implementar coleções seqüenciais de dados onde as alterações (inserção/remoção) são efetuadas apenas no início ou no final da seqüência:• Pilha: inserção e remoção na mesma extremidade• Fila: inserção numa extremidade e remoção na outra• Deque (double-ended queue): inserção e remoção em ambas extremidades

* OBS.: Lembre que estamos empregando o termo “array”para denotar coleções de dados de mesmo tamanho armazenados contiguamente em memória. Falaremos de listas mais tarde.

Estrutura de Dados 38

Page 39: ESTRUTURA DE DADOS Professor Victor Sotero Estrutura de Dados 1.

LISTAS LINEARES

• Estrutura de dados organizada de forma linear, onde a mesma pode ter n nós (n>=0).

• Quando n=0 dizemos que é uma lista vazia.

Estrutura de Dados 39

Podemos: consultar, inserir, deletar sobre os nós de uma lista.