Programação aula003

226 visualizações

Publicada em

0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
226
No SlideShare
0
A partir de incorporações
0
Número de incorporações
7
Ações
Compartilhamentos
0
Downloads
2
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Programação aula003

  1. 1. Aula 003 Estrutura de Dados PRONATEC Programa Nacional de Acesso ao Ensino Técnico e Emprego
  2. 2. PRONATEC Programa Nacional de Acesso ao Ensino Técnico e Emprego
  3. 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. 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. 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. 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. 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;

×