Download - Java array€¦ · PPT file · Web view · 2015-02-10... elemen-elemen di dalam array Menentukan jumlah elemen dalam sebuah array Duplikasi array Mendeklarasikan dan membuat array

Transcript

Array Array

Oleh Shoffin Nahwa Utama M.T

Disampaikan pada mata kuliah Struktur Data

TujuanPada akhir pelajaran, peserta diharapkan mampu untuk :

Mendeklarasikan dan membuat array Mengakses elemen-elemen di dalam array Menentukan jumlah elemen dalam sebuah array Duplikasi arrayMendeklarasikan dan membuat array 2 dimensi (Matrik)Mendeklarasikan dan membuat array Multidimensi Membuat array dinamisMenerapkan array dalam aplikasi komputer

Pengenalan arraykita memiliki tiga variabel dengan tipe data int yang memiliki identifier yang berbeda untuk tiap variabel.int number1; int number2; int number3;

number1 = 1; number2 = 2; number3 = 3;

Code di atas bukanlah contoh yang baik untuk memperlihatkan proses penginisialisasian dan penggunaan variabel, terutama jika variabel tersebut digunakan untuk tujuan yang sama.

Pengenalan arraybaik Java maupun bahasa pemrograman lain, memiliki

kemampuan untuk menggunakan satu variabel yang dapat menyimpan sebuah data list, kemudian memanipulasinya dengan lebih efektif.

Tipe variabel inilah yang disebut sebagai array.

Sebuah array akan menyimpan beberapa item data dengan tipe data yang sama di dalam sebuah blok memori yang berdekatan yang kemudian dibagai menjadi beberapa slot.

Pendeklarasian arrayUntuk mendeklarasikan array :tulis tipe datanya, diikuti dengan tanda kurung [], serta diikuti oleh nama identifier.

Contoh:

int []ages;

atau

int ages[];

Array instantiationSetelah proses pendeklarasian, kita harus membuat array dan menentukan berapa panjangnya dengan sebuah pernyataan konstruktor.

InstantiationDi Java, ini berarti pembuatan

Konstruktor Untuk meng-instantiate sebuah obyek, kita

membutuhkan sebuah konstruktor. Sebuah konstruktor merupakan sebuah method yang

dipanggil untuk membuat object

Kita akan membicarakan lagi mengenai instantiate obyek dan pembuatan konstruktor pada bagian selanjutnya.

Array instantiationUntuk meng-instantiate (atau membuat) sebuah array, Tulislah new keyword, Diikuti oleh tanda kurung [] yang berisi angka dari elemen yang Anda

inginkan pada array tersebut. Contoh,

//deklarasi int ages[];

//instantiate objectages = new int[100];

atau, juga dapat ditulis,

//declare and instantiate object int ages[] = new int[100];

Array instantiation

Array instantiationAnda juga dapat meng-instantiate sebuah array dengan cara menginisialisasinya secara langsung dengan data.

Contoh,

int arr[] = {1, 2, 3, 4, 5};

Pernyataan ini mendeklarasikan dan meng-instantiate sebuah array dari integer dengan lima elemen (diinisialisasi dengan nilai 1, 2, 3, 4, dan 5).

Contoh program//membuat sebuah array dari variabel boolean pada sebuah identifier //hasil. Array ini berisi 4 elemen//untuk nilai {true, false, true, false}

boolean results[] = { true, false, true, false };

//Membuat sebuah array yang terdiri dari penginisialisasian 4 variabel //untuk nilai {100, 90, 80, 75};

double []grades = {100, 90, 80, 75};

//Membuat sebuah array String dengan identifier days //terdiri dari 7 elemen.

String days[] = { “Mon”, “Tue”, “Wed”, “Thu”, “Fri”, “Sat”, “Sun”};

Pengaksesan elemen arrayUntuk mengakses sebuah elemen dalam array , atau mengakses sebagian elemen dari array , Anda menggunakan penomoran yang disebut sebagai index atau subscript.

Index atau Subscript Diberikan kepada tiap anggota array, agar program

dapat mengakses anggota dari array.

Dimulai dari nol dan kemudian akan terus bertambah sampai list value dari array tersebut berakhir.

CATATAN: elemen di dalam array anda dimulai dari 0 sampai (sizeOfArray-1)

Pengaksesan elemen arrayContoh, pada array yang telah kita deklarasikan tadi, kita mempunyai

//memberikan nilai 10 kepada elemen pertama array

ages[0] = 10;

//mencetak elemen array yang terakhir

System.out.print(ages[99]);

Pengaksesan elemen arrayCATATAN:

Jika array telah dideklarasikan dan dikonstruksi , nilai yang disimpan dalam setiap anggota array akan diinisialisasi sebagai nol.

Untuk tipe data reference seperti String , nilai dari String tidak akan diinisialisasi ke string kosong “”, sehingga Anda tetap harus membuat array String secara eksplisit.

Pengaksesan elemen arrayBerikut ini merupakan contoh, untuk mencetak seluruh elemen di dalam array. Terdapat penggunaan loop pada contoh yang membuat kode lebih pendek

1 public class ArraySample{ 2 public static void main( String[] args ){ 3 int[] ages = new int[100]; 4 for( int i=0; i<100; i++ ){ 5 System.out.print( ages[i] ); 6 } 7 } 8 }

Petunjuk penulisan program1. Akan lebih baik jika anda menginisialisasi atau

meng-instantiate array setelah mendeklarasikannya. Contoh deklarasi,

int []arr = new int[100];

juga diperbolehkan,

int []arr; arr = new int[100];

Petunjuk penulisan program2. Elemen-elemen dalam array dengan n-elemen

memiliki index dari 0 sampai n-1.

Perhatikan bahwa tidak ada elemen array arr[n], karena hal ini akan menyebabkan array-index-out-of-bounds exception .

3. Anda tidak dapat mengubah ukuran sebuah array.

Panjang arrayUntuk mengetahui jumlah elemen di dalam sebuah array, Anda dapat menggunakan length (panjang) field pada array.

Panjang field dalam array akan me-return value dari array itu sendiri.

Atau dapat ditulis,

arrayName.length

Panjang arraypublic class ArraySample {

public static void main( String[] args ){ int[] ages = new int[100];

for( int i=0; i<ages.length; i++ ){ System.out.print( ages[i] );

} }

}

Panduan penulisan program1. Pada saat pembuatan loop untuk memproses elemen-

elemen dalam array, gunakanlah length field di dalam statement pengkondisian dalam loop. Hal ini akan menyebabkan loop secara otomatis menyesuaikan diri terhadap ukuran array yang berbeda-beda.

2. constant biasanya digunakan untuk mempermudah pendeklarasian ukuran array di Java. Sebagai contoh,

final int ARRAY_SIZE = 1000; //declare a constant . . . int[] ages = new int[ARRAY_SIZE];

Dasar Pengolahan Array Secara Umum

// lakukan inisialiasi yang diperlukan sebelumnya for (int i = 0; i < A.length; i++) { . . . // proses A[i] }

Dalam banyak hal, pengolahan array berarti menggunakan operasi yang sama kepada setiap elemen di dalam array. Biasanya sering dilakukan dengan perulangan for. Perulangan untuk mengolah semua elemen dalam array A dapat ditulis dalam bentuk :

Dasar Pengolahan Array Secara Umum

int maks = A[0]; // nilai maks berisi elemen array pertama for (int i = 1; i < A.length; i++) { // i mulai dari elemen kedua if (A[i] > maks) maks = A[i]; } // Di sini maks berisi nilai elemen array yang paling besar

mencari nilai terbesar di dalam array A. Strateginya adalah lihat semua isi array, catat nilai terbesar saat itu. Kita akan simpan nilai terbesar yang kita temui dalam variabel maks. Pada saat kita melihat elemen array satu per satu, kapanpun kita melihat nilai elemen tersebut lebih besar dari maks kita akan mengganti nilai maks dengan nilai yang lebih besar tersebut. Setelah semua elemen array diproses, maka maks merupakan nilai elemen terbesar di dalam array tersebut. Pertanyaannya adalah, apa nilai awal maks? Salah satu kemungkinannya adalah mulai dengan nilai maks sama dengan A[0], baru kemudian melihat isi elemen array lainnya mulai dengan A[1]. Misalnya,

Dasar Pengolahan Array Secara Umum

// Buat objek array baru, yang panjangnya sama dengan panjang A int[] B = new int[A.length];   for (int i = 0; i < A.length; i++) B[i] = A[i]; // Kopi setiap elemen dari A ke B

Untuk membuat array baru yang merupakan kopi dari array A, kita harus membuat objek array baru, dan mengkopi isinya satu per satu dari array A ke array baru, sehingga

Mengkopi nilai dari satu array ke array yang lain adalah operasi umum sehingga Java memiliki subrutin untuk melakukannya, yaitu System.arraycopy(), yang merupakan subrutin anggota statik dari kelas standar System. Deklarasinya memiliki bentuk seperti :

public static void arraycopy(Object arraySumber, int indeksAwalSumber, Object arrayTujuan, int indeksAwalTujuan, int jumlah)

Dasar Pengolahan Array Secara Umum

int[] a = {22, 44, 66, 88};print(a); int[] b = (int[])a.clone(); // duplicate a[] in b[] print(b);

Since it is an object, an array can be duplicated by invoking the Object.clone() method,

Array Dinamis

Objek mirip array yang bisa berubah ukuran untuk mengakomodasi jumlah data yang bisa ia tampung disebut array dinamis. Array dinamis memiliki jenis operasi yang sama dengan array : mengisi nilai pada posisi tertentu dan mengambil nilai di posisi tertentu. Akan tetapi tidak ada batas maksimum dari jumlah array (hanya tergantung pada jumlah memori komputer yang tersedia).

Array multidimensiArray multidimensi diimplementasikan

sebagai array di dalam array .

Array multidimensi dideklarasikan dengan menambahkan jumlah tanda kurung setelah nama array.

Array multidimensiContoh :

// Elemen 512 x 128 dari integer array int[][] twoD = new int[512][128];

// karakter array 8 x 16 x 24 char[][][] threeD = new char[8][16][24];

// String array 4 baris x 2 kolom String[][] dogs = {{ "terry", "brown" },

{ "Kristin", "white" }, { "toby", "gray"}, { "fido", "black"} };

Array multidimensiUntuk mengakses sebuah elemen didalam array

multidimensi, sama saja dengan mengakses array satu dimensi .

Contoh, untuk mengakses elemen pertama dari baris pertama di dalam array dogs, kita akan menulis,

System.out.print( dogs[0][0] );

Kode diatas akan menampilkan String “terry” pada layar.

Using the java.util.Arrays ClassThis program imports the Arrays class from

the java.util package to access the sort(),binarySearch(), fill(), and equals() methods. It also imports the static print() method from

THE SEQUENTIAL SEARCH ALGORITHMPencarian menggunakan metoda

Conventional/Array Searching.Pencarian dilakukan dari ujung kiri larik

dimana hal ini ditunjukkan oleh inisialisasi objek index dengan nilai 0

Pencarian ini berjalan lambat ketika data yang dicari berada di bagian akhir.

THE BINARY SEARCH ALGORITHMBinary Search merupakan standart algoritma

untuk pencarian data yang telah terurut.Pada metoda ini pertama kali kita harus

menentuka posisi peubah mid(Posisi tengah). Jika nilai yang kita cari lebih besar dari nilai yang ditunjuk oleh peubah mid maka pencarian akan dilakukan ke sebelah kanan dengan cara mengubah nilai peubah Low mejadi nilai yang ditunjuk pada peubah mid, dan sebaliknya.

Teknik pencarian ini jauh lebih cepat dari ArraySearch/sequentialSearch.

Ada Pertanyaan??????