Universidade Federal de São Carlos
Departamento de Computação
“Introdução a Computação”
Capítulo II
Estruturas de Dados
Mestrado em Ciência da Computação
Sistemas Distribuídos e Redes
Luanna Lopes Lobato
luanna_lobato@dc.ufscar.br
Sã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:
Vetor
10 20 30 40 50 60 70 80 40 60
1 2 3 4 5 6 7 8 9 10
Exemplo de atribuição
• Var vetInt: Array[1..10] of integer;
10 20 30 40 50 60 70 80 40 60
1 2 3 4 5 6 7 8 9 10
• Var vetChar: Array[1..26] of char;
A B C D
V W X Y Z
1 2 3 4 ... 22 23 24 25 26
• Var vetStr: Array[1..15] of String[2];
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
Resolução Exercício 2
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.
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 15 25 30 11 15
2 10 20 30 40 50
1 2 3 4 5
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
begin
writeln(‘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
Resolução Exercício 2
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;
{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.
Universidade Federal de São Carlos
Departamento de Computação
“Introdução a Computação”
Capítulo II
Estruturas de Dados
Mestrado em Ciência da Computação
Sistemas Distribuídos e Redes
Luanna Lopes Lobato
luanna_lobato@dc.ufscar.br
Sã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
Download

Var Matriz - Departamento de Computação