A. JUDUL “PERULANGAN DAN PROGRAM REKURSIF” B. TUJUAN 1. Mahasiswa dapat memahami perulangan (loop) dengan Java 2. Mahasiswa dapat memahami fungsi Rekursif C. TEORI DASAR Rekursif adalah suatu proses yang bisa memanggil dirinya sendiri . Perulangan rekursif merupakan salah satu metode didalam pemrograman yang mana dalam sebuah fungsi terdapat instruksi yang memanggil fungsi itu sendri, atau lebih sering disebut memanggil dirinya sendiri. Perulangan iteratif merupakan perulangan yang melakukan proses perulangan terhadap sekelompok instruksi. Perulangan dilakukan dalam batasan syarat tertentu. Ketika syarat tersebut tidak terpenuhi lagi maka perulangan akan terhenti. Struktur kontrol pengulangan adalah berupa pernyataan dari Java yang mengijinkan kita untuk mengeksekusi blok code berulang-ulang sesuai dengan jumlah tertentu yang diinginkan. Ada tiga macam jenis dari struktur kontrol pengulangan yaitu while, dowhile, dan for-loops. 1. While Loop Pernyataan while loop adalah pernyataan atau blok pernyataan yang diulang-ulang sampai mencapai kondisi yang cocok. Bentuk pernyataan while, while( boolean_expression ){ statement1; statement2; . . . } Pernyataan di dalam while loop akan dieksekusi berulang-ulang selama kondisi boolean_expression bernilai benar (true). Contoh, pada kode dibawah ini, int i = 4; while ( i > 0 ){ System.out.print(i); i--; } 2. Do-While Loop Do-while loop mirip dengan while-loop. Pernyataan di dalam dowhile loop akan dieksekusi beberapa kali selama kondisi bernilai benar(true). Perbedaan antara while dan do-while loop adalah dimana pernyataan di dalam do-while loop akan dieksekusi sedikitnya satu kali. Bentuk pernyataan do-while, do{ statement1; statement2; . . . }while( boolean_expression ); Pernyataan di dalam do-while loop akan dieksekusi pertama kali, dan akan dievaluasi kondisi dari boolean_expression. Jika nilai pada boolean_expression tersebut bernilai true, pernyataan di dalam do-while loop akan dieksekusi lagi. 3. For Loop Pernyataan for loop memiliki kondisi hampir mirip seperti struktur pengulangan sebelumnya yaitu melakukan pengulangan untuk mengeksekusi kode yang sama sebanyak jumlah yang telah ditentukan. Bentuk dari for loop, for (InitializationExpression; LoopCondition; StepExpression){ statement1; statement2; . . . } dimana, InitializationExpression – inisialisasi dari variabel loop. LoopCondition - membandingkan variabel loop pada nilai batas tertentu StepExpression - melakukan update pada variabel loop. Berikut ini adalah contoh dari for loop, int i; for( i = 0; i < 10; i++ ){ System.out.print(i); } D. HADWARE dan SOFTWARE 1. Hadware: a. Laptop Acer Aspire 4736G (Core 2Duo) 2. Software : a. Software “My Eclipse Enterprise Workbench 6.0” b. E. Sistem Operasi Windows XP SP3 LANGKAH KERJA 1. Siapkan alat dan bahan. 2. Menbuka software Eclipse yang telah terinstall pada PC atau Laptop anda. Start My Eclipse 6.0 3. Setelah jendela eclipse muncul, mengklik Menu File kemudian pilih New Java Project maka akan muncul jendela untuk membuat java project baru. Ketikkan nama java project dengan naman Modul 4 kemudian klik Finish. Java project telah berhasil dibuat. 4. Setelah itu, tambahkan Package dengan cara klik kanan Modul_4 yang berada pada Package Explorer, pilih New Package. Jendela baru akan muncul untuk membuat package, ketikkan nama package yang anda inginkan, misalnya pada praktikum ini ada 3 package yaitu nomor1, nomor2, nomor3 kemudian klik Finish. Package telah berhasil dibuat. 5. Selanjutnya buat Class dengan cara klik kanan package typedata, pilih New Class. Jendela baru akan muncul untuk memasukkan nama class sesuai keinginan anda, misalnya pada praktikum ini ada 3 class yang di buat pada masing-masing package yaitu untuk Dowhile, Forloop, While. Setelah mengetikkan sebuah nama class, klik Finish. Masing-masing class dibuat setelah satu class telah selesai dibuat dan dimasukkan sintax perintahnya dan telah berhasil dieksekusi. 6. Ketiklah kode program di text editor pada masing – masing kelas yang telah di buat F. HASIL PRAKTIKUM 1. Class cetak_nama_dowhile package Modul_4 Source Code cetak_nama_dowhile.Java package Modul_4; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class cetak_nama_dowhile { public static void main(String[] args) { BufferedReader bfr = new BufferedReader (new InputStreamReader(System.in)); String namaInput = null; String nimInput = null; try { System.out.print("Masukkan Nama Anda: "); namaInput = bfr.readLine(); System.out.print("Masukkan Nim Anda: "); nimInput = bfr.readLine(); }catch (IOException e){ e.printStackTrace(); } int i=0; do { System.out.println(i+"."+"Nama anda: "+ namaInput); System.out.println(" i+=1; }while (i <= 50); } } Nim anda : "+ nimInput); Hasilnya Analisa Program import java.io.BufferedReader; Artinya menyediakan penyangga untuk aliran input berupa karekter sehingga bisa meningkatkan efisiensi berupa karakter dan standarisasi dari metode reader dan juga menyediakan suatu metode readLine() yang dapat digunakan untuk membaca sati baris teks (tidak termasuk pemindah baris) dan mengembalikannya dalam bentuk String. import java.io.IOException; Artinya menyediakan menginisialisasikan kemungkinan kesalahan dari input sehingga menghindari output yang error. import java.io.InputStreamReader; Artinya menyediakan karakter yang menggunakan aliran byte input sebagai sumber data: byte-byte akan dibaca dari InputStream yang ditetapkan kemudian byte tersebut diterjemahkan ke dalam karakter Unicode public class Dowhile { Artinya class yang bersifat public yang bisa dishare dengan class dari package lainnya. public static void main(String[]args){ Artinya bersifat umum yang bisa dipakai oelh program lain, tetap, dan fungsi kelas ini tidak mengembalikan suatu nilai.dimana (String[]args) menyatakan bahwa fungsi kelas program ini dapat menerima argument ketika dijalankan int i= 0; Artinya identifier i yang bernilai awal 0 dengan tipe integer BufferedReader bfr = new BufferedReader (new InputStreamReader(System.in)); Artinya sebuah variable bfr dengan tipe class bufferedreader. Suatu input yang dideklarasikan dari class InputStreamReader. String namaInput = null; String nimInput = null Artinya string yang di identifier suatu namainput dan niminmput, variable namainput dan niminmput diinisialisasi dengan null (variable tidak diisi). try { System.out.print("Masukkan Nama Anda: "); namaInput = bfr.readLine(); System.out.print("Masukkan Nim Anda: "); nimInput = bfr.readLine(); } catch (IOException ioe) { System.out.println("Kesalahan IO, program berhenti"); System.exit(1); } Artinya perintah di dalam try { ... } adalah perintah yang kita ingin jalankan pada situasi yang “mungkin” tidak berhasil. Parameter pada catch, yaitu IOException ioe adalah jenis kesalahan yang ingin kita tangkap. Dalam hal ini kita ingin menangkap adanya kesalahan IO, yaitu kesalahan yang bertipe IOException. Perintah di dalam catch { ... } adalah perintah yang akan dilakukan apabila kesalahan ditangkap. Jika tidak ada kesalahan IO yang ditemukan, maka bagian ini akan dilewatkan (tidak dijalankan). do{ System.out.println(i+" Nama Anda " +namaInput); System.out.println(" Nim anda : "+ nimInput); i+=; }while (i<= 50); Artinya adalah suatu output sebuah string pada layar yang berada diantara tanda kutip dalam kurung yaitu Nama Anda yang diikuti dengan namaInput dan Nim Anda yang diikuti nimInput yang diinputkan user melalui keyboard. Output tercetak sebanyak i kali dimana setiap output telah tercetak maka data akan diincrement kemudian dilakukan pemeriksaan persyaratan i<=50. Output akan tercetak sebanyak lima puluh kali, dan looping akan terhenti saat i>100. 2. Class cetak_nama_forloop package Modul_4 Source Code cetak_nama_forloop.Java package Modul_4; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class cetak_nama_forloop { public static void main(String[] args) { BufferedReader bfr = new BufferedReader (new InputStreamReader(System.in)); String namaInput = null; String nimInput = null; try { System.out.print("Masukkan Nama Anda: "); namaInput = bfr.readLine(); System.out.print("Masukkan Nim Anda: "); nimInput = bfr.readLine(); }catch (IOException e){ e.printStackTrace(); } int i; for (i=0;i<=50;i++) Hasilnya { System.out.println(i+"."+"Nama anda: "+ namaInput); System.out.println(" Nim anda : "+ nimInput); } } } Hasilnya Analisa Data import java.io.BufferedReader; Artinya menyediakan penyangga untuk aliran input berupa karekter sehingga bisa meningkatkan efisiensi berupa karakter dan standarisasi dari metode reader dan juga menyediakan suatu metode readLine() yang dapat digunakan untuk membaca sati baris teks (tidak termasuk pemindah baris) dan mengembalikannya dalam bentuk String. import java.io.IOException; Artinya menyediakan menginisialisasikan kemungkinan kesalahan dari input sehingga menghindari output yang error. import java.io.InputStreamReader; Artinya menyediakan karakter yang menggunakan aliran byte input sebagai sumber data: byte-byte akan dibaca dari InputStream yang ditetapkan kemudian byte tersebut diterjemahkan ke dalam karakter Unicode public class Forloop { Artinya class program yang dibuat adalah Forloop, class yang bersifat public yang bisa dishare dengan class dari package lainnya. public static void main(String[]args){ Artinya bersifat umum yang bisa dipakai oelh program lain, tetap, dan fungsi kelas ini tidak mengembalikan suatu nilai.dimana (String[]args) menyatakan bahwa fungsi kelas program ini dapat menerima argument ketika dijalankan int i= 0; Artinya identifier i dengan tipe integer BufferedReader bfr = new BufferedReader (new InputStreamReader(System.in)); Artinya sebuah variable bfr dengan tipe class bufferedreader. Suatu input yang dideklarasikan dari class InputStreamReader. String namaInput = null; String nimInput = null Artinya string yang di identifier suatu namainput dan niminmput, variable namainput dan niminmput diinisialisasi dengan null (variable tidak diisi) try { System.out.print("Masukkan Nama Anda: "); namaInput = bfr.readLine(); System.out.print("Masukkan Nim Anda: "); nimInput = bfr.readLine(); } catch (IOException ioe) { System.out.println("Kesalahan IO, program berhenti"); System.exit(1); } for (i=0;i<=50;i++) { System.out.println(i+"."+"Nama anda: "+ namaInput); System.out.println(" Nim anda : "+ nimInput); } Artinya adalah perulangan, dimana variabel i bernilai awal 0 dengan tipe integer, kemudian pemeriksaan kondisi nilai i<=50,dan jika memenuhi maka nilai ulang diincrement dan dicetak output inisialisasi variable i sebagai urutan di ikuti string berada diantara tanda kutip yang diinput melalui keyboard oleh user. Kemudian kembali melakukan identifikasi persyaratan. Program akan berhenti looping apabila i >50 3. Class cetak_nama_whileloop package Modul_4 Source Code cetak_nama_whileloop.Java package Modul_4; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class cetak_nama_whileloop { public static void main(String[] args) { BufferedReader bfr = new BufferedReader (new InputStreamReader(System.in)); String namaInput = null; String nimInput = null; try { System.out.print("Masukkan Nama Anda: "); namaInput = bfr.readLine(); System.out.print("Masukkan Nim Anda: "); nimInput = bfr.readLine(); }catch (IOException e){ e.printStackTrace(); } int i=0; while (i <= 50){ System.out.println(i+"."+"Nama anda: "+ namaInput); Hasilnya System.out.println(" Nim anda : "+ nimInput); i+=1; } } } Analisa Data import java.io.BufferedReader; Artinya menyediakan penyangga untuk aliran input berupa karekter sehingga bisa meningkatkan efisiensi berupa karakter dan standarisasi dari metode reader dan juga menyediakan suatu metode readLine() yang dapat digunakan untuk membaca sati baris teks (tidak termasuk pemindah baris) dan mengembalikannya dalam bentuk String. import java.io.IOException; Artinya menyediakan menginisialisasikan kemungkinan kesalahan dari input sehingga menghindari output yang error. import java.io.InputStreamReader; Artinya menyediakan karakter yang menggunakan aliran byte input sebagai sumber data: byte-byte akan dibaca dari InputStream yang ditetapkan kemudian byte tersebut diterjemahkan ke dalam karakter Unicode public class Forloop { Artinya class program yang dibuat adalah Forloop, class yang bersifat public yang bisa dishare dengan class dari package lainnya. public static void main(String[]args){ Artinya bersifat umum yang bisa dipakai oelh program lain, tetap, dan fungsi kelas ini tidak mengembalikan suatu nilai.dimana (String[]args) menyatakan bahwa fungsi kelas program ini dapat menerima argument ketika dijalankan int i= 0; Artinya identifier i yang bernilai awal 0 dengan tipe integer BufferedReader bfr = new BufferedReader (new InputStreamReader(System.in)); Artinya sebuah variable bfr dengan tipe class bufferedreader. Suatu input yang dideklarasikan dari class InputStreamReader. String namaInput = null; String nimInput = null Artinya string yang di identifier suatu namainput dan niminmput, variable namainput dan niminmput diinisialisasi dengan null (variable tidak diisi) try { System.out.print("Masukkan Nama Anda: "); namaInput = bfr.readLine(); System.out.print("Masukkan Nim Anda: "); nimInput = bfr.readLine(); } catch (IOException ioe) { System.out.println("Kesalahan IO, program berhenti"); System.exit(1); } while (i <= 50){ System.out.println(i+"."+"Nama anda: "+ namaInput); System.out.println(" Nim anda : "+ nimInput); i+=1; } Artinya adalah Identifikasi kondisi persyaratan i<=50 maka outputnya bertipe string.Kemudian nilai i diincrement dan kembali ke proses awal perulangan.Program akan berhenti melalukan perulangan jika saat identifikasi kondisi persyaratan dimana i>50. 4. Class perpankatan_dowhile package Modul_4 Sourcode perpankatan_dowhile.Java package Modul_4; import javax.swing.JOptionPane; public class perpankatan_dowhile { public static void main(String[ ] args){ int hasil = 1; String x = ""; String y = ""; x = JOptionPane.showInputDialog("Masukkan angka"); int angka = Integer.valueOf(x).intValue(); y = JOptionPane.showInputDialog("Masukkan pangkat"); int pangkat = Integer.valueOf(y).intValue(); int i=1; do { i++; hasil=hasil*angka; }while(i<=pangkat); String st3 = angka + " pangkat " + pangkat + " = " + hasil; JOptionPane.showMessageDialog (null, Hasilnya "Hasilnya:\n" + st3); } } Hasilnya Analisa data import javax.swing.JOptionPane; Artinya adalah kelas tunggal yang mendukung sejumlah kelas dialog. int hasil = 1; Artinya adalah suatu variable hasil dengan nilai awal 1 bertipe yang integer. String x =""; Artinya adalah variable x dengan tipe string. Dimana X adalah variable yang mewakili angka yang akan diinput dengan keadaan awal kosong. String y =""; Artinya adalah variable y dengan tipe string. dimana Y adalah variable yang mewakili pangkat yang akan diinput dengan keadaan awal kosong. x=JOptionPane.showInputDialog("Masukkan angka"); Artinya adalah untuk mencetak kotak dialog untuk memasukkan angka dengan output string masukkan angka. int angka =Integer.valueOf(x).intValue(); Artinya adalah mencetak kotak dialog untuk memasukkan pangkat dengan output string masukkan pangkat. y=JOptionPane.showInputDialog("Masukkan pangkat"); Artinya adalah mencetak kotak dialog untuk memasukkan pangkat dengan output string masukkan pangkat. int i=1; Artinya adalah arvariable i dengan nilai awal 1 yang bertipe integer. do{i++; hasil=hasil*angka; }while(i<=pangkat); Artinya adalah increment i kemudian mencari hasil dengan hasil=hasil*angka, dimana hasil awal bernilai 1. Setelah itu deklarasi persyaratan i<=pangkat dan kembali ke operasi awal (increment). Program akan berhenti pada pemeriksaan nilai i jika i>pangkat. String St3=angka + "pangkat" + pangkat + "=" + hasil; JOptionPane.showMessageDialog (null, "Hasilnya:\n" + st3); Artinya adalah mencetak hasil akhir dimana XpangkatY = hasil. 5. Class perpangkatan_forloop package Modul_4 Source Code perpangkatan_forloop.Java package Modul_4; import javax.swing.JOptionPane; public class perpangkatan_forloop { public static void main(String[ ] args){ int hasil = 1; String x = ""; String y = ""; x = JOptionPane.showInputDialog("Masukkan angka"); int angka = Integer.valueOf(x).intValue(); y = JOptionPane.showInputDialog("Masukkan pangkat"); int pangkat = Integer.valueOf(y).intValue(); for(int i=1;i<=pangkat; i++){ hasil=hasil*angka; } String st3 = angka + " pangkat " + pangkat + " = " + hasil; JOptionPane.showMessageDialog (null, "Hasilnya:\n" + st3); } } Hasilnya Analisa Data import javax.swing.JOptionPane; Artinya adalah kelas tunggal yang mendukung sejumlah kelas dialog. int hasil = 1; Artinya adalah suatu variable hasil dengan nilai awal 1 bertipe yang integer. String x =""; Artinya adalah variable x dengan tipe string. Dimana X adalah variable yang mewakili angka yang akan di input dengan keadaan awal kosong. String y =""; Artinya adalah variable y dengan tipe string. dimana Y adalah variable yang mewakili pangkat yang akan di input x=JOptionPane.showInputDialog("Masukkan angka"); Artinya adalah untuk mencetak kotak dialog untuk memasukkan angka dengan output string masukkan angka. int angka =Integer.valueOf(x).intValue(); Artinya adalah mencetak kotak dialog untuk memasukkan pangkat dengan output string masukkan pangkat. y=JOptionPane.showInputDialog("Masukkan pangkat"); Artinya adalah mencetak massage box untuk memasukkan pangkat dengan output string masukkan pangkat. int i=1; Artinya adalah arvariable i dengan nilai awal 1 yang bertipe integer. do{i++; hasil=hasil*angka; }while(i<=pangkat); Artinya adalah increment i kemudian mencari hasil dengan hasil=hasil*angka, dimana hasil awal bernilai 1. Setelah itu deklarasi persyaratan i<=pangkat dan akan kembali ke operasi awal.Program akan berhenti pada pemeriksaan nilai i jika i>pangkat. String St3=angka + "pangkat" + pangkat + "=" + hasil; JOptionPane.showMessageDialog (null, "Hasilnya:\n" + st3); Artinya adalah mencetak hasil akhir dimana XpangkatY = hasil. 6. Class perpangkatan_whileloop package Modul_4 Source Code perpangkatan_whileloop.Java package Modul_4; import javax.swing.JOptionPane; public class perpangkatan_whileloop { public static void main(String[ ] args){ int hasil = 1; String x = ""; String y = ""; x = JOptionPane.showInputDialog("Masukkan angka"); int angka = Integer.valueOf(x).intValue(); y = JOptionPane.showInputDialog("Masukkan pangkat"); int pangkat = Integer.valueOf(y).intValue(); int i=1; while(i<=pangkat){ i++; hasil=hasil*angka; } String st3 = angka + " pangkat " + pangkat + " = " + hasil; JOptionPane.showMessageDialog (null, "Hasilnya:\n" + st3); } } } Hasilnya Analisa Data import javax.swing.JOptionPane; Artinya adalah kelas tunggal yang bersifat dukung sejumlah kelas dialog. int hasil = 1; Artinya adalah mendeklarasikan variable hasil dengan nilai awal 1 bertipe integer. String x =""; Artinya adalah variable x dengan yang kosong bertipe string.dimana X variable bersifat angka yang akan diinput dengan keadaan awal kosong. String y =""; Artinya adalah variable y dengan yang kosong bertipe string.dimana Y variable yang bersifat pangkat yang akan diinput dengan keadaan awal kosong. x=JOptionPane.showInputDialog("Masukkan angka"); Artinya adalah mencetak kontak dialog untuk memasukkan angka dengan output string int angka =Integer.valueOf(x).intValue(); Artinya adalah angka yang diinput dengan awal bertipe string, nilai x diubah menjadi tipe integer. y=JOptionPane.showInputDialog("Masukkan pangkat"); Artinya adalah mencetak kotak dialog untuk memasukkan pangkat dengan output string masukkan pangkat. intpangkat=Integer.valueOf(y).intValue(); artinya adalah pangkat yang diinput dengan awalnya bertipe string, nilai y diubah menjadi tipe integer. int i=1; Artinya adalah variable i dengan nilai awal 1 bertipe integer. while(i<=pangkat){ i++; hasil=hasil*angka; } Artinya adalah persyaratan i<=1 dimana i telah bernilai awal 1. Jika memenuhi persyaratan maka i diincrement dan diproses dalam perhitungan hasil dengan konsep hasil=hasil*angka, dimana hasil telah bernilai awal 1 kemudian kembali ke looping. Program akan berhenti jika pada kondisi persyaratan sudah tidak memenuhi String St3=angka + "pangkat" + pangkat + "=" + hasil; JOptionPane.showMessageDialog (null, "Hasilnya:\n" + st3); Artinya adalah mencetak output hasil akhir dengan XpangkatY = hasil. Kotak dialog null atau tidak diisi namun output secara otomatis tercetak setelah proses looping selesai. G. KESIMPULAN 1. Perulangan rekursif merupakan salah satu metode didalam pemrograman yang mana dalam sebuah fungsi terdapat instruksi yang memanggil fungsi itu sendri, atau lebih sering disebut memanggil dirinya sendiri. 2. Struktur kontrol pengulangan adalah berupa pernyataan dari Java yang mengijinkan kita untuk mengeksekusi blok code berulang-ulang sesuai dengan jumlah tertentu yang diinginkan. Ada tiga macam jenis dari struktur kontrol pengulangan yaitu while, dowhile, dan for-loops. H. DAFTAR REFERENSI Jobsheet Struktur Data Modul J.E.N.I Pengenalan Pemrograman 1 : Struktur Kontrol.