Upload
internet
View
104
Download
0
Embed Size (px)
Citation preview
“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
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
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
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
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
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;
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
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
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
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
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;
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
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
{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.
“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
Exercício Fixação
• Dadas duas matrizes reais Amxn e Bnxp, calcular o produto de A por B.
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;
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.