“Introdução a Computação” Capítulo II Estruturas de Dados Universidade Federal de São...

18
“Introdução a ComputaçãoCapítulo II Estruturas de Dados Universidade Federal de São Universidade Federal de São Carlos Carlos Departamento de Computação Departamento de Computação Luanna Lopes Lobato [email protected] Mestrado em Ciência da Mestrado em Ciência da Computação Computação Sistemas Distribuídos e Redes Sistemas Distribuídos e Redes São Carlos – Maio 2006

Transcript of “Introdução a Computação” Capítulo II Estruturas de Dados Universidade Federal de São...

Page 1: “Introdução a Computação” Capítulo II Estruturas de Dados Universidade Federal de São Carlos Departamento de Computação Luanna Lopes Lobato luanna_lobato@dc.ufscar.br.

“Introdução a Computação”Capítulo II

Estruturas de Dados

Universidade Federal de São Carlos Universidade Federal de São Carlos

Departamento de ComputaçãoDepartamento de Computação

Luanna Lopes [email protected]

Mestrado em Ciência da ComputaçãoMestrado em Ciência da Computação

Sistemas Distribuídos e RedesSistemas Distribuídos e RedesSão Carlos – Maio 2006

Page 2: “Introdução a Computação” Capítulo II Estruturas de Dados Universidade Federal de São Carlos Departamento de Computação Luanna Lopes Lobato luanna_lobato@dc.ufscar.br.

Variáveis compostas Homogêneas

• Possibilidade de acesso:– Variáveis;– Conjunto de dados agrupados.

• Para calcular média da sala e informar quais alunos tem nota >= média:– Declarar num de variáveis = num de alunos

– Impraticável

• Utiliza-se Estruturas de Dados:– Vetores ou Matrizes

Page 3: “Introdução a Computação” Capítulo II Estruturas de Dados Universidade Federal de São Carlos Departamento de Computação Luanna Lopes Lobato luanna_lobato@dc.ufscar.br.

Unidimensionais - Vetores

• São posições de memória, de mesmo conteúdo, identificadas por um mesmo nome (identificador), individualizadas por índices;

• Exemplo:– Conjunto de NOTAS:

• Declaração:Var identificador: Array [Li..Ls] of tipo;

• Exemplo:10 20 30 40 50 60 70 80 40 60

Vetor

1 2 3 4 5 6 7 8 9 10

Page 4: “Introdução a Computação” Capítulo II Estruturas de Dados Universidade Federal de São Carlos Departamento de Computação Luanna Lopes Lobato luanna_lobato@dc.ufscar.br.

Exemplo de atribuição

• Var vetInt: Array[1..10] of integer;

• Var vetChar: Array[1..26] of char;

• Var vetStr: Array[1..15] of String[2];

10 20 30 40 50 60 70 80 40 60

1 2 3 4 5 6 7 8 9 10

A B C D V W X Y Z

1 2 3 4 ... 22 23 24 25 26

aa bb cc dd vv ab cd ve dv

1 2 3 4 ... 11 12 13 14 15

Page 5: “Introdução a Computação” Capítulo II Estruturas de Dados Universidade Federal de São Carlos Departamento de Computação Luanna Lopes Lobato luanna_lobato@dc.ufscar.br.

Atribuição

• Referência a todo vetor:

Atribuição de um vetor para outro:– V1:=V2; {V1 mesmo tipo e tam de V2}

• Referência a um único elemento do vetor:– Atribuição– Leitura– Uso de Expressões

Page 6: “Introdução a Computação” Capítulo II Estruturas de Dados Universidade Federal de São Carlos Departamento de Computação Luanna Lopes Lobato luanna_lobato@dc.ufscar.br.

Referências ao Vetor

• V1[5] := 2; {V1 vetor de inteiros}• V1[2] := V1[1] + 10;• V1[i+1] := V1[i+2]; {i>=0}• read(V1[1]);• write(V1[i]);

• For i:=1 to N do begin

read(V1[i]);write(V1[i]);

end;

Page 7: “Introdução a Computação” Capítulo II Estruturas de Dados Universidade Federal de São Carlos Departamento de Computação Luanna Lopes Lobato luanna_lobato@dc.ufscar.br.

Exercícios

1) Dada uma seqüência de n números, imprimi-la na ordem inversa à da leitura.

2) Fazer um programa que leia 50 valores inteiros, armazene-os em um vetor, calcule e imprima a média dos valores.

1/30

Page 8: “Introdução a Computação” Capítulo II Estruturas de Dados Universidade Federal de São Carlos Departamento de Computação Luanna Lopes Lobato luanna_lobato@dc.ufscar.br.

Program calculaMedia;Uses crt;var i: integer; vetor: array [1..5] of integer; soma, media: real;

begin clrscr; soma:=0; {Inicializa variavel com 0} {Leitura dos valores} for i:=1 to 5 do begin writeln('Informe o valor ', i); readln(vetor[i]); soma := soma + vetor[i]; {Soma os valores} end; {Calculo da media} media := soma/5; writeln('A media dos valores eh:', media:1:5); readln;end.

Resolução Exercício 2

Page 9: “Introdução a Computação” Capítulo II Estruturas de Dados Universidade Federal de São Carlos Departamento de Computação Luanna Lopes Lobato luanna_lobato@dc.ufscar.br.

Bidimensionais - Matrizes

• Declaração:

Var identificador: Array [Li..Ls, Li..Ls] of tipo;

• Exemplo:

Var Matriz: Array [1..5, 1..2] of integer;

Matriz

1 2 3 4 5

1

2

15 25 30 11 15

10 20 30 40 50

Page 10: “Introdução a Computação” Capítulo II Estruturas de Dados Universidade Federal de São Carlos Departamento de Computação Luanna Lopes Lobato luanna_lobato@dc.ufscar.br.

Atribuição

• Referência a toda matriz:

Atribuição de uma matriz para outra:– M1:=M2; {M1 mesmo tipo e tam de M2}

• Referência a um único elemento da matriz:– Atribuição– Leitura– Uso de Expressões

1/30

Page 11: “Introdução a Computação” Capítulo II Estruturas de Dados Universidade Federal de São Carlos Departamento de Computação Luanna Lopes Lobato luanna_lobato@dc.ufscar.br.

Referências

• M1[1,2] := 2; {M1 matriz de inteiros}• M1[2,1] := M1[2,2] + 10;• M1[i+1,j] := M1[i+2,j+1]; {i, j>=0}• read(M1[1,3]);• write(M1[i,j]);• for i:=1 to N do

for j:= 1 to M do

beginwriteln(‘Entre com M[’i,’,’,j,’]’);

read(M1[i,j]);end;

Page 12: “Introdução a Computação” Capítulo II Estruturas de Dados Universidade Federal de São Carlos Departamento de Computação Luanna Lopes Lobato luanna_lobato@dc.ufscar.br.

Exercícios

1) Dada uma matriz de tamanho 5 x 5, preencher a matriz com valores iguais a soma de suas posições e imprimir o resultado.

2) Ler 2 matrizes 5x4, calcular e escrever a matriz soma entre elas.

1/30

Page 13: “Introdução a Computação” Capítulo II Estruturas de Dados Universidade Federal de São Carlos Departamento de Computação Luanna Lopes Lobato luanna_lobato@dc.ufscar.br.

Program somaMatrizes;Uses crt;Var i,j: integer; A, B, Soma: array [1..5, 1..4] of integer;

Begin clrscr; {Lendo a Matriz A} for i:= 1 to 5 do for j:= 1 to 4 do begin writeln('Escreva valor de A[',i,',',j,']'); readln(A[i,j]); end;

Resolução Exercício 2

Page 14: “Introdução a Computação” Capítulo II Estruturas de Dados Universidade Federal de São Carlos Departamento de Computação Luanna Lopes Lobato luanna_lobato@dc.ufscar.br.

{Lendo a Matriz B}for i:= 1 to 5 do for j:= 1 to 4 do begin writeln('Escreva valor de B[',i,',',j,']'); readln(B[i,j]); end;

writeln(' '); {Somando as matrizes} for i:= 1 to 5 do begin for j:= 1 to 4 do begin Soma[i,j]:= A[i,j] + B[i,j]; write(Soma[i,j]); {Imprime as linhas da matriz} end; writeln(' '); {pula linha para imprimir proxima linha} end; readln;end.

Page 15: “Introdução a Computação” Capítulo II Estruturas de Dados Universidade Federal de São Carlos Departamento de Computação Luanna Lopes Lobato luanna_lobato@dc.ufscar.br.

“Introdução a Computação”Capítulo II

Estruturas de Dados

Universidade Federal de São Carlos Universidade Federal de São Carlos

Departamento de ComputaçãoDepartamento de Computação

Luanna Lopes [email protected]

Mestrado em Ciência da ComputaçãoMestrado em Ciência da Computação

Sistemas Distribuídos e RedesSistemas Distribuídos e RedesSão Carlos – Maio 2006

Page 16: “Introdução a Computação” Capítulo II Estruturas de Dados Universidade Federal de São Carlos Departamento de Computação Luanna Lopes Lobato luanna_lobato@dc.ufscar.br.

Exercício Fixação

• Dadas duas matrizes reais  Amxn e Bnxp, calcular o produto de A por B.

Page 17: “Introdução a Computação” Capítulo II Estruturas de Dados Universidade Federal de São Carlos Departamento de Computação Luanna Lopes Lobato luanna_lobato@dc.ufscar.br.

program Produto; var

m, n, nb, p, i, j, k: integer; Prod: real; A, B, C: array [1..50,1..50] of real; begin

write ('Entre com o tamanho(mXn) da matriz A: '); readln(m,n); write ('Digite a matriz A: '); for i:=1 to m do

for j:=1 to n do read(A[i,j]);

write ('Entre com o tamanho(nXp) da matriz B: '); readln(nb,p); if nb<>n then write('Nao existe o produto da matriz A por B!!')

else begin

write ('Digite a matriz B: '); for i:=1 to n do

for j:=1 to p do read(B[i,j]);

i := 1;

Page 18: “Introdução a Computação” Capítulo II Estruturas de Dados Universidade Federal de São Carlos Departamento de Computação Luanna Lopes Lobato luanna_lobato@dc.ufscar.br.

while i<=m do begin j := 1; while j<=p do begin Prod := 0; for k:=1 to n do

Prod := Prod + A[i,k]*B[k,j]; C[i,j] := Prod; j := j+1;

Prod := 0 end; i := i+1

end; writeln ('Matriz A X B =');

for i:=1 to m do begin

for j:=1 to p do write(C[i,j],' '); writeln

end end end.