Digital Image Processing - Denny …… · PPT file · Web view · 2013-10-20Array Array...
-
Upload
dangkhuong -
Category
Documents
-
view
235 -
download
7
Transcript of Digital Image Processing - Denny …… · PPT file · Web view · 2013-10-20Array Array...
STRUKTUR DATASTRUKTUR DATA
ARRAY
Denny Agustiawan,M.pd
STMIK Asia Malang – 2011
Metode PenyimpananMetode PenyimpananPenyimpanan struktur data dalam
memori komputer dilakukan dengan 2 metode:
Sequential Allocation statisLinked Allocation dinamis
Sequential allocation 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
Ali
Adi
Ari
Avi
1
2
n-1
n
.
.
.
.
.
.
Sequential AllocationSequential AllocationUntuk 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.
ArrayArray Array 1-dimensi disebut
Vektor Array 2-dimensi disebut
Matriks
Vektor (array 1-dimensi)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)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:
A(1)
A(n)
Lo
.
.
.
A(i)
.
.
.
.
LLo = alamat awal elemen pertama array Ac = ukuran satu elemenL = Lo + c(i -1)A[i] = lokasi elemen ke-I array A
Contoh segmen program Contoh segmen program PascalPascal
1: CONST2: n = 1003: VAR4: 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 = 1000c = 2 bytei = 5L = A[5] = 1000 + 2*(5-1)
= 1000 + 8 = 1008
Contoh segmen program Pascal Contoh segmen program Pascal (2)(2)
Contoh 2 :
1: Var2: B : array [5..30] of integer
Lo = 1000B[15] = ?
Jawab :B[15] = 1000 + 2.(15-5) = 1000 + 20
= 1020
Matriks (Array 2-D)Matriks (Array 2-D) Ada 2 cara penyimpanan di
memori:◦ Row Major Order (RMO) ◦ Column Major Order (CMO)
Row Major Order Row Major Order (RMO)(RMO)
Row Major Order (RMO)Data disimpan baris per baris sebagai
sebuah vektor
Contoh: 1: CONST2: n = 4 {jumlah baris}3: m = 3 {jumlah kolom}4: VAR5: A: array [1..n,1..m] of integer
A(1,1) A(1,2) A(1,3) A(2,1) A(2,2) A(2,3) … A(4,1) A(4,2) A(4,3)
baris – 1 baris – 2 baris – 4
RMORMORumus pencarian lokasi elemen A[i,j]
secara RMOL = Lo + { (i-1) * m + (j-1) } * c
di mana 1 ≤ i ≤ n 1 ≤ j ≤ m
i = indeks jumlah barisj = indeks jumlah kolomm = jumlah kolomc = ukuran satu elemenLo = alamat elemen awal
RMORMOContoh: 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
RMORMOSecara 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 Column Major Order (CMO)(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) A(4,1) A(1,2) … A(4,2) A(1,3) … A(4,3)
kolom – 1 kolom – 3 kolom – 2
CMOCMORumus CMO
L = Lo + {(i-1) + (j-1) * n} * c1 ≤ i ≤ n, 1 ≤ j ≤ m L = Lo + {(i-l1) + (j-l2) * (u1 – l1 + 1)} *
cA[3,2] = 1000 + {(3-1) + (2-1) * 4} * 2
= 1000 + (2+4) * 2 = 1012B[3,2] = 1000 + { (3-1) + (2-2) * (6-
1+1)} * 2= 1000 + (2 + 0 * 6) * 2= 1004
ARRAY 3 DIMENSIARRAY 3 DIMENSIA [i,j,k] 1 ≤ i ≤ 2, 1 ≤ j ≤ 5, 1 ≤ k ≤ 4Rumus Secara umum 1 ≤ i ≤ n1, 1 ≤ j ≤ n2, 1 ≤ k ≤ n3A[i,j,k] = Lo + {(i-1) * n2 * n3 + (j-1) * n3 + (k-1)} * c
Rumus untukArray [l1 .. u1, l2 .. u2, l3 .. u3] of type dataA[i,j,k] = Lo + {(i – l1) * (u2 – l2 + 1) * (u3 – l3 + 1) + (j – l2) * (u3 – l3 + 1) + (k – l3)} * c
Latihan SoalLatihan SoalDiketahui segmen program Pascal sbb:
Consta=2;b=5n=100m=50
VarArray_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 SoalLatihan SoalJika 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]