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 dengan :
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:
1. Nama array
2. Range dari indeksnya
3. 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 :
1. Starting address dari array yang
bersangkutan.
2. 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.
01 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;
No comments:
Post a Comment