Tugas Ke-5 Algoritma dan Pemprograman by AskarSyah

VIEWS: 73 PAGES: 6

More Info
									Algoritma & Pemprograman                                                          halaman 1 dari 6




             Tugas Individual
       Mata Kuliah Algoritma dan
              Pemprograman
      (Hari dan Tanggal Penugasan:
          Selasa, 2 Maret 2010)                         Fakultas Ilmu Komputer
                                                    Program Studi Teknik Informatika
“Menjelaskan Bagaimana Cara Membuat                   Universitas Dian Nuswantoro
              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.


                                    CARA MEMBUAT REKURSI

Sebagaimana telah dijelaskan pada Tugas 2 (Rabu, 17 Februari 2010):
        “Rekursi adalah suatu proses yang dapat memanggil proses itu sendiri.”

Pada beberapa literatur, rekursi terdiri dari dua blok penting, yaitu blok terminasi dan blok
yang dapat memanggil dirinya sendiri. Akan tetapi, jika kita menguraikannya secara lebih
spesifik, sebenarnya rekursi memiliki tiga bagian penting, diantaranya:
1. Pola penyelesaian masalah (ekspresi rekursif),
2. Basis/stopping criteria/terminasi/berhenti, dan
3. Kondisi rekursif.

Agar lebih jelas, perhatikanlah contoh-contoh penerapan rekursi berikut ini:

I.   PENJUMLAHAN ANTARA DUA BILANGAN BULAT

                                                                           0
                                     ,              1,     1               0
                                                    1,     1               0

     Dari fungsi tersebut, diperoleh spesifikasi sebagai berikut:
     1. Basis                  :
     2. Ekspresi rekursif      :               1,    1        , untuk kondisi rekursif,        0
                                               1,    1        , untuk kondisi rekursif,        0
     3. Kondisi rekursif       :     0 , jika ekspresi rekursifnya                1,       1
                                     0 , jika ekspresi rekursifnya                1,       1




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


     Algoritma (notasi fungsional)-nya adalah sebagai berikut:

         JUDUL

                  PENJUMLAHAN_2_INTEGER                                tambah (s, t)

         DEFINISI DAN SPESIFIKASI

                  tambah : 2 integer  integer
                  {tambah (s, t) akan me-return nilai s jika harga t = 0}

         REALISASI FUNGSIONAL

                  tambah (s, t) :
                         depend on s,      t
                                t = 0      : s
                                t > 0      : tambah (s + 1, t - 1)
                                t < 0      : tambah (s – 1, t + 1)

         REALISASI LISP

           (defun tambah (s        t)
                (cond ((= t         0) s)
                       ((> t        0) (tambah (+ s 1) (- t 1)))
                       ((< t        0) (tambah (- s 1) (+ t 1)))
                )
             )
         tambah

         APLIKASI

             (tambah 0 0)
         0
             (tambah 5 4)
         9
             (tambah -5 4)
         -1
             (tambah 5 -4)
         1
             (tambah -5 -4)
         -9

     Ilustrasi:
      




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


II. PERKALIAN ANTARA DUA BILANGAN BULAT

                                                      1,                0
                                    ,          0                        0
                                                     1,                 0

     Dari fungsi tersebut, diperoleh spesifikasi sebagai berikut:
     1. Basis                  :0
     2. Ekspresi rekursif      :               1,     , untuk kondisi rekursif,      0
                                                  1, , untuk kondisi rekursif,       0
     3. Kondisi rekursif       :     0 , jika ekspresi rekursifnya                  1,
                                     0 , jika ekspresi rekursifnya                    1,

     Algoritma (notasi fungsional)-nya adalah sebagai berikut:

        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

        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




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


     Ilustrasi:




                                                                                                   

III. FAKTORIAL

                                                               1              0
                                                1                             0                       1
                                                              1               1

     Dari fungsi tersebut, diperoleh spesifikasi sebagai berikut:
     1. Basis                  :1
     2. Ekspresi rekursif      :                              1
                                 , untuk kondisi rekursif,                0

                                                                      1
                                        , untuk kondisi rekursif,         1
     3. Kondisi rekursif            :              1
                                        , jika ekspresi rekursifnya                       1

                                                   0
                                        , jika ekspresi rekursifnya                           1




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


     Algoritma (notasi fungsional)-nya adalah sebagai berikut:

        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-5
Algoritma & Pemprograman                                                  halaman 6 dari 6


     Ilustrasi:




Referensi:

1. http://kur2003.if.itb.ac.id/file/DiktatLISP%20Feb07.pdf
2. Catatan kuliah. Selasa, 9 Maret 2010. Dosen Pengampu: Ifan Rizqa, M.Kom.
3. Tugas Ke-2. Rabu, 17 Februari 2010.




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

								
To top