Créditos FEC-Unicam

Variáveis Compostas Homogêneas Multidimensionais

São variáveis compostas que necessitam de mais de um índice para individualização de seus elementos.
A criação desse tipo de variável é feita com a seguinte declaração:

lista-de-identificadores : ARRAY[k] OF t;

lista-de-identificadores são os nome que serão associados às variáveis multidimensionais.
k é da forma l11..l12,l21..l22, ... ,ln1..ln2, que são limites do intervalo de variação de cada um dos n índices da variável.
t é o tipo a que pertencem os componentes do conjunto.


Por exemplo, para criar uma variável notas2, contendo as notas de alunos em cada disciplina, onde as linhas representam os alunos e as colunas representam as disciplinas, faz-se o seguinte

notas2 : array[1..10,1..5] of real;

Isso indica que temos 10 alunos e 5 disciplinas, ou o contrário, conforme a convenção que se adotar para linha e para coluna. Para acessar a nota do aluno 3 na disciplina 5 basta referenciá-lo por
nota2[3,5] ou nota[3][5]. Outros exemplos de acesso aos elementos neste tipo de variável são:
notas2[3,4], notas2[5,5], notas2[i,j]
ou
notas2[3][4], notas2[5][5], notas2[i][j]

Exemplo 4.2:

program matrizes;
{Calcular a média das notas de cada aluno e as médias das notas em cada disciplina}

var

notas2 : array[1..10,1..5] of real;
media_aluno : array[1..10] of real;
media_disc : array[1..5] of real;
i, j : integer;
soma, media : real;
begin

{ preenche a matriz notas2, linha a linha (aluno) }
for i:= 1 to 10 do
for j:= 1 to 5 do
read(notas2[i,j]);
{ calculando as médias das notas dos alunos}
for i:= 1 to 10 do
begin
soma := 0;
for j:= 1 to 5 do
soma := soma + notas2[i,j];
media := soma/5;
media_aluno[i] := media;
end;
{ calculando as médias das notas em cada disciplina }

for j:= 1 to 5 do
begin
soma := 0;
for i:= 1 to 10 do
soma := soma + notas2[i,j];
media := soma/10;
media_disc[j] := media;
end;
{ Imprimindo os resultados }
writeln('Média das notas dos alunos:');
for i:= 1 to 10 do
writeln('Aluno[', i:2, '] = ', media_aluno[i]:3:2);
writeln('Média das notas em cada disciplina:');
for j:= 1 to 5 do
writeln('Disciplina[', j:2, '] = ', media_disc[j]:3:2);
end.