ARRAY DAN
RECORD
Sebuah array dapat dikatakan sebagai
suatu himpunan terurut dengan elemen-elemen homogen. Terurut, dimaksudkan bahwa
elemen pertama, elemen kedua, dst masing-masing dapat diidentifikasi. Sedangkan
homogen berarti masing-masing elemen tersebut mempunyai tipe data yang sama.
Array dapat
dikelompokkan atas 2 bagian, yaitu :
1. Array satu
dimensi.
2. Array multi
dimensi.
ARRAY SATU DIMENSI
Bentuk array
yang paling sederhana adalah array satu dimensi. Array jenis ini dapat dianggap
sebagai sebuah vektor. Suatu array A berdimensi satu dengan N buah elemen,
secara fisik dapat digambarkan sebagai berikut :
A(1)
|
A(2)
|
.....
|
A(I)
|
.....
|
A(n)
|
Indeks dari elemen suatu array
menyatakan posisinya dalam urutan secara umum suatu array A berdimensi satu
dengan elemen berjenis data T yang mempunyai indeks dari L s/d U dituliskan
sbb:
A(L:U) = {A(I)}
Untuk I = L, L+1, L+2, .................,
U-1, U,
dimana masing-masing A(I)
berjenis data T.
L disebut sebagai batas bawah dari
indeks A dan U sebagai batas atas dari A.
Jumlah elemen dalam suatu array
disebut sebagai range.
Range dari array A(L:U) adalah U - L
+ 1.
Range dari array B(1:N) adalah N - l
+ 1= N.
ARRAY MULTI
DIMENSI
Array dua
dimensi adalah salah satu contoh dari array jenis multi dimensi (dimensi
banyak). Array ini elemen-elemennya merupakan array pula. Bentuk yang dianggap
dapat mewakili array dua dimensi ini adalah matriks. Suatu array B yang
terdiri atas M elemen dimana masing-masing elemennya berupa array dengan N
elemen, dapat digambarkan sebagai suatu tabel MxN, dengan bentuk
sbb:
1
|
2
|
3
|
...
|
J
|
...
|
N
|
|
1
|
|||||||
2
|
|||||||
3
|
|||||||
...
|
|||||||
I
|
|||||||
...
|
|||||||
M
|
Array ini dituliskan :
B(1:M,1:N) = {B(I,J)},
Untuk I = 1,2,...,M
J = 1,2,...,N
Jumlah elemen (range) dari array B
ini adalah M x N.
Secara umum, array 2 dimensi B
dengan batas bawah indeks pertama L1, batas atas indeks pertama U1, batas bawah
indeks kedua L2 batas atas indeks kedua U2, dituliskan:
B(L1 : U1, L2 : U2) =
{B(I,J)}
Untuk L1 < I <
U1 dan L2 < J < U2
Jumlah elemen baris dari array B
adalah : ( U2 - L2 + 1 )
Jumlah elemen kolom dari array B
adalah : ( U1 - L1 + 1)
Jumlah total elemen array B adalah :
(U2 - L2 + 1 )(U1 - L1 + 1)
CROSS SECTION
Yang
dimaksud dengan Cross section dari array 2 dimensi adalah : suatu himpunan yang
anggotanya adalah elemen-elemen dalam satu baris saja atau satu kolom saja.
Notasinya menggunakan *.
Contoh :
Misal diberikan array B(1:M,1:N).
B(4,*) = {B(4,1), B(4,2),
...,B(4,N)}
B(*,4) = {B(1,4), B(2,4),
...,B(M,4)}
TRANSPOSE
Transpose
dari suatu array dua dimensi, adalah suatu array dua dimensi pula dengan
menukar posisi indeksnya. Transpose dari array berukuran M x N adalah suatu
array berukuran N x M. Transpose dari suatu array dari B dinotasikan dengan BT,
dan didefinisikan:
B(I,J) =
BT (J,I)
Selanjutnya secara umum, suatu array
A berdimensi N dapat dituliskan sbb:
A(L1:U1,L2:U2,...,LN:UN)
Jumlah elemen array ini adalah :
N (U1 - L1 + 1)(U2- L2+ 1)... (UN -
LN + 1) (UK - LK + 1) k=1
Sebagai contoh perhatikan sebuah
array berdimensi 3 yang menggambarkan (berisi) jumlah mahasiswa STMIK Gunadarma
untuk kelas pagi dan malam.
Array ini dapat digambarkan sbb :
Jika array ini diberi nama
Gunadarma, maka bentuknya dapat dituliskan sbb:
Gunadarma(1:2,1:2,1:5) =
{Gunadarma(i,j,k)}
dimana I = 1,2 (1 =
pria, 2 = wanita)
J = 1,2 (1 = pagi, 2 = malam)
K = 1,2,3,4,5 (kelas 1 s/d 5)
Seluruh mahasiswa pagi dapat
ditunjukkan dengan Gunadarma (*,1,*)
sedangkan seluruh mahasiswa malam
dapat ditunjukkan denga
Gunadarma(*,2,*)
DEKLARASI ARRAY DALAM BAHASI
PEMROGRAMAN.
Misal
diberikan array dengan nama A yang mempunyai 24 elemen dengan masing-masing
elemen berjenis data integer, maka deklarasinya dalam bahasa pemrograman adalah
sbb:
COBOL :
01 A_Table
02 A OCCURS 24 TIMES PIC 99
PASCAL : VAR A : ARRAY [1..24] OF
INTEGER;
Dalam mendeklarasikan suatu array
ada 3 hal yang harus ada pada deklarasi tersebut, yaitu:
Nama array
Range dari
indeksnya
Tipe
elemen-elemen datanya
MAPPING KE
STORAGE DARI ARRAY
Ada beberapa
cara untuk menyatakan suatu array pada storage, tetapi konsepnya hampir sama
dengan apa yang ada pada data fungsi.
ARRAY SATU
DIMENSI
Misal
diberikan array satu dimensi dengan nama A yang mempunyai indeks 1 s/d N, yaitu
A(1:N). Secara fisik array A(1:N) dapat digambarkan sbb:
A(1)
|
A(2)
|
A(3)
|
...
|
A(I)
|
...
|
A(N)
|
Yang perlu kita ketahui disini
adalah : Letak elemen ke I dari array A(1:N), atau letak masing-masing elemen
array pada storage. Letak suatu elemen biasanya disebut sebagai starting
address atau starting location atau base location. Untuk mengetahui starting
address suatu elemen array, perlu diketahui lebih dulu antara lain :
Starting address dari array yang
bersangkutan.
Ukuran masing-masing elemen array
atau ruang yang digunakan
masing-masing elemen array.
Misal starting address dari array
A(1:N) adalah B dan masing-masing elemennya menggunakan ruang sebanyak S
bit. Maka starting address elemen ke I dari array A(1:N) adalah :
B + (I-1) * S
Hal ini disebabkan ada (I - 1)
elemen array A, masing-masing dengan ukuran atau panjang S secara fisik
mendahului elemen ke I pada array tersebut.
Secara umum dapat dikatakan bahwa :
Starting
address elemen ke I dari array A(L:U) adalah (B +(I-L)*S jika starting address
array A adalah B dan masing-masing elemenya menggunakan rungan sebanyak S bit.
MAPPING KE
STORAGE : ARRAY MULTI DIMENSI.
Prinsip yang
digunakan disini tetap didasarkan pada array satu dimensi. Oleh karena itu
untuk array multi dimensi, linierisasinya dapat dilakukan berdasarkan baris
atau kolom.
Contoh :
Misal diberikan array
A(1:3,1:4). Array ini secara fisik dapat digambarkan sbb :
1
|
2
|
3
|
4
|
|
1
|
||||
2
|
||||
3
|
Linierisasi menurut baris akan mengakibatkan bentuk
diatas menjadi :
1
|
2
|
3
|
Jika B adalah starting address array
A(1:3,1:4) dan S adalah ruang yang digunakan oleh masing-masing elemennya, maka
starting address dari elemen A(I,J) adalah :
B +
(I-1) * 4 * S + (J-1) * S
Hal ini karena ada ( I-1) baris,
masing-masing dengan panjang 4*S yang mendahului baris dimana elemen A(I,J)
berada dan ada (J-1) elemen masing-masing dengan panjang S yang mendahului
elemen A(I,J) pada baris ke I.
Contoh
Dari array A(1:3,1:4) akan dicari
starting adress elemen A(2,4).
Baris
|
1
|
baris
|
2
|
baris
|
3
|
A(2,4)
Starting address A(2,4)
= B + (2 - 1) * 4 * S + (4 - 1) * S
= B + 7 * S
Secara umum elemen A(I,J) dari array
A(l:U,L:U) mempunyai starting address :
B + (I-L1) * (U2-L2+1) * S + (J-L2)
* S
Alternatif lain untuk linierisasi
adalah dengan menggunakan cara kolom jika diberikan array A(1:3,1:4) diatas,
maka bentuk linierisasinya :
Jika B adalah starting address dari
array A(1:4,1:6) dan S adalah ruang digunakan untuk masing-masing elemenya,
maka starting address dari
A(I,J) adalah :
B + (J - 1) * 4 * S + (I - 1) * S
Hal ini disebabkan ada (J - I) kolom
masing-masing dengan 4 elemen yang panjangnya s yang mendahului kolom tempat
elemen A(I,J) berada dan ada (I-1) elemen masing-masing dengan panjang S yang
mendahului elemen A(I,J) pada kolom ke J.
Secara umum dapat dikatakan bahwa :
Elemen A(I,J) dari array
A(L1:U1,L2:U2), menurut kolom mempunyai starting address :
B + (J-L2) * (U1-L1+1) * S + (I-L1)
* S
Jika starting adress array tersebut
adalah B dan masing-masing elemenya menggunakan ruang sebanyak S bit.
Contoh :
Misal diberikan array K(1:4,1:6)
dengan starting address B dan masing-masing elemenya menggunakan ruang S bit.
Maka starting adress dari elemen k(2,4) adalah :
= B + (4 -
1) * (4-1+1) * S + (2 - 1) * S
= B + 3 * 4*
S + 1 * S
= B + 13 * S
RECORD
Record adalah himpunan dari
elemen-elemen yang heterogen.
Heterogen adalah elemen-elemennya
dapat mempunyai tipe data yang berbeda.
ELEMENTARY ITEM adalah suatu field
yang tidak mempunyai subfield.
GROUP ITEM adalah suatu field yang
mempunyai subfield.
TUPEL adalah gabungan atribut yang
menjadi suatu informasi dari proses basis data.
Contoh RECORD :
PEGAWAI
Job Tittle
|
Emp. No
|
Pay Rate
|
Name
|
Telp. No
|
Analys
|
00012724
|
1.000.000
|
Bob Geldof
|
7801725
|
Programmer
|
00023451
|
800.000
|
Ceu Rika
|
7521475
|
(
String(20) )
|
(
String(8) )
|
(
Real(9,2) )
|
(
String(25) )
|
(
String(7) )
|
Record-record
yang tipenya sama : FILE.
Untuk
menyatakan suatu data dalam record yang mempunyai identifikasi yang khusus,
maka harus punya 1 field khusus yang disebut KEY (kunci field).
DEKLARASI
RECORD DALAM BAHASA PEMROGRAMAN
PROGRAM
DALAM COBOL
DATA
DIVISION.
PEGAWAI.
02
JOB_TITTLE PIC X(20).
02
EMP_NO PIC X(8).
02
PAY_RATE PIC 9(2) V 9(2).
02
NAME
PIC X(25).
02
TELP_NO PIC X(7).
PROGRAM
DALAM PASCAL
Type
Pegawai =
Record;
Job_Tittle :
String[20];
Emp_No
: String[8];
Pay_Rate :
Real;
Name
: String[25];
Telp_No
: String[7];
End;
Referensi :
www.elearning.gunadarma.ac.id/docmodul/.../bab2-array_dan_record