Algoritma dan Pemrograman Lanjut. Pertemuan Ke-5 Rekursif

dokumen-dokumen yang mirip
Algoritma dan Pemrograman. Pertemuan Ke-7 Statement Pengendalian 2

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-7 Pencarian (Searching) 2

Algoritma dan Pemrograman. Pertemuan Ke-8 Statement Pengulangan 1

Algoritma dan Pemrograman. Pertemuan Ke-12 Tipe data array/larik 1

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-6 Pencarian (Searching) 1

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-11 Pointer 2

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-8 Pengurutan (Sorting) 1

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-10 Pointer 1

Algoritma dan Pemrograman. Pertemuan Ke-9 Statement Pengulangan 2

Algoritma dan Pemrograman. Pertemuan Ke-2 Dasar-dasar Algoritma

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-9 Pengurutan (Sorting) 2

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-3 Record/Struct dan Array Of Record

Algoritma dan Pemrograman. Pertemuan Ke-11 Function

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-2 Array (Larik)

Algoritma dan Pemrograman. Pertemuan Ke-4 Konsep Tipe Data, Operator Dan Identifier

Algoritma dan Pemrograman. Pertemuan Ke-1 Pengantar Algoritma

Rekursif. Rekursif adalah salah satu metode dalam dunia matematika dimana definisi sebuah fungsi mengandung fungsi itu sendiri.

Algoritma dan Pemrograman

Algoritma dan Pemrograman. Pertemuan Ke-5 Input dan Output

REKURSIF. Arkham Zahri Rakhman, S.Kom., M.Eng. Rev.: Dr. Fazat Nur Azizah

RENCANA PEMBELAJARAN SEMESTER (RPS)

Algoritma Pemrograman

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-13 Arsip (File) 2

REKURSIF. Dari bahan Dasar Pemrograman oleh: Arkham Zahri Rakhman Rev.: Fazat Nur Azizah

RENCANA PEMBELAJARAN SEMESTER (RPS)

Algoritma Pemrograman

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-14 Arsip (File) 3

Algoritma Pemrograman

Algoritma Pemrograman 2B (Pemrograman C++)

Pemrograman Dasar L A T I H A N M E T H O D / F U N G S I M E T H O D R E K U R S I F

MODUL PRAKTIKUM ALGORITMA DAN STRUKTUR DATA April 1, 2010 BAB 8 REKURSIF

BAB II PROSES REKURSI DAN ITERASI

KONSEP DASAR. menyusunnya menjadi potongan-potongan mudah untuk ditangani dibanding. conquer.

Fungsi, Parameter, Rekursi

SATUAN ACARA PERKULIAHAN (SAP) Mata Kuliah : Struktur Data Kode : TIS3213 Semester : III Waktu : 1 x 3 x 50 Menit Pertemuan : 3

BAB V Tujuan 5.1 Rekursi Dasar

Sedangkan bentuk umum pendefinisian fungsi adalah : Tipe_fungsi nama_fungsi(parameter_fungsi) { statement statement... }

Kisi-Kisi Ujian Tengah Semester Algoritma dan Pemrograman Lanjut

DASAR PEMROGRAMAN. Institut Teknologi Sumatera

TIM ASISTEN PRAKTIKUM ALGORITMA DAN PEMROGRAMAN 2016

MODUL 10 Fungsi 10.1 Kompetensi 10.2 Alat Dan Bahan: 10.3 Ulasan Teori: Dasar Fungsi Deklarasi Fungsi

A. TUJUAN PEMBELAJARAN 1. Memahami mengenai konsep rekursif 2. Mampu memecahkan permasalahan dengan konsep rekursif

PROGRAM STUDI S1 SISTEM KOMPUTER UNIVERSITAS DIPONEGORO. Oky Dwi Nurhayati, ST, MT

Soal Ujian Akhir Semester Pendek TA. 2006/2007 D3-Manajemen Informatika

Pertemuan 5 PEMILIHAN/PERCABANGAN

MODUL PRAKTIKUM. MODUL I - VIII Modul penuntun dan bahan praktikum matakuliah algoritma dan pemograman

STRUKTUR DASAR ALGORITMA DAN PEMROGRAMAN STMIK AMIKOM YOGYAKARTA

SUB PROGRAM (FUNGSI)

ALGORITHM. 3 Rekursif Algorithm. Dahlia Widhyaestoeti, S.Kom dahlia74march.wordpress.com

LAPORAN PRAKTIKUM ALGORITMA DAN PEMROGRAMAN ( Implementasi Rekursi Pada Java)

PERTEMUAN 7 REVIEW (QUIZ)

PEMROGRAMAN TERSTRUKTUR PERTEMUAN VI KOMPONEN KOMPONEN PEMROGRAMAN TERSTRUKTUR

PEMROGRAMAN BERORIENTASI OBJEK

PROSEDUR DAN FUNGSI (PROCEDURE & FUNCTION)

Design and Analysis of Algorithm

Program pendek dan simple = mudah dihandle. Program besar, banyak dan kompleks = tidak

Program pendek dan simple = mudah dihandle. Program besar, banyak dan kompleks = tidak

Aplikasi Rekursif dalam Analisis Sintaks Program

Pertemuan 4 Fungsi Rekursif

SOAL C++ Created by Yuli Astuti,S.Kom Copyright 2009

Design and Analysis Algorithm. Ahmad Afif Supianto, S.Si., M.Kom. Pertemuan 03

PENCARIAN SOLUSI TTS ANGKA DENGAN ALGORITMA RUNUT BALIK BESERTA PENGEMBANGANNYA

Algoritma dan Struktur Data

Spesifikasi: Ukuran: 14x21 cm Tebal: 225 hlm Harga: Rp Terbit pertama: Februari 2005 Sinopsis singkat:

A. TUJUAN PEMBELAJARAN

PROCEDURE DAN FUNCTION

Gedung bisa diibaratkan sebagai fungsi main() sedangkan bagian yang lebih kecil merupakan fungsi yang menyelesaikan tugas tertentu.

Fungsi. Fungsi. Dasar Komputer & Pemrograman 1. dipecah Sub Program. Program. Dasar Komputer & Pemrograman TC22052 Kartika Firdausy - UAD

Fungsi Rekursif PEMROGRAMAN DASAR. Dr. Eng. Herman Tolle, ST., MT. Sistem Informasi PTIIK UB Semester Ganjil 2014/2015

FUNGSI. setiap elemen di dalam himpunan A mempunyai pasangan tepat satu elemen di himpunan B.

Praktikum 6. Konsep Rekursi Perbandingan Perulangan biasa dan Rekursi Implementasi Rekursi dalam Bahasa C

SATUAN ACARA PENGAJARAN (SAP) : Aswir Premadi, S.T., M.Sc. (Eng) Pertemuan Minggu ke : 1 & 2 ( 1 x 2 x 50 )

PENGENALAN C++ Bab 1

SEKOLAH TINGGI MANAJEMEN INFORMATIKA & KOMPUTER JAKARTA STI&K SATUAN ACARA PERKULIAHAN

FUNGSI. tipe Tipe nilai yang dihasilkan oleh fungsi. Jika tidak dinyatakan, hasil fungsi dianggap bilangan bulat (int)

MODUL ALGORITMA DAN PEMROGRAMAN. STMIK AMIKOM Yogyakarta. Rajif Agung Yunmar, S.Kom., M.Cs.

Percabangan & Perulangan

12/29/2011 ILKOM IPB 1. Algoritme dan Pemrograman. Fungsi. Fungsi. y = f (x) = x m = jumlah ( a, b ) = a + b

Pertemuan 3 Prosedur dan Fungsi

Apakah Anda sering kesulitan untuk

MODULAR (FUNGSI)

A. TUJUAN PEMBELAJARAN 1. Memahami mengenai konsep rekursif 2. Mampu memecahkan permasalahan dengan konsep rekursif

Design and Analysis Algorithm

Algoritma Heap Sort. Sekolah Teknik Elektro & Informatika Departemen Teknik Informatika, Institut Teknologi Bandung Jl. Ganesha 10, Bandung

Tutorial 08 Pertemuan 12

Pertemuan Ke-2 (Teks Algoritma) Rahmady Liyantanto. S1 Teknik Informatika-Unijoyo

INPUT & OUTPUT SEQUENCE STATEMENT SELECTION STATEMENT. Pengantar Logika & Teknik Pemrograman Politeknik Negeri Jakarta TA.

P3 Dasar Struktur Data TIF42/SIF42

VI. FUNGSI. Fungsi Main ( ) Fungsi a ( ) Fungsi b ( ) Fungsi c ( ) Fungsi c1 ( ) Fungsi c2 ( ) Fungsi c3 ( ) Bentuk umumnya :

PERTEMUAN 2 KONSEP DASAR PEMROGRAMAN

Selection / Pemilihan PEMILIHAN

Alpro & Strukdat 1 C++ (Sub Program) Dwiny Meidelfi, S.Kom., M.Cs.

MODUL 6 PERULANGAN. A. String. 1. Instansiasi dan Inisialisasi. M0601xxyyy.jar

GARIS-GARIS BESAR PROGRAM PENGAJARAN PROGRAM STUDI : S1 SISTEM INFORMASI Semester : 1

Konsep Dasar Pemrograman

Refreshing Materi Kuliah Semester Pendek 2010/2011. Logika dan Algoritma. Heri Sismoro, M.Kom.

MODUL 7 FUNGSI A. Tujuan. B. Petunjuk. C. Dasar Teori

PRAKTIKUM 4 PERCABANGAN

Algoritma Euclidean dan Struktur Data Pohon dalam Bahasa Pemrograman LISP

Method. Pemrograman Dasar Sistem Informasi PTIIK Herman Tolle

Transkripsi:

Algoritma dan Pemrograman Lanjut Pertemuan Ke-5 Rekursif Disusun Oleh : Wilis Kaswidjanti, S.Si.,M.Kom. Jurusan Teknik Informatika Fakultas Teknologi Industri Universitas Pembangunan Nasional Veteran Yogyakarta

Algoritma dan Pemrograman Lanjut Judul Materi : Rekursif Deskripsi Materi : Materi ini membahas bentuk algoritma rekursif dan penggunaan rekursif untuk menyelesaikan perosalan-persoalan iterasi Tujuan Instruksional Khusus : 1. Memahami algoritma rekursif 2. Menjelaskan bentuk algoritma rekursif 3. Mendeskripsikan parameter-parameter pada algoritma rekursif 4. Membandingkan algoritma rekursif dengan algoritma non rekursif Referensi : Buku Teks Munir, Rinaldi (2005), Algoritma dan Pemrograman dalam Bahasa Pascal dan C, Buku 2, Edisi Ketiga, Penerbit Informatika Bandung, Bab 5, hal 169-226. Charibaldi, N. (2004), Modul Kuliah Algoritma Pemrograman II, Edisi Kedua, Yogyakarta Buku Acuan/Referensi Brassard, Gilles (1999), Fundamentals of algorithma, PrinteceHall. Jarne, Stroustrup B. (1997), C++ Programming language, AT &T. Kristanto, Andri (2003), Algoritma pemrograman C++, Graha Ilmu. Schildt,Herbert (2000), The Complete Reference C++, McGraw-Hill. Sedgewick, R. (2000), Algoritma Third edition In C part 5, Addison Wesley.

REKURSIF PENDAHULUAN Rekursif merupakan alat untuk memecahkan masalah dalam suatu fungsi atau procedure yang memanggil dirinya sendiri. Definisi menurut Niclaus Wirth : An object is said be recursive if it partially consist or is defines in terms of itself Mengapa kita memerlukan rekursif? Karena ada beberapa kasus yang akan jauh lebih mudah diselesaikan jika menggunakan rekursif. Secara teori semua masalah yang dapat dipecahkan dengan rekursif dapat dipecahkan dengan tanpa rekursif. Meskipun dalam kenyataa ini, rekursif sangat bermanfaat sebab beberapa masalah mempunyai solusi yang sulit tanpa menggunakan rekursif. Penggunaan rekursif kadang-kadang harus mengorbankan efisiensi dan kecepatan, disamping itu ada masalah yang sering muncul dalam rekursif, yaitu eksekusi yang tidak pernah berhenti, akibatnya memori tumpukan akan habis dan computer hank. Pada dasarnya rekursif sering digunakan dalam perhitungan matematika, sebagai contoh pertimbangan fungsi factorial dan juga bilangan Fibonacci ISI Logika Rekursif adalah suatu fungsi berparameter yang memanggil dirinya sendiri dengan harga parameter yang berbeda. Logika ini dipakai sebagai pengganti proses iterasi. Kelebihan logika bentuk ini mudah dipahami alurnya, namun kelemahannya pada penggunaan register stack yang sangat membebani kecepatan jalannya program. Bentuk dan sifat rekursif adalah sebagai berikut : - Ada bagian base case dan ada bagian general case - Paling sedikit mempunyai general base - Selalu dalam bentuk fungsi-fungsi

- Selalu menggunakan statement percabangan Berikut contoh fungsi rekursi, yaitu faktorial dan bilangan Fibonacci. A. Faktorial Salah satu contoh yang sering digunakan untuk menjelaskan rekursif adalah fungsi fakorial. Fungsi factorial dari bilangan bulat positif n didefinisikan sebagai berikut: n!= n.(n-1)!, jika n>1 n!= 1, jika n=0, 1 contoh : 3!= 3. 2! 3!= 3. 2. 1! 3!= 3. 2. 1 3!= 6 Cara lain untuk mendefiniskan fungsi tersebut sebagai berikut: Dalam definisi ini, nilai 3! diekspresikan sebagai 3 x 2!, dengan kata lain untuk menghitung factorial 3, kita harus menghitung factorial lain yaitu factorial 2. Jika definisi nilai 2!=2 x 1! Factorial 1 didefinisikan dengan nilai 1. Jadi jika factorial 3!= 3 x 2 x 1, yang mana secara pasti mempunyai nilai sama yang diperoleh dari definisi tanpa rekursif. Kita dapat menuliskan fungsi penghitung factorial seperti dibawah ini, Faktorial(n) hasilnya n*faktorial(n-1), jika n > 1 {general case} hasilnya 1, jika n=1 atau 2 {base case} Algoritma : Function Faktorial (input n: integer) integer Deklarasi {tidak ada} Deskripsi if (n = 0) or (n = 1) then

Bahasa C++ : return (1) return (n * Faktorial(n-1)) endif 1. int Faktorial(int n) 2. { 3. if ((n == 0) (n == 1 )) 4. return (1); 5. 6. return (n * Faktorial(n-1)); 7. } Pada baris 3 dari fungsi diatas, nilai n dicek sama dengan 0 atau 1, jika ya, maka fungsi mengembalikan nilai 1 {baris 4}, jika tidak, fungsi mengembalikan nilai n * Faktorial (n -1) {baris 6} disinilah letak proses rekursif itu, perhatikan fungsi factorial ini memanggil dirinya sendiri tetapi dengan parameter (n-1) B. Bilangan Fibonacci Fungsi lain yang dapat diubah kebentuk rekursif adalah perhitungan Fibonacci. Bilangan Fibonacci dapat didefinisikan sebagai berikut: f n = f n-1 + f n-2 untuk n>1 f 0 = 0 f 1 = 1 berikut ini adalah barisan bilangan Fibonacci mulai dari n=1 1 1 2 3 5 8 13 21 34 Algoritma yang dipakai Function Fibonacci(input n:integer) integer Deklarasi Lokal {tidak ada} Deskripsi if (n ==1 n==2) then

return (l) return (Fibonacci(n-1)+Fibonacci(n-2)) endif Contoh, Untuk ukuran n= 4, proses perhitungan Fibonacci dapat dilakukan sebagai berikut: f 4 = f 3 +f 2 f 4 = (f 2 +f 1 ) + f 2 f 4 = (1+1) +1 f 4 = 3 C. Penerapan faktorial Kombinasi Function Kombinasi (input n, r : integer) real Deklarasi If (n < r) Then return (0) Else return (Faktorial(n)/(Faktorial(r)*Faktorial(n-r))) Endif Permutasi Function Permutasi (input n, r : integer) real Deklarasi {tidak ada} Deskripsi if (n< r) then return (0) return (Faktorial(n) / Faktorial(n-r)) endif Contoh program menghitung permutasi dengan bahasa C++ (lengkap) : #include <iostream.h> int Faktorial(int n); float Kombinasi(int n, int r); main() { cout << Kombinasi C(3,2) = << Kombinasi(3,2);

} int Faktorial(int n) { if ((n == 0) (n == 1 )) return(1); return(n * Faktorial(n-1)); } float Kombinasi(int n,int r) { if (n < 1) return(0); return(faktorial(n)/(faktorial(r)* Faktorial(n-r))); } PENUTUP Persoalan yang diselesaikan dengan iterasi dapat juga diselesaikan dengan rekursif. Definisi rekursif harus tergantung kondisi, yang harus ada keadaan dimana kita dapat menghentikannya. SOAL-SOAL 1. Buat program untuk menghitung deret S = 1+2+3+4+5 menggunakan function rekursi 2. Buat program untuk menghitung deret S = 2+4+6+8+10 menggunakan function rekursi