BAB II.
PEMBAHASAN
ARRAY
PEMBAHASAN
ARRAY
Definisi Array
Array atau dalam beberapa literatur disebut sebagai larik, adalah suatu tipe variabel yang berisi kumpulan data dengan setiap elemen datanya bertipe sama. Setiap komponen atau elemen array dapat diakses dan dibedakan melalui indeks yang spesifik dimana jumlahnya sebanyak ukuran array tersebut dikurangi satu (karena perhitungan indeks dimulai dari nol).
Fungsi Array
Sebagai langkah efisiensi penggunan memori komputer, sebab data elemen array dialokasikan pada suatu deretan sel memori tertentu. Hal ini jauh lebih efisien dibandingkan dengan jika kita mendefinisikan masing – masing data pada suatu variabel tersendiri yang pastinya akan banyak menyita memori.
Fungsi Array
Agar memudahkan programmer dalam menyusun aplikasi yang berhubungan dengan banyak data terutama dalam masalah pencarian dan pengurutan data secara cepat.
Deklarasi Array Satu Dimensi
Bentuk umum : tipe_var nama_var[ukuran];
Deklarasi Array Multidimensi
Array dapat pula digunakan untuk menangani kumpulan data yang memiliki dimensi lebih dari satu, misalnya untuk penanganan pada matriks. Bentuk umumnya : tipe_var nama_var[ukuran 1][ukuran 2] ... Contoh : int iMatriks[2][2]={ {10, 2}, {2, 4}};
Array Subscript
Array subscript adalah nilai atau expresi (pernyataan) dalam tanda kurung setelah nama array untuk menunjukkan elemen array mana yang harus diakses (indeks). Contoh :
x[2] �� 2 = array subscript n=10; x[n – 8] �� n – 8 = array subscript
Mengakses Elemen Array
Untuk dapat mengakses elemen - elemen array sebagian besar sama seperti tipe variabel lainnya, tapi kita harus menyertakan indeksnya yang bisa didapat secara langsung atau menggunakan subscript. Contoh : ... int x[2]; x[1]=10; printf(“%d”, x[1]); ...
Inisialisasi Array
Array dapat diinisialisasi secara langsung pada saat prtama kali dideklarasikan (efisien untuk array berdimensi sedikit). Contoh : int x[2]={1, 2}; Array dapat dideklarasikan terlebih dahulu, baru kemudian diisi elemennya. Contoh : int x[2]; x[0]=1; x[1]=2;
Pencarian Dan Pengurutan Menggunakan Array
Dengan menggunakan array, maka kita dapat lebih mudah untuk melakukan pencarian dan pengurutan berdasarkan pada indeks elemen array tersebut.
Algoritma Pencarian Array
Asumsikan bahwa target yang dicari belum ditemukan Mulai dengan melakukan inisialisasi elemen – elemen array Ulangi jika target belum ditemukan dan masih terdapat elemen array yang belum dibaca Jika elemen yang dicari belum sesuai dengan target, maka Asumsikan kembali bahwa target belum ditemukan Jika tidak, maka Lanjutkan ke elemen array selanjutnya Jika target ditemukan, maka Kembalikan indeks target sebagai hasil pencarian Jika tidak, maka Kembalikan nilai -1 sebagai hasil pencarian
Algoritma Pengurutan Array Menggunakan Metode Urut
Seleksi Untuk setiap nilai dari isi dari 0 sampai n-2 Cari min yang merupakan indeks yang memuat elemen terkecil dari subarray yang belum terurut dari indeks isi hingga n-1 Jika isi bukan elemen terkecil (min) Tukar elemen terkecil dengan elemen isi Array Multidimensi Adalah array yang terdiri atas lebih dari dua atau lebih dimensi, biasanya digunakan untuk menangani tabel data, matriks dan objek dua dimensi lainnya.
Contoh :
int x[2][2];
x[0][0] x[0][1]
x[1][0] X[1][1]
Struktur Array Multi
dimensi : spasi
<A>…..:…..array…..<B>…..of…..array…..<C>…..of
<D>;
A
adalah nama array
B,C adalah batas interval indek array
D
adalah tipe data dari array
spasi
Apabila batas interval indek
array tidak ditentukan, maka hal ini berarti array merupakan array dua
dimensi dengan sifat dinamis. Namun apabila anda menentukan batas interval
tersebut, maka itu berarti merupakan array dua dimensi dengan sifat statik.
Apabila anda memilih array dengan
sifat atau karakteristik yang dinamis, maka setiap kali sebelum menggunakan
array tersebut anda harus inisialisasi indek array tersebut dengan prosedur SetLength.
Didalam artikel ini nanti akan
dijelaskan dengan menggunakan array yang dinamis.
spasi
Contoh penulisan pendeklarasian
array: spasi
NamaMantan : arrayof array of
string;// Array dinamis spasi NamaMantan : array[0..11]
of array[0..5] of string; // Array Statik spasi Petunjuk :
Silahkan anda ikuti langkah –
langkah berikut ini dengan pelan – pelan agar bisa berjalan dengan lancar
sesuai dengan petunjuk yang sudah diberikan.
spasi
Langkah 1
Langkah 2
Tambahkan beberapa object kedalam Form
ListBox1: TListBox;
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Button2: TButton; spasi
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Button2: TButton; spasi
Langkah 3
Atur desainnya seperti berikut
ditampilkan pada gambar form dibawah ini
Langkah 4
Silahkan anda klik 2x tombol Proses.
Setelah itu anda lanjutkan dengan menuliskan kode
program didalam event OnClick seperti terlihat pada
potongan kode program dibawah ini.
spasi
…
…
procedure TForm1.Button1Click(Sender: TObject);
var
// deklarasi array multi dimensi
var
// deklarasi array multi dimensi
Data : array of array ofinteger;
// deklarasi counter
Baris, kolom : word;
begin
// Menentukan panjang
array untuk masing – masing dimensi
SetLength( Data,
StrToInt(Edit1.Text), // panjang dimensi 1
StrToInt(Edit2.Text)); // panjang dimensi 2
StrToInt(Edit1.Text), // panjang dimensi 1
StrToInt(Edit2.Text)); // panjang dimensi 2
// pemasukan data
kedalam array
for Baris := 0 to StrToInt(Edit1.Text) – 1 do
for Kolom := 0 to StrToInt(Edit2.Text) – 1 do
Data[Baris,kolom] := Baris + kolom;
for Kolom := 0 to StrToInt(Edit2.Text) – 1 do
Data[Baris,kolom] := Baris + kolom;
// mengosongkan data
pada listbox
ListBox1.Clear;
// menampilkan data dari
array
for Baris := 0 to StrToInt(Edit1.Text) – 1 do
for Kolom := 0 to StrToInt(Edit2.Text) – 1 do
ListBox1.Items.Add(‘[' + IntToStr(Baris) + ',' + IntToStr(Kolom)+'] =’ + IntToStr(Data[Baris,kolom]));
for Kolom := 0 to StrToInt(Edit2.Text) – 1 do
ListBox1.Items.Add(‘[' + IntToStr(Baris) + ',' + IntToStr(Kolom)+'] =’ + IntToStr(Data[Baris,kolom]));
end;
…
…
spasi
Langkah 5
Silahkan anda compile. Tekan tombol Ctrl
+ F9. Tunggu beberapa saat… ( Sedang di cek kode programnya ).
Apabila tidak muncul pesan error,
berarti program yang anda buat telah berhasil dan silahkan anda tekan tombol F9
untuk menjalankan program aplikasinya.
spasi
Langkah 6
Tentukan indek interval array untuk
dimensi satu dan dua
spasi
spasi
Langkah 7
Silahkan anda tekan tombol Proses
spasi
spasi
Langkah 8
Program sudah selesai anda buat.
Sekarang silahkan anda tekan tombol Keluar.
Array
multidimensi merupakan nilai array yang bertipe array. Pada Turbo Pascal,
jumlah dimensi dari array tidak dibatasi. Namun yang paling umum dipakai adalah
array berdimensi dua.
Permasalahan
yang menggunakan array berdimensi dua misalnya adalah untuk keperluan
pengolahan data nilai dari sejumlah mahasiswa.
============================================
Program
Latihan;
Uses Wincrt;
Var Tabel : Array[1..3 , 1..2] Of
Integer;
i, j : Integer;
Begin
ClrScr;
Tabel[1,1] := 1;
Tabel[1,2] := 2;
Tabel[2,1] := 3;
Tabel[2,2] := 4;
Tabel[3,1] := 5;
Tabel[3,2] := 6;
For i := 1 to 3
Do
Begin
For j:= 1 to 2 Do
Begin
Writeln('Elemen ', i, ',',
j, '= ', Tabel[i,j]);
End;
End;
Readln;
End.
|
Hasil Output
Array Multidimensi
Dalam array multidimensi terdiri atas baris (row) dan kolom
(column). Index pertama adalah baris dan yang kedua adalah kolom .
SYNTAX
Type nama_array =ARRAY[bawah..atas, bawah..atas] of tipe_data;
var variabel_array : nama_array;
atau dengan menggunakan statemen var :
SYNTAX var variabel_array : ARRAY[bawah..atas, bawah..atas] of tipe_data;
Pernyataan berikut membentuk suatu array integer dengan nama bilangan , 10 x 10 elemen (100).
type matriks = ARRAY [1..10, 1..10] of integer;
var AKU: matriks;
untuk memasukkan tiap elemen maka, diperlukan suatu procedure dengan mempergunakan struktur pengulangan for ...do tersarangseperti berikut:
procedure ISI_MATRIK(AKU:matriks; m,n:integer);
var
i,j: integer; {faktor pengulang}
begin
for i:=1 to m do
begin
for j:=1 to n do
begin
read(A[i,j]);
end;
readln ;{ini memungkinkan kita menulis tiap baris elemen}
end;
untuk menampilkan tiap elemen maka, digunakan struktur pengulangan for ...do tersarang seperti berikut
procedure TULIS_MATRIK(AKU:matriks; m,n:integer);
var i,j: integer; {faktor pengulang}
begin
for i:=1 to m do
begin
for j:=1 to n do
begin
write(A[i,j]:6);
end;
writeln ; {ini memungkinkan kita menulis elemen dalam baris dan kolom }
end;
end;
SYNTAX
Type nama_array =ARRAY[bawah..atas, bawah..atas] of tipe_data;
var variabel_array : nama_array;
atau dengan menggunakan statemen var :
SYNTAX var variabel_array : ARRAY[bawah..atas, bawah..atas] of tipe_data;
Pernyataan berikut membentuk suatu array integer dengan nama bilangan , 10 x 10 elemen (100).
type matriks = ARRAY [1..10, 1..10] of integer;
var AKU: matriks;
untuk memasukkan tiap elemen maka, diperlukan suatu procedure dengan mempergunakan struktur pengulangan for ...do tersarangseperti berikut:
procedure ISI_MATRIK(AKU:matriks; m,n:integer);
var
i,j: integer; {faktor pengulang}
begin
for i:=1 to m do
begin
for j:=1 to n do
begin
read(A[i,j]);
end;
readln ;{ini memungkinkan kita menulis tiap baris elemen}
end;
untuk menampilkan tiap elemen maka, digunakan struktur pengulangan for ...do tersarang seperti berikut
procedure TULIS_MATRIK(AKU:matriks; m,n:integer);
var i,j: integer; {faktor pengulang}
begin
for i:=1 to m do
begin
for j:=1 to n do
begin
write(A[i,j]:6);
end;
writeln ; {ini memungkinkan kita menulis elemen dalam baris dan kolom }
end;
end;
Array Multi Dimensi
Tipe apapun bisa digunakan sebagai tipe
dasar suatu array. Kita bisa membuat array int, array String, array Object dan seterusnya. Terutama, karena
array adalah tipe Java kelas satu, kita bisa membuat array yang bertipe array.
Misalnya suatu array bertipe int[], juga otomatis memiliki array bertipe int[][], yaitu "array bertipe array int". Array tersebut
disebut array 2 dimensi. Tentunya, dengan tipe int[][], kita juag bisa membuat arraynya dengan tipe int[][][], yang merupakan array 3 dimensi,
dan seterusnya. Tidak ada batasan berapa dimensi array yang kita buat, akan
tetapi bukan sesuatu yang biasa dilakukan untuk membuat array lebih dari 3
dimensi. Pembahasan kita akan lebih dikhususkan pada array 2 dimensi. Tipe TipeDasar[][]
biasanya dibaca "array 2 dimensi bertipe TipeDasar" atau "array dari array TipeDasar".
Deklarasi pernyataan "int[][]
A;"
adalah membuat variabel bernama A dengan tipe int[][]. Variabel ini berisi objek yang bertipe int[][]. Pernyataan pemberian nilai "A
= new
int[3][4];"
akan membuat objek array 2 dimensi dan mengisi A ke objek yang baru dibuat
tersebut.
Seperti biasa, deklarasi dan
pemberian nilai bisa digabung menjadi satu pernyataan, seperti "int[][]
A = new
int[3][4];".
Objek yang baru dibuat adalah objek yang merupakan array dari array int. Bagian
int[3][4] menyatakan bahwa ada 3 array int di dalam array A, dan di
setiap array int tersebut terdapat 4 int.
Cara seperti itu mungkin sedikit
membingungkan, akan tetapi akan lebih mudah apabila kita bayangkan array
tersebut seperti matriks. Istilah "int[3][4]" bisa disebut sebagai matriks
dengan 3 baris dan 4 kolom, seperti pada ilustrasi berikut ini :
Untuk banyak hal, kita bisa
mengabaikan kenyataan di atas, dan membayangkan bentuk matriks seperti di atas.
Kadang-kadang kita juga harus ingat bahwa setiap baris sebenarnya juga
merupakan suatu array. Array-array ini bisa dirujuk dengan A[0], A[1], dan A[2]. Setiap
baris bertipe int[].
Pernyataan A[1] merujuk
pada salah satu baris pada array A. Karena A[1] itu sendiri
sebenarnya adalah array int, kita bisa menambah indeks lain untuk merujuk pada
posisi pada baris tersebut. Misalnya A[1][3] adalah
elemen nomor 3 pada baris 1. Seperti biasa, ingat bahwa posisi baris dan kolom
dimulai dari 0. Jadi pada contoh di atas, A[1][3] bernilai
5. Lebih umum lagi, A[i][j] adalah posisi pada baris i dan kolom j. Seluruh elemen pada A bisa dinamakan seperti berikut :
A[0][0] A[0][1] A[0][2] A[0][3]
A[1][0] A[1][1] A[1][2] A[1][3]
A[2][0] A[2][1] A[2][2] A[2][3]
A[i][j] adalah variabel bertipe int. Kita bisa mengisi nilainya
atau menggunakannya seperti variabel bertipe int biasa.
Perlu juga diketahui bahwa A.length
akan memberikan jumlah baris pada A. Untuk mendapatkan jumlah kolom pada A,
kita harus mencari jumlah int dalam setiap baris, yaitu yang disimpan pada A[0]. Jumlah
kolom ini bisa didapatkan dengan menggunakan A[0].length, atau A[1].length atau A[2].length.
(Tidak ada aturan baku yang menyatakan bahwa pada setiap baris suatu array
harus memiliki panjang yang sama, dan sebenarnya pada beberapa aplikasi, juga
digunakan array dengan panjang yang berbeda-beda pada setiap barisnya. Akan
tetapi apabila kita membuat array dengan perintah seperti di atas, maka kita
akan selalu mendapatkan array dengan panjang array yang sama.)
Array 3 dimensi juga dibuat dan
diolah dengan cara yang sama. Misalnya, array 3 dimensi bertipe int bisa dibuat
dengan pernyataan "int[][][] B =
new int
[7][5][11];". Kita juga bisa mengilustrasikannya sebagai kubus 3-dimensi.
Masing-masing bloknya bertipe int yang bisa dipanggil dalam bentuk B[i][j][k]. Array dimensi lain yang lebih tinggi juga mengikuti pola
yang sama, akan tetapi akan sangat sulit untuk membuat visualisasi struktur
arraynya.
Kita bisa mengisi array multi
dimensi sekaligus pada saat dideklarasikan. Ingat sebelumnya bagaimana array 1
dimensi biasa dideklarasikan, dan bagaimana isinya diinisialisasikan, yaitu
seperti daftar nilai-nilainya yang dipisahkan dengan koma, dan diletakkan di
dalam tanda kurung kurawal { dan }.
Inisialisasi array bisa juga
digunakan untuk array multi dimensi, yang terdiri dari beberapa inisialisasi
array 1 dimensi, masing-masing untuk setiap barisnya. Misalnya, array A pada
gambar di atas dapat dibuat dengan perintah :
int[][]
A = { { 1, 0, 12, -1 },
{ 7, -3, 2, 5 },
{
-5, -2, 2, 9 }
};
Jika tidak ada inisialisasi yang
diberikan untuk suatu array, maka nilainya akan diisi dengan nilai awal
tergantung pada tipenya : nol untuk bilangan, false untuk boolean dan null untuk objek.
Seperti halnya array 1 dimensi,
array 2 dimensi juga sering diolah dengan menggunakan perulangan for. UNtuk mengolah semua elemen pada
array 2 dimensi, kita bisa menggunakan pernyataan for bertingkat. Jika array A
dideklarasikan seperti
int[][] A = new int[3][4];
maka kita bisa mengisi 0 untuk semua
elemen pada A dengan menggunakan
for (int baris =
0; baris <
3; baris++) {
for
(int
kolom = 0; kolom < 4; kolom++) {
A[baris][kolom] = 0;
}
}
Pertama kali perulangan for bagian luar akan memproses dengan baris
= 0. Bagian dalamnya akan mengisi keempat kolom pada baris
pertama, yaitu A[0][0] = 0, A[0][1] = 0, A[0][2] = 0, dan A[0][3] = 0. Kemudian perulangan for bagian luar akan mengisi baris kedua, dan seterusnya.
Dan juga, kita bisa menjumlah semua
elemen pada A dengan
int jml =
0;
for (int i = 0; i < 3; i++)
for
(int
j = 0; j < 4; i++)
jml =
jml + A[i][j];
Untuk mengolah array 3 dimensi,
tentunya kita harus menggunakan perulangan for bertingkat 3.
Suatu array 2 dimensi bisa digunakan
untuk menyimpan data yang secara alami memang tersusun sebagai baris dan kolom.
Misalnya papan catur terdiri dari 8 baris dan 8 kolom. Jika suatu kelas
dinamakan PapanCatur untuk merepresentasikan papan catur, maka kita bisa
deklarasikan dengan perintah
PapanCatur[][] papan = new PapanCatur[8][8];
Kadang-kadang array 2 dimensi juga
digunakan untuk masalah yang tidak terlalu jelas matriksnya. Misalnya
perusahaan yang memiliki 25 toko. Anggap masing-masing toko memiliki keuntungan
yang didapat pada masing-masing toko tersebut setiap bulan pada tahun 2009.
Jika toko-toko tersebut memiliki nomor 0 hingga 24, dan 12 bulan dari Januari
09 hingga Desember 09 dinomori 0 hingga 11, maka data keuntungan dapat disimpan
dalam array untung
yang dideklarasikan seperti :
double[][]
untung = new
double[25][12];
untung[3][2] adalah keuntungan yang dibuat oleh toko nomor 3 di bulan
Maret. Atau secara umum, untung[noToko][noBulan] adalah keuntungan toko noToko pada bulan noBulan. Dalam contoh ini array 1 dimensi untung[noToko] memiliki arti : Data keuntungan satu toko selama satu
tahun.
Anggap array untung telah diisi dengan data. Data ini bisa diolah lebih lanjut.
Misalnya, total keuntungan seluruh perusahaan -- sepanjang tahun dari seluruh
toko -- dapat dihitung dengan menjumlahkan semua elemen pada array :
double totalUntung; // Total
keuntungan perusahaan tahun 2009
totalUntung
= 0;
for (int toko = 0; toko < 25; toko++) {
for
(int
bulan = 0; bulan < 12; bulan++)
totalUntung +=
untung[toko][bulan];
}
Kadang-kadang kita juga perlu
menghitung hanya satu baris atau satu kolom saja, bukan keseluruhan array.
Misalnya, kita ingin menghitung keuntungan total perusahaan pada bulan
Desember, yaitu bulan nomor 11, maka kita bisa gunakan perulangan :
double untungDesember = 0.0;
for (noToko
= 0; noToko < 25; noToko++)
untungDesember +=
untung[noToko][11];
Sekarang mari kita buat array 1
dimensi yang berisi total keuntungan seluruh toko setiap bulan :
double[]
untungBulanan; // Keuntungan
setiap bulan
untungBulanan
= new
double[12];
for (int bulan =
0; bulan < 12; bulan++) {
// hitung
total keuntungan semua toko bulan ini
untungBulanan[bulan] = 0.0;
for
(int
toko = 0; toko < 25; toko++) {
untungBulanan[bulan] += profit[toko][bulan];
}
}
Sebagai contoh terakhir untuk
mengolah array keuntungan, misalnya kita ingin tahu toko mana yang menghasilkan
keuntungan terbesar sepanjang tahun. Untuk menghitungnya, kita harus
menjumlahkan keuntungan setiap toko sepanjang tahun. Dalam istilah array, ini
berarti kita ingin mengetahui jumlah setiap baris pada array. Kita perlu
mencatat hasil perhitungannya untuk mencari mana toko dengan keuntungan
terbesar.
double untungMaks;
// Keuntungan terbesar suatu toko
int tokoTerbaik;
// Nomor toko yang memiliki keuntungan terbesar
double total =
0.0; // Total
keuntungan suatu toko
// Pertama-tama hitung keuntungan dari toko nomo 0
for (int bulan =
0; bulan <
12; bulan++)
total +=
untung[0][bulan];
tokoTerbaik
= 0; // Mulai dengan
anggapan toko nomor 0
untungMaks
= total; // adalah toko
paling menguntungkan
// Sekarang kita lihat seluruh toko, dan setiap kali
// kita melihat toko dengan keuntungan lebih besar dari
// untungMaks, kita ganti untungMaks dan tokoTerbaik
// dengan toko tersebut
for (toko
= 1; toko < 25; toko++) {
// Hitung
keuntungan toko tersebut sepanjang tahun
total =
0.0;
for
(bulan = 0; bulan < 12; bulan++)
total +=
untung[toko][bulan];
//
Bandingkan keuntungan toko ini dengan untungMaks
if (total >
untungMaks) {
untungMaks =
total;
// keuntungan terbesar saat ini
tokoTerbaik =
toko;
// datang dari toko ini
}
} //
akhir for
// Di sini, untungMaks adalah keuntungan terbesar dari 25 toko
// dan tokoTerbaik adalah toko dengan keuntung tersebut
// (Mungkin juga ada toko yang menghasilkan keuntungan
// yang persis sama.)
pranala lain -> MENGENAL ARRAY BERDIMENSI BANYAK
ReplyDeleteNedy Kynes.Com: Array Multi Dimensi >>>>> Download Now
ReplyDelete>>>>> Download Full
Nedy Kynes.Com: Array Multi Dimensi >>>>> Download LINK
>>>>> Download Now
Nedy Kynes.Com: Array Multi Dimensi >>>>> Download Full
>>>>> Download LINK