[ Array ]
Karakteristik Larik (array) adalah tipe terstruktur yang terdiri dari sejumlah komponen yang mempunyai tipe yang sama. Komponen-komponen itu disebut tipe komponen atau tipe basis. Larik mempunyai jumlah komponen yang banyaknya tetap.
Karakteristik Banyaknya komponen dalam larik ditunjukkan oleh indeks yang disebut tipe indeks. Setiap komponen di larik dapat diakses dengan menunjukkan nilai indeksnya atau disebut juga subscript
Dimensi Array Array 1 Dimensi : Tipe array yang hanya memiliki nilai index tunggal. Misal : A : array [1..100] of byte; Array B(jan:mrt)=B(i) B : array [jan,feb,mrt] of integer;
Dimensi Array Array 2 Dimensi : Tipe array yang memiliki dua nilai index. Misal : A : array [1..100,1..5 ] of real; Array B(a:b,c:d)= B(I,j) B : array [jan,feb,mrt,apr] of array [feb,mrt] of integer;
Dimensi Array Array Multi Dimensi : Tipe array yang memiliki banyak nilai index. Misal : A : array [1..7,1..5,1..3,..] of byte; Array B(a:b,c:d,e:f,..)=B(I,j,k,..)
Parameter Array Base Address (b) Alamat byte pertama dari array yang diberikan pada saat ditempatkan di dalam suatu lokasi/address dalam memori.
Parameter Array Component Length (L) Index (i) Panjanganya ruang memori untuk menyimpan satu komponen, dinyatakan dalam byte. Index (i) Nomor index dari data array.
Parameter Array Lower Bound (Lb) & Upper Bound (Ub) Dimension (d) Lb adalah nilai index yang terkecil sedangkan Ub nilai index yang terbesar. Dimension (d) Besarnya dimensi dari suatu array.
Array Dimensi 1 Gambar fisik array dimensi 1 : A(1) A(2) A(3) A(4) ... A(1) A(2) A(3) A(4) A(N) Lower Bound (Lb) Upper Bound (Ub)
Array Dimensi 1 Bentuk Umum : Suatu array dimensi satu A bertipe data T memiliki notasi : A(Lb:Ub) A(I) = Lb,Lb+1,Lb+2,Lb+3,…,Ub Dan setiap elemen A(I) bertipe data T.
Operasi Array Dimensi 1 E = Ub – Lb +1 Menghitung jumlah elemen Dimana : E : Jumlah elemen Ub : Upper Bound Lb : Lower Bound
Operasi Array Dimensi 1 AD = b + ((i – 1) x L) 2. Menentukan posisi alamat awal dari nilai data AD = b + ((i – 1) x L) Dimana : AD : posisi alamat awal b : base address i : index L : panjang ruang memori
Operasi Dasar pada Array Operasi Penciptaan Operasi penghancuran Operasi pemrosesan transversal Operasi pencarian (table look-up) Operasi sorting
Penciptaan dan Penghancuran Array Penciptaan dan Penghancuran Setiap struktur data harus dilengkapi kedua operasi ini. Penciptaan disebut inisialisasi, operasi untuk mempersiapkan struktur data untuk operasi-operasi berikutnya. Penghancuran menyatakan ketidakberlakuan atau pembebasan memori, menyerahkan memori ke manajemen memori agar dapat digunakan untuk keperluan lain. Operasi penghancuran digunakan dalam struktur data dinamis seperti pointer.
Penyimpanan dan Pengembalian Nilai Array Penyimpanan dan Pengembalian Nilai Biasanya bahasa pemrograman menyediakan sintaks untuk penyimpanan dan pengembalian nilai elemen pada posisi tertentu. Contoh: A[10]:=78; berarti penyimpanan nilai 78 ke posisi ke 10 dari array A. C:=A[10]; berarti pengambilan nilai dari elemen ke 10 dari
Pemrosesan Transversal Array Pemrosesan Transversal Adalah pemrosesan mengolah seluruh elemen array secara sistematis / terurut. Contoh penggunaan transversal pada array integer: Prosedur untuk memasukkan nilai seluruh elemen array Prosedur untuk menuliskan seluruh nilai ke layar Fungsi untuk mencari nilai ekstrim Fungsi menjumlah seluruh elemen array Fungsi merata-rata seluruh elemen array
Prosedur untuk memasukkan nilai seluruh elemen array Procedure inputNilai; Var i:integer; Begin for i:=1 to max do begin write(‘Elemen ke’,I,’ :‘); readln(arrayA[i]); end; End;
Prosedur untuk menuliskan seluruh nilai ke layar Array Prosedur untuk menuliskan seluruh nilai ke layar Procedure outputNilai; Var i:integer; Begin for i:=1 to max do begin write(‘Elemen e’,I,’:‘); write(arrayA[i]); end; End;
Fungsi untuk mencari nilai ekstrim Array Fungsi untuk mencari nilai ekstrim Function maximum:integer; Var I,maks:integer; Begin maks:=0; for i:=1 to max do if (arrayA[i]>maks) then maks:=arrayA[i]; maximum:=maks; End;
Array Function minimum:integer; Var i,min:integer; Begin min:=arrayA[1]; for i:=2 to max do if (arrayA[i]<min) then min:=arrayA[i]; minimum:=min; End;
Fungsi menjumlah seluruh elemen array Function sumArray:integer; Var i,jumlah:integer; Begin jumlah:=0; for i:=1 to max do jumlah:=jumlah+arrayA[i]; sumArray:=jumlah; End;
Fungsi merata-rata seluruh elemen array Function averageArray:real; Var i,rata,jumlah:integer; Begin jumlah:=0; for i:=1 to max do jumlah:=jumlah+arrayA[i]; averageArray:=jumlah/max; End;
Pencarian di array (table Look-Up) Pencarian di array adalah proses pencarian sebuah nilai di array. Klasifikasi pencarian array: Pencarian sekuen (sequnetial searching) Pencarian biner (binary searching)
Pencarian sekuen (sequential searching) Array Pencarian sekuen (sequential searching) Pencarian dilakukan secara berurutan mulai elemen pertama sampai elemen terakhir. Program menghasilkan nilai indek dimana elemen pertama kali ditemukan. Indek akan bernilai 0 jika tidak ditemukannya nilai yang dicari. Pencarian dihentikan begitu elemen pertama ditemukan.
Pencarian sekuen tanpa boolean Array Pencarian sekuen tanpa boolean Function SeqSearch1(cari:integer):integer; Var i,indeks:integer; Begin indeks=0; for i:=1 to max do if (arrayA[i]=cari) then begin indeks:=i; exit; end; SeqSearch1:=indeks; End;
Pencarian sekuen dengan boolean Array Pencarian sekuen dengan boolean Function SeqSearch2(cari:integer):integer; Var i:integer;ketemu:boolean; Begin ketemu:=false; for i:=1 to max do if (arrayA[i]=cari) then begin ketemu:=true; exit; end; if ketemu then SeqSearch2:=i else SeqSearch2:=0; End;
Pencarian biner (binary searching) Array Pencarian biner (binary searching) Pencarian dengan biner harus mempunyai syarat bahwa data harus dalam kondisi terurut. Pemeriksaan dilakukan dengan mereduksi jumlah elemen tabel menjadi setengah elemen semula. Cara yang dilakukan adalah sebagai berikut: Bandingkan harga yang dicari dengan harga elemen tengah. jika lebih kecil maka pencarian yang sama dilakukan pada elemen sebelah kiri.
Pencarian biner (binary searching) Array Pencarian biner (binary searching) jika lebih besar maka pencarian yang sama dilakukan pada elemen sebelah kanan. Pencarian akan menghasilkan nilai indek dimana nilai pertama kali ditemukan.
Array Function IdxSearch(cari:integer):integer; Var i,min,maks,indek,tengah:integer; Begin indek:=0;maks:=max;min:=1; tengah:=(maks+min) div 2; while ((atas<bawah) and (arrayA[tengah]<>cari) do begin if(arrayA[elemen]<cari) then min:=tengah-1 else atas:=tengah+1; tengah:=(atas+bawah) div 2; end; If (arrayA[tengah]=cari then indek:=I Else indek:=0; End;
Array Pengurutan Array Pengurutan dibedakan menjadi 2: Pengurutan internal Pengurutan eksternal
Array Pengurutan internal Pengurutan terhadap array. Pengurutan ini dilakukan terhadap sekumpulan data di media memori internal.
Array Pengurutan eksternal Pengurutan data di memori eksternal. Biasanya data bervolume besar sehingga tidak mampu dimuat semuanya di memori utama.
Array Metode pengurutan Maximum sort. Insertion sort. Bubble sort. Counting sort. Shaker sort. Heap sort. Shell sort. Merge sort. Quick sort. Radix sort.
Keunggulan dan Batasan Array Array sangat cocok untuk negaksesan data acak. Pengaksesan elemen dapat dilakukan langsung tanpa melalui elemen-elemen lain. Jika berada di suatu lokasi elemen, maka sangat mudah mengakses elemen tetangga baik pendahulu (predecessor) maupun penerus (successor).
Keunggulan dan Batasan Array Keterbatasan: Array harus bertipe homogen. Tidak bisa suatu elemen bertipe karakter dan elemen lain bertipe interger atau yang lain. Penyisipan dan penghapusan elemen di array sangat tidak efisien. Kebanyakan bahasa pemrograman mengimplementasikan array statik yang sulit diubah ukurannya di waktu eksekusi.