Laporan Resmi Rekursif Hanoi
-
Upload
trinsastrianisidauruk -
Category
Documents
-
view
170 -
download
3
description
Transcript of Laporan Resmi Rekursif Hanoi
-
LAPORAN PRAKTIKUM RESMI
REKRUSIF ( FAKTORIAL, FIBONACCY, HANOI )
Disusun oleh :
Nama : Trins Astriani Br Sidauruk
NIM : 201302011
Dosen pengampu :
Yosef Murya Kusuma Ardhana.S.T., M.Kom
JURUSAN KOMPTERISASI AKUNTANSI
SEKOLAH TINGGI ILMU KOMPUTER YOS SUDARSO
PURWOKERTO
2014
-
BAB I
TEORI DASAR
A. INPUT DATA
Menurut modul praktikkum Logika dan Pemrograman yang disusun oleh Yosef
Murya Kusuma Ardhana. S.T., M.Kom. Modul program C++ disebut fungsi atau
fungstion. Program C++ ditulis dengan mengkombinasikan fungsi baru yang ditulis oleh
programmer dengan fungsi yang tersedia di dalam pustaka atau library. Contohnya cin,
cout, printf, scanf dan lain-lain.
Fungsi rekrusif adalah fungsi yang memanggil dirinya sendiri. Fungsi ini akan terus
berjalan sampai kondisi berhenti terpenuhi, oleh karena itu dalam sebuah fungsi rekrusif
perlu terdapat 2 blok penting, yaitu blok yang menjadi titik berhenti dari sebuah proses
rekrusi dan blok yang memanggil dirinya sendiri.
Penggunaan #include
a. Fungsi scanf( )
Fungsi scanf( ) digunakan untuk menginput data yang berupa data numerik,
karakter dan string dengan format tertentu.
Format tersebut antara lain sebagai berikut :
%c yaitu membaca sebuah karakter
%s yaitu membaca sebuah string
%i yaitu membaca sebuah integer ( bilangan bulat )
%f atau %e yaitu membaca sebuah real ( bilangan pecahan )
%x yaitu membaca sebuah bilangan hexadecimal
%o yaitu membaca sebuah bilangan octal
%u yaitu membaca bilangn tak bertanda
b. Fungsi gets( )
Fungsi gets( ) dipergunakan untuk memasukkan data yang memiliki type
karakter dan tidak dapat digunakan untuk memasukkan data yang memiliki
type numerik dan tidak memiliki format penentu.
-
c. Fungsi getchar( )
Fungsi getchar( ) digunakan untuk membaca data yang memiliki type
karakter.
d. Fungsi getch( ) dan getche( )
Fungsi getch( ) dan getche( ) digunakan untuk membaca data yang bertype
karakter. Karakter yang dimasukkan tidak perlu diakhiri dengan menekan
tombol ENTER.
Jika menggunakan fungsi getch( ) karakter yang dimasukkan akan
ditampilkan pada layar. Sedangkan fungsi getche( ) karakter yang dimasukkan
tidak ditampilkan pada layar.
Penggunaan #include
a. cin>>var
Dalam format cin>> dipergunakan untuk menginput data bertype numerik,
karakter dan string.
b. Fungsi cin.get (var,sizeof(var))
Dalam penggunaan fungsi cin.get(var, sizeof(var)) yaitu untuk
menginput string lebih dari satu kata, namun akan mengakibatkan kesalahan
jika dalam satu program menggunakan perintah ini lebih dari satu kali. Untuk
mengatasi permasalahan tersebut dapat menggunakan perintah cin.getline( ).
B. OUTPUT DATA
Penggunaan #include
a. Menampilkan data ke layar
Fungsi printf( ) digunakan untuk menampilkan semua jenis data numerik
dan karakter.
Fungsi puts( ) digunakan untuk menampilkan data karakter atau string.
Fungsi putchar( ) digunakan untuk menampilakn sebuah karakter atau
string.
-
b. Menampilkan float atau bilangan pecahan
Bentuk umum :
printf(%m.nf,argument);
m : panjang range
n : jumlah digit dibelakang koma
argument : variable atau nilai yang ditampilkan
Contoh :
printf(%5.3,nilai);
contoh diatas diartikan variable nilai akan ditampilkan sebanyak 5 digit
dengan 3 angaka dibelakang koma.
Penggunaan #include
a. Menampilakan data ke layar
cout
-
C. PENERAPAN REKRUSIF
a. Mencetak nilai dari parameter
Fungsi ini mencetak nilai dari parameter 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.
b. Fungsi pangkat
Fungsi ini digunakan untuk menghitung nilai Xn dengan n berupa bilangan bulat
positif.
Contoh :
Menghitung 10 pangkat n atau 10n dengan menggunakan fungsi rekrusif. Secara
notasi pemrograman dapat ditulis :
100 = 1..........................................(1)
10n = 10
0-1.....................................(2)
103 = 10*10
2
102 = 10*10
1
101 = 10*10
0
100 = 1
Untuk menghitung 10n, maka fungsi harus memanggil nilai 10
n-1 yang telah
diperoleh.
-
c. Faktorial
Faktorial merupakan contoh sederhana dari proses rekrusif yaitu proses
menghitung nilai faktorial dari bilangan bulat positif.
Contoh penulisan faktorial :
0! = 1
n! = n*( n-1 )! Untuk n>0
Maka dapat diilustrasikan sebagai berikut :
Faktorial(4)=4*faktorial (3)
Faktorial(3) =3*faktorial(2)
Faktorial(2)=2*faktorial(1)
Faktorial(1)=1*faktorial(0)
Nilai awal
d. Fibonaccy
Fibonaccy merupakan proses penyusunan deret dengan menggunakan rumus :
1. n = 1 atau n = 2, maka fibo (n) = 1
2. n > 2, maka fibo (n) = fibo(n-1) + fibo(n-2)
Maka akan didapat :
Fibo(5) = fibo(4) + fibo(3)
Fibo(4) = fibo(3) + fibo(2)
Fibo(3) = fibo(2) = fibo(1)
Nilai awal
-
e. Hanoi
Menara Hanoi atau sering disebut dengan hanoi merupakan persoalan rekrusif yang
paling dikenal dan pertama kali ditemukan oleh Pendeta Budha di Hanoi.
Persoalan rekrusif ini merupakan persoalan klasik untuk memindahkan tumpukan
piring atau cakram dari tiang asal ke tiang tujuan dengan bantuan sebuah tiang
perantara.
Tiang asal Tiang perantara Tiang tujuan
-
BAB II
PENJELASAN PROGRAM
A. Latihan Praktikum
Pada bab ini akan membahas tentang listing program pada bagian modul yang telah
digunakan untuk latihan praktikum. Latihan yang dilakukan mencakup pada Listing
Program 2.7, Listing Program 2.8 dan Listing Program 2.9.
Listing Program 2.7
Program menghitung factorial :
-
Output Program 2.7
Hasil output dari Program 2.7 adalah sebagai berikut :
Listing Program 2.8
Program menghitung fibonaccy :
-
Output Program 2.8
Hasil output dari Program 2.8 adalah sebagai berikut :
-
Listing Program 2.9
Program hanoi :
-
Output Program 2.9
Hasil output dari Program 2.9 adalah sebagai berikut :
-
Penjelasan Program 2.7, Program 2.8 dan Program 2.9.
Berikut penjelasan dari Penjelasan Program 2.7, Program 2.8, dan Program 2.9 :
1. Tanda yang diawali dengan /* dan diakhiri tanda */ merupakan script untuk
membuat sebuah komentar pada pemrograman C++ yang jika didalamnya terdapat
sebuah perintah atau teks maka ketika program dirunning atau dijalankan tidak akan
dibaca oleh compiler.
2. #include atau disebut sebagai pengarah preprocessor #include berfungsi untuk
menginstruksikan compiler untuk menyertakan berkas C++ sumber yang lain sebelum
kompilasi dimulai
3. berfungsi sebagai suatu input dan output. Seperti pada teori dasar sintaks
C++, ada cout untuk menampilkan dan cin untuk menginputkan.
4. berfungsi sebagai suatu input dan output. Seperti pada teori dasar sintaks
C++, ada cout untuk menampilkan dan cin untuk menginputkan dan untuk
menampilkan data berupa bilangan pecahan dan dibutuhkan perintah setprecision(n)
yang berarti bahwa n menyatakan jumlah kepresisian.
5. (;) digunakan untuk menyatakan suatu pernyataan. Suatu atau beberapa ekspresi yang
diakhiri dengan tanda titik koma.
6. {} (blok pernyataan) terjadi dari satu atau beberapa pernyataan yang dirancang untuk
melakukan proses tertentu. Blok fungsi dimulai dengan nama fungsi dan diikuti tanda
() dan tanda {dan diakhiri tanda}.
7. \n digunakan untuk mengganti garis baru.
8. * digunakan sebagai pengali bilangan yang satu dengan yang lain.
9. digunakan untuk digunakan untuk menginput data berupa data numeric,
karakter dan string.
13. Char digunakan untuk karakter.
14. Int digunakan untuk Integer (bilangan bulat).
15. If digunakan untuk satu pernyataan.
16. If else digunakan untuk minimal dua pernyataan
-
Tugas Praktikum
Listing Program Tugas Praktikum 1
1. Membuat program untuk menentukan bilangan yang terbesar dan bilangan terkecil
dari 2 buah bilangan yang diinputkan :
-
Output Program Tugas Praktikum 1
Hasil output dari Program Tugas Praktikum 1 adalah sebagai berikut :
-
2. Membuat program untuk menentukan bilangan yang terbesar dan bilangan terkecil
dari 4 buah bilangan yang diinputkan :
Listing Program Tugas Praktikum 2
-
Output Program Tugas Praktikum 2
Hasil output dari Program Tugas Praktikum 2 adalah sebagai berikut :
-
Penjelasan Tugas Praktikum 1 dan Program Tugas Praktikum 2
Berikut penjelasan dari Program Tugas Praktikum 1 dan Program Tugas Praktikum 2 :
1. Tanda yang diawali dengan /* dan diakhiri tanda */ merupakan script untuk
membuat sebuah komentar pada pemrograman C++ yang jika didalamnya terdapat
sebuah perintah atau teks maka ketika program dirunning atau dijalankan tidak akan
dibaca oleh compiler.
2. #include atau disebut sebagai pengarah preprocessor #include berfungsi untuk
menginstruksikan compiler untuk menyertakan berkas C++ sumber yang lain sebelum
kompilasi dimulai
3. berfungsi sebagai suatu input dan output. Seperti pada teori dasar sintaks
C++, ada cout untuk menampilkan dan cin untuk menginputkan.
4. (;) digunakan untuk menyatakan suatu pernyataan. Suatu atau beberapa ekspresi yang
diakhiri dengan tanda titik koma.
5. {} (blok pernyataan) terjadi dari satu atau beberapa pernyataan yang dirancang untuk
melakukan proses tertentu. Blok fungsi dimulai dengan nama fungsi dan diikuti tanda
() dan tanda {dan diakhiri tanda}.
6. \n digunakan untuk mengganti garis baru.
7. * digunakan sebagai pengali bilangan yang satu dengan yang lain.
8. digunakan untuk digunakan untuk menginput data berupa data numeric,
karakter dan string.
12. Char digunakan untuk karakter.
13. Int digunakan untuk Integer (bilangan bulat).
14. If digunakan untuk satu pernyataan.
15. If else digunakan untuk minimal dua pernyataan.
-
BAB III
KESIMPULAN
Fungsi rekursif adalah fungsi yang memanggil dirinya sendiri. Fungsi ini akan terus
berjalan sampai kondisi berhenti terpenuhi, oleh karena itu dalam sebuah fungsi rekrusif
perlu terdapat 2 blok penting, yaitu blok yang menjadi titik berhenti dari sebuah proses
rekrusi dan blok yang memanggil dirinya sendiri.
Program C++ yang ditulis dengan mengkombinasikan fungsi baru yang tersedia didalam
pustaka atau library, komputer tidak dapat membaca sehingga tidak bisa menampilkan hasil
outputnya pada layar dengan kata lain program lama tidak bisa dibaca oleh komputer dengan
compiler baru. Dengan memahami fungsi-fungsi dan kegunaan dari sebuah fungsi pada
pemrograman C++ kita bisa menyelesaikan sebuah program sesuia dengan tujuan, dan dapat
kita mengerti juga karena sifat dari pemrograman C++ adalah case sensitive yang artinya
penulisan salah penulisan satu huruf atau satu angka saja di artikan berbeda oleh komputer.