Wednesday, February 23, 2011

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.

1. ARRAY 1 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)

Vektor adalah bentuk yang sederhana dari array, yang merupakan array dimensi satu. Secara umum, suatu array dimensi satu A dengan tipe data T dan subscript bergerak
dari L sampai dengan U, ditulis sebagai A(L:U) = (A(l)), I = L, L+1, L+2,..., U, dan setiap elemen A(l) bertipe data T.

BENTUK UMUM

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 sampai dengan  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 : 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.

DEKLARASI ARRAY DALAM BAHASA PEMROGRAMAN


Misalkan : Hasil pencatatan temperatur suhu ruangan dalam 1 hari (24 jam)
    1        2            3                                                                        24                    
28
30
29



...
30

Disimpan dalam array  TEMP sebagai berikut : TEMP (1:24)
Deklarasi :

PASCAL

                                var TEMP : Array[1..24] of integer;

BASIC

                                DIM TEMP(24)

COBOL

                                01  TABEL-TEMP
                                      02  TEMP OCCURS 24 TIMES PIC 99.
               
  
ARRAY MULTI DIMENSI
Adalah suatu array yang setiap elemennya merupakan tipe data array pula.
Jika array B terdiri dari M elemen, yang setiap elemennya terdiri dari suatu array dengan N elemen, maka array B dapat digambarkan sebagai berikut :

                                             1       2         3                         ...                         N
                                            L2                                                                       U2
L1   1






2






.
.
.










U1
M







Memiliki 2 index (baris dan kolom).
Dalam hal ini kita perlu memberi 2 harga subskrip untuk mengidentifikasikan masing-masing elemen pada array dimensi dua, yaitu :
·         Subskrip pertama menunjukkan baris dari array,
·         Sedangkan subskrip kedua menunjukkan kolom dari array.


BENTUK UMUM

Misal :           
Array B dengan tipe data T, subskrip baris dari L1 sampai U1, subskrip kolom dari L2 sampai U2, ditulis sebagai;

                               B(L1:U1,L2:U2)

Banyaknya elemen adalah : (U1 - L1 +1) * (U2 - L2 +1)

DEKLARASI ARRAY DALAM BAHASA PEMROGRAMAN


Misal :          Menyajikan nilai ujian dari 100 mahasiswa tingkat 2 sebanyak 8 mata kuliah.
                               
                                        1            2            3                       ...                     100
                                       L2                                                                           U2
L1   1

A

C

A


2






.
.
.










U1
8





B

Disimpan dalam array NILAI sebagai berikut :
                NILAI(1:8, 1:100)

Deklarasi : 

PASCAL
                Var NILAI : array[1..8, 1..100] of char;

BASIC

                Dim NILAI(8,100)

COBOL

                01. TABEL-NILAI
                      02. BRS OCCURS 8 TIMES
                       03. KOLOM OCCURS 100 TIMES PIC X.

CROSS SECTION (Penampang Array Berdimensi-2)

Adalah pengambilan salah satu subskrip.
Misal :        Baris          =     tetap/konstan
                      Kolom       =     berubah-ubah (*)

Contoh :           B(*,4)        =     semua elemen pada kolom ke-4.
                            B(2,*)        =     semua elemen pada baris ke-2.

Pengertian cross-section pada array dimensi banyak, adalah sama seperti pada array dimensi dua.

Misal :
MHS(4,*,17)               =     jumlah mahasiswa tingkat 4 dari perguruan tinggi 17 (masing-masing untuk pria dan wanita).
MHS(*,*, 3)                =     jumlah mahasiswa untuk masing-masing tingkat, pria dan wanita, dari perguruan tinggi 3.

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 :



            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,*)




MAPPING KE STORAGE DARI ARRAY
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

RECORD
Record adalah himpunan dari elemen-elemen yang heterogen.
Heterogen adalah elemen-elemennya dapat mempunyai tipe data yang berbeda.
Elemen dari suatu record disebut field.
Field adalah suatu area dari record yang menggunakan suatu informasi tertentu.
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;