O documento descreve uma fórmula para calcular o endereço de memória de um elemento em uma matriz armazenada por coluna. A fórmula é Location(A[i,j]) = endereço base + (j*m + i) * tamanho do elemento - (coluna base * m + linha base) * tamanho do elemento, onde i e j são os índices da linha e coluna, m é o número de linhas, e o endereço base e os índices de base podem ser especificados.
Calculation of Address Elements for Matrices Stored by Column.
1. Cálculo do Endereço de Elementos para Matrizes
Armazenadas por Coluna
Michel Alves dos Santos
∗
Março de 2010
Figura 1: Localização do elemento [i,j] na matriz A.
Partindo da idéia de cálculo do endereço de elementos para matrizes armazenadas por linha
e adaptando a notação para o cálculo do endereço de elementos para matrizes armazenadas por
coluna e observando a figura localizada logo acima, teremos:
Location(A[i,j]) = Address of A[1,1] + (((j - 1)*m) + (i - 1))*ElementSize
Onde Location representa o nome da função que determina o endereço do elemento pertencente ao array multidimensional; A o nome de variável ou instância desse array; i,j os índices
de localização que repectivamente significam linha e coluna; Address of o operador que retorna
o endereço de memória de uma determinada área, Address ofA[1,1] a operação que retorna o
endereço de memória do primeiro elemento pertencente ao array multidimensional; m o número
de linhas do array multidimensional e finalmente ElementSize que nada mais é que o tamanho
singular da estrutura ou elemento que é armazenado em cada posição do array multidimensional.
Expandindo os cálculos feitos até o momento teremos:
Location(A[i,j]) = Address of A[1,1] + ((j - 1)*m)*ElementSize + (i - 1)*ElementSize
Location(A[i,j]) = Address of A[1,1] + (j*m - m)*ElementSize + (i - 1)*ElementSize
Location(A[i,j]) = Address of A[1,1] + (j*m)*ElementSize - m*ElementSize + i*ElementSize - ElementSize
Generalizando o desenvolvimento da fórmula dada acima e especificando o endereço base do
primeiro elemento pertencente ao array multidimensional por Address of A[Rowb,Colb], sendo
Rowb a linha base de cálculo e Colb a coluna base de cálculo, teremos a seguinte especificação:
Location(a[i,j]) = Address of A[Rowb,Colb] + (j*m + i)*ElementSize - ((Colb*m) + Rowb)*ElementSize
∗ Bacharelando em Ciência da Computação, Universidade Federal do Estado de Alagoas(UFAL). E-mails: michel.mas@gmail.com, michelalvessantos@hotmail.com. Disciplina: Teoria e Paradigmas de Linguagens de Programação. Docente Responsável: Alcino Dall’Igna Júnior.
1