LAPORAN RESMI PRAKTIKUM ALGORITMA STRUKTUR DATA MODUL 1 – FUNGSI REKURSIF
Sesi / Kelompok : D1 / 06
Nama Praktikan : OKTYAWAN ADITYA (1034010153) RIRIN ROSALINE T. (1034010085 ( 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
: Bahasa Pemrograman 1
Modul
: 1 (Satu)
Judul
: Fungsi Rekursif
Rombongan
: D
Group
: 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 n
Fungsi ini digunakan untuk menghitung nilai: X dengan n berupa bilangan bulat positif. Solusi dari persoalan ini: n
JIKA n = 1 MAKA X = X n
SELAIN ITU: X = X * X
n-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_tower s”, “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!”
T
Y
Perpindahan Lempeng :
towers(dari_tower,hasil_ tower,ke_tower,k-1)
Pindahkan lempeng %d dari tower %c ke tower %c
Void_towers
T
IF k==1
Y
towers(hasil_tower,ke_ tower,dari_tower,k-1) Pindahkan lempeng 1 dari tower %c ke tower %c
END
V.
Source Code #include #include
void towers(char dari_tower,char ke_tower,char hasil_tower, int k) { if(k==1) { printf("\n
- Pindahkan lempeng 1 dari tower %c ke tower
%c",dari_tower,ke_tower); 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("||
** Tower Of Hanoi ** ** LAPRES A.S.D Modul 1 - Sesi D1 **
||\n"); ||\n");
printf("||================================================||\n"); printf("
=> Inputkan berapa banyak lempeng (3-5) : ");
scanf("%d",&lempeng); printf("||================================================||\n"); if(lempeng>=3 && lempeng<=5) { printf("
=> Perpindahan lempeng :\n");
towers('A','C','B',lempeng); return; getch(); } else {
printf("||
Angka yang anda inputkan tidak sesuai dengan
||\n"); printf("||
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 #include
Source code diatas merupakan Library (kamus) dalam syntax bhs. Pemrograman C++. #include, merupakan file library header yang harus di sertakan pada penggunaan fungsi printf() & scanf(). #include, 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("
=> Perpindahan lempeng :\n");
towers('A','C','B',lempeng); return; getch(); } else { printf("||
Angka yang anda inputkan tidak sesuai dengan
||\n");
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 : , , . 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/