Pertemuan 2(struktur data)

Download Report

Transcript Pertemuan 2(struktur data)

STRUKTUR DATA
ARRAY
Denny Agustiawan,M.pd
STMIK Asia Malang – 2011
Metode Penyimpanan
Penyimpanan struktur data dalam memori
komputer dilakukan dengan 2 metode:
Sequential Allocation  statis
 Linked Allocation  dinamis

Sequential allocation

Dengan sequential
allocation alamat sebuah
elemen akan dapat
ditentukan jika telah
diketahui nomor urut /
indeks yang menunjukkan
posisi elemen dan
kapasitas memori yang
digunakan untuk setiap
elemen
1
Ali
2
Adi
.
.
.
.
.
.
n-1
Ari
n
Avi
Sequential Allocation
Untuk menyimpan n sejumlah data harus
didefinisikan terlebih dahulu besarnya memori /
jumlah tempat yang digunakan untuk
menyimpan data tersebut.
 Sebaliknya, jika tempat yang disediakan berlebih,
maka terjadi pemborosan memori, sehingga
metode ini disebut Metode Pengalamatan Statis.
 Contoh paling sederhana dari sequential
allocation ini adalah ARRAY.

Array


Array 1-dimensi disebut Vektor
Array 2-dimensi disebut Matriks
Vektor (array 1-dimensi)
Biasanya digunakan untuk menyatakan suatu
daftar yang mempunyai urutan tertentu (tidak
boleh bolak-balik)
 Diawali sebuah ordered-list, misal: Jan, Feb, …,
Des.
 Jika dilakukan alokasi memori (misal: 100 byte),
maka alokasi memori yang dipesan akan terletak
secara berurutan & tidak terpencar-pencar,
mulai elemen pertama hingga terakhir.

Vektor (2)

Untuk sebuah vektor n elemen,
yang tiap elemennya membutuhkan
c byte, maka total memori yang
dialokasikan sebesar c * n byte
dengan struktur alokasi vektor sbb:
Lo = alamat awal elemen pertama array
A
c = ukuran satu elemen
L = Lo + c(i -1)
A[i] = lokasi elemen ke-I array A
A(1)
Lo
.
.
.
A(i)
.
.
.
A(n)
.
L
Contoh segmen program Pascal
1: CONST
2:
n = 100
3: VAR
4:
A : array [1..n] of integer
Misalkan elemen pertama (Lo) berada pada offset 1000,
c = 2 byte maka, pada offset ke berapakah elemen
ke-5 = A[5] ?
Jawab:
Lo = 1000
c = 2 byte
i=5
L = A[5] = 1000 + 2*(5-1)
= 1000 + 8 = 1008
Contoh segmen program Pascal (2)
Contoh 2 :
1: Var
2:
B : array [5..30] of integer
Lo = 1000
B[15] = ?
Jawab :
B[15] = 1000 + 2.(15-5) = 1000 + 20 = 1020
Matriks (Array 2-D)
Ada 2 cara penyimpanan di memori:

◦
◦
Row Major Order (RMO)
Column Major Order (CMO)
Row Major Order (RMO)
Row Major Order (RMO)
Data disimpan baris per baris sebagai sebuah vektor
Contoh:
1: CONST
2:
n = 4 {jumlah baris}
3:
m = 3 {jumlah kolom}
4: VAR
5:
A: array [1..n,1..m] of integer
A(1,1)
A(1,2)
baris – 1
A(1,3)
A(2,1)
A(2,2)
A(2,3)
baris – 2
…
A(4,1)
A(4,2)
baris – 4
A(4,3)
RMO
Rumus pencarian lokasi elemen A[i,j] secara
RMO
L = Lo + { (i-1) * m + (j-1) } * c
di mana 1 ≤ i ≤ n
1≤j≤m
i = indeks jumlah baris
j = indeks jumlah kolom
m = jumlah kolom
c = ukuran satu elemen
Lo = alamat elemen awal
RMO
Contoh: Lo = 1000, c =2 , n =4, m = 3
A[3,2] = ?
A[3,2] = 1000 + {(3-1)*3 + (2-1)} * 2
= 1000 + 7 * 2
= 1000 + 14
= 1014
RMO
Secara umum: untuk matriks yang mempunyai
lower bound lk dan upperbound uk, maka:
L = Lo + {(i-l1) * (u2 – l2 + 1) + (j – l2)} * c
Array [1 .. 6 ; 2 .. 5]
l1 = 1; l2 = 2; u1 = 6; u2 = 5
B[3,2] = 1000 + {(3-1) * (5-2+1) + (2 – 2)} * 2
= 1000 + (2*4 + 0) * 2 = 1016
Column Major Order (CMO)
Column Major Order (CMO)
Prinsip penyimpanan mirip dengan RMO, hanya saja
data disimpan kolom per kolom sebagai sebuah
vector
Misal: matriks A dengan dimensi 4 baris & 3 kolom
A(1,1)
A(2,1)
A(3,1)
kolom – 1
A(4,1)
A(1,2)
…
A(4,2)
kolom – 2
A(1,3)
…
A(4,3)
kolom – 3
CMO
Rumus CMO
L = Lo + {(i-1) + (j-1) * n} * c
1 ≤ i ≤ n, 1 ≤ j ≤ m
L = Lo + {(i-l1) + (j-l2) * (u1 – l1 + 1)} * c
A[3,2] = 1000 + {(3-1) + (2-1) * 4} * 2
= 1000 + (2+4) * 2 = 1012
B[3,2] = 1000 + { (3-1) + (2-2) * (6-1+1)} * 2
= 1000 + (2 + 0 * 6) * 2
= 1004
ARRAY 3 DIMENSI
A [i,j,k]
1 ≤ i ≤ 2, 1 ≤ j ≤ 5, 1 ≤ k ≤ 4
Rumus
Secara umum 1 ≤ i ≤ n1, 1 ≤ j ≤ n2, 1 ≤ k ≤ n3
A[i,j,k] = Lo + {(i-1) * n2 * n3 + (j-1) * n3 + (k-1)}
*c
Rumus untuk
Array [l1 .. u1, l2 .. u2, l3 .. u3] of type data
A[i,j,k] = Lo + {(i – l1) * (u2 – l2 + 1) * (u3 – l3 +
1) + (j – l2) * (u3 – l3 + 1) + (k – l3)} * c
Latihan Soal

Diketahui segmen program Pascal sbb:
Const
a=2;
b=5
n=100
m=50
Var
Array_A : Array [1..1000] of string[30];
Array_B : Array [1..b,1..m] of integer;
Array_C : Array [a..m,b..n] of real;
Array_D : Array [m..n] of boolean;
Latihan Soal

Jika Lo = 1000, maka tentukan:
◦
◦
◦
◦
◦
◦
◦
◦
◦
◦
Array_A[57]
Array_A[82]
Array_B[3,43] secara RMO
Array_B[4,44] secara CMO
Array_C[3,99] secara RMO
Array_C[m-a,n-b] secara CMO
Array_C[m-a,n-b] secara RMO
Array_B[b-3,m-(b*2)] secara CMO
Array_D[n-m]
Array_D[77]