Anda di halaman 1dari 14

B A B II

ARRAY ( LARIK )

Array (larik) adalah tipe terstruktur yang terdiri dari


sejumlah komponen-komponen dengan type yang sama.

Banyaknya komponen dalam suatu larik adalah tetap dan


lokasi dalam suatu larik ditunjukkan oleh suatu INDEKS.

Yang penting dalam array adalah pengalamatan memori


dan digunakan pengalamatan secara static.
Karakteristik pemakaian Array :
- Jumlah elemen array terbatas
- Semua elemen array dapat diakses secara acak
- Panjang elemen sama

Dimensi
Dalam bentuknya array dapat kita tinjau dari segi
pengaturan struktur datanya dalam konteks dimensi
sebagai berikut :
Array 1 – Dimensi
 List
 Vektor
Array 2 – Dimensi
 Tables
 Matriks (2 dimensi)
Array 3 – Dimensi
 Matriks 3 Dimensi
Array Mulidimensi
Pada prinsipnya secara teori jumlah dimensi suatu
matriks tidak terbatas, yang membatasi adalah
kemampuan hardware dan besarnya memori

SESSION 1 PERTEMUAN KE : 2 / Page 1 - 14


ARRAY SATU DIMENSI
Suatu array dideklarasikan dengan : A[ -3 . . 8 ], setiap
elemen terdiri dari 4 byte.
Jika alamat elemen pertama @A[ -3 ] = 1000 H ditanya :
A. Jumlah Elemen
B. Jumlah Byte Seluruhnya
C. Alamat A[7] atau ditulis @A[7]

Jawab :

Di ilustrasikan sebuah Array sebagai berikut:


1 2 3 4 5 6 7 8 9 10 11 12

-3 -2 -1 0 1 2 3 4 5 6 7 8
1 2 3 4

Setiap elemen 4 Byte

@A[-3] = 1000 H maka @A[-2] = 1004 H

A. Jumlah Elemen = (Index atas - Index Bawah ) + 1


= ( 8 - (-3) ) + 1
= 12 Elemen
B. Jumlah Byte = JumlahElemen * Jumlah Byte PerElemen
= 12 * 4
= 48 Byte
C. Alamat @A[ 7 ] =

Dari @A[-3] berpindah/bergerak ke @A[7]


= 7 - (-3)
= 10 Elemen
Setiap Elemen 4 Byte maka :

SESSION 1 PERTEMUAN KE : 2 / Page 2 - 14


10 * 4 = 40 Byte

40 disini adalah dalam notasi 40 Decimal, dalam


pengalamatan memori digunakan notasi Hexa
Decimal. Maka 40 Decimal dirubah menjadi Hexa
Decimal.

40 Decimal = 28 Hexa Decimal atau 28 H

Jadi @A[7] = 1000 H + 28 H


= 1028 H

Pendeklarasian A[ - 3 . . 8 ] adalah deklarasi yang ada


pada bahasa program Pascal.

Pada bahasa program C/C++ pendeklarasian sedikit


berbeda tapi mempunyai maksud yang sama.
Contoh
A[8]

Maka akan terbentuk Array 1 Dimensi sebanyak 8 tempat

0 1 2 3 4 5 6 7

Dimana nomor index pertama pada bahasa C dimulai dari


0 (nol)

SESSION 1 PERTEMUAN KE : 2 / Page 3 - 14


Program C++ mengetahui alamat suatu data

#include<iostream.h>
#include<conio.h>

void main()
{ int i,j,ANGKA[5];
clrscr();

for(i=0; i<5; i++)


{
cout <<"MASUKAN ANGKA ["<<i<<"]= ";
cin>>ANGKA[i];
}

for(i=0; i<5; i++)


{
cout <<"ANGKA ["<<i<<"]=
"<<ANGKA[i]<<" ADA DIALAMAT =
"<<&ANGKA[i]<<endl;
}
getch();
}

Latihan :

1. Suatu array dideklarasikan dengan : A[-2 . . 5 ], setiap


elemen terdiri dari 6 byte.

Jika alamat elemen pertama FFBB H ditanya :


a. Jumlah Elemen
b. Jumlah Byte Seluruhnya
c. Alamat A[4] atau ditulis @A[4]

SESSION 1 PERTEMUAN KE : 2 / Page 4 - 14


2. Suatu array dideklarasikan dengan : A[9] pada
Bahasa C++, setiap elemen terdiri dari 8 byte. Jika
alamat elemen pertama 16FF H ditanya :
a. Jumlah Elemen
b. Jumlah Byte Seluruhnya
c. Alamat A[5] atau ditulis @A[5]

3 Suatu array dideklarasikan pada bahasa C++ dengan :


float angka[12];

Jika alamat elemen pertama 2C3E H ditanya :


a. Jumlah Elemen
b. Jumlah Byte Seluruhnya
c. Alamat A[6] atau ditulis @A[6]

SESSION 1 PERTEMUAN KE : 2 / Page 5 - 14


ARRAY DUA DIMENSI
Representasi matriks dalam bentuk array dua dimensi
dapat berupa :

 Ukuran baris perbaris ( Row Major Order)


 Ukuran Kolom perkolom ( Column Major Order)

Matrik dalam pembahasan selanjutnya menggunakan


M[Baris][Kolom]

Diketahui suatu Array dua dimensi yang dideklarasikan


dengan A[ -1 .. 2 , 3 .. 8 ] Setiap elemen terdiri dari 4 Byte.
Alamat elemen pertama @A[-1,3] = 1000 H atau @A[-1,3]
= 1000 H

Ditanya :

A. Jumlah Elemen
B. Jumlah Byte Seluruhnya
C. Alamat A[2,5] atau @A[2,5] ?

Jika penempatan memori menggunakan :


C1. Row Major Order
C2. Column Major Order

SESSION 1 PERTEMUAN KE : 2 / Page 6 - 14


Jawab .

Di ilustrasikan sebuah Array sebagai berikut:

@A[-1,3] = 1000 H

3 4 5 6 7 8

-1 A B C D E F

K
0 G H I J L

Q
1 M N O P R

2 S T U V W X

@A[2,5] = ?.

Pada Array 2 Dimensi yang diilustrasikan diatas, urutan


elemennya dalam memori jika megikuti cara :

SESSION 1 PERTEMUAN KE : 2 / Page 7 - 14


ROW MAJOR ORDER
(URUTAN YANG MENGUTAMAKAN/MENDAHULUKAN BARIS)

1 2 3 4 5 6 7 8 9….. 19 20 21 22 23 24
-1,3 -1,4 -1,5 -1,6 -1,7 -1,8 0,3 0,4 2,3 2,4 2,5 2,6 2,7 2,8
A B C D E F G H … .. S T U V W X

Baris Ke-1 Baris Ke-2 Baris ke 4


Baris (-1) Baris (0) Baris (2)

@A[-1,3] = 1000 H

Setiap pindah Satu Baris pindah 6 Elemen

COLUMN MAJOR ORDER


( URUTAN YANG MENDAHULUKAN KOLOM)

1 2 3 4 5 6 7 8 9……………..19 20 21 22 23 24
-1,3
A G M S B H N T C …. … Q W F L R X

kolom Ke-1 Kolom Ke-2 Kolom Ke 3 Kolom ke6


Kolom (3) Kolom (4) Kolom 5 Kolom 8

@A[-1,3] = 1000 H

Setiap pindah Satu Kolom pindah 4 Elemen

SESSION 1 PERTEMUAN KE : 2 / Page 8 - 14


BILA DINYATAKAN DENGAN NOMOR URUT MAKA
PENEMPATAN ELEMEN ARRAY :

CARA ROW MAJOR ORDER

3 4 5 6 7 8
-1 1 2 3 4 5 6
0 7 8 9 10 11 12
1 13 14 15 16 17 18
2 19 20 21 22 23 24

CARA COLUMN MAJOR ORDER


3 4 5 6 7 8
-1 1 5 9 13 17 21
0 2 6 10 14 18 22
1 3 7 11 15 19 23
2 4 8 12 16 20 24

Catatan : Angka- Angka Didalam Elemen Bukan Isi


elemen tapi merupakan nomor Urut elemen.

Jawaban Soal ARRAY DUA DIMENSI

A. Jumlah Elemen = Baris * Kolom A[ -1..2 , 3 .. 8 ]


= 4 * 6
= 24

2 - (-1)+1 (8-3)+1
= 4 Baris = 6 Kolom

B. Jumlah Byte = 24 * 4 = 96 Byte

C1. Menentukan Alamat @A[2,5]

SESSION 1 PERTEMUAN KE : 2 / Page 9 - 14


menggunakan ROW MAJOR ORDER

@A[-1,3] = 1000 H

3 4 5 6 7 8 3 4 5 6 7 8
-1 A B C D E F -1 1 2 3 4 5 6
0 G H I J K L 0 7 8 9 10 11 12
1 M N O P Q R 1 13 14 15 16 17 18
2 S T U V W X 2 19 20 21 22 23 24

@A[2,5] =……?

Dari Gambar Diatas terlihat bahwa bergerak dari elemen


A[-1,3] ke elemen A[2,5] yaitu elemen ke 21 menurut
ROW MAJOR ORDER perpindahannya sebanyak :

21 – 1 = 20 Elemen

ATAU

Terlihat dari Baris –1 ke baris 2 sebanyak 3 Baris


Setiap Baris ada 6 Elemen , Jadi 3 * 6 = 18 Elemen

Dari Kolom 3 Ke kolom 5 sebanyak 2 Kolom

Jadi Total Perpindahan = 18 + 2 = 20 Elemen

Satu Elemen 4 Byte  Pindah 20 * 4 = 80 Byte  80 Dec = 50 Hexa Dec.

SESSION 1 PERTEMUAN KE : 2 / Page 10 - 14


Atau tanpa melihat Gambar : A [Baris, Kolom ]
Ditanya : @A[ 2 , 5 ]
Diketahui : @A[ -1 , 3 ] Dikurang

3 2

Pindah 3 Baris = 3 * Banyak Elemen Per baris = 3 * 6 = 18


Pindah 2 Kolom = 2 2

Total Perpindahan 18 + 2 = 20 Elemen


Dimana 1 Elemen 4 Byte Jadi  20 * 4 = 80 Byte ( Decimal )
80 Decimal = 50 Hexa Decimal

Jadi Alamat @A[2,5] = 1000 H + 50 H = 1050 H

C2. Menentukan Alamat @A[2,5] menggunakan


COLUMN MAJOR ORDER

@A[-1,3] = 1000 H

3 4 5 6 7 8 3 4 5 6 7 8
-1 A B C D E F -1 1 5 9 13 17 21
0 G H I J K L 0 2 6 10 14 18 22
1 M N O P Q R 1 3 7 11 15 19 23
2 S T U V W X 2 4 8 12 16 20 24

@A[2,5] = ……?

SESSION 1 PERTEMUAN KE : 2 / Page 11 - 14


Dari Gambar Diatas terlihat bahwa bergerak dari elemen
A[-1,3] ke elemen A[2,5] yaitu elemen ke 12 menurut
COLUMN MAJOR ORDER perpindahannya sebanyak :

12 – 1 = 11 Elemen

ATAU

Terlihat dari kolom 3 ke kolom 5 sebanyak 2 Kolom


Setiap Kolom ada 4 Elemen , Jadi 2 * 4 = 8 Elemen

Dari baris -1 Ke baris 2 sebanyak 3 baris

Jadi Total Perpindahan = 8 + 3 = 11 Elemen

Satu Elemen 4 Byte  Pindah 11 * 4 = 44 Byte= 44 Dec


44 Dec = 2C Hexa,

Atau tanpa melihat Gambar : A [Baris, Kolom ]


Ditanya : @A[ 2 , 5 ]
Diketahui : @A[ -1 , 3 ] Dikurang

3 2

Pindah 2 Kolom = 2 * Banyak Elemen Per Kolom = 2 * 4 = 8


Pindah 3 Baris = 3 3

Total Perpindahan 8 + 3 = 11 Elemen

Dimana 1 Elemen 4 Byte Jadi ---- 11 * 4 = 44 Byte ( Decimal )


44 Dec. = 2C Hexa Dec.l

Jadi Alamat @A[2,5] = 1000 H + 2C H = 102C H

SESSION 1 PERTEMUAN KE : 2 / Page 12 - 14


Latihan
1. Diketahui suatu Array dua dimensi yang
dideklarasikan dengan A[-2..3,3..6]. Setiap elemen
terdiri dari 2 Byte. Alamat elemen pertama FECA H
Ditanya : A . Jumlah Elemen
B. Jumlah Byte Seluruhnya
C. Alamat A[2,5] atau @A[2,5] ?
Jika penempatan memori menggunakan :
C1. Row Major Order
C2. Column Major Order

2. Diketahui suatu Array dua dimensi yang


dideklarasikan dengan A[5][6] Pada Bahasa C++.
Setiap elemen terdiri dari 10 Byte. Alamat elemen
pertama @A[0][0]=FBCA H
Ditanya : A . Jumlah Elemen
B. Jumlah Byte Seluruhnya
C. Alamat A[3,2] atau @A[3,2] ?
Jika penempatan memori menggunakan :
C1. Row Major Order
C2. Column Major Order

3. Diketahui suatu Array dua dimensi yang


dideklarasikan dengan :
long A[6][7] Pada Bahasa C.
Alamat elemen pertama 10CC H
Ditanya : A . Jumlah Elemen
B. Jumlah Byte Seluruhnya
C. Alamat A[2,5] atau @A[2,5] ?
Jika penempatan memori menggunakan :
C1. Row Major Order
C2. Column Major Order

SESSION 1 PERTEMUAN KE : 2 / Page 13 - 14


Praktek dilaboratorium
Buat suatu program dengan C++/Visual C++
memasukkan data integer dengan array 2 dimensi
dan tampilkan lokasi setiap data tersebut.

SESSION 1 PERTEMUAN KE : 2 / Page 14 - 14