ARRAY
Pada umumnya letak elemen array secara
logika dan fisikal (letak dimemori) adalah sama. Array selalu terdiri
atas 2 bagian: index dan komponen. Setiap index hanya selalu bersisi 1
komponen (hubungan antara index dan komponen adalah one-to-one). Maka
dari itu hubungan antar elemen pada array bersifat homogenous.
Dalam bahasa C mendefinisikan array 1 dimensi:char student [4];
index contoh
[0] A
[1] B
[2] C
[3] D
student adalah array 1 dimensi yang terdiri dari 4 komponen yang bertipe char
Array bisa diakses secara positional access – pengambilan elemen berdasarkan posisi index, atau dengan associative access – pengambilan elemen berdasarkan isi dari elemen yang bersangkutan.
Karena pencapaian elemen pada positional access dilakukan secara acak, maka dapat disebut juga sebagai random access.- contoh untuk positional akses
printf(“%d”, a[i]);
}
- contoh untuk associative akses
nilaiassociative = 45;
for (i=1; i<=jumax; i++) {
if (a[i] = nilaiassociative) ketemu = true;
}
Jenis operasi yang dapat dilakukan terhadap array adalah:
- Retrieve, yaitu membaca atau mengambil nilai di elemen tertentu didalam array tersebut.
- Update, yaitu mengubah nilai di lemen tertentu yang terdapat pada array tersebut.
Dalam bentuknya array dapat kita tinjau dari segi pengaturan struktur datanya dalam konteks dimensi sebagai berikut:
- Array 1-dimensi, contohnya: list, vektor
#include <stdio.h>
Main()
{ char student[6];
int i;
student[0] = A;
student[1] = B;
student[2] = C;
student[3] = D;
student[4] = E;
student[5] = F;
for (i = 0; i < 6; i++)
{ printf(“Daftar Mahasiswa:\n”);
printf(“Student[%d] = \n”, i, student[i]);
}
}
Hasil program diatas adalah:
Daftar Mahasiswa:
Student[0] = A
Student[1] = B
Student[2] = C
Student[3] = D
Student[4] = E
Student[5] = F
Contoh penggunaan array 2 dimensi:
#include <stdio.h>
Main()
{ char jual[2][5];
int i, j, no;
jual[0][0] = 600;
jual[0][1] = 700;
jual[0][2] = 1000;
jual[0][3] = 800;
jual[0][4] = 750;
jual[1][0] = 700;
jual[1][1] = 1000;
jual[1][2] = 800;
jual[1][3] = 750;
jual[1][4] = 450;
printf(“Daftar Penjualan:\n”);
printf(“Senin Selasa Rabu Kamis Jumat\n”);
for (i = 0; i < 2; i++)
{ prinf(%d, no = i + 1)
for (j = 0; j < 5; j++)
printf(“%d”, jual[j][j]);
Error! Not a valid link.(“\n”);
}
}
Program diatas membuat daftar penjualan dengan mendefinisikan array 2 dimensi dengan instruksi int jual [2][5];
Table yang dibuat untuk penjualan selama
seminggu , yaitu di antara hari senin sampau jum’at , yang diekspresikan
melalui panjang array dimernsi pertama dengan angka 5. Angka
selanjutnya adalah mendefinisikan urutan lainya melalui array di dimensi
kedua dengan angka 2. Dengan definisi array 2 dimensi diatas, kita
mempunyai array dengan jumlah memori yang dialokasikan sebanyak 10 yang
dimulai dari index ke [0][0]s/d index ke [1][4].
Cara melakukan assigment untuk array 2
dimensi tidak banyak berbeda dengan yang kita kenal sebelumnya, yaitu
sepertii instruksi jual [0][0] = 600; artinya memory untuk index Error! Not a valid link.mendapat nilai 600, dan analog untuk lainya. Tulis dengan algoritma untuk menampilkan nilai, seperti :
Tampilkan judulSelama baris belum habis
Selama kolom belum habis
Tampilkan nilai array
Pindahkan ke baris berikutnya
Lakukan dengan menggunakan instruksi FOR berlapis, seperti ;
for (i = 0; i < 2; i++)
{ prinf(%d, no = i + 1)
for (j = 0; j < 5; j++)
printf(“%d”, jual[j][j]);
Error! Not a valid link.(“\n”);
proses pengulangan dilakukan dengan menggunakan variable i dan j untuk running index. Hasil yang didapat adalah ;
daftar penjualan :
Senin | Selasa | Rabu | Kamis | Jum’at |
1600 | 700 | 1000 | 800 | 750 |
2700 | 1000 | 800 | 750 | 450 |
- Array 3-dimensi, contohnya: matriks (3 dimensi)
for (i = 0; i < 2; i++)
{ prinf(%d, no = i + 1)
for (j = 0; j < 5; j++)
printf(“%d”, jual[j][j]);
Error! Not a valid link.(“\n”);
- Array multi-dimensi, pada prinsipnya, secara teori jumlah dimensi dari matriks tidak terbatas, yang membatasi adalah kemampuan hardware dan besar dari memori.
Untuk penghitungan lokasi/address dari array kita harus mengetahui beberapa parametr array, yaitu:
1) Base address (b)
Alamat (byte pertama) dari array yang di assign pada saat binding time.
Binding time adalah waktu dimana array di assign pada suatu lokasi di memory, bsa pada saat di compile atau di execute.
2) Component Length (L)
Panjangnya memory untuk menyimpan satu
komponen (L) tergantung dari tipe dan bahasa pemrograman , misalkan pada
Turbo Pascal 7.0 tipe integer mempunyai L = 2, sedangkan pada Turbo C
2.0 integer L = 2 tetapi pada Visual C++ 5.0, integer L = 5;
3) Lower Bound(lk) & Upper Bound(uk)Lower Bound adalah nilai index yang terkecil, sedangkan upper bound adalah nilai index yang terbesar. Contoh: int a[5], lk = 0 dan uk = 4
4) Dimension (d)
Besarnya dimensi suatu array.
Contoh: untuk int a[5], d = 1 sedangkan untuk int s[5][2], d =2
Array Mapping Function (AMF)
Setelah kita mengetahui definisi dari
masing-masing parameter array seperti yang dibahas diatas, maka
berikutnya kita mempergunakan parameter tersebut dalam perhitungan
lokasi (alamat) dari komponen berdasarkan nilai indeksnya, atau yang
lebih dikenal dengan istilah Array Mapping Function disingkat AMF
Array Mapping Function (AMF) adalah
suatu fungsi pemetaan nilai indeks (i) dari suatu komponen array ke
alamat(adress) dari komponen yang bersangkutan
Rumus yang dipergunakan dalam fungsi pemetaan ini adalah :
Array 1 dimensi
Int S[5];
Diketahui b = 500, L = 2
l1 = 0, u1 = 4
C1 = L= 2
= 500 – (0 * 2)
= 500
Addrs S[i] = c0 + c1 * i1 à Addrs (S[1] )= 500 + 2 * 1 = 502
Addrs (S[2]) = 500 + 2 * 2 = 504
Dan seterusnya sampai S[4].
Selengkapnya silahkan klik disini
0 komentar:
Posting Komentar