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

dokumen-dokumen yang mirip
Pemgrograman Modular. Keuntungan:

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

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

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

Design and Analysis Algorithm

Pertemuan 4 Fungsi Rekursif

Struktur Data & Algoritme (Data Structures & Algorithms)

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-5 Rekursif

Objectives. Struktur Data & Algoritme (Data Structures & Algorithms) Outline. Apa itu Recursion? Recursion

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

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

Fungsi Rekursif. Bentuk umum fungsi rekursif.

BAB V Tujuan 5.1 Rekursi Dasar

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

Algoritma Pemrograman 2B (Pemrograman C++)

Apakah Anda sering kesulitan untuk

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

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

FUNGSI II. Variabel Statis. Sifat variabel statis: Sintaks: static tipe_data nama_variabel; Contoh: static int angka;

Fungsi : Dasar Fungsi

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

PEMROGRAMAN DAN METODE NUMERIK Semester 2/ 2 sks/ MFF 1024

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

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

Method. Pemrograman Dasar Sistem Informasi PTIIK Herman Tolle

c. Membeli komputer d. Proses 2. Sebuah prosedur langkah demi langkah yang pasti untuk menyelesaikan sebuah masalah disebut : a. Proses b.

BAB 6 FUNGSI TUJUAN PRAKTIKUM

PEMROGRAMAN BERORIENTASI OBJEK

A. TUJUAN 1. Menjelaskan tentang prinsip dasar fungsi. 2. Menjelaskan tentang.parameter formal dan parameter aktual

Rekursif. Proses yang memanggil dirinya sendiri. Merupakan suatu fungsi atau prosedur Terdapat suatu kondisi untuk berhenti.

Konsep Pemrograman. Bab 7. Fungsi1. Konsep Pemrograman Politeknik Elektronika Negeri Surabaya 2006 PENS-ITS. Umi Sa adah

Kisi- kisi UTS- P. Kisi- kisi UTS- T

Algoritma Pemrograman

I Putu Gede Darmawan

Analisa dan Perancangan Algoritma. Ahmad Sabri, Dr Sesi 2: 16 Mei 2016

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

Algoritme dan Pemrograman

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

Algoritma & Pemrograman FUNGSI. Pengampu : Agus Priyanto, M.Kom SEKOLAH TINGGI TEKNOLOGI TELEMATIKA TELKOM. Smart, Trustworthy, And Teamwork

Perulangan, Percabangan, dan Studi Kasus

Pertemuan 9: BRANCHING/PERCABANGAN dalam C LOOPING/PERULANGAN/ITERASI dalam C

Recursion, Algoritma, Struktur Data. Recursion. Erick Pranata. Edisi II

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

IT234 ALGORITMA DAN STRUKTUR DATA FUNGSI

Mengenal Subroutine pada Pemrograman C Dian Wirdasari

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

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

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

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

STRATEGI DIVIDE AND CONQUER

SILABUS MATA KULIAH PEMROGRAMAN JAVA

Imam Fahrur Rozi. Algoritma dan Pemrograman FUNGSI BAG. 2

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

PRAKTIKUM 2. perubah (variabel), konstanta, fungsi, atau obyek lain yang didefinisikan oleh

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

Recursion, Algoritma, Struktur Data. Recursion. Erick Pranata. Edisi I

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

Algoritma dan Struktur Data

Aplikasi Rekursif dalam Analisis Sintaks Program

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

Algoritma Pemrograman

Optimasi Perhitungan Bilangan Fibonacci Menggunakan Program Dinamis

Struktur Data dan Algoritma

Kisi-Kisi Ujian Tengah Semester Algoritma dan Pemrograman Lanjut

Pengenalan C++ Oleh : Dewi Sartika

ALGORITMA DAN STRUKTUR DATA POINTER DAN FUNCTION

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

PERTEMUAN 7 REVIEW (QUIZ)

Struktur Kontrol Pemrograman Java : PERCABANGAN

Design and Analysis of Algorithms CNH2G3- Week 5 Kompleksitas waktu algoritma rekursif part 2: Metode Karakteristik

Tujuan : A. Percabangan Percabangan di dalam Java terdapat 2 macam, yaitu dengan memakai if dan switch.

Pertemuan 10 REKURSI

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

BAB VII ALGORITMA DIVIDE AND CONQUER

BAHASA PEMROGRAMAN JAVA PUTU INDAH CIPTAYANI JURUSAN SISTEM INFORMASI STMIK AMIKOM YOGYAKARTA

Bahasa C melengkapi fasilitas modular dengan menggunakan fungsi pada setiap SubProgram. Contoh pembagian program menjadi beberapa subprogram.

Function. Pertemuan 7 Jurusan Sistem Informasi Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Gunadarma 2015

8.1 FUNGSI, DEKLARASI DAN DEFINISI NYA

Pada akhir pertemuan ini, diharapkan mahasiswa memiliki kemampuan untuk: Menggunakan struktur kendali pencabangan bersyarat dalam bahasa pemrograman.

E STRUKTUR DATA & E PRAKTIK STRUKTUR DATA. Pointer & Function. Alfa Faridh Suni, S.T., M.T. PTIK

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

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

LAPORAN PRAKTIKUM ALGORITMA DAN PEMROGRAMAN ( Implementasi Rekursi Pada Java)

2. Sebuah prosedur langkah demi langkah yang pasti untuk menyelesaikan sebuah masalah disebut : a. Proses b. Program c. Algoritma d. Prosesor e.

Tipe if : If tanpa else (if) If dengan else (if-else) Nested if

LAPORAN PRAKTIKUM PEMROGRAMAN DASAR TIPE-TIPE FUNGSI ATAU METHOD

BAB II PROSES REKURSI DAN ITERASI

if (ekspresi_boolean) { Pernyataan1; } else { Pernyataan2; }

Dasar Pemrograman. Kondisi dan Perulangan. By : Hendri Sopryadi, S.Kom, M.T.I

Design and Analysis Algorithm

PERTEMUAN 2 ARRAY, PERCABANGAN, DAN PERULANGAN

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

PROSEDUR DAN FUNGSI (PROCEDURE & FUNCTION)

ALGORITMA RINTA KRIDALUKMANA SISKOM UNDIP

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

Algoritma Pemrograman

MODUL PRAKTIKUM TI014 STRUKTUR DATA Season 1

Pemrograman Dasar C. Minggu 6

MODUL DUA VARIABEL DAN TIPE VARIABEL

int fungsi_2() { int main() { fungsi_1(); fungsi_2(); return 0;

Transkripsi:

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

Latihan 1 2 Buatlah program untuk menampilkan kuadrat dari suatu bilangan secara berulang sebanyak n kali 1. Buat method Header dengan tipe void (parameter judul bertipe String) ========================= PROGRAM KUADRAT BILANGAN ========================= 2. Buat method KuadratBilangan dengan tipe void (parameter n bertipe int) Contoh keluaran dengan input n = 10 : Kuadrat dari 1 adalah 1 Kuadrat dari 2 adalah 4 Kuadrat dari 3 adalah 9 Kuadrat dari 4 adalah 16 Kuadrat dari 5 adalah 25 Kuadrat dari 6 adalah 36 Kuadrat dari 7 adalah 49 Kuadrat dari 8 adalah 64 Kuadrat dari 9 adalah 81 Kuadrat dari 10 adalah 100

Latihan 2 Buatlah program untuk menghitung nilai rata-rata dari bilangan bertipe integer sebanyak n yang diinputkan oleh user 1. Buat method Header 2. Buat method Rata2Bilangan dengan tipe double (parameter banyaknya bilangan n bertipe integer) Contoh keluaran dengan input n = 4 : Masukkan bilangan 1 : 3 Masukkan bilangan 2 : 2 Masukkan bilangan 3 : 5 Masukkan bilangan 4 : 6 3 Rata-rata : 4.000

Method Rekursif Method Rekursif Method yang di dalamnya terdapat pernyataan yang memanggil dirinya sendiri Berguna untuk memecahkan masalah yang dapat didefinisikan secara rekursif pula. Contoh : Faktorial (n) atau n! didefinisikan sebagai berikut : jika n = 0, n! = 1 jika n > 0, n! = n * (n-1)! 4

Method Rekursif 5 Faktorial (n) atau n! didefinisikan sebagai berikut : jika n = 0, n! = 1 jika n > 0, n! = n * (n-1)! Misal n=4 : 4! = 4 * 3! 3! = 3 * 2! 2! = 2 * 1! 1! = 1* 0! 0! = 1 Jadi: 4! = 4*3*2*1= 24

Method Iteratif - Faktorial 4! = 4*3! = 4*3*2! = 4*3*2*1! = 4*3*2*1 = 24 decremental long faktorialiteratifdec(long n) { long i, faktorial = 1; for(i=n; i>=1; i--) faktorial *= i; return faktorial; } 4! = 1*2*3*4 = 24 incremental long faktorialiteratifinc(long n){ long i, faktorial = 1; for(i=1; i<=n; i++) faktorial *= i; return faktorial; } 6

Method Rekursif - Faktorial Contoh perhitungan 5 faktorial 5! (5 * 4!) (5 * (4 *3!)) (5 * (4 * (3 * 2!))) (5 * (4 * (3 * (2 * 1!)))) (5 * (4 * (3 * (2 * (1 * 0!))))) (5 * (4 * (3 * (2 * (1 * 1))))) (5 * (4 * (3 * (2 * 1)))) (5 * (4 * (3 * 2))) (5 * (4 * 6 )) (5 * 24) 120 7

Method Rekursif Fungsi rekursif mempunyai dua komponen yaitu: Base case: Mengembalikan nilai tanpa melakukan pemanggilan rekursi berikutnya. Rekursi berakhir jika base case dijumpai/dipenuhi Recursion call / Reduction step: Memanggil fungsi rekursif di dalam fungsi rekursif di atas 8 Menghubungkan sebuah fungsi rekursif dengan fungsi rekursif di dalamnya Biasanya memiliki keyword return untuk mengembalikan nilai ke fungsi yang memanggilnya

Fungsi faktorial Method Rekursif Base case: n = 0 Reduction step: f(n) = n * f(n-1) 9 // rekursif long faktorialrekursif(long n) { if(n==0) return (1); else return(n * faktorialrekursif(n-1)); }

Rekursif vs Iteratif 10 Faktorial - Rekursif long faktorial(long n) { if(n==0) return (1); else return(n*faktorial(n-1)); } Faktorial - Iteratif // dekremental long faktorial(long n) { } long i, faktorial = 1; for(i=n; i>=1; i--) faktorial *= i; return faktorial;

Rekursif vs Iteratif 11 Rekursif 1. Pengulangan dengan struktur seleksi (if-else) dan pemanggilan fungsi (dirinya sendiri) -> rekursi 2. Pengulangan berhenti saat base case dijumpai/dipenuhi (konvergen terhadap base case) 3. Pengulangan tanpa henti jika base case tidak pernah dijumpai/dipenuhi (tidak konvergen terhadap base case) 4. Biaya proses lebih tinggi dengan pemanggilan banyak fungsi (butuh memori lebih besar & kerja prosesor lebih tinggi) 5. Terbaca lebih jelas, model lebih dekat dengan masalah (contoh: faktorial, fibonacci) Iteratif 1. Pengulangan dengan struktur repetisi (for/while) 2. Pengulangan berhenti saat kondisi pengulangan bernilai salah (false) 3. Pengulangan tanpa henti jika kondisi pengulangan selalu benar 4. Biaya proses lebih rendah (kebutuhan memori lebih kecil & kerja prosesor lebih rendah) karena proses pengulangan berada dalam satu fungsi 5. Terbaca kurang jelas, model kurang dekat dengan masalah (contoh: faktorial, fibonacci)

Kekurangan Rekursif Meskipun penulisan program dengan cara rekursif bisa lebih jelas dan pendek, namun fungsi rekursif memerlukan : 12 Memori yang lebih banyak untuk mengaktifkan stack (memori yang digunakan untuk pemanggilan method). Waktu lebih lama untuk menjejaki setiap rekursi melalui stack. Apakah stack?

Kapan menggunakan Rekursif? Secara umum, hanya jika : Penyelesaian sulit dilaksanakan secara iteratif Efisiensi dengan cara rekursif masih memadai Efisiensi bukan masalah dibandingkan dengan kejelasan logika program 13 Tidak mempertimbangkan faktor penghematan memori dan kecepatan eksekusi program Kecepatan kerja dan penghematan memori (iteratif) VS Perancangan logika yang baik (rekursif)

Bilangan Fibonacci Urutan bilangan 0, 1, 1, 2, 3, 5, 8, 13 disebut bilangan Fibonacci. Hubungan antara satu angka dengan angka berikutnya didefinisikan secara rekursif sebagai berikut : Fib(N) = N, jika N = 0 atau 1 Fib(N) = Fib(N-2) + Fib(N-1), jika N >= 2 14

Bilangan Fibonacci int slow_fib(int n) { int f; if(n==0) f = 0; else if(n==1) f = 1; else f = slow_fib(n-2) + slow_fib(n-1); return f; } Method slow_fib() di atas ditulis secara rekursif Tulislah fast_fib() jika menggunakan iterasi. 15

Bilangan Fibonacci Contoh : Skema fibonacci jika N=4 16 FIB (4) FIB (3) FIB (2) FIB (2) FIB (1) FIB (1) FIB (0) FIB (1) FIB (0)

Tugas 1 Buatlah program untuk permasalahan bilangan Fibonacci menggunakan iterasi int slow_fib(int n) { int f; if(n==0) f = 0; else if(n==1) f = 1; else f = slow_fib(n-2) + slow_fib(n-1); return f; } 17

Tugas 2 18 Buatlah program untuk permasalahan perpangkatan suatu bilangan menggunakan rekursif Contoh: 4 5