Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Rekursi, Overloading, Konversi By Nia Saurina SST.,M.Kom PEMROGRAMAN TERSTRUKTUR.

Presentasi serupa


Presentasi berjudul: "Rekursi, Overloading, Konversi By Nia Saurina SST.,M.Kom PEMROGRAMAN TERSTRUKTUR."— Transcript presentasi:

1 Rekursi, Overloading, Konversi By Nia Saurina SST.,M.Kom PEMROGRAMAN TERSTRUKTUR

2 Rekursi Proses memanggil dirinya sendiri yang biasanya dilakukan oleh fungsi atau prosedur pada pemrograman prosedural, atau metode pada pemrograman berorientasi obyek. Rekursi akan terus berjalan sampai kondisi berhenti terpenuhi, oleh karena itu dalam sebuah rekursi perlu adanya ▫Basis : kode yang menjadi titik berhenti dari sebuah proses rekursi ▫Rekursi : kode dalam hal ini sebuah blok program (prosedur atau fungsi, atau metode) untuk memanggil dirinya sendiri.

3 Proses rekursi Bahasa ManusiaBahasa Algoritmik Mendeklarasikan prosedur yang mengandung rekursi dengan masukkan bilangan bulat procedur tulis (input : integer n) Mendeklarasikan variabel bilangan bulat yang nantinya nilanya akan dimanipulasi sebagai basis yang nilainya diisi dengan nilai masukan n integer counter <- n Kondisi basis yaitu selama nilai variabel counter lebih besar daripada nol, maka proses di dalam blok percabangan if terus dikerjakan, dan akan berhenti bila nilai variabel counter adalah nol if counter > 0 then Proses rekursi beserta inisialisasinya yaitu prosedur tulis akan dipanggil kembali dengan nilai masukan nilai sebelumnya dikurangi satu write (“proses rekursi dengan nilai counter :”, counter) counter <- counter – 1 tulis (counter) Memanggil prosedur tulis pada algoritma utama{algoritma utama} tulis(10) {end algoritma utama}

4 Bahasa AlgoritmikJAVA procedur tulis (input : integer n) integer counter <- n if counter > 0 then write (“proses rekursi dengan nilai counter :”, counter) counter <- counter – 1 tulis (counter) {end if} {end procedure} {algoritma utama} tulis(10) {end algoritma utama} class Rekursi { public static void tulis (int n) { int counter = n; if (counter = 0) { system.out.printin (“proses rekursi dengan nilai counter :”+counter); counter = counter – 1; tulis (counter); } } public static void main (string[] args) { tulis(10); } proses rekursi dengan nilai counter : 10 proses rekursi dengan nilai counter : 9 proses rekursi dengan nilai counter : 8 proses rekursi dengan nilai counter : 7 proses rekursi dengan nilai counter : 6 proses rekursi dengan nilai counter : 5 proses rekursi dengan nilai counter : 4 proses rekursi dengan nilai counter : 3 proses rekursi dengan nilai counter : 2 proses rekursi dengan nilai counter : 1

5 Proses rekursi ke-1 ▫Variabel counter bernilai sepuluh, jalannya program ke dalam blok percabangan if karena nilai counter adalah sepuluh lebih besar dari nol, proses pada percabangan if dijalankan yaitu menuliskan nilai variabel counter ke layar, nilai variabel counter dikurangi satu, kemudian prosedur tulis dipanggil kembali dengan masukkan nilai sembilan. Proses rekursi ke-11 ▫Variabel counter bernilai nol, jalannya program tidak masuk ke dalam percabangan if karena nilai counter adalah nol, sehingga prosedur tulis tidak dipanggil kembali dan proses rekursi berhenti.

6 Latihan program Bahasa ManusiaBahasa Algoritmik Mendeklarasikan sebuah prosedur faktorial dengan masukan sebuah bilangan bulat yang akan dihitung nilai faktorialnya dan variabel hasil yang akan menyimpan hasil perhitungan procedure faktorial (input : integer n, input/output : integer hasil) Membuat kondisi basis dengan percabangan if, jika nilai variabel yang menjadi basis masih memenuhi syarat berjalannya rekursi maka proses rekursi akan dijalankan (angka 1 tidak dimasukkan karena semua bilangan dikalikan 1 adalah bilangan itu sendiri) if n > 1 then Membuat inisialisasi proses rekursi di dalam percabangan if yaitu mengkalikan hasil kali sebelumnya dengan bilangan bulat masukan, menuliskan hasil perkalian ke layar, kemudian mengurangi nilai bilangan masukan dengan satu, dan melakukan proses rekursi hasil <- hasil * n write (“rekursi dengan nilai hasil :”, hasil, “ nilai n :”, n) n <- n – 1 faktorial (n, hasil) Memanggil prosedur rekursi pada algoritma utama {algoritma utama} integer hasil <- 1 faktorial (10, hasil) { {end algoritma utama}

7 Bahasa ManusiaBahasa Algoritmik procedure faktorial (input : integer n, input/output : integer hasil) class FakRekursi { public static void faktorial (int n, int hasil) { if n > 1 thenif (n = 1) { hasil <- hasil * n write (“rekursi dengan nilai hasil :”, hasil, “ nilai n :”, n) n <- n – 1 faktorial (n, hasil) (end if) (end procedure) hasil = hasil * n; system.out.printin (“rekursi dengan nilai hasil :” + hasil +”, nilai n :” + n); n = n – 1; faktorial (n, hasil); } } {algoritma utama} integer hasil <- 1 faktorial (10, hasil) { {end algoritma utama} public static void main (string[] args) { int hasil = 1; faktorial (10, hasil); } }

8 rekursi dengan nilai hasil : 10, nilai n : 10 rekursi dengan nilai hasil : 90, nilai n : 9 rekursi dengan nilai hasil : 720, nilai n : 8 rekursi dengan nilai hasil : 5040, nilai n : 7 rekursi dengan nilai hasil : 30240, nilai n : 6 rekursi dengan nilai hasil : , nilai n : 5 rekursi dengan nilai hasil : , nilai n : 4 rekursi dengan nilai hasil : , nilai n : 3 rekursi dengan nilai hasil : , nilai n : 2

9 Metode overloading Java seringkali menggunakan dua atau lebih metode di dalam satu class yang menggunakan nama yang sama, selama deklarasi parameter yang digunakan berbeda. Apabila hal ini terjadi, metode seringkali disebut overloaded, dan proses disebut method overloading. Saat terdapat overloaded method, Java menggunakan tipe dan/atau jumlah argumen sebagai petunjuk untuk menentukan versi overloaded method yang akan digunakan.

10 Contoh : Overloading // Demonstrate method overloading (Overload01.java). class Overload01 { static void test() { System.out.println("No parameters"); } // Overload test for one integer parameter. static void test(int a) { System.out.println("a: " + a); } // Overload test for two integer parameters. static void test(int a, int b) { System.out.println("a and b: " + a + " " + b); } // overload test for a double parameter

11 Contoh : Overloading static double test(double a) { System.out.println("double a: " + a); return a*a; } public static void main(String args[]) { double result; // call all versions of test() test(); test(10); test(10, 20); result = test(123.2); System.out.println("Result of test(123.2): " + result); } //main } // class

12 Tipe Konversi Saat suatu metode bersifat overloaded, Java mencari kesesuaian antara pernyataan digunakan untuk memanggil metode dan parameter. Bagaimanapun penyesuaian tidak harus tepat, tipe konversi digunakan untuk resolusi metode ini.

13 Tipe Konversi // Demonstrate method overloading (Overload01.java). class Overload02 { static void test() { System.out.println("No parameters"); } static void test(int a, int b) { System.out.println("a and b: " + a + " " + b); }

14 Tipe Konversi static void test(double a) { System.out.println("double a: " + a*a); } public static void main(String args[]) { int x=10; test(); test(10, 20); test(x); test(123.5); }

15 Terima Kasih


Download ppt "Rekursi, Overloading, Konversi By Nia Saurina SST.,M.Kom PEMROGRAMAN TERSTRUKTUR."

Presentasi serupa


Iklan oleh Google