STRUKTUR DATA ARRAY Denny Agustiawan M pd STMIK

  • Slides: 19
Download presentation
STRUKTUR DATA ARRAY Denny Agustiawan, M. pd STMIK Asia Malang – 2011

STRUKTUR DATA ARRAY Denny Agustiawan, M. pd STMIK Asia Malang – 2011

Metode Penyimpanan struktur data dalam memori komputer dilakukan dengan 2 metode: Sequential Allocation statis

Metode 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

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 /

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 1 -dimensi disebut Vektor Array 2 -dimensi disebut Matriks

Array 1 -dimensi disebut Vektor Array 2 -dimensi disebut Matriks

Vektor (array 1 -dimensi) Biasanya digunakan untuk menyatakan suatu daftar yang mempunyai urutan tertentu

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

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

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

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

Matriks (Array 2 -D) Ada 2 cara penyimpanan di memori: ◦ ◦ Row Major Order (RMO) Column Major Order (CMO)

Row Major Order (RMO) Data disimpan baris per baris sebagai sebuah vektor Contoh: 1:

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 + {

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,

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:

RMO Secara umum: untuk matriks yang mempunyai lower bound lk dan upperbound uk, maka: L = Lo + {(i-l 1) * (u 2 – l 2 + 1) + (j – l 2)} * c Array [1. . 6 ; 2. . 5] l 1 = 1; l 2 = 2; u 1 = 6; u 2 = 5 B[3, 2] = 1000 + {(3 -1) * (5 -2+1) + (2 – 2)} * 2 = 1000 + (2*4 + 0) * 2 = 1016

Column Major Order (CMO) Prinsip penyimpanan mirip dengan RMO, hanya saja data disimpan kolom

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

CMO Rumus CMO L = Lo + {(i-1) + (j-1) * n} * c 1 ≤ i ≤ n, 1 ≤ j ≤ m L = Lo + {(i-l 1) + (j-l 2) * (u 1 – l 1 + 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 ≤

ARRAY 3 DIMENSI A [i, j, k] 1 ≤ i ≤ 2, 1 ≤ j ≤ 5, 1 ≤ k ≤ 4 Rumus Secara umum 1 ≤ i ≤ n 1, 1 ≤ j ≤ n 2, 1 ≤ k ≤ n 3 A[i, j, k] = Lo + {(i-1) * n 2 * n 3 + (j-1) * n 3 + (k-1)} * c Rumus untuk Array [l 1. . u 1, l 2. . u 2, l 3. . u 3] of type data A[i, j, k] = Lo + {(i – l 1) * (u 2 – l 2 + 1) * (u 3 – l 3 + 1) + (j – l 2) * (u 3 – l 3 + 1) + (k – l 3)} * c

Latihan Soal Diketahui segmen program Pascal sbb: Const a=2; b=5 n=100 m=50 Var Array_A

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]

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]