Saturday, October 20, 2012

ARRAY MULTI DIMENSI

BAB II.
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
Langkah 3
Atur desainnya seperti berikut ditampilkan pada gambar form dibawah ini
     
Description: array0004.jpg
   
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
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
// 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;
// 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]));
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  
Description: array0005.jpg
  spasi
Langkah 7
Silahkan anda tekan tombol Proses
  spasi  
Description: array0006.jpg
  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.
Description: cin1
============================================

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
Description: untitled

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;



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 :
Description: http://java.lyracc.com/sites/java.lyracc.com/files/arraymultidimensi_gbr1.gif

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

Artikel Terkait

2 comments:

  1. Nedy Kynes.Com: Array Multi Dimensi >>>>> Download Now

    >>>>> Download Full

    Nedy Kynes.Com: Array Multi Dimensi >>>>> Download LINK

    >>>>> Download Now

    Nedy Kynes.Com: Array Multi Dimensi >>>>> Download Full

    >>>>> Download LINK

    ReplyDelete