LAPORAN PRAKTIKUM ALGORITMA DAN PEMROGRAMAN ( Implementasi Rekursi Pada Java)
Di susun oleh: Wahyono ( 06/193218/PA/10892 ) Praktikan Algoritma dan Pemrograman Kelas A 7 Mei 2007
LABORATORIUM KOMPUTASI DASAR PROGRAM STUDI ILMU KOMPUTER FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS GADJAH MADA YOGYAKARTA 2007 1
LAPORAN PRAKTIKUM ALGORITMA DAN PEMROGRAMAN ( Implementasi Rekursi Pada Java) 7 Mei 2007
A. DASAR TEORI public class Helloword{ public static void main(string [] args ){ System.out.println(“Hello word”); } } Aturan pembuatan kelas 1. nama kelas public harus sama dengan nama file • Case-sensitive • nama kelas tidak boleh memuat karakter spasi • dalam sebuah file dapat memuat beberapa kelas static ---> melekat ke kelas. Public class coba { static int x; public static void main ( String [] args ) { x=100; System.out.println(“X= “+x); int y=999; System.out.println(“Y = “+y); } }
Tipe array Pada java Karena Java merupakan object orientasi programming, maka semua yang ada di Java dianggap sebagai object begitu juga dengan Array yang implementasinya sama seperti pointer pada Pascal. Berikut cara mendeklarasikan array di Java. Tipep[] nama_variabel = new tipe[jumlah_array]; Contoh : Int[] data=new int[10] Artinya data memiliki 10 isi. 2
perulangan for () { } while () { } do { } while ();
– – –
For for ( inisialisasi; chek kondisi; penambahan/pengurangan) { } public class faktorial { public static void main ( String [] args ) { int x=5; int hasil=1; for ( int i=1; i<=x; i++) { hasil=hasil*i; } System.out.println(x+”! = “+hasil); } } while While (kondisi ) { //perintah yang diulang ketika kondisi = true } //perintah yang dieksekusi setelah perulangan selesai. public class faktorial { public static void main ( String [] args ) { int x=5; int hasil=1; int i=1; while ( i<=x ) { hasil= hasil* i; i++; } System.out.println(x+”! = “+hasil); } } Do while do { //perintah yang diulang } while ( kondisi); public class faktorial { public static void main ( String [] args ) { int x=5; 3
int hasil=1; int i=1; do{ hasil= hasil* i; i++; }while (i<x); System.outprintln(x+”! = “+hasil); } }
Method Sama halnya seperti pada pascal dan C, di Java pun dikenal sebuah function, tapi sebutannya saja yang berbeda karena baik fungus maupun procedure disebut dengan method. Method sendiri dapat terletak didalam kelsa dimana ada method utama atau dikelsa lainnya. Untuk method ada dua jenis yaitu : 1. Method tanpa kembalian 2. Method dengan kembalian Method tanpa kembalian format nya adalah Public class nama_kelas { Public static void nama_methode ( parameter1,parameter2,…parametern) { //Statement yang dieksekusi oleh method } } Method dengan kembalian formatnya adalah Public class nama_kelas { Public static tipe_kembalian nama_methode(parameter1, parameter2,…parametern) { //statement yang dieksekusi oleh method } } contoh : public class coba_method { public static void main ( String [] args ) { int hasil; method1(); hasil= method2(2,4); System.out.println(hasil); } 4
//contoh method tanpa pengembalian public static void method1() { System.out.println(“ini method tanpa pengembalian”); } //contoh method dengan kembalian public static int method2(int x, int y) { retutn (x*y); } }
B. PERMASALAHAN Buatlah program dimana diberikan sebuah input n integer, maka ouputnya adalah permutasi dari n angka yang ada. Misal ketika n=3 maka output yang terjadi adalah : 123 132 213 231 312 321 Gunakan teknik rekursif dan kerjakan pada Java.
C. PEMBAHASAN Untuk membuat program pada Java yang harus kita lakukan pertama kali adalah membuat class. Dalam kasus ini kita membuat class Permutasi dengan begitu file yang kita simpan pun Permutasi.java. dalam class ini kita akan membuat dua buah method yaitu method main dan method Permut yang merupakan method untuk melakukan rekursif. Berikut adalah listing method main :
Seperti terlihat pada source code, tidak ada method untuk menginput nilai n, sebagai gantinya kita hanya merubah-rubah nilai n saja jika ingin mencoba permutasi untuk contoh ini saya menggunakan n=3. 5
Sedangkan untuk method permut berikut Source code nya :
Untuk method Permut kita menggunakan tiga parameter yaitu angka sebagai array, awal bertipe integer dan terakhir n bertipe integer. Adapun cara kerja method ini adalah, ketika awal bernilai sama dengan n maka method tidak akan merekursif dirinya lagi tapi langsung menuliskan hasil dari salah satu permutasi. Sedangkan jika tidak maka method akan merekursif dengan nilai awal menjadi awal+1, bagian statement perulangan ketika awal tidak sama dengan n adalah untuk membuat permutasi angka, yang ditukar-tukar satu sama lain yang kemudian merekursif. Sedangkan statement yang digunakan untuk rekursif adalah Permutasi.Permut(angka,awal+1,n). Dan berikut adalah hasil output ketika program dijalankan :
6
Penjelasan Rekursif Untuk N=3, proses program adalah sebagai berikut : Pertama kali method Permut(angka,1,n) dipanggil. Pada saat method ini dipanggil dilakukan pengulangan i=1 sampai 3. Pada masing-masing pengulangan dilakukan pertukaran elemen ke-awal dengan ke-i. Dengan demikinan tiap-tiap pengulangan akan berbentuk permutasi 123, 213, 312. Untuk 123 method akan merekursi dirinya sehingga nilai awal menjadi awal +1 dengan kata lain nilai awal menjadi sama dengan dua dan terjadi perulangan dari i=2 sampai 3. Sehingga perulangan ini akan membentuk permutasi 123 dan 132 yang selanjutnya akan merekursi kembali dengan nilai awal menjadi 3. Karena nilai awal=n maka program langsung menuliskan hasil 123 dan 132 ke layar. Untuk 213 method akan merekursi dirinya sehingga nilai awal menjadi awal +1 dengan kata lain nilai awal menjadi sama dengan dua dan terjadi perulangan dari i=2 sampai 3. Sehingga perulangan ini akan membentuk permutasi 213 dan 231 yang selanjutnya akan merekursi kembali dengan nilai awal menjadi 3. Karena nilai awal=n maka program langsung menuliskan hasil 213 dan 231 ke layar. Terakhir untuk 312 method akan merekursi dirinya sehingga nilai awal menjadi awal +1 dengan kata lain nilai awal menjadi sama dengan dua dan terjadi perulangan dari i=2 sampai 3. Sehingga perulangan ini akan membentuk permutasi 312 dan 321 yang selanjutnya akan merekursi kembali dengan nilai awal menjadi 3. Karena nilai awal=n maka program langsung menuliskan hasil 312 dan 321 ke layar.
D. KESIMPULAN Dalam mengerjakan kasus permutasi seperti ini, algoritma yang tepat dan mudah diimplementasikan hanyalah metode rekursif, sebab metode-metode yang lain sangat sulit dalam menganalisisnya terutama dalam pengimplementasiannya.
7