SOAL :
1. Jelaskan konsep Pemetaan array ke storage
v
Dimensi satu
v
Dimensi banyak
2.
Jelaskan contoh kasus Array dalam matriks dan Pembentukan matriks dengan menggunakan array
PEMETAAN ARRAY
DIMENSI SATU KE
STORAGE
Seperti
halnya struktur data yang lain, ada beberapa cara untuk menyajikan array di
dalam memori. Skema penyajian dapat dievaluasi berdasarkan 4 karakteristik,
yakni :
- Kesederhanaan dari akses elemen
- Mudah untuk ditelusuri
- Efisiensi dari utilitasi storage
- Mudah dikembangkan
Umumnya tidaklah mungkin untuk
mengoptimalkan keempat faktor tersebut sekaligus. Pandang array satu dimensi
NOPEG dengan batas bawah subscript 1, dan batas atas subscript = N.
Salah satu cara untuk menyimpan array ini adalah sedemikian sehingga urutan
fisik dari elemen sama dengan urutan logik dari elemen. Storage untuk elemen
NOPEG(I+1) adalah berdampingan dengan storage untuk elemen NOPEG(I),
untuk setiap I = 1, 2, 3,..., N-1.
Untuk
menghitung alamat (address) awal dari elemen NOPEG(I),
diperlukan
untuk mengetahui 2 hal yakni :
- Address awal dari ruang storage yang dialokasikan bagi array
tersebut.
- Ukuran dari masing-masing elemen array.
Address
awal dari array, kita nyatakan dengan B, disebut juga base-location. Misalkan :
bahwa masing-masing
elemen dari array menduduki S byte. Maka, address awal dari
elemen
ke-I adalah :
B + (I-1)
* S
Sekarang kita perluas persamaan di
atas untuk mendapat address dari elemen ke-I dari array yang
mempunyai batas bawah subscript tidak sama dengan 1. Perhatikan array Z(4:10),
maka address awal dari Z(6) adalah :
B + (64)
* S
Untuk array
Z2 (-2:2) misalnya, address awal dari Z2(l) adalah :
B + (I
-(-2)) * S
Maka
secara umum, untuk array :
ARRAY(L:U)
elemen
ARRAY(I) mempunyai address awal
B + (U-L)
*
PEMETAAN
KE STORAGE TERHADAP ARRAY DIMENSI BANYAK
Karena
memori komputer adalah linear, maka array dimensi banyak harus dilinearkan apabila
akan dipetakan ke dalam storage. Salah satu alternatif untuk pelinearan
tersebut adalah menyimpan pertama kali baris pertama dari array,
kemudian baris ke-2, baris ke-3 dan seterusnya. Ini disebut row major
order.
Contoh
Kasus penggunaan matrik dalam array
program
matrik_transpose;
Uses Wincrt;
Var A:
Array [1..5,1..5] of integer;
i,j,baris,kolom
:integer;
Begin
Clrscr;
Write('Masukkan
Jumlah Baris : ');Readln(baris);
Write('Masukkan
Jumlah Kolom : ');Readln(kolom);
Writeln;
Gotoxy(1,5);Write('A=
');
for i :=
1 to baris do
for j :=
1 to kolom do
begin
Gotoxy(j*5,i*2+3);
Readln(A[i,j]);
end;
Gotoxy(30,5);Write('AT=');
for i :=
1 to kolom do
for j :=
1 to baris do
begin
Gotoxy(j*5+30,i*2+3);
Write(A[j,i]);
end;
end.
MATRIK
Matrik adalah struktur data
di dalam memeori utama, dimana setiap elemennya memiliki dua indeks ( biasa
disebut baris dan kolom). Karena ada dua indeks maka disebut larik dua dimensi,
sedangkan baris dan kolom hanyalah digunakan untuk memudahkan pengertian
tentang struktur logik. Karena matrik adalah sebuah larik maka konsep umum
dari larik (array) berlaku untuk matrik , yaitu :
1. Kumpulan elemen bertipe sama, tipe elemeen matrik dapat berupa tipe data dasar ( integer, char, real, bolean dan string ), ataupun tipe data tersruktur seperti record.
2. Setiap elemen dapat di akses secara acak (random)
3. Merupakan struktur data yang statis, artinya jumlah elemen sudah ditentukan lebih dulu dalam deklarasikan dan tidak dapat di ubah selama pelaksanaan program.
1. Kumpulan elemen bertipe sama, tipe elemeen matrik dapat berupa tipe data dasar ( integer, char, real, bolean dan string ), ataupun tipe data tersruktur seperti record.
2. Setiap elemen dapat di akses secara acak (random)
3. Merupakan struktur data yang statis, artinya jumlah elemen sudah ditentukan lebih dulu dalam deklarasikan dan tidak dapat di ubah selama pelaksanaan program.
Struktur matrik praktis
untuk dipakai untuk pengaksesan cepat karena langsung melalui indeksnya akan
tetapi memakan banyak ruang memori. Misalkan matriks 100 x 100 membutuhkan
10.000 x ukuran integer ( 2 byte).
PENYIMPANAN MATRIK DALAM
MEMORI
Walaupun matriks dianggap
larik dua dimensi, tetapi kenyataan dalam memori tetap sebagai deret yang
berurutan.