Minggu, 08 April 2018

ARRAY BERDIMENSI BANYAK

ARRAY
BERDIMENSI BANYAK

Sebuah array dimensi banyak atau multi-dimensional array didefinisikan sebagai sebuah array yang elemennya berupa array pula. Misal array B mempunyai M elemen berupa array pula, yang terdiri dari N elemen. Kalau hal tersebut kita gambarkan, akan terbentuk baris dan kolom seperti terlihat pada Gambar


Untuk itu diperlukan dua buah subscript. Yang pertama digunakan untuk menyatakan posisi baris, sedangkan yang kedua untuk posisi kolom. Secara umum array dimensi dua B, dengan elemen bertipe data T, subscript baris dari l sampai M, subscript kolom dari l sampai N, ditulis sebagai B(1:M, 1:N) = (B(I,J)), I = 1, 2, ...,M dan J = 1, 2,...,N dengan setiap elemen B(I,J) bertipe data T. Array B tersebut dikatakan berukuran atau berorder M x N. Di sini banyak elemen array adalah M*N. 

Contoh dari array dimensi dua sangat banyak kita jumpai. Misalnya nilai ujian 500 mahasiswa Gunadarma tingkat 3, untuk 8 mata kuliah dapat kita sajikan sebagai array dimensi dua yang berorder 500 x 8. Elemen B(I,J) menyatakan nilai mahasiswa ke-I untuk mata kuliah ke-J.

Seperti halnya pada array dimensi satu, pada array dimensi dua batas bawah untuk subscript I maupun J dapat diambil secara umum. Misalnya, batas bawah subscript baris adalah L1 subscript kolom adalah L2 sedangkan batas atas subscript baris adalah U1 dan untuk kolom adalah U2, maka array dimensi dua tersebut dapat dinotasikan sebagai :

B(L1:U1, L2:U2) = (B(I,J)), L1 <= 1 <= U1, L2 <=J <= U2 

dengan setiap elemen B(I,J) bertipe data T. Banyaknya elemen pada setiap baris adalah U2 – L2 + 1 dan pada setiap kolom adalah U1–L1+l, sehingga banyaknya elemen pada array B semua ada = (U2-L2 +1) * (U1-L1 +1). 

Yang dimaksud dengan cross-section suatu array berdimensi dua adalah pengambilan salah satu subscript, misalnya subscript baris untuk tetap atau konstan, sementara subscript yang satunya lagi kita ubah-ubah sepanjang rangenya. Notasi yang umum digunakan adalah notasi * (asterisk) bagi subscript yang berubah-ubah nilainya tersebut.

Contohnya, penulisan B(*,4) menyatakan semua elemen pada kolom ke-4, yakni (B(1,4),B(2,4), B(3,4) ...., B(M,4)), seperti terlihat pada Gambar 


Dengan mudah dapat dimengerti bahwa B(11,*) menunjukkan semua elemen pada baris ke-11.

Transpose dari suatu array dimensi dua adalah penulisan baris menjadi kolom (kolom menjadi baris) dari suatu array. Jadi transpose dari array berorder M x N adalah array berorder N x M. Transpose dari array B dinotasikan sebagai BT . Berdasarkan definisi, maka jelas B(I,J) =BT (J,I). Contohnya B(3,5) = BT (5,3). 

Pengertian di atas dapat kita perluas untuk array dimensi tiga, dimensi empat, sampai dimensi N. Array dimensi N kita tulis sebagai :

 A(L1:U1, L2:U2, …, LN: UN) = (A(I1, I2, …, IN))

 dengan Lk <= Ik <= Uk, untuk setiap k = 1, 2, …, N.  

Banyaknya elemen dari array A tersebut adalah : 

PI(Uk - Lk + 1) = (U1-L1+1) * (U2 – L2+1) … * (UN -LN + 1) 

Contoh array dimensi tiga adalah penyajian data mengenai banyaknya mahasiswa dari-20 perguruan tinggi di Jakarta, berdasarkan tingkat (tingkat 1, 2 sampai dengan 5), dan jenis kelamin (pria atau wanita). Misalnya array tersebut dinamakan MHS. Ambil sebagai subscript pertama, tingkat : I = 1, 2,...,5; subscript kedua, jenis kelamin (pria = 1, wanita = 2): J = 1,2, dan subscript ke-3, Perguruan Tinggi adalah K = 1,2,...,20. Jadi MHS(4,2,17) menyatakan jumlah mahasiswa tingkat 4, wanita, dari perguruan tinggi ke 17.

Array dimensi tiga dapat kita bayangkan seperti Gambar 



Pengertian cross-section pada array dimensi banyak, adalah sama seperti pada array dimensi dua. Misalnya MHS(4,*,17) menunjukkan jumlah mahasiswa tingkat 4 dari perguruan tinggi 17 (masing-masing untuk pria serta wanita). MHS(*,*,3) menun-jukkan jumlah mahasiswa untuk masing-masing tingkat, pria serta wanita, dari perguruan tinggi 3. 


C memungkinkan untuk membuat array yang dimensinya lebih dari 2. bentuk umum pendeklarasian array dimensi banyak:

tipe nama_varchar[ukuran1] [ukuran2] ... [ukuranN]




sumber referensi: 

entin "array" entin.lecturer.pens.ac.id  
julio, 2011"array (larik) record" julio.staff.ipbc.ac.id/files/2011/12/6.pdf 

Tidak ada komentar:

Posting Komentar