SlideShare uma empresa Scribd logo
1 de 7
Aula 003
Estrutura de Dados
PRONATEC
Programa Nacional de Acesso ao
Ensino Técnico e Emprego
PRONATEC
Programa Nacional de Acesso
ao Ensino Técnico e Emprego
1. Estrutura de Dados
• Até aqui vimos as estruturas de dados que não se
alteram em sua forma ou dimensão: vetor, matriz
e record. Por isso elas são chamadas “Estruturas
de Dados Estáticas”.
• Agora vamos estudar as “Estruturas de Dados
Dinâmicas” que podem se alterar em forma e
dimensões e podem “crescer” ou “diminuir” de
acordo com a necessidade de quem as utiliza.
• Dentre as estruturas dinâmicas mais conhecidas
estudaremos: conjuntos, listas ligadas, filas,
pilhas, árvores e grafos.
2. Conjuntos
• Um conjunto é uma coleção de elementos sem repetição
• Operações: saber se está vazio, elemento pertence ou não ao
conjunto, inserir ou remover elemento, união e interseção
entre conjuntos.
• Vamos fazer as operações:
• CriaConjunto (c): inicializa a estrutura do conjunto
• ConjuntoVazio (c): retorna TRUE se “c” é vazio
• Cardinalidade (c): número de elementos em “c”
• Pertence (x,C): retorno TRUE se “x” está em “C”
• Insere(x,C): inclui elemento “x” no conjunto “C”
• Remove(x,C): remove “x” do conjunto “C”
• Uniao(c1,c2,c3): une os conjuntos “c1” e “c2” dando como
resultado o conjunto “c3”
• Intersecao(c1,c2,c3): faz a interseção entre os conuntos “c1” e
“c2” dando o resultado no conjunto “c3”
• Contido(c1,c2): retorna TRUE se “c1” está contido em “c2”
3. Definições para Conjuntos
• A estrutura de um conjunto em pascal pode ser definida como
um tipo:
CONST max = 10000;
TYPE vetor = array[1..max] of integer;
conjunto = record
tam: integer;
v: vetor;
end;
• Com essa definição podemos declarar uma variável do tipo
“conjunto” assim:
VAR c : conjunto;
• Função para criar um Conjunto, somente faz o tamanho ser “0”
Procedure CriaConjunto (var c:conjunto);
Begin
c.tam := 0;
End;
4. Operações com Conjuntos
• Verificar se um conjunto está vazio:
Procedure ConjuntoVazio (c:conjunto);
Begin
result := c.tam = 0;
End;
• Verificar o tamanho do conjunto
Function Cardinalidade (c:conjunto):integer;
Begin
result := c.tam;
End;
• Ver se um elemento pertence ao conjunto
Function Pertence (x:integer;
c:conjunto):boolean;
Var i:integer;
Begin
result := false; i:=1;
while (i<=c.tam)and(not result) do begin
result := c.v[i] = x; i:=i+1;
end;
End;
• Inserir um elemento no conjunto
Procedure Insere (x:integer; var c:conjunto);
Begin
if Pertence(x,c) then exit;
c.v [c.tam+1] := x; c.tam := c.tam + 1;
End;
• Devolve a posição de um elemento no vetor
Function Posicao (x:integer; c:conjunto):integer;
Var i:integer;
Begin
result:=0; i:=1;
while (i<=c.tam)and(result=0) do begin
if c.v[i] = x then result:=i; i:=i+1;
end;
End;
• Remover elemento de um conjunto
Procedure Remove(x:integer; c:conjunto);
Var i,p:integer;
Begin
p:=Posicao(x,c); if (p=0) then exit;
for i:=p to c.tam-1 do c.v[i] := c.v[i+1];
c.tam := c.tam – 1;
End;
5. Operações entre Conjuntos
• Fazer união entre dois conjuntos:
Procedure Uniao (c1,c2:conjunto; var c3:conjunto);
Var i:integer;
Begin
c3.tam := 0;
for i:=1 to c1.tam do Insere(c1.v[i], c3);
for i:=1 to c2.tam do Insere(c2.v[i], c3);
End;
• Fazer interseção entre dois conjuntos:
Procedure Intersecao (c1,c2:conjunto; var c3:conjunto);
Var i:integer;
Begin
c3.tam := 0;
for i:=1 to c1.tam do
if Pertence (c1.v[i], c2) then Insere(c1.v[i], c2);
End;
• Verifica se um conjunto está contido no outro
Function Contido (c1,c2:conjunto) : boolean;
Var i:integer;
Begin
result := True;
for i:=1 to c1.tam do
result := result and Pertence (c1.v[i], c2);
End;

Mais conteúdo relacionado

Destaque

Banco de Dados II - Aula1
Banco de Dados II - Aula1Banco de Dados II - Aula1
Banco de Dados II - Aula1Cláudio Amaral
 
Projeto de Sistemas - Aula004
Projeto de Sistemas - Aula004Projeto de Sistemas - Aula004
Projeto de Sistemas - Aula004Cláudio Amaral
 
Orientação a Objetos no Delphi - Controle de Estoque (III)
Orientação a Objetos no Delphi - Controle de Estoque (III)Orientação a Objetos no Delphi - Controle de Estoque (III)
Orientação a Objetos no Delphi - Controle de Estoque (III)Ryan Padilha
 
Orientação a Objetos no Delphi - Controle de Estoque (II)
Orientação a Objetos no Delphi - Controle de Estoque (II)Orientação a Objetos no Delphi - Controle de Estoque (II)
Orientação a Objetos no Delphi - Controle de Estoque (II)Ryan Padilha
 
Programação orientada a objetos em delphi
Programação orientada a objetos em delphiProgramação orientada a objetos em delphi
Programação orientada a objetos em delphiHelder Lopes
 
Projeto de Sistemas - Aula002
Projeto de Sistemas - Aula002Projeto de Sistemas - Aula002
Projeto de Sistemas - Aula002Cláudio Amaral
 
Orientação a Objetos no Delphi - Por onde começar (I)
Orientação a Objetos no Delphi - Por onde começar (I)Orientação a Objetos no Delphi - Por onde começar (I)
Orientação a Objetos no Delphi - Por onde começar (I)Ryan Padilha
 
Curso de Delphi Fundamental e Logica de Programacao (SABADOS)
Curso de Delphi Fundamental e Logica de Programacao (SABADOS) Curso de Delphi Fundamental e Logica de Programacao (SABADOS)
Curso de Delphi Fundamental e Logica de Programacao (SABADOS) Grupo Treinar
 
Projeto de Sistemas - Aula003
Projeto de Sistemas - Aula003Projeto de Sistemas - Aula003
Projeto de Sistemas - Aula003Cláudio Amaral
 
Curso De Programação Em DelPhi
Curso De Programação Em DelPhiCurso De Programação Em DelPhi
Curso De Programação Em DelPhiMikeNandes
 
DER - Diagrama de Entidade e Relacionamentos
DER - Diagrama de Entidade e RelacionamentosDER - Diagrama de Entidade e Relacionamentos
DER - Diagrama de Entidade e RelacionamentosCláudio Amaral
 

Destaque (16)

Banco de Dados II - Aula1
Banco de Dados II - Aula1Banco de Dados II - Aula1
Banco de Dados II - Aula1
 
Projeto de Sistemas - Aula004
Projeto de Sistemas - Aula004Projeto de Sistemas - Aula004
Projeto de Sistemas - Aula004
 
Linguagem Delphi-Introdução
Linguagem Delphi-IntroduçãoLinguagem Delphi-Introdução
Linguagem Delphi-Introdução
 
Orientação a Objetos no Delphi - Controle de Estoque (III)
Orientação a Objetos no Delphi - Controle de Estoque (III)Orientação a Objetos no Delphi - Controle de Estoque (III)
Orientação a Objetos no Delphi - Controle de Estoque (III)
 
Orientação a Objetos no Delphi - Controle de Estoque (II)
Orientação a Objetos no Delphi - Controle de Estoque (II)Orientação a Objetos no Delphi - Controle de Estoque (II)
Orientação a Objetos no Delphi - Controle de Estoque (II)
 
Oo delphi
Oo delphiOo delphi
Oo delphi
 
Programação orientada a objetos em delphi
Programação orientada a objetos em delphiProgramação orientada a objetos em delphi
Programação orientada a objetos em delphi
 
Programação aula002
Programação aula002Programação aula002
Programação aula002
 
Projeto de Sistemas - Aula002
Projeto de Sistemas - Aula002Projeto de Sistemas - Aula002
Projeto de Sistemas - Aula002
 
Orientação a Objetos no Delphi - Por onde começar (I)
Orientação a Objetos no Delphi - Por onde começar (I)Orientação a Objetos no Delphi - Por onde começar (I)
Orientação a Objetos no Delphi - Por onde começar (I)
 
Curso delphi 7 nova
Curso delphi 7 novaCurso delphi 7 nova
Curso delphi 7 nova
 
Curso de Delphi Fundamental e Logica de Programacao (SABADOS)
Curso de Delphi Fundamental e Logica de Programacao (SABADOS) Curso de Delphi Fundamental e Logica de Programacao (SABADOS)
Curso de Delphi Fundamental e Logica de Programacao (SABADOS)
 
Projeto de Sistemas - Aula003
Projeto de Sistemas - Aula003Projeto de Sistemas - Aula003
Projeto de Sistemas - Aula003
 
Programação aula001
Programação aula001Programação aula001
Programação aula001
 
Curso De Programação Em DelPhi
Curso De Programação Em DelPhiCurso De Programação Em DelPhi
Curso De Programação Em DelPhi
 
DER - Diagrama de Entidade e Relacionamentos
DER - Diagrama de Entidade e RelacionamentosDER - Diagrama de Entidade e Relacionamentos
DER - Diagrama de Entidade e Relacionamentos
 

Semelhante a Programação aula003

Aula 01 -_pilhas_e_filas_com_vetores-oop
Aula 01 -_pilhas_e_filas_com_vetores-oopAula 01 -_pilhas_e_filas_com_vetores-oop
Aula 01 -_pilhas_e_filas_com_vetores-oopJean Martina
 
Java basico modulo_03
Java basico modulo_03Java basico modulo_03
Java basico modulo_03wammendes
 
Vetores, Matrizes e Strings em C Parte 1
Vetores, Matrizes e Strings em C Parte 1Vetores, Matrizes e Strings em C Parte 1
Vetores, Matrizes e Strings em C Parte 1Elaine Cecília Gatto
 
Tutorial aed iii 006 - algoritmo de ordenação quicksort
Tutorial aed iii   006 - algoritmo de ordenação quicksortTutorial aed iii   006 - algoritmo de ordenação quicksort
Tutorial aed iii 006 - algoritmo de ordenação quicksortFlávio Freitas
 
6.3 Clustering_338ca79f26242f5b9b48a218cfc35819.pdf
6.3 Clustering_338ca79f26242f5b9b48a218cfc35819.pdf6.3 Clustering_338ca79f26242f5b9b48a218cfc35819.pdf
6.3 Clustering_338ca79f26242f5b9b48a218cfc35819.pdfDavidLarronda1
 
Manual PSInf - Modulo 5
Manual PSInf - Modulo 5Manual PSInf - Modulo 5
Manual PSInf - Modulo 5Mariana Hiyori
 
(A12) LabMM3 - JavaScript - Arrays
(A12) LabMM3 - JavaScript - Arrays(A12) LabMM3 - JavaScript - Arrays
(A12) LabMM3 - JavaScript - ArraysCarlos Santos
 
mod4-estruturas-dadosestaticas-ordenacao
mod4-estruturas-dadosestaticas-ordenacaomod4-estruturas-dadosestaticas-ordenacao
mod4-estruturas-dadosestaticas-ordenacaodiogoa21
 
Programação Desktop: Revisão Core Java
Programação Desktop: Revisão Core JavaProgramação Desktop: Revisão Core Java
Programação Desktop: Revisão Core JavaElaine Cecília Gatto
 
T12_LM3: Arrays (2013-2014)
T12_LM3: Arrays (2013-2014)T12_LM3: Arrays (2013-2014)
T12_LM3: Arrays (2013-2014)Carlos Santos
 
Domain Driven Design (DDD) - DevIsland, BH
Domain Driven Design (DDD) - DevIsland, BHDomain Driven Design (DDD) - DevIsland, BH
Domain Driven Design (DDD) - DevIsland, BHGiovanni Bassi
 
Curso java 03 - métodos e parâmetros
Curso java   03 - métodos e parâmetrosCurso java   03 - métodos e parâmetros
Curso java 03 - métodos e parâmetrosMaurício Linhares
 
Aulas de estrutura de dados por Ayrton Yagami
Aulas de estrutura de dados por Ayrton YagamiAulas de estrutura de dados por Ayrton Yagami
Aulas de estrutura de dados por Ayrton YagamiAyrton Yagami
 
Java - Visão geral e Exercícios
Java - Visão geral e ExercíciosJava - Visão geral e Exercícios
Java - Visão geral e ExercíciosArthur Emanuel
 
Tutorial aed iii 009 - algoritmo de ordenação heapsort
Tutorial aed iii   009 - algoritmo de ordenação heapsortTutorial aed iii   009 - algoritmo de ordenação heapsort
Tutorial aed iii 009 - algoritmo de ordenação heapsortFlávio Freitas
 
Maratona Windows Phone 7
Maratona Windows Phone 7Maratona Windows Phone 7
Maratona Windows Phone 7Felipe Pimentel
 

Semelhante a Programação aula003 (20)

Aula 01 -_pilhas_e_filas_com_vetores-oop
Aula 01 -_pilhas_e_filas_com_vetores-oopAula 01 -_pilhas_e_filas_com_vetores-oop
Aula 01 -_pilhas_e_filas_com_vetores-oop
 
Java basico modulo_03
Java basico modulo_03Java basico modulo_03
Java basico modulo_03
 
Vetores, Matrizes e Strings em C Parte 1
Vetores, Matrizes e Strings em C Parte 1Vetores, Matrizes e Strings em C Parte 1
Vetores, Matrizes e Strings em C Parte 1
 
Tutorial aed iii 006 - algoritmo de ordenação quicksort
Tutorial aed iii   006 - algoritmo de ordenação quicksortTutorial aed iii   006 - algoritmo de ordenação quicksort
Tutorial aed iii 006 - algoritmo de ordenação quicksort
 
6.3 Clustering_338ca79f26242f5b9b48a218cfc35819.pdf
6.3 Clustering_338ca79f26242f5b9b48a218cfc35819.pdf6.3 Clustering_338ca79f26242f5b9b48a218cfc35819.pdf
6.3 Clustering_338ca79f26242f5b9b48a218cfc35819.pdf
 
Manual PSInf - Modulo 5
Manual PSInf - Modulo 5Manual PSInf - Modulo 5
Manual PSInf - Modulo 5
 
(A12) LabMM3 - JavaScript - Arrays
(A12) LabMM3 - JavaScript - Arrays(A12) LabMM3 - JavaScript - Arrays
(A12) LabMM3 - JavaScript - Arrays
 
mod4-estruturas-dadosestaticas-ordenacao
mod4-estruturas-dadosestaticas-ordenacaomod4-estruturas-dadosestaticas-ordenacao
mod4-estruturas-dadosestaticas-ordenacao
 
Programação Desktop: Revisão Core Java
Programação Desktop: Revisão Core JavaProgramação Desktop: Revisão Core Java
Programação Desktop: Revisão Core Java
 
T12_LM3: Arrays (2013-2014)
T12_LM3: Arrays (2013-2014)T12_LM3: Arrays (2013-2014)
T12_LM3: Arrays (2013-2014)
 
Domain Driven Design (DDD) - DevIsland, BH
Domain Driven Design (DDD) - DevIsland, BHDomain Driven Design (DDD) - DevIsland, BH
Domain Driven Design (DDD) - DevIsland, BH
 
Curso java 03 - métodos e parâmetros
Curso java   03 - métodos e parâmetrosCurso java   03 - métodos e parâmetros
Curso java 03 - métodos e parâmetros
 
Aulas de estrutura de dados por Ayrton Yagami
Aulas de estrutura de dados por Ayrton YagamiAulas de estrutura de dados por Ayrton Yagami
Aulas de estrutura de dados por Ayrton Yagami
 
Linguagem C - Vetores
Linguagem C - VetoresLinguagem C - Vetores
Linguagem C - Vetores
 
Java - Visão geral e Exercícios
Java - Visão geral e ExercíciosJava - Visão geral e Exercícios
Java - Visão geral e Exercícios
 
DDD > Experiências
DDD > ExperiênciasDDD > Experiências
DDD > Experiências
 
Tutorial aed iii 009 - algoritmo de ordenação heapsort
Tutorial aed iii   009 - algoritmo de ordenação heapsortTutorial aed iii   009 - algoritmo de ordenação heapsort
Tutorial aed iii 009 - algoritmo de ordenação heapsort
 
Maratona Windows Phone 7
Maratona Windows Phone 7Maratona Windows Phone 7
Maratona Windows Phone 7
 
Arrays
ArraysArrays
Arrays
 
Modulo02
Modulo02Modulo02
Modulo02
 

Mais de Cláudio Amaral

Mais de Cláudio Amaral (17)

Projeto de Sistemas - Parte001
Projeto de Sistemas - Parte001Projeto de Sistemas - Parte001
Projeto de Sistemas - Parte001
 
Aplicativo aula008
Aplicativo aula008Aplicativo aula008
Aplicativo aula008
 
Aplicativo aula007
Aplicativo aula007Aplicativo aula007
Aplicativo aula007
 
Sistema Operacional - Aula005
Sistema Operacional - Aula005Sistema Operacional - Aula005
Sistema Operacional - Aula005
 
Sistema Operacional - Aula003
Sistema Operacional - Aula003Sistema Operacional - Aula003
Sistema Operacional - Aula003
 
Sistema Operacional - Aula002
Sistema Operacional - Aula002Sistema Operacional - Aula002
Sistema Operacional - Aula002
 
Sistema Operacional - Aula001
Sistema Operacional - Aula001Sistema Operacional - Aula001
Sistema Operacional - Aula001
 
Sistema Operacional - Aula006
Sistema Operacional - Aula006Sistema Operacional - Aula006
Sistema Operacional - Aula006
 
Sistema Operacional - Aula004
Sistema Operacional - Aula004Sistema Operacional - Aula004
Sistema Operacional - Aula004
 
Aplicativo aula03
Aplicativo aula03Aplicativo aula03
Aplicativo aula03
 
Aplicativo aula02
Aplicativo aula02Aplicativo aula02
Aplicativo aula02
 
Aplicativo aula01
Aplicativo aula01Aplicativo aula01
Aplicativo aula01
 
Aplicativo aula05
Aplicativo aula05Aplicativo aula05
Aplicativo aula05
 
Aplicativo aula04
Aplicativo aula04Aplicativo aula04
Aplicativo aula04
 
Banco dedados aula001
Banco dedados aula001Banco dedados aula001
Banco dedados aula001
 
Banco dedados aula003
Banco dedados aula003Banco dedados aula003
Banco dedados aula003
 
Banco dedados aula002
Banco dedados aula002Banco dedados aula002
Banco dedados aula002
 

Programação aula003

  • 1. Aula 003 Estrutura de Dados PRONATEC Programa Nacional de Acesso ao Ensino Técnico e Emprego
  • 2. PRONATEC Programa Nacional de Acesso ao Ensino Técnico e Emprego
  • 3. 1. Estrutura de Dados • Até aqui vimos as estruturas de dados que não se alteram em sua forma ou dimensão: vetor, matriz e record. Por isso elas são chamadas “Estruturas de Dados Estáticas”. • Agora vamos estudar as “Estruturas de Dados Dinâmicas” que podem se alterar em forma e dimensões e podem “crescer” ou “diminuir” de acordo com a necessidade de quem as utiliza. • Dentre as estruturas dinâmicas mais conhecidas estudaremos: conjuntos, listas ligadas, filas, pilhas, árvores e grafos.
  • 4. 2. Conjuntos • Um conjunto é uma coleção de elementos sem repetição • Operações: saber se está vazio, elemento pertence ou não ao conjunto, inserir ou remover elemento, união e interseção entre conjuntos. • Vamos fazer as operações: • CriaConjunto (c): inicializa a estrutura do conjunto • ConjuntoVazio (c): retorna TRUE se “c” é vazio • Cardinalidade (c): número de elementos em “c” • Pertence (x,C): retorno TRUE se “x” está em “C” • Insere(x,C): inclui elemento “x” no conjunto “C” • Remove(x,C): remove “x” do conjunto “C” • Uniao(c1,c2,c3): une os conjuntos “c1” e “c2” dando como resultado o conjunto “c3” • Intersecao(c1,c2,c3): faz a interseção entre os conuntos “c1” e “c2” dando o resultado no conjunto “c3” • Contido(c1,c2): retorna TRUE se “c1” está contido em “c2”
  • 5. 3. Definições para Conjuntos • A estrutura de um conjunto em pascal pode ser definida como um tipo: CONST max = 10000; TYPE vetor = array[1..max] of integer; conjunto = record tam: integer; v: vetor; end; • Com essa definição podemos declarar uma variável do tipo “conjunto” assim: VAR c : conjunto; • Função para criar um Conjunto, somente faz o tamanho ser “0” Procedure CriaConjunto (var c:conjunto); Begin c.tam := 0; End;
  • 6. 4. Operações com Conjuntos • Verificar se um conjunto está vazio: Procedure ConjuntoVazio (c:conjunto); Begin result := c.tam = 0; End; • Verificar o tamanho do conjunto Function Cardinalidade (c:conjunto):integer; Begin result := c.tam; End; • Ver se um elemento pertence ao conjunto Function Pertence (x:integer; c:conjunto):boolean; Var i:integer; Begin result := false; i:=1; while (i<=c.tam)and(not result) do begin result := c.v[i] = x; i:=i+1; end; End; • Inserir um elemento no conjunto Procedure Insere (x:integer; var c:conjunto); Begin if Pertence(x,c) then exit; c.v [c.tam+1] := x; c.tam := c.tam + 1; End; • Devolve a posição de um elemento no vetor Function Posicao (x:integer; c:conjunto):integer; Var i:integer; Begin result:=0; i:=1; while (i<=c.tam)and(result=0) do begin if c.v[i] = x then result:=i; i:=i+1; end; End; • Remover elemento de um conjunto Procedure Remove(x:integer; c:conjunto); Var i,p:integer; Begin p:=Posicao(x,c); if (p=0) then exit; for i:=p to c.tam-1 do c.v[i] := c.v[i+1]; c.tam := c.tam – 1; End;
  • 7. 5. Operações entre Conjuntos • Fazer união entre dois conjuntos: Procedure Uniao (c1,c2:conjunto; var c3:conjunto); Var i:integer; Begin c3.tam := 0; for i:=1 to c1.tam do Insere(c1.v[i], c3); for i:=1 to c2.tam do Insere(c2.v[i], c3); End; • Fazer interseção entre dois conjuntos: Procedure Intersecao (c1,c2:conjunto; var c3:conjunto); Var i:integer; Begin c3.tam := 0; for i:=1 to c1.tam do if Pertence (c1.v[i], c2) then Insere(c1.v[i], c2); End; • Verifica se um conjunto está contido no outro Function Contido (c1,c2:conjunto) : boolean; Var i:integer; Begin result := True; for i:=1 to c1.tam do result := result and Pertence (c1.v[i], c2); End;