PERTEMUAN 2 ARRAY, PERCABANGAN, DAN PERULANGAN Obyektif: y Praktikan mengetahui array, percabangan, dan perulangan pada Java. y Praktikan mengetahui bentuk umum dari array, percabangan, dan perulangan dalam Java. y Praktikan dapat membuat program sederhana dengan menggunakan bahasa pemrograman Java, untuk array, percabangan, dan perulangan. Catatan : Cobalah setiap contoh dan latihan Pemrograman Berbasis Objek - 2011 1 Array Deklarasi dan Penciptaan Array Array di Java dideklarasikan dengan kurung siku: […], lalu diikuti oleh nama identifier-nya. Sintaks umum deklarasi array : type var-name[]; Atau type[] var-name; Berikut contoh – contoh deklarasi array di Java : y int numbers[]; y char[] letters; y long grid[][]; Berikut contoh pendeklarasian operator new(): array dengan menspesifikasikan ukuran spesifiknya menggunakan char alphabet[] = new() char [26]; int primes = {7, 11, 13}; Pemrograman Berbasis Objek - 2011 2 Array 1 Dimensi Array 1 dimensi pada dasarnya senarai (deretan) variabel bertipe serupa. Bentuk umum new()untuk array 1 dimensi adalah sebagai berikut : array-var = new() type[size] Keterangan : type menspesifikasikan tipe data yang dialokasikan, size menspesifikasikan jumlah dari elemen array, dan array-var adalah variabel array yang dirangkai ke array. Perhatikan contoh berikut : monthDays = new() int[12]; Setelah pernyataan diatas dieksekusi, monthDays akan mengacu ke array berisi 12 bilangan int, kedua belas angka tersebut dinisialisasi dengan nol. Catatan : Proses untuk dapat memperoleh array ialah 2 langkah, yaitu: 1. Deklarasi variabel dari tipe array yang dikehendaki. 2. Alokasi memori yang akan menyimpan array menggunakan operator new() dan memberikannya ke variable array. Pemrograman Berbasis Objek - 2011 3 Semua array dimulai dengan indeks nol. Berikut contoh untuk memberikan nilai 29 ke elemen kedua dari monthDays, digunakan perintah : monthDays[1] = 29; Berikut ini untuk menampilkan nilai yang disimpan pada indeks 3, yaitu: System.out.println(monthDays[3]); Berikut ini salah satu contoh untuk array yang berisi jumlah hari maksimum di masing–masing bulan : Class Bulan //deklarasi class { public static void main(String[]args) //main method { //deklarasi var array int monthDays[]; monthDays = new int[12]; //isi var array mounthDays[0] = 31; mounthDays[1] = 29; mounthDays[2] = 31; mounthDays[3] = 30; mounthDays[4] = 31; mounthDays[5] = 30; mounthDays[6] = 31; mounthDays[7] = 31; mounthDays[8] = 30; Pemrograman Berbasis Objek - 2011 4 mounthDays[9] = 31; mounthDays[10] = 30; mounthDays[11] = 31; //cetak tulisan dan isi var array mounthDays indeks ke 7. System.out.println("Agustus mempunyai "+mounthDays[7]+" hari"); } } Output : Agustus mempunyai 31 hari Pemrograman Berbasis Objek - 2011 5 Array Multi Dimensi Array multidimensi diimplementasikan sebagai array yang terletak didalam array. Array multidimensi dideklarasikan dengan menambahkan jumlah tanda kurung setelah nama array. Contoh : Array 2 dimensi bertipe int bernama intDArr dideklarasikan dan dibuat dengan perintah sebagai berikut : int int2DArr[][] = new() int [4][5]; Keterangan : Perintah ini mendeklarasikan dan mengalokasikan array 4 kali 5 dan memberikan ke variabel int2DArr. Secara internal matriks ini diimplementasikan sebagai array dari array bertipe int inisialisasi Inisialisasi array multidimensi, yaitu kita cukup mengapit masing inisialisasi dimensi dengan satu pasangan kurung kurawal. Pemrograman Berbasis Objek - 2011 6 Berikut contoh listing program yang memberikan angka ke masing – masing elemen di array dari kiri ke kanan, puncak ke bawah, kemudian menampilkan masing – masing elemen : class Multidimensi // deklarasi class { public static void main(String[]args) //main method { //deklarasi variabel array dan variabel k int 2DArr[][] = new int[4][5]; int k=0; //perulangan untuk menginput data array for(int i=0; i<4; i++) //untuk perulangan baris { for(int j=0; j<5; j++) //untuk perulangan kolom { 2DArr[i][j] = k++; //isi var array 2DArr = increment var k (k=k+1) } } Pemrograman Berbasis Objek - 2011 7 //perulangan untuk menampilkan data array for(int i=0; i<4; i++) //untuk perulangan baris { for(int j=0; j<5; j++) //untuk perulangan kolom { //cetak isi variabel array sesuai index [baris][kolom] dan 1 spasi kosong " " System.out.println(2DArr[i][j] + " "); } System.out.println();//pindah baris } } } Output: 01234 56789 10 11 12 13 14 15 16 17 18 19 Pemrograman Berbasis Objek - 2011 8 Percabangan Jenis percabangan di java, yaitu: If, if-else, dan switch. Percabangan if Pernyataan if akan menentukan sebuah pernyataan (atau blok kode) yang akan eksekusi jika dan hanya jika persyaratan bernilai benar(true). Bentuk dari pernyataan if : if ─ (- Expression -) ─ Statement else Statement atau if( boolean_expression ) atau if( boolean_expression ) { statement1; statement2; ........... } Catatan : dimana, boolean_expression adalah penyataan logika (true/false) atau variabel bertipe boolean. sebuah Pemrograman Berbasis Objek - 2011 9 Contoh program bentuk percabangan if : Output : Variabel anInt bernilai nol Contoh program if diatas dapat diringkas sebagai berikut : Output : Variabel anInt bernilai nol Keterangan : kedua program diatas menghasilkan output yang sama karena inti programnya sama yaitu mencetak tulisan “Variabel anInt bernilai nol” jika isi var anInt = 0. Pemrograman Berbasis Objek - 2011 10 Percabangan if-else Pernyataan if-else digunakan apabila kita ingin mengeksekusi beberapa pernyataan dengan kondisi true dan pernyataan yang lain dengan kondisi false. Berikut bentuk umum pernyataan if-else: if (condition or Boolean expression) statement1 else statement2 Catatan : Jika condition atau Boolean expression dievaluasi bernilai true, maka statement1 dieksekusi, sedangkan jika condition atau Boolean expression dievaluasi bernilai false, maka statement2 yang dieksekusi. Pemrograman Berbasis Objek - 2011 11 Contoh program bentuk percabangan if else: Output : Variabel anInt tidak bernilai nol Keterangan : karena var anInt bernilai 1 maka statement di else yang dieksekusi, yaitu cetak tulisan “Variabel anInt tidak bernilai nol”. Bahasa Java menyediakan beragam kendali percabangan tidak lokal, yaitu : break, return, dan continue. y Break y Return y Continue Pemrograman Berbasis Objek - 2011 12 Break Istilah break mengacu pada proses memecahkan blok program. Proses tersebut memerintahkan runtime untuk menjalankan program di belakang blok tertentu. Untuk dapat ditunjuk, suatu blok diberi nama, dan Java memiliki bentuk label untuk menyatakan nama suatu blok. Contoh : class ContohBreak //deklarasi class { public static void main(String[]args) //main method { boolean t=true; //deklarasi variabel t { b: //label b { { System.out.println("Sebelum break"); //cetak tulisan //seleksi if, karena var t bernilai true maka break label b if(t) break b; System.out.println("Ini tidak akan dieksekusi"); } System.out.println("Ini tidak akan dieksekusi"); } System.out.println("Ini adalah setelah b"); } } } Output: Sebelum break Ini adalah setelah b Pemrograman Berbasis Objek - 2011 13 Return Java menggunakan bentuk sub-rutin yang disebut method untuk mengimplementasikan antarmuka procedural ke kelas objek. Setiap saat dalam method dapat digunakan pernyataan return yang menyebabkan eksekusi mencabang kembali ke pemanggil method. Contoh : Output : Before the return Pemrograman Berbasis Objek - 2011 14 Continue Seringkali kita ingin keluar lebih cepat dari perulangan ataumungkin juga ingin meneruskan perulangan, tetapi harus menghentikan sisa proses pada program untuk iterasi yang bersangkutan. Pernyataan continue di Java melakukan persis seperti itu. Contoh program penggunaan continue yang menyebabkan 2 bilangan dicetak dalam setiap baris : Output: 01 23 45 67 89 Pemrograman Berbasis Objek - 2011 15 Percabangan switch Percabangan switch dimaksudkan untuk menangani banyak kemungkinan kemunculan. Berikut ini bentuk umum percabangan switch : switch (expression) { case valeue1: break; case value2; break; case valueN; break; default; } Pemrograman Berbasis Objek - 2011 16 Contoh: Output: Lima Enam Tujuh Delapan Sembilan bukan karakter digit Pemrograman Berbasis Objek - 2011 17 Perulangan Terdapat beberapa jenis perulangan pada Java, yaitu for, while, dan do while. Perulangan for Berikut bentuk dasar perulangan for : for(InitializationExpression; LoopCondition; StepExpression) Statement; Atau for(InitializationExpression; LoopCondition; StepExpression) { Statement1; Statement2; ........... } Keterangan: • InitializationExpression, digunakan untuk inisialisasi variabel kendali perulangan. • LoopCondition, membandingkan variabel kendali perulangan dengan suatu nilai batas. • StepExpression, menspesifkasikan cara variabel kendali dimodifikasi sebelum iterasi berikutnya dari perulangan. Pemrograman Berbasis Objek - 2011 18 Contoh: Output: 1 2 3 4 5 6 7 8 9 10 Keterangan : potongan program di atas mencetak isi var i secara berulang dimana perulangan dimulai dari nilai awal var i = 1 sampai var i < 11 dan dengan step isi var i ditambah 1 (increment 1). Pemrograman Berbasis Objek - 2011 19 Pernyataan for-loop Bersarang Java memungkinkan loop yang disarangkan di loop yang lain. Satu loop berada didalam loop yang lainnya. Contoh: public class Loop { public static void main(String[]args) { for(int i=0;i<3;i++) // perulangan i mulai dari 0 sampai 2, step i++ { for(int j=5;j>i;j--) //cetak * dari j=5 sampai j>i, step j-{ System.out.println("*"); } System.out.println(); } } } Pemrograman Berbasis Objek - 2011 20 Output : * * * * * * * * * * * * Pemrograman Berbasis Objek - 2011 21 Perulangan while Pengulangan while mempunyai kondisi yang mengendalikan pernyataan perulangan. Berikut bentuk dasar perulangan while : [initialization;] while (Pernyataan boolean/ LoopCondition/ Termination) { Statement; [iteration;] } Catatan: Jika LoopCondition/ pernyataan boolean dievaluasi true, maka statement dieksekusi dan proses terus berlanjut berulang kali. Penting diketahui bahwa LoopCondition muncul sebelum badan dari pernyataan. Ini berarti jika LoopCondition sejak semula dievaluasi false, maka statement tidak pernah dieksekusi. Hal ini merupakan perbedaan penting antara perulangan while dengan perulangan do-while. Pemrograman Berbasis Objek - 2011 22 Contoh: Pemrograman Berbasis Objek - 2011 23 Perulangan do-while Bentuk umum atau bentuk dasar perulangan do – while : [initialization;] do { Statement; [iteration;] } while(Pernyataan boolen/ LoopCondition/ Termination); Contoh : Catatan: Pada contoh program do-while diatas, kita menggunakan pernyataan (--n > 0) untuk memeriksa kondisi perulangan do-while. Pernyataan --n dijalankan, lalu n dikurangi 1, sehingga menghasilkan nilai baru n. Kemudian n dibandingkan dengan nol. Jika masih lebih besar dari nol, perulangan diteruskan, jika tidak maka dihentikan. Pemrograman Berbasis Objek - 2011 24 Latihan Program Berikut ini adalah contoh program sederhana membuat matriks 3x3 dengan menggunakan array 2 dimensi dan perulangan for. Ikutilah langkah-langkah berikut : Step 1 : Buka dan ketikan program pada teks editor notepad++ Anda. y Simpan nama file sama seperti nama classnya, yaitu : Array2D.java Misal disimpan pada direktori D Æ folder “praktikan” Æ Array2D.java y Ketikkan program berikut pada teks editor Anda. import java.io.*; *Deklarasikan class ......................................... { public static void main(String[] args) //main method { // deklarasi var masuk sbg inputan utama DataInputStream masuk=new DataInputStream(System.in); try //try dan catch digunakan untuk menangani kesalahan { *Dekalarasi var array angka 2 dimensi, dengan indeks dimensi masing masing 3 bertipe integer ……………………………. Pemrograman Berbasis Objek - 2011 25 for(int i=0;i<angka.length;i++) //program input data array 3 baris & 3 kolom { for(int j=0;j<angka[i].length;j++) { //cetak tulisan System.out.print("Matrik ["+(i+1)+"] ["+(j+1)+"] :"); //input data ke var angka[i][j] angka[i][j]=Integer.parseInt(masuk.readLine()); } } *Buat perintah untuk mencetak matriks 3x3 …………………………………….("Matrik array 2 dimensi"); for(int i=0;i<angka.length;i++) { for(int j=0;j<angka[i].length;j++) { System.out.print(angka[i][j]+" "); //cetak isi var array } *Pindah baris ……………………………………………………………… } } Pemrograman Berbasis Objek - 2011 26 catch(Exception e) { System.out.println("Salah Input"); } } *Tutup program dengan mengetikkan tanda } ..... Keterangan : perulangan for(int i=0;i<angka.length;i++) Î untuk menunjuk ke baris matriksnya, sedangkan perulangan for(int j=0;j<angka[i].length;j++) Î untuk menunjuk ke kolom matriksnya angka.length Î panjang/banyaknya isi variabel angka sehingga perulangan tidak boleh melebihi jumlah array variabel angka try....catch... Î untuk menangani terjadinya kesalahan. Misal salah input data berupa integer tetapi yang diinput karakter/huruf maka pada blok catch akan dicetak pesan kesalahan “Salah Input”. Pemrograman Berbasis Objek - 2011 27 Step 2 : Ikuti langkah berikut untuk meng-compile program yang telah Anda buat. y Buka command prompt Anda. y Masuk ke direktori dan folder tempat program tersebut disimpan. Misal program disimpan pada direktori D Æ folder “praktikan” Perintah masuk/pindah ke direktori D, ketik Î D: Perintah masuk ke folder “praktikan”, ketik Î cd<spasi>praktikan y Setelah masuk ke direktori dan folder yang dituju, untuk meng-compile program Anda ketikkan perintah : javac<spasi>NamaFile.java Contoh : javac Array2D.java Step 3 : Untuk menjalankan program yang telah Anda buat, ketikkan perintah : java<spasi>NamaFile Contoh : java Array2D Pemrograman Berbasis Objek - 2011 28 Tampilan Output Pemrograman Berbasis Objek - 2011 29 Koreksi Latihan Program import java.io.*; class Array2D //deklarasikan class { public static void main(String[] args) //main method { // deklarasi var masuk sbg inputan utama DataInputStream masuk=new DataInputStream(System.in); try //try dan catch digunakan untuk menangani kesalahan { int[][]angka=new int[3][3]; // dekalarasi var array angka 2 dimensi, dengan indeks dimensi masing masing 3 bertipe integer for(int i=0;i<angka.length;i++) //program input data array 3 baris & 3 kolom { for(int j=0;j<angka[i].length;j++) { //cetak tulisan System.out.print("Matrik ["+(i+1)+"] ["+(j+1)+"] :"); Pemrograman Berbasis Objek - 2011 30 //input data ke var angka[i][j] angka[i][j]=Integer.parseInt(masuk.readLine()); } } System.out.println("Matrik array 2 dimensi"); //program mencetak matriks 3x3 for(int i=0;i<angka.length;i++) { for(int j=0;j<angka[i].length;j++) { System.out.print(angka[i][j]+" "); //cetak isi var array } System.out.println();//pindah baris } } catch(Exception e) { System.out.println("Salah Input"); } } } Pemrograman Berbasis Objek - 2011 31