Laporan Resmi Rekursif Hanoi

download Laporan Resmi Rekursif Hanoi

of 19

description

Laporan ini berisi tentang cara mempraktekkan Rekursif

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.