Tugas Ke-2 Algoritma dan Pemprograman

Description

Penjelasan rekursi dalam notasi algoritmik, dan realisasi dalam bahasa pemprograman fungsional LISP. Rekursi dijelaskan lebih lengkap menggunakan ilustrasi gambar, sehingga lebih mudah dipahami.

Shared by: AskarSyah
Categories
Tags
-
Stats
views:
63
posted:
1/7/2012
language:
Malay
pages:
5
Document Sample
scope of work template
							Algoritma & Pemprograman                                                          halaman 1 dari 5




             Tugas Individual
       Mata Kuliah Algoritma dan
              Pemprograman
      (Hari dan Tanggal Penugasan:
        Rabu, 17 Februari 2010)                          Fakultas Ilmu Komputer
                                                     Program Studi Teknik Informatika
    “Membuat Sebuah Dokumen yang                       Universitas Dian Nuswantoro
     Menjelaskan Tentang Rekursi”                                Semarang

               Semester II
         Tahun Ajaran 2009-2010                Nama Mahasiswa        : Syah Askar Akbar
                                               NIM                   : A11.2009.05163
                                               Kelompok              : A11.4213
                                               Dosen Pengampu        : Ifan Rizqa, M. Kom.


                                           REKURSI

   Rekursi        : Suatu proses yang dapat memanggil proses itu sendiri.

                   Proses tersebut biasanya berupa prosedur ataupun fungsi. Jadi, apabila
                   proses itu berupa prosedur, maka disebut dengan prosedur rekursif
                   (prosedur yang dapat memanggil prosedur itu sendiri), begitu pula dengan
                   fungsi, yang disebut dengan fungsi rekursif (fungsi yang dapat memanggil
                   fungsi itu sendiri).

   Iterasi        : Sesuatu yang dilakukan berulang-ulang.

                   Dalam pemrograman, iterasi lebih dikenal dengan sebutan ‘perulangan’,
                   ‘repetisi’ atau ‘looping’.

                   Biasanya rekursi bersifat iteratif karena pemanggilan oleh suatu proses
                   terhadap proses itu sendiri dilakukan berulang-ulang. Sehingga, dapat
                   dikatakan bahwa rekursi adalah iterasi, tetapi iterasi bukanlah rekursi.

   Oleh karena itu, ada yang berpendapat bahwa:

                   Rekursi adalah pemanggilan yang dilakukan berulang-ulang oleh suatu
                   proses terhadap proses itu sendiri, hingga diperoleh sebuah nilai konstan
                   pada saat pemanggilan terakhir, dan kemudian melewatkan nilai konstan
                   yang telah diperoleh tersebut ke dalam proses-proses yang telah terpanggil
                   sebelumnya, dengan berurutan hingga kembali lagi pada proses yang
                   berada di awal antrian (pemanggilan pertama).  ada beberapa kasus
                   tertentu yang tidak memiliki fase balik!

                   Dari pengertian ini dapat ditarik kesimpulan bahwa, ada dua bagian
                   penting dalam rekursi, yakni: bagian terminasi (titik henti) dan bagian
                   yang memanggil dirinya sendiri.

Syah Askar Akbar (A11.2009.05163)                                                      Tugas Ke-2
Algoritma & Pemprograman                                                          halaman 2 dari 5


                     Yang menjadi pertanyaan sekarang adalah: Adakah rekursi tanpa henti?

                     Untuk menjawab pertanyaan tersebut, kita lihat kembali pengertian dari
                     rekursi, yakni “suatu proses yang dapat memanggil proses itu sendiri”.
                     Dari pengertian tersebut tidak digambarkan seberapa banyak pemanggilan
                     yang dilakukan, sehingga dapat disimpulkan bahwa, ada dua jenis rekursi,
                     yaitu:
                     1. Rekursi dengan terminasi : memiliki dua blok penting , yakni blok
                                                   terminasi dan blok pemanggilan terhadap
                                                   dirinya sendiri.
                     2. Rekursi tanpa terminasi : hanya memiliki satu blok penting saja, yakni
                                                   blok pemanggilan terhadap dirinya sendiri.

                     Poin nomor 2 disebut juga dengan rekursi tanpa henti, karena perulangan
                     akan terus terjadi hingga space memory tidak dapat menampungnya, yang
                     akibatnya berlanjut pada hang-nya komputer jika perulangan tersebut tidak
                     diinterupsi atau dihentikan.

                      poin nomor 2 bisa saja termasuk ke dalam jenis rekursi dengan
                     terminasi, jika kita mengambil blok terminasinya berupa sebuah kondisi
                     dimana space memory komputer habis terpakai.

   Contoh-contoh penggunaan rekursi:

   1. Perkalian antara dua buah bilangan bulat:

                                        1,                0

                ,                   0                     0

                                        1,                0

        JUDUL

                    PERKALIAN_2_INTEGER                               kali (a, b)

        DEFINISI DAN SPESIFIKASI

                    kali : 2 integer  integer
                    {kali (a, b) merupakan penjumlahan b sebanyak a}

        REALISASI FUNGSIONAL

                    kali (a, b) :
                           depend on a,      b
                                  a = 0      : 0
                                  a < 0      : -b + kali (a + 1, b)
                                  a > 0      : b + kali (a – 1, b)

        REALISASI LISP

                     (defun kali (a b)
                             (cond ((= a 0) 0)
                                   ((< a 0) (+ (* b -1) (kali (+ a 1) b)))
                                   ((> a 0) (+ b (kali (- a 1) b)))
                             )
                       )
                    kali

Syah Askar Akbar (A11.2009.05163)                                                      Tugas Ke-2
Algoritma & Pemprograman            halaman 3 dari 5


        APLIKASI

         (kali      0 0)
        0
         (kali      0 5)
        0
         (kali      3 0)
        0
         (kali      3 5)
        15
         (kali      3 -5)
        -15
         (kali      -3 5)
        -15
         (kali      -3 -5)
        15


        Ilustrasi:




Syah Askar Akbar (A11.2009.05163)        Tugas Ke-2
Algoritma & Pemprograman                                                      halaman 4 dari 5


   2. Faktorial dari sebuah bilangan bulat:

                                     .               1               0

                                             1                       0                    1

                                         .          1                1



        JUDUL

                  FAKTORIAL_INTEGER                       faktorial (askar)

        DEFINISI DAN SPESIFIKASI

                  faktorial : integer  integer
                  {faktorial (askar) menghasilkan 1 jika askar bernilai 0 atau 1,
                   menghasilkan askar kali faktorial (askar – 1) jika askar berharga
                   positif dan menghasilkan askar kali faktorial (-askar -1) jika
                   askar berharga negatif}

        REALISASI FUNGSIONAL

                  faktorial (askar) :
                         depend on askar
                             askar = 0 or askar = 1 : 1
                             askar < 0          : askar * faktorial (-askar - 1)
                             askar > 0          : askar * faktorial (askar - 1)

        REALISASI LISP

                   (defun faktorial (askar)
                          (cond ((= askar 0) 1)
                                ((= askar 1) 1)
                                ((> askar 1) (* askar (faktorial (- askar 1))))
                                ((< askar 1) (* askar (faktorial (- (* askar -1) 1))))
                          )
                     )
                  faktorial

         APLIKASI

                   (faktorial      -5)
                  -120
                   (faktorial      -4)
                  -24
                   (faktorial      -1)
                  -1
                   (faktorial      0)
                  1
                   (faktorial      1)
                  1
                   (faktorial      4)
                  24
                   (faktorial      5)
                  120




Syah Askar Akbar (A11.2009.05163)                                                  Tugas Ke-2
Algoritma & Pemprograman                                              halaman 5 dari 5


        Ilustrasi:




     3. Dan lain-lain…




Referensi:

1.   http://kur2003.if.itb.ac.id/file/DiktatLISP%20Feb07.pdf
2.   http://bayoe.staff.uns.ac.id/files/2009/04/5rekursi-dan-iteratif.pdf
3.   http://noorifada.files.wordpress.com/2009/08/alpro_14-rekursi.pdf
4.   http://lecturer.ukdw.ac.id/anton/download/prak-strukdat/modul%209%20-
     %20fungsi%20rekursi%20dan%20tree.doc
5.   http://www.eepis-
     its.edu/~entin/Struktur%20Data%20&%20Algoritma/buku/Data%20Structure%20-
     %20Bab%205.pdf
6.   http://dhamidin.files.wordpress.com/2008/01/modul-ii.pdf
7.   http://lecturer.eepis-its.edu/~arna/Praktikum_ASD/Prak%209.%20Rekursi.pdf
8.   http://elista.akprind.ac.id/upload/files/6257_BAB_02_PROSES_REKURSI_DAN_ITE
     RASI.pdf
9.   http://lecturer.eepis-its.edu/~arna/Modul_ASD/7.%20Rekursi.pdf



Syah Askar Akbar (A11.2009.05163)                                          Tugas Ke-2

						
Related docs
Other docs by AskarSyah
Tugas Ke-3 Algoritma dan Pemprograman
Views: 74  |  Downloads: 6
Tugas Ke-7 Algoritma dan Pemprograman
Views: 46  |  Downloads: 2
Tugas Ke-1 Kriptografi
Views: 195  |  Downloads: 10
Tugas Ke-5 Algoritma dan Pemprograman
Views: 89  |  Downloads: 0
Tugas Ke-6 Algoritma dan Pemprograman
Views: 113  |  Downloads: 5
Tugas Ke-2 Algoritma dan Pemprograman
Views: 60  |  Downloads: 0
Tugas Ke-4 Algoritma dan Pemprograman
Views: 93  |  Downloads: 5