Anda di halaman 1dari 28

BAB III

ARRAY DAN MATRIK


•Array/ larik adalah struktur data yang mengacu pada
sebuah / sekumpulan elemen yang diakses melalui
indeks. Setiap elemen larik dapat diakses melalui
indeksnya, Misalnya mengisi elemen larik yang ke 3
dengan nilai 100, maka cara mengisinya adalah A[3]
100. Contoh larik bernama A dengan 8 buah elemen
dapat dilihat pada gambar berikut ini :

1 2 3 4 5 6 7 8
Lanjt BAB III

Elemen Larik : A[1], A[2], A[3], A[4], A[5], A[6],


A[7], A[8]
Indeks Larik : 1, 2, 3, 4, 5, 6, 7, 8
Mengisi elemen Larik : A[3] 100

Keuntungan struktur data Larik:


1. Paling mudah pengoperasiannya
2. Ekonomis dalam pemakaian memori, bila semua elemen terisi.
3. Akses ke setiap elemen memerlukan waktu yang sama.

Kerugiannya:
Memboroskan tempat jika banyak elemen yang tidak digunakan.
Lanjt BAB III
Panjang Larik
Untuk mengetahui jumlah elemen suatu larik dapat
dihitung dengan rumus sebagai berikut :
Panjang = UB – LB + 1
Dimana :
UB – upper bound (indeks terbesar)
LB – lower bound (indeks terkecil)

Contoh:
Seorang pedagang mobil menggunakan larik untuk
menyimpan data penjualan dari tahun 1994 sampai
dengan tahun 2005. Berapa panjang (jumlah elemen larik
yang harus disediakan?)
Jawab :
LB = 1994
UB = 2005
Jadi panjang = UB – LB + 1 = 2005-1994+1
= 12
Artinya jumlah elemen larik yang diperlukan adalah
sebanyak 12 buah.
Pada Tahun 2003 Adi berencana usaha
sendiri,karena selama ini hanya pegawai
restoran,tapi belum ada modal untuk usaha tahun
2003. pada tahun 2004 adi berdang buah-
buahan.Maka Adi jadila pedagang buah
menggunakan larik untuk menyimpan data
penjualan dari tahun 2004 sampai dengan tahun
2018. Berapa panjang (jumlah elemen) larik yang
harus disediakan ?
Lanjt BAB III

Pengalamatan Larik
Penyimpanan elemen larik di dalam memori komputer disusun
berurutan sehingga komputer tidak perlu menentukan setiap
elemen larik tetapi cukup menyimpan alamat
awal/pertamanya. Berikut ini cara menentukan lokasi alamat
elemen larik dengan indeks tertentu :
LOK(LA[K])= Awal(LA)+W(K-LB)
Dimana :
LOK(LA[K]) – lokasi elemen larik dengan indeks K, yang dicari
K - Indeks larik yang dicari
Awal (LA) -Lokasi awal dari larik
W - Jumlah byte untuk menyimpan 1 elemen larik
LB - Lower bound / batas bawah
Contoh :
Misalkan Awal (Jual) = 100 dan W =4, maka
LOK(Jual[1994]) = 100
LOK(Jual[1995]) = 104
LOK(Jual[1996]) = 108
Lanjt Contoh
Berapa lokasi Jual[2005]? Untuk mendapat lokasi tersebut
sebagai berikut :
LOK(LA[K]) = Awal(LA) + W(K-LB)
= 100+4*(2005-1994)
= 100 + 44
= 144
•Matrik atau array dua dimensi adalah struktur data yang
mengacu pada sebuah /sekumpulan elemen yang diakses melalui
indeks. Berbeda dengan larik, maka pada matriks indeks
terdiri dari dua bagian yaitu indeks baris dan indeks
kolom.Setiap elemen matriks dapat diakses melalui indeksnya,
misalnya mengisi elemen matriks yang baris ke 2 dan kolom ke
1 dengan nilai 100, maka cara mengisinya adalah A[2,1]
100. Contoh Matriks bernama A dengan ukuran 2X3 (yang
memiliki indeks baris 2 dan indeks kolom 3) :

1 a b c
A
2 d e f

1 2 3
Lanjt BAB 3
Elemen Matriks ; A[1,1],A[1,2],A[1,3],A[2,1],A[2,2],A[2,3]
Indeks Baris dari Matriks A : 1, 2
Indeks Kolom dari Matriks A : 1, 2, 3
Mengisi elemen Matriks : A[2,1] 100

Keuntungan Struktur data Matriks :


1. Paling mudah dioperasikan
2. Ekonomis dalam pemakaian memori, bila semua elemen terisi
3. Akses ke setiap elemen memerlukan waktu yang sama.

Kerugiannya:
Memboroskan tempat jika banyak elemen yang tidak digunakan.

Pemrosesan Matriks
Ada beberapa pemrosesan yang dapat dilakukan
terhadap matriks. Algoritma yang paling mudah untuk
melakukan pemrosesan yaitu dengan menggunakan For-
to-do, dengan alasan bahwa elemen Matriks memiliki
indek yang terurut.
Lanjt BAB 3
Pemrosesan Matriks dapat dilakukan dua cara yaitu :
1. Matriks diproses Baris demi baris (Row Ordering)
2. Matriks diproses kolom demi kolom (Column Ordering)
MATRIKS DIPROSES BARIS DEMI BARIS
Program Proses Matrik
Kamus
Const : M = 2 {jumlah baris matriks}
Const : N = 3 {jumlah kolom matriks}
Baris, Kolom : integer
A : array [1..M, 1..N] of integer {deklarasi matriks A dengan
type data integer}

ALGORITMA 1
For Baris 1 to M do
For Kolom 1 to N do
Proses Matriks {baris demi baris}
Endfor
Endfor
MATRIK DIPROSES KOLOM DEMI KOLOM
ALGORITMA 2
For Kolom 1 to M do
For Baris 1 to N do
Proses Matriks {kolom demi kolom}
Endfor
Endfor
Menjumlahkan dua buah Matriks :
Kamus
Const : M = 2 {jumlah baris matrik}
Const : N = 3 {jumlah kolom array}
Baris, kolom : integer
A,B,C : array [1..M, 1..N] of integer

ALGORITMA
For Baris 1 to M do
For Kolom 1 to N do
C [baris,kolom] A[baris,kolom]+B[baris,kolom]
Endfor
Endfor
Contoh :

1 3 5 -6 9 8 -5 12 13
18 31 1 3 2 1 21 33 2

Mengalikan dua buah matriks :


{Matrik A[M,P], B[P,N] dan hasil perkalian disimpan pada matrik
C[M,N]}
Kamus
Const : M = 2 {jumlah baris pada matriks A dan C}
Const : N = 3 {jumlah kolom pada matriks B dan C}
Const : P = 2 {jumlah kolom pada matriks A dan baris pada matriks B
Baris, kolom,K : integer
A : array [1..M, 1..P] of integer {deklarasi matriks A dgn tipe data
integer}
B : array [1..P, 1..N] of integer {deklarasi matriks B dgn tipe data
integer}
C : array [1..M, 1..N] of integer {deklarasi matriks C dgn tipe data
integer}
ALGORITMA
For Baris 1 to M do
For Kolom 1 to N do
C[baris,kolom] 0
For K 1 to P do
C [baris,kolom] C[baris,kolom]+A[baris,K]+
B[K,kolom]
Endfor
Endfor
Endfor
Contoh : Matrik Perkalian 3 Kolom 3 baris dgn 2 kolom 3 baris
1 2 3 10 11 (1x10)+(2x12)+(3x14)

4 5 6 x 12 13 = (4x10)+(5x12)+(6(14)

7 8 9 14 15 (7x10)+(8x12)+(9x14)
(1x11)+(2x13)+(3x15) 76 82

(4x11)+(5x13)+(6(15) = 184 199

(7x11)+(8x13)+(9x15) 292 316


•Matrik Jarang (sparse Matrix)
Matrik jarang adalah matriks yang elemennya banyak
bernilai 0 (nol). Seperti dijelaskan diatas, penyimpanan
elemen matriks menjadi boros jika banyak elemen matriks
yang bernilai kosong, salah satu solusinya adalah
penyimpanan matriks tersebut dikonversi menjadi sebuah
larik.
Contoh matriks jarang :
1. Matriks segitiga dengan ukuran 3x3 (9 elemen matriks
jarang menjadi 6 elemen larik) elemen yang bernilai / bukan
0, membentuk segitiga
1
1 0 0 2
3
2 3 0
4
4 5 6 5
6
Jumlah elemen matriks segitiga (yang bukan nol) :
1+2+3 = ½ n (n+1)
yaitu pada baris 1 = 1 elemen
pada baris 2 = 2 elemen
paada baris 3 = 3 elemen

Lokasi pada array :


L = Baris (Baris -1) + kolom
2

Contoh matriks tridiagonal dengan ukuran 4 x 4

1 2 0 0 1
2
3 4 5 0 3
0 6 7 8 .
.
0 0 9 10 10

Program Ubah_Matrik_Segitiga_jadi_Array
{Matriks A adalah matriks jarang berbentuk segitiga
dengan ukuran MxM, karena banyak elemen bernilai
0, maka nilai akan disimpan dalam array S}
KAMUS
Const : M = 3 {jumlah baris dan kolom matrik}
Const : X = 6 {jumlah indeks S= 1+2+3}
Baris, Kolom : integer
A : array [1..M, 1..M] integer {deklarasi matriks A dgn
tipe data integer}
S : array [1..j] of integer
ALGORITMA
JLH 0
For Baris 1 to M do
For Kolom 1 to Baris do
JLH JLH +1
S[JLH] A[Baris, Kolom] {Simpan nilai matriks
ke array}
Endfor
Endfor
PENGALAMATAN MATRIKS
Penyimpanan elemen Matriks di dalam memori komputer
disusun berurutan (sama seperti larik), sehingga
komputer tidak perlu menentukan setiap elemen. Matriks
tetapi cukup menyimpan alamat awal / pertamanya.

Ada dua cara pengalamatan / penyimpanan elemen


matriks di dalam komputer, yaitu :
1. Row-major order (disimpan baris demi baris)
2. Column-major order (disimpan kolom demi kolom)

Contoh matriks segitiga A dengan ukuran 2x3 :

1 2 3

1 A[1,1] A[1,2] A[1,3]

2 A[2,1] A[2,2] A[2,3]


Urutan lokasi penyimpanan matriks A dalam komputer
adalah :
• A[1,1],A[1,2],A[1,3],A[2,1],A[2,2],A[2,3] … jika row
major
• A[1,1],A[2,1],A[1,2],A[2,2],A[1,3],A[2,3] … jika
column major

Untuk lebih jelasnya perhatikan ilustrasi penyimpanan di dalam


komputer secara :
ROW MAJOR COLUMN MAJOR

X[1,1] Baris ke-1 Kolom ke-1 X[1,1]


X[1,2] Baris ke-2 Kolom ke-2 X[2,1]
X[1,3] Baris ke-3 Kolom ke-3 X[1,2]
X[2,1] Baris ke-4 Kolom ke-4 X[2,2]
X[2,2] Baris ke-5 Kolom ke-5 X[1,3]
X[2,3] Baris ke-6 Kolom ke-6 X[2,3]
Rumus untuk ROW MAJOR
Pengalamatan : sumbu x + (jumlah loncatan brs * byte)
Contoh :
X[1,1] = 400
Lebar (W=width) : 1 elemen = 4 byte
Maka Alamat setiap elemen jika pengalamatan dengan
ROW MAJOR adalah :
1 2 3 4 5 6

1 400 404 408 412 416 420


2 424 428 …
3 448
4 …
5
6
7
8
Alamat Elemen
Berapa alamat X[3,5] ? Jawabnya adalah
= 400+(16*4)
= 400+64
= 464. Angka 16 didapat dari jumlah loncatan dari
X[1,1] ke X[3,5]

• Berapa alamat X[6,6] ?


Rumus untuk COLUMN MAJOR
Pengalamatan : sumbu x + (jumlah loncatan clm * byte)
Contoh :
X[1,1] = 400
Lebar (W=width) : 1 elemen = 4 byte
Maka Alamat setiap elemen jika pengalamatan dengan
COLUMN MAJOR adalah :
1 2 3 4 5 6
1 400 432 464 … … …
2 404 436 …
3 408 …
4 412 (4,3)
5 416
6 420
7 424
8 428
Alamat Elemen
Pengalamatan : sumbu x + (jumlah loncatan clm * byte)

•Berapa alamat X[3,5] ? Jawabnya adalah


= 400+(34*4)
= 400+136
= 536. Angka 34 didapat dari jumlah loncatan dari
X[1,1] ke X[3,5]

• Berapa alamat X[6,8]?


Latihan
1. Seorang pedagang buah menggunakan larik untuk
menyimpan data penjualan dari tahun 2001 sampai
dengan tahun 2019. Berapa panjang (jumlah elemen)
larik yang harus disediakan?

2. Misalkan Awal (jual) = 170 dan W = 30, maka


Lok (Jual[2002]) =120
Lok (Jual[2004]) =130
Lok (Jual[2005]) =145
Berapa lokasi Jual[2019]?

3. Tentukan hasil Matrik penjumlahan berikut ini yang


terdiri dari 3 kolom 3 baris.
3 8 20 -7 8 9
7 7 21 15 25 7
21 15 23 30 -8 -10
1. Diketahui x[0,0] = 300
Lebar (w= width) : 1 elemen = 4 byte
Berapa alamat setiap elemen jika pengalamatan
dengan ROW Major.
a. X[5,3] ?
=
b. X[6,8] ?
2 Dan berapa pula alamat setiap elemen jika
pengalamatan dengan Column major,
a. X[3,4] ?
b. X[6,8] ?
Latihan
1. Seorang pedagang buah menggunakan larik untuk
menyimpan data penjualan dari tahun 2000 sampai
dengan tahun 2008. Berapa panjang (jumlah elemen)
larik yang harus disediakan? UB – LB + 1 = 2008-2000+1 = 9

2. Misalkan Awal (jual) = 175 dan W = 35, maka


Lok (Jual[2000]) =125 LOK(LA[K]) = Awal(LA) + W(K-LB)
Lok (Jual[2001]) =150 = 175+35*(2008-2000)
Lok (Jual[2002]) =175 = 175+ 280
= 455
Berapa lokasi Jual[2008]?

3. Tentukan hasil Matrik penjumlahan berikut ini yang


terdiri dari 3 kolom 3 baris. -4 16 29
3 8 20 -7 8 9
7 7 21 15 25 7
22 32 28
21 15 23 30 -8 -10
51 7 13
4. Tentukan hasil perkalian Matrik berikut ini terdiri dari
2 kolom 2 baris dengan 2 kolom 2 baris

1 2 * 10 11 =
4 5 12 13

5. Diketahui matriks jarang (segitiga) berukuran 20 X


20, berapa ukuran array hasil konversi dari matriks
tersebut !

(1x10)+(2x12) = 10+24 = 34
34 37
(4x10)+(5x12) =40+60 = 100
100 109
(1x11)+(2x13) = 11+26 = 37

(4x11)+(5x13) =44+65 = 109


6. Diketahui x[0,0] = 200
Lebar (w= width) : 1 elemen = 3 byte
Berapa alamat setiap elemen jika pengalamatan
dengan ROW Major.
a. X[3,5] ?
b. X[8,6] ?
7 Dan berapa pula alamat setiap elemen jika
pengalamatan dengan Column major,
a. X[4,3] ?
b. X[8,6] ?
ROW MAYOR
X[0,0] = 200
Lebar (W=width) : 1 elemen = 3 byte
0 1 2 3 4 5 6
0 200
1
2
3 278
4
5
6
7
8 386

a. X[3,5] = 200+26 * 3=278


b. X[8,6] =200 + 62*3 =386
Coloum Mayor
X[0,0] = 200
Lebar (W=width) : 1 elemen = 3 byte
0 1 2 3 4 5 6
0 200
1
2
3
4 293
5
6
7
8 386

a. X[4,3] = 200 + 31*3= 293


b. X[8,6] = 200 + 62* 3=386
1. Seorang pedagang buah menggunakan
larik untuk menyimpan data penjualan
dari tahun 1010 sampai dengan tahun
2008. Berapa panjang (jumlah
elemen) larik yang harus disediakan?

2. Misalkan Awal (jual) = 175 dan W = 35, maka


• Lok (Jual[2000]) =125
• Lok (Jual[2001]) =150
• Lok (Jual[2002]) =175
• Berapa lokasi Jual[2017]?

Anda mungkin juga menyukai