Definisi Array
Disebut juga dengan linear array
Bentuk struktur data (tipe data terstruktur) yang bersifat
linear (kontinu), memiliki tipe data yang sama (homogen).
Karakteristik Pemakaian Array
Jumlah elemen terbatas
Seluruh elemen bisa diakses secara random
Panjang elemen sama
Elemen tersusun secara sequential (tersusun)
Macam-macam Array
Array satu dimensi
Array dua dimensi
Array tiga dimensi
Array banyak dimensi
Array satu dimensi
Nilai subscript tunggal (terdiri hanya 1 baris)
Tipe datanya sama namun isinya berbeda
Contoh pemetaan dalam memori ???
Contoh array satu dimensi
Deklarasi :
Var A : array [4..8] of string [3]
Jumlah elemen (n) = (a-b) + 1
=
(8-4) + 1 = 5
Penghitungan array satu dimensi
Dari pemetaan tersebut diketahui :
Batas bawah (b) =
4
Batas atas (a) =
8
Panjang elemen (l) =
3
disebut
juga dengan lebar data (LD)
Alamat awal @A[b] = 1000
disebut
juga dengan base address (B)
Tentukan di alamat berapakah nilai data A[5] disimpan (nilai data A[5] terletak di SK [2] !
Menggunakan nilai array
@A[i] = B + (i – b) * LD
@A[i] = alamat yang akan
dicari
B = alamat awal
LD =
lebar data
i =
nilai array
b =
batas bawah
@A[5] = 1000 + (5-4) * 3
=
1000 + 1 * 3
=
1000 + 3
=
1003
Menggunakan subscript
AD = B + (SK – 1) * LD
AD =
alamat yang akan dicari
B =
alamat awal
SK =
subscript yang akan dicari
1 =
angka konstan
LD =
lebar data
AD = 1000 + (2-1) * 3
=
1000 + 1 * 3
=
1000 + 3
=
1003
Mencari Subscript dan Nilai Array
A[i] = (SK + b) – 1
Ex : cari nilai array untuk SK = 2
Jwb :
A[i] = (2 + 4) – 1 = 5
SK = (A[i] – b) + 1
Ex : cari nilai SK untuk array A[5]
Jwb :
SK = (5 – 4) + 1 = 2
Array 2 dimensi
Perluasan dari array 1 dimensi
Terdiri dari beberapa baris dan beberapa kolom.
Contoh pemetaan dalam memori ???
Penghitungan array 2 dimensi
Dari pemetaan tersebut diketahui :
Baris atas (ia) = 5
Baris bawah (ib) = 3
Kolom bawah (jb) = 4
Kolom atas (ja) =
8
Alamat awal (B) = 1000
Lebar data (LD) =
4
Jumlah kolom dan baris???
Jumlah elemen perkolom (k)
k = (ia-ib) + 1
k = (5-3) + 1
k = 3
artinya dalam satu kolomnya terdapat 3 baris
artinya dalam satu kolomnya terdapat 3 baris
Jumlah elemen perbaris (n)
n = (ja-jb) + 1
n = (8-4) + 1
n = 5
artinya
dalam satu barisnya terdapat 5 kolom
Jumlah seluruh elemen (s)
s = k * n
s = 3 * 5
Penghitungan nilai data
berapakah nilai data untuk array A[4,5] secara baris dan kolom ?
Ket : untuk menghitung nilai data, bisa dilakukan dengan 2 cara :
Ket : untuk menghitung nilai data, bisa dilakukan dengan 2 cara :
1. dengan memakai nilai array nya
2. dengan memakai nilai subscript nya
Perhitungan nilai data dg array
Membelah
per baris :
A[i,j]
= B + ( (i-ib) * n + (j-jb) ) * LD
A[i,j] : alamat yang akan dicari = A[4,5]
B : alamat awal = 1000
i : baris yang ditanya = 4
ib : baris bawah = 3
n : jumlah elemen perbaris = 5
j : kolom yang ditanya = 5
jb : kolom bawah = 4
LD : lebar data = 4
Membelah per baris :
A[i,j]
= B + ( (i-ib) * n + (j-jb) ) * LD
A[4,5] = 1000 + ((4-3) * 5
+ (5-4)) * 4
A[4,5] = 1000 + (1*5 + 1)
* 4
A[4,5] = 1000 + 6 * 4
A[4,5] = 1000 + 24
Perhitungan nilai data dg array
Membelah
per kolom :
A[i,j]
= B + ( (j-jb) * k + (i-ib) ) * LD
A[i,j] : alamat yang akan dicari =
A[4,5]
B : alamat awal = 1000
j : kolom yang ditanya = 5
jb : kolom bawah = 4
k : jumlah elemen perkolom = 3
i : baris yang ditanya = 4
ib : baris bawah = 3
LD : lebar data = 4
Membelah per kolom :
A[i,j]
= B + ( (j-jb) * k + (i-ib) ) * LD
A[4,5] = 1000 + ((5-4) * 3
+ (4-3)) * 4
A[4,5] = 1000 + (1*3 + 1)
* 4
A[4,5] = 1000 + 4 * 4
A[4,5] = 1000 + 16
Mencari nilai SK dari array
p = SK untuk baris
p = (A[i] – ib) +1
p = (4 – 3) + 1
p = 2
q = SK untuk kolom
q = (A[j] – jb) +1
q = (5 – 4) + 1
q = 2
Perhitungan nilai data dg Subscript
Membelah
per baris :
AD
= B + ( (p-1) * y + (q-1) ) * LD
AD : alamat yang akan dicari
B : alamat awal = 1000
p : SK untuk baris = 2
q : SK untuk kolom = 2
y : jumlah elemen perbaris = 5
1 : angka konstan
LD : lebar data = 4
Membelah per baris :
AD = B + ( (p-1) * y + (q-1) ) * LD
AD = 1000
+ ((2-1) * 5 + (2-1)) * 4
AD = 1000
+ (1*5 + 1) * 4
AD = 1000
+ 6 * 4
AD = 1000 +
24
Perhitungan nilai data dg Subscript
Membelah
per kolom :
AD = B + ( (q-1) * x + (p-1) ) * LD
AD : alamat yang akan dicari
B : alamat awal = 1000
p : SK untuk baris = 2
q : SK untuk kolom = 2
x : jumlah elemen perkolom = 3
1 : angka konstan
LD : lebar data = 4
Membelah per kolom :
AD = B + ( (q-1) * x + (p-1) ) * LD
AD = 1000 + ((2-1) * 3 + (2-1)) * 4
AD = 1000
+ (1*3 + 1) * 4
AD = 1000
+ 4 * 4
AD = 1000
+ 16
Tugas 1
Diketahui sebuah deklarasi :
Var A : array [2..8, 4..8] of
string [5]
dengan alamat awal (B) = 1000
- Bagaimana pemetaan di memory
- Carilah alamat data secara baris dan kolom untuk nilai array [4,7]
- Carilah alamat data secara baris dan kolom untuk SK