Calculation of Address Elements for Matrices Stored by Column.

Post on 25-May-2015

77 views 3 download

description

Calculation of address elements for matrices stored by column. This document describes an algorithm for calculating the addresses of elements stored by column assuming a base address, starting from the idea of calculating the address elements for matrices stored by row. At the end we present a formulation for direct return of the element.

Transcript of Calculation of Address Elements for Matrices Stored by Column.

Cálculo do Endereço de Elementos para MatrizesArmazenadas 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 linhae adaptando a notação para o cálculo do endereço de elementos para matrizes armazenadas porcoluna 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 perten-cente ao array multidimensional; A o nome de variável ou instância desse array; i,j os índicesde localização que repectivamente significam linha e coluna; Address of o operador que retornao endereço de memória de uma determinada área, Address ofA[1,1] a operação que retorna oendereço de memória do primeiro elemento pertencente ao array multidimensional; m o númerode linhas do array multidimensional e finalmente ElementSize que nada mais é que o tamanhosingular 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)*ElementSizeLocation(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 doprimeiro elemento pertencente ao array multidimensional por Address of A[Rowb,Colb], sendoRowb 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: mi-chel.mas@gmail.com, michelalvessantos@hotmail.com. Disciplina: Teoria e Paradigmas de Linguagens de Progra-mação. Docente Responsável: Alcino Dall’Igna Júnior.

1