Anda di halaman 1dari 20

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

PUSAT PENGEMBANGAN BAHAN AJAR-UMB

Wachyu Hari Haji M.M.,Si

ALG. PEMROGRAMAN & STRUKTUR DATA

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

-3

-2

-1

8
2

9
3

10 11 12
4

1 2 3 4

Setiap elemen 4 Byte


@A[-3] = 1000 H

maka @A[-2] = 10004 H

A. Jumlah Elemen

B. Jumlah Byte

= (Index atas - Index Bawah ) + 1


=

( 8 - (-3) ) + 1

12 Elemen

= JumlahElemen * Jumlah Byte PerElemen


= 12
=

* 4

48 Byte

C. Alamat @A[ 7 ] =
Dari @A[-3] berpindah/bergerak ke @A[7]

PUSAT PENGEMBANGAN BAHAN AJAR-UMB

Wachyu Hari Haji M.M.,Si

ALG. PEMROGRAMAN & STRUKTUR DATA

= 7 - (-3)
= 10 Elemen
Setiap Elemen 4 Byte maka :
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

Dimana nomor index pertama pada bahasa C dimulai dari 0 (nol)

PUSAT PENGEMBANGAN BAHAN AJAR-UMB

Wachyu Hari Haji M.M.,Si

ALG. PEMROGRAMAN & STRUKTUR DATA

Program C++ mengetahui alamat suatu data


#include<iostream.h>
#include<conio.h>
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]

PUSAT PENGEMBANGAN BAHAN AJAR-UMB

Wachyu Hari Haji M.M.,Si

ALG. PEMROGRAMAN & STRUKTUR DATA

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]

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]

PUSAT PENGEMBANGAN BAHAN AJAR-UMB

Wachyu Hari Haji M.M.,Si

ALG. PEMROGRAMAN & STRUKTUR DATA

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

PUSAT PENGEMBANGAN BAHAN AJAR-UMB

Wachyu Hari Haji M.M.,Si

ALG. PEMROGRAMAN & STRUKTUR DATA

Jawab .
Di ilustrasikan sebuah Array sebagai berikut:

@A[-1,3] = 1000 H

-1

5
A

6
B

8
C

K
0

L
Q

@A[2,5] = ?.

Pada Array 2 Dimensi yang diilustrasikan diatas, urutan elemennya dalam memori
jika megikuti cara :

ROW MAJOR ORDER

PUSAT PENGEMBANGAN BAHAN AJAR-UMB

Wachyu Hari Haji M.M.,Si

ALG. PEMROGRAMAN & STRUKTUR DATA

(URUTAN YANG MENGUTAMAKAN/MENDAHULUKAN BARIS)

-1,3

-1,4

-1,5 -1,6

-1,7 -1,8

9.. 19 20 21

0,3

0,4

22

23 24

2,3 2,4 2,5

2,6

2,7

2,8
A

..

S T

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)

9..19

20 21 22 23

24

-1,3
A

kolom Ke-1

Kolom Ke-2

Kolom (3)

Kolom (4)

Kolom Ke 3

Kolom ke6

Kolom 5

Kolom 8

@A[-1,3] = 1000 H
Setiap pindah Satu Kolom pindah 4 Elemen

PUSAT PENGEMBANGAN BAHAN AJAR-UMB

Wachyu Hari Haji M.M.,Si

ALG. PEMROGRAMAN & STRUKTUR DATA

BILA DINYATAKAN DENGAN NOMOR URUT MAKA PENEMPATAN ELEMEN


ARRAY :
CARA ROW MAJOR ORDER
3
-1
0
1
2

1
7
13
19

2
8
14
20

6
3
9
15
21

7
4
10
16
22

8
5
11
17
23

6
12
18
24

CARA COLUMN MAJOR ORDER


3
-1
0
1
2

1
2
3
4

5
6
7
8

6
9
10
11
12

7
13
14
15
16

8
17
18
19
20

21
22
23
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

PUSAT PENGEMBANGAN BAHAN AJAR-UMB

Wachyu Hari Haji M.M.,Si

ALG. PEMROGRAMAN & STRUKTUR DATA

= 24

B. Jumlah Byte

2 - (-1)+1

(8-3)+1

= 4 Baris

= 6 Kolom

= 24 * 4 = 96 Byte

C1. Menentukan Alamat @A[2,5]


menggunakan ROW MAJOR ORDER

@A[-1,3] = 1000 H

-1
0
1
2

3
A
G
M
S

4
B
H
N
T

5
C
I
O
U

6
D
J
P
V

7
E
K
Q
W

8
F
L
R
X

-1
0
1
2

3
1
7
13
19

4
2
8
14
20

5
3
9
15
21

6
4
10
16
22

7
5
11
17
23

8
6
12
18
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
Setiap Baris ada 6 Elemen , Jadi

sebanyak

3 Baris

3 * 6 = 18 Elemen

Dari Kolom 3 Ke kolom 5 sebanyak 2 Kolom

PUSAT PENGEMBANGAN BAHAN AJAR-UMB

Wachyu Hari Haji M.M.,Si

ALG. PEMROGRAMAN & STRUKTUR DATA

10

Jadi Total Perpindahan = 18 + 2 = 20 Elemen


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

Atau tanpa melihat Gambar : A [Baris, Kolom ]


Ditanya

: @A[

2 , 5 ]

Diketahui

: @A[ -1 , 3 ]
3

Pindah 3 Baris

Dikurang

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

Pindah 2 Kolom = 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

PUSAT PENGEMBANGAN BAHAN AJAR-UMB

Wachyu Hari Haji M.M.,Si

ALG. PEMROGRAMAN & STRUKTUR DATA

11

@A[-1,3] = 1000 H

-1
0
1
2

3
A
G
M
S

4
B
H
N
T

5
C
I
O
U

7
D
J
P
V

8
E
K
Q
W

F
L
R
X

-1
0
1
2

3
1
2
3
4

4
5
6
7
8

5
9
10
11
12

6
13
14
15
16

7
17
18
19
20

8
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 12 menurut COLUMN MAJOR ORDER perpindahannya sebanyak :
12 1 = 11 Elemen
ATAU
Terlihat dari kolom 3 ke kolom 5

sebanyak

Setiap Kolom ada 4 Elemen , Jadi

2 Kolom

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 ]

PUSAT PENGEMBANGAN BAHAN AJAR-UMB

Wachyu Hari Haji M.M.,Si

ALG. PEMROGRAMAN & STRUKTUR DATA

12

Ditanya

: @A[

2 , 5 ]

Diketahui

: @A[ -1 , 3 ]
3

Dikurang

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


Pindah 3 Baris

= 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


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

PUSAT PENGEMBANGAN BAHAN AJAR-UMB

Wachyu Hari Haji M.M.,Si

ALG. PEMROGRAMAN & STRUKTUR DATA

13

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

Praktek dilaboratorium
Buat suatu program dengan C++/Visual C++ memasukkan data integer dengan array
2 dimensi dan tampilkan lokasi setiap data tersebut.
ARRAY TIGA DIMENSI
Suatu Array dideklarasikan A[ 2 ..4 , -1 .. 2 , 3 .. 8 ], setiap elemen terdiri 4 byte.
Alamat elemen pertama @A[2,-1,3]= 1000 H ditanya :
A. Jumlah Elemen
B. Jumlah Byte Seluruhnya
C. Alamat @A[4,2,5]
C1. Menggunakan Row Major Order
C2. Menggunakan Column Major Order
JAWAB
ilustrasi :

@A[2,-1,3] = 1000 H
3

-1
0
1
2
Blok 2

PUSAT PENGEMBANGAN BAHAN AJAR-UMB

-1
0
1
2

-1
0
1
2

Blok 3

Blok 4

Wachyu Hari Haji M.M.,Si

ALG. PEMROGRAMAN & STRUKTUR DATA

14

@A[4,2,5] =.?
Blok
(4 2 )+1
2 Blok

Baris

Kolom

(2-(-1))+1

(8-3) + 1

4 Baris

A[ 2 .. 4 , -1 .. 2 ,

6 Kolom

3.. 8 ]

A. Jumlah Elemen: Jumlah Blok

= ( 4 - 2 ) + 1 = 3 Blok

Jumlah Baris

= ( 2 (-1) + 1 = 4 Baris

Jumlah Kolom = ( 8 3 ) + 1 = 6 Kolom


Jumlah Elemen = 3 * 4 * 6 = 72 Elemen.
B. Jumlah Byte : 72 * 4 Byte = 288 Byte.
C1. ROW MAJOR ORDER
@A[2,-1,3] = 1000 H

3
-1
0
1
2

1
7
13
19

2
8
14
20

3
9
15
21

4
10
16
22

5
11
17
23

3
6
12
18
24

-1
0
1
2

BLOK 2

25
31
37
43

26
32
38
44

27
33
39
45

28
34
40
46

7
29
35
41
47

BLOK 3

3
30
36
42
48

-1
0
1
2

49
55
61
67

50
56
62
68

51
57
63
69

52
58
64
70

7
53
59
65
71

8
54
60
66
72

BLOK 4
@A[4,2,5] = ?

Dari Gambar terlihat urutan perpindahan dari elemen no. 1 ke Elemen No. 69
perpindahan sebanyak 68 Elemen.

PUSAT PENGEMBANGAN BAHAN AJAR-UMB

Wachyu Hari Haji M.M.,Si

ALG. PEMROGRAMAN & STRUKTUR DATA

15

68 * 4 Byte =272 Byte --- 272 Dec. = 110 Hexa Dec.

Jika tidak melihat gambar dapat dihitung dengan melihat perpindahan Blok, Baris
dan kolom.

Ditanya :

@A[ 4 , 2 , 5 ]

Diketahui

@A[ 2 , -1 , 3 ]
2

Di kurang

Pindah 2 Blok ( Dari Blok 2 Ke Blok 4 )


Setiap Blok Ada 24 Elemen
Jadi Perpindahan 2 * 24

PUSAT PENGEMBANGAN BAHAN AJAR-UMB

Wachyu Hari Haji M.M.,Si

48 Elemen

ALG. PEMROGRAMAN & STRUKTUR DATA

16

Pindah 3 Baris ( Dari Baris -1 Ke baris 2 )


Setiap Baris ada 6 Elemen
Jadi Perpindahan 3 * 6

18 Elemen

Pindah 2 Kolom ( 2 Elemen ) = 2 Elemen

Jadi Jumlah Pepindahan

68 Elemen

Pindah = 68 Elemen
= 68 * 4 Byte
= 272 Byte (Decimal)
= 110 Hexa Dec
Jadi Alamat @A[4,2,5] = 1000 H + 110 H = 1110 H

C2. COLUMN MAJOR ORDER


@A[2,-1,3] = 1000 H

3
-1
0
1
2

1
2
3
4

5
6
7
8

9
10
11
12

13
14
15
16

17
18
19
20

3
21
22
23
24

-1
0
1
2

BLOK 2

25
26
27
28

29
30
31
32

33
34
35
36

37
38
39
40

7
41
42
43
44

3
45
46
47
48

BLOK 3

-1
0
1
2

49
50
51
52

53
54
55
56

57
58
59
60

61
62
63
64

7
65
66
67
68

8
69
70
71
72

BLOK 4
@A[4,2,5] = ?

Dari Gambar terlihat urutan perpindahan dari elemen no. 1 ke Elemen No. 60
perpindahan sebanyak 59 Elemen.
59 * 4 Byte = 236 Byte 236 Dec. = EC Hexa Dec.

PUSAT PENGEMBANGAN BAHAN AJAR-UMB

Wachyu Hari Haji M.M.,Si

ALG. PEMROGRAMAN & STRUKTUR DATA

17

Jika tidak melihat gambar dapat dihitung dengan melihat perpindahan Blok, Baris
dan kolom.

Ditanya :

@A[ 4 , 2 , 5 ]

Diketahui

@A[ 2 , -1 , 3 ]

Di kurang

Pindah 2 Blok ( Dari Blok 2 Ke Blok 4 )


Setiap Blok Ada 24 Elemen
Jadi Perpindahan 2 * 24

48 Elemen

Pindah 3 Baris ( Dari Baris -1 Ke baris 2 )


Pindah Sebanyak 3 Elemen = 3 Elemen

Pindah 2 Kolom ( Dari Kolom 3 Ke Kolom 5)


Setiap Kolom 4 Elemen
Jadi Perpindahan 2 * 4 =

Jadi Jumlah Pepindahan

8 Elemen

59 Elemen

Pindah = 59 Elemen
= 59 * 4 Byte
= 236 Byte (Decimal)
= EC Hexa Dec
Jadi Alamat @A[4,2,5] = 1000 H + EC H = 10EC H

Latihan

PUSAT PENGEMBANGAN BAHAN AJAR-UMB

Wachyu Hari Haji M.M.,Si

ALG. PEMROGRAMAN & STRUKTUR DATA

18

1.

Diketahui suatu Array 3 dimensi yang dideklarasikan dengan A[-2..2,1..4,3..6].


Setiap elemen terdiri dari 6 Byte. Alamat elemen pertama FC8B H
Ditanya :

A . Jumlah Elemen
B. Jumlah Byte Seluruhnya
C. Alamat A[1,3,5] atau @A[1,3,5] ?
C1. Row Major Order
C2. Column Major Order

2.

Diketahui suatu Array 3 dimensi yang dideklarasikan dengan A[2][5][6] Pada


Bahasa C++.Setiap elemen terdiri dari 4 Byte. Alamat elemen pertama BC9A
H
Ditanya :

A . Jumlah Elemen
B. Jumlah Byte Seluruhnya
C. Alamat A[1,3,5] ?
C1. Row Major Order
C2. Column Major Order

3. Diketahui suatu Array 3 dimensi yang dideklarasikan dengan :


longdouble A[4][3[7] Pada Bahasa C++.
Alamat elemen pertama CBBA H
Ditanya :

A . Jumlah Elemen
B. Jumlah Byte Seluruhnya
C. Alamat A[3,2,6] ?
C1. Row Major Order
C2. Column Major Order

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

PUSAT PENGEMBANGAN BAHAN AJAR-UMB

Wachyu Hari Haji M.M.,Si

ALG. PEMROGRAMAN & STRUKTUR DATA

19

PUSAT PENGEMBANGAN BAHAN AJAR-UMB

Wachyu Hari Haji M.M.,Si

ALG. PEMROGRAMAN & STRUKTUR DATA

20

Anda mungkin juga menyukai