Anda di halaman 1dari 13

LAPORAN RESMI PRAKTIKUM ALGORITMA STRUKTUR DATA MODUL 1 FUNGSI REKURSIF

Sesi / Kelompok : D1 / 06

Nama Praktikan : OKTYAWAN ADITYA (1034010153) RIRIN ROSALINE T. (1034010085)

ASISTEN DOSEN : MIN UMAMI (0834010199) DUDY HERRYANTO (0834010190)

LABORATORIUM PEMROGRAMAN KOMPUTER JUR. TEKNIK INFORMATIKA FAKULTAS TEKNIK INDUSTRI UNIVERSITAS PEMBANGUNAN NASIONAL VETERAN JAWA TIMUR 2010

LEMBAR PENGESAHAN
Telah diperiksa dan disetujui Laporan Resmi :

Praktikum Modul Judul Rombongan Group

: Bahasa Pemrograman 1 : 1 (Satu) : Fungsi Rekursif : D : D1

Surabaya,

April 2011

Menyetujui, Asisten Penguji

(__________________) NPM:

I.

Dasar Teori

Fungsi rekursif adalah fungsi yang memanggil dirinya sendiri. Fungsi ini akan terus berjalan sampai kondisi berhenti terpenuhi, oleh karena itu dalam sebuah fungsi rekursif perlu terdapat 2 blok penting, yaitu blok yang menjadi titik berhenti dari sebuah proses rekursi dan blok yang memanggil dirinya sendiri. Contoh contoh penerapan rekursif : 1. Fungsi cetak ke layar Fungsi ini mencetak nilai dari paremeter yang dilempar kepadanya. Jika nilai dari parameter tersebut > 0, fungsi akan mencetak nilai dari parameter tersebut dan kemudian memanggil dirinya lagi, jika tidak, program berhenti.

2. Fungsi pangkat Fungsi ini digunakan untuk menghitung nilai: Xn dengan n berupa bilangan bulat positif. Solusi dari persoalan ini: JIKA n = 1 MAKA Xn = X SELAIN ITU: Xn = X * Xn-1 Sebagai contoh diambil nilai X=5 dengan n=3, pelukisan proses pemecahannya:

Berikut adalah fungsi pangkat dengan menggunakan solusi di atas:

a adalah bilangan yang dipangkatkan, sedangkan b adalah bilangan pemangkatnya. Jika nilai dari b adalah 1, return a, lainnya return a dikali dengan fungsi pangkat dengan parameter a dan b-1. Untuk lebih jelas, terapkan dalam program.

3. Fungsi faktorial Faktorial dapat dibuat dengan menerapkan rekursif. Berikut ini adalah fungsi faktorial rekursif dari sebuah program.

Fungsi faktorial diatas akan melakukan rekursi selama nilainya > 1. Sebagai contoh: 4!, pelukisan penyelesaiannya:

II. Soal 1. Buatlah program Menara Hanoi (Tower Of Hanoi) dengan batas inputan min 3 lempengan & maks. 5 lempengan dengan 3 menara (tower)!!

III. Algoritma

1. Mulai. 2. Telah di inisialisasikan, untuk fungsi pada program : void tower dimana fungsi tsb memiliki deklarasi (char dari_tower, char ke_tower, char hasil_towers, int k). 3. Telah di inisialisasikan, untuk void main memiliki deklarasi (int lempeng). 4. Inputkan jumlah lempeng (3-5) : 5. Jika lempeng<=3 & lempeng>=5, lakukan perpindahan lempeng sesuai inputan. Namun, jika inputan lebih atau kuran dari batasan inputan di atas, maka lakukan langkah ke-8. 6. Panggil void towers. 7. Cetak hasil perpindahan lempeng dari beberapa tower, lalu lakukan langkah ke-9. 8. Cetak Angka yang anda inputkan tidak sesuai batas min. maks. program!! , lalu lakukan langkah ke-9. 9. Selesai.

IV. Flow Chart

START

Char dari_tower, ke_tower, hasil_tower Int k, lempeng

Inputkan jumlah lempeng (3-5):

IF (lempeng>=3 && lempeng <=5)

Cetak Angka yang anda inputkan tdk sesuai batas min. maks. Program!

Perpindahan Lempeng :

Void_towers

towers(dari_tower,hasil_ tower,ke_tower,k-1)

IF k==1

Pindahkan lempeng %d dari tower %c ke tower %c

towers(hasil_tower,ke_ tower,dari_tower,k-1) Pindahkan lempeng 1 dari tower %c ke tower %c

END

V.

Source Code
#include<stdio.h> #include<conio.h> void towers(char dari_tower,char ke_tower,char hasil_tower, int k) { if(k==1) { printf("\n return; } else { towers(dari_tower,hasil_tower,ke_tower,k-1); printf("\n - Pindahkan lempeng %d dari tower %c ke tower %c",k,dari_tower,ke_tower); towers(hasil_tower,ke_tower,dari_tower,k-1); return; } } void main() { int lempeng; printf("||================================================||\n"); printf("|| printf("|| printf(" ** Tower Of Hanoi ** ** LAPRES A.S.D Modul 1 - Sesi D1 ** => Inputkan berapa banyak lempeng (3-5) : "); ||\n"); ||\n"); - Pindahkan lempeng 1 dari tower %c ke tower %c",dari_tower,ke_tower);

printf("||================================================||\n"); scanf("%d",&lempeng); printf("||================================================||\n"); if(lempeng>=3 && lempeng<=5) { printf(" return; getch(); } else { => Perpindahan lempeng :\n"); towers('A','C','B',lempeng);

printf("|| ||\n"); printf("|| ||");

Angka yang anda inputkan tidak sesuai dengan batas min. max. program!

printf("\n||================================================||\ n"); } }

VI.

Output Program Program Tower Of Hanoi dengan inputan sesuai batas min. maks. program!

Program Tower Of Hanoi dengan inputan tidak sesuai batas min. maks. program!

VII.

Analisa Program
#include<stdio.h> #include<conio.h>

Source code diatas merupakan Library (kamus) dalam syntax bhs. Pemrograman C++. #include<stdio.h>, merupakan file library header yang harus di sertakan pada penggunaan fungsi printf() & scanf(). #include<conio.h>, merupakan file library header yang harus di sertakan pada penggunaan fungsi getch().
void towers(char dari_tower,char ke_tower,char hasil_tower, int k)

Void towers, merupakan salah satu fungsi yang memiliki peran dalam membuat blok dari kode yang dirancang untuk melakukan tugas khusus seperti void towers, maupun void main() sebagai fungsi pusat dlm menjalankan program. Char dari_tower, char ke_tower, char hasil tower, int k, merupakan deklarasi type data yang memiliki variable nama.
if(lempeng>=3 && lempeng<=5) { printf(" return; getch(); } else { printf("|| ||\n"); Angka yang anda inputkan tidak sesuai dengan => Perpindahan lempeng :\n"); towers('A','C','B',lempeng);

IF ELSE, merupakan perintah branching (percabangan) dengan batasan inputan >=3 & <=5. Towers(A,C,B,lempeng), merupakan proses pemanggilan fungsi dari void towers. Gets(), merupakan (get character and echo) yang dipakai untuk membaca sebuah karakter dengan sifat karakter yang di masukkan tidak perlu di akhiri dengan menekan tombol ENTER ,dan karakter yang di masukkan tidak akan di tampilkan di layar.

VIII. Kesimpulan Pada Modul 1 Praktikum Algoritma Struktur Data yang membahas tentang Fungsi Rekursif, dapat di simpulkan bahwa dari laporan ini adalah pada intinya adalah : 1. Suatu fungsi adalah suatu bagian dari program yang dimaksudkan untuk mengerjakan suatu tugas tertentu dan letaknya dipisahkan dari bagian program yang menggunakannya. 2. Tujuan penggunaan fungsi : a. Program menjadi terstruktur b. Dapat mengurangi pengulangan kode program. 3. Fungsi dapat di implementasikan dalam tiga bentuk : a. Pendeklarasian fungsi sebagai prototype fungsi. b. Pendefinisian fungsi. c. Pemanggilan fungsi dari program lain. 4. Selain itu Fungsi memiliki 3 jenis Fungsi dalam bahasa C++ : a. Fungsi Perpustakaan (C++ standard library functions) seperti : <math.h>, <ctype.h>, <stdio.h>. b. Fungsi Pengguna : merupakan fungsi yang dibuat & sidefinisikan sendiri oleh programmer untuk menyelesaikan suatu masalah. c. Fungsi Rekursif : merupakan dungsi yang memanggil dirinya sendiri.

XI. Daftar Pustaka Modul Praktikum Struktur Data UPN Veteran Jatim. Modul Praktikum Bahasa Pemrograman 1 UPN Veteran Jatim. www.google.com/ilmu_komputer/fungsi_rekursif/ www.jevuska.com/dasar teori fungsi rekursif/

Anda mungkin juga menyukai