Tugas Ke-4 Algoritma dan Pemprograman

Document Sample
Tugas Ke-4 Algoritma dan Pemprograman Powered By Docstoc
					Algoritma & Pemprograman                                                     halaman 1 dari 14




              Tugas Individual
        Mata Kuliah Algoritma dan
               Pemprograman
       (Hari dan Tanggal Penugasan:
         Rabu, 24 Februari 2010)
                                                       Fakultas Ilmu Komputer
                                                   Program Studi Teknik Informatika
 “Mengerjakan Soal-Soal Latihan Sesuai
  Dengan Notasi Fungsional (10 Soal –                Universitas Dian Nuswantoro
                                                              Semarang
        Lanjutan Tugas Ke-3)”

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


SOAL TUGAS

1.    Perhatikan format jam digital yang terletak di bagian kanan bawah dari layar komputer
      yang Anda gunakan! Konversilah format tersebut menjadi KUADRAN & KUADRAN!
      Gunakan sistem 24 jam, CAR, CDR, dan ekspresi kondisional dalam notasi algoritma
      fungsionalnya! (menjadi no.40)
2.    Cari keberadaan bilangan genap dalam sebuah list yang digunakan seperti pada no.5
      dan no.6 pada Tugas 3! (menjadi no.41 dan no.42)
3.    Cari keberadaan bilangan ganjil dalam sebuah list yang digunakan seperti pada no.5
      dan no.6 pada Tugas 3! (menjadi no.43 dan no.44)
4.    Carilah berapa banyak jumlah bilangan ganjil dan genap dari soal no.41, no.42, no.43,
      dan no.44! (menjadi no.45, no.46, no.47, dan no.48)
5.    Carilah berapa banyak jumlah bilangan genap dari empat buah bilangan! (menjadi
      no.49)

40.    JUDUL

                KONVERSI_WAKTU                            KonversiWaktu (JAM, MENIT)

       DEFINISI DAN SPESIFIKASI

                SetJam              : 1 integer  I, II, III, IV

                {SetJam (JAM) menginterpretasikan konstanta integer jam ke dalam
                suatu kuadran dengan ketentuan:
                I jika (0 < JAM < 3) atau (12 < JAM < 15),
                II jika (3 < JAM < 6) atau (15 < JAM < 18),
                III jika (6 < JAM < 9) atau (18 < JAM < 21), dan
                IV jika (9 < JAM < 12) atau (21 < JAM < 24).}

                SetMenit            : 1 integer  I, II, III, IV

                {SetJam (MENIT) menginterpretasikan konstanta integer menit ke
                Dalam suatu kuadran dengan ketentuan:
                I jika 0 < JAM < 15, II jika 15 < JAM < 30,
                III jika 30 < JAM < 45, dan IV jika 45 < JAM < 60.}

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


                KonversiWaktu             : 2 integer  “KUADRAN ? & KUADRAN ?”

                {KonversiWaktu (JAM MENIT) menginterpretasikan kuadran dari jam
                Dan menit ke dalam format “KUADRAN ? & KUADRAN ?”.}

       REALISASI FUNGSIONAL

                SetJam (JAM)              :
                                    depend on JAM
                                          (0 < JAM   <   3) or (12 < JAM < 15)        :   I
                                          (3 < JAM   <   6) or (15 < JAM < 18)        :   II
                                          (6 < JAM   <   9) or (18 < JAM < 21)        :   III
                                          (9 < JAM   <   12) or (21 < JAM < 24)       :   IV

                SetMenit (MENIT)   :
                             depend on MENIT
                                   0 < MENIT < 15               :   I
                                   15 < MENIT < 30              :   II
                                   30 < MENIT < 45              :   III
                                   45 < MENIT < 60              :   IV

                KonversiWaktu (JAM, MENIT) :
                             let KuadranJam = SetJam (JAM)
                                 KuadranMenit = SetMenit (MENIT)
                             in (“KUADRAN” KuadranJam ‘&’ “KUADRAN” KuadranMenit)

       REALISASI LISP

                 (defun SetJam (JAM)
                       (cond ((or (and (> JAM 0) (< JAM 3))
                                    (and (> JAM 12) (< JAM 15))) 'I)
                             ((or   (and (> JAM 3) (< JAM 6))
                                    (and (> JAM 15) (< JAM 18))) 'II)
                             ((or (and (> JAM 6) (< JAM 9))
                                    (and (> JAM 18) (< JAM 21))) 'III)
                             ((or (and (> JAM 9) (< JAM 12))
                                    (and (> JAM 21) (< JAM 24))) 'IV)
                       )
                   )
                SetJam
                 (defun SetMenit (MENIT)
                       (cond ((and (> MENIT 0) (< MENIT 15)) 'I)
                             ((and (> MENIT 15) (< MENIT 30)) 'II)
                             ((and (> MENIT 30) (< MENIT 45)) 'III)
                             ((and (> MENIT 45) (< MENIT 60)) 'IV)
                       )
                   )
                SetMenit
                 (defun KonversiWaktu (JAM MENIT)
                       (let ((KuadranJam (SetJam JAM))
                               (KuadranMenit (SetMenit MENIT))
                             )
                             (list 'KUADRAN KuadranJam '& 'KUADRAN KuadranMenit)
                       )
                   )
                KonversiWaktu

       APLIKASI

                 (konversiwaktu (car '(13 35)) (cadr '(13 35)))
                (KUADRAN I & KUADRAN III)
                 (konversiwaktu (car '(15 45)) (cadr '(15 45)))
                (KUADRAN NIL & KUADRAN NIL)
                 (konversiwaktu (car '(22 25)) (cadr '(22 25)))
                (KUADRAN IV & KUADRAN II)

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


41.    JUDUL

                ADAKAH_GENAP_VERSI_1                               AnyEven (satu, dua)

       DEFINISI DAN SPESIFIKASI

                AnyEven             : 2 integer  “ADA”, “TIDAK ADA”, “ADA ANGKA NOL”

                {AnyEven (satu, dua) bernilai “ADA” jika satu mod 2 sama dengan
                nol,atau dua mod 2 sama dengan nol. Bernilai “TIDAK ADA” jika
                kondisi tersebut tidak ada yang terpenuhi. Dimana, satu   0 dan
                dua   0.}

       REALISASI FUNGSIONAL

                AnyEven (satu, dua):
                depend on satu, dua
                      (satu = 0) or (dua = 0) : “ADA ANGKA NOL”
                      else let     M1 = satu mod 2
                                   M2 = dua mod 2
                             in    depend on M1, M2
                                         (M1 = 0) or (M2 = 0)            : “ADA”
                                         else                            : “TIDAK ADA”

       REALISASI LISP

                 (defun AnyEven (satu dua)
                      (cond ((or (= satu 0) (= dua 0)) "ADA ANGKA NOL")
                            (t    (let ((M1 (mod satu 2))
                                           (M2 (mod dua 2))
                                         )
                                         (cond ((or (= M1 0) (= M2 0)) "ADA")
                                                (t "TIDAK ADA")
                                         )
                                  )
                            )
                      )
                   )
                AnyEven

       APLIKASI

                 (AnyEven -9 -4)
                “ADA”
                 (AnyEven -3 0)
                “ADA ANGKA NOL”
                 (AnyEven 3 9)
                “TIDAK ADA”



42.    JUDUL

                ADAKAH_GENAP_VERSI_2                        AnyEvenV2 (satu, dua, tiga)

       DEFINISI DAN SPESIFIKASI

                AnyEven             : 2 integer  “ADA”, “TIDAK ADA”

                {AnyEven (satu, dua) bernilai “ADA” jika salah satu parameternya,
                yakni satu atau dua, habis dibagi dengan angka 2.
                Bernilai “TIDAK ADA” jika tidak satu pun dari kedua parameter
                tersebut habis dibagi dengan angka 2. Dimana, satu   0 dan
                dua   0.}


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


                AnyEvenV2           : 3 integer  “ADA”, “TIDAK ADA”, “ADA ANGKA NOL”

                {AnyEvenV2 (satu, dua, tiga) bernilai “ADA” jika salah satu
                parameternya, yakni AnyEven (satu, dua) atau tiga, bernilai
                benar. Bernilai “TIDAK ADA” jika tidak ada satu pun dari ketiga
                parameter tersebut yang memenuhi syarat. Dimana, satu   0,
                dua  0, dan tiga    0.}

       REALISASI FUNGSIONAL

                AnyEven (satu, dua):
                      let    M1 = satu mod 2
                             M2 = dua mod 2
                      in     depend on M1, M2
                                   (M1 = 0) or (M2 = 0)            : “ADA”
                                   else                            : “TIDAK ADA”

                AnyEvenV2     (satu, dua, tiga):
                depend on     satu, dua, tiga
                  (satu =     0) or (dua = 0) or (tiga = 0) : “ADA ANGKA NOL”
                  else
                       let     M3 = tiga mod 2
                       in      depend on AnyEven (satu, dua) , tiga
                                 (AnyEven (satu, dua) = “ADA”) or (M3 = 0) : “ADA”
                                 else : “TIDAK ADA”

       REALISASI LISP

                 (defun AnyEven (satu dua)
                       (let ((M1 (mod satu 2))
                               (M2 (mod dua 2))
                             )
                             (cond ((or (= M1 0) (= M2 0)) "ADA")
                                    (t "TIDAK ADA")
                             )
                       )
                   )
                AnyEven
                 (defun AnyEvenV2 (satu dua tiga)
                     (cond ((or (= satu 0) (= dua 0) (= tiga 0)) “ADA ANGKA NOL”)
                         (t
                             (let ((M3 (mod tiga 2))
                                    )
                                    (cond ((or (equal (AnyEven satu dua) "ADA")
                                            (= M3 0))
                                           "ADA")
                                           (t     "TIDAK ADA")
                                    )
                             )
                         )
                     )
                   )
                AnyEvenV2

       APLIKASI

                 (AnyEvenV2 2        3 5)
                “ADA”
                 (AnyEvenV2 3        0 5)
                “ADA ANGKA NOL”
                 (AnyEvenV2 3        5 7)
                “TIDAK ADA”
                 (AnyEvenV2 1        2 4)
                “ADA”


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


43.    JUDUL

                ADAKAH_GANJIL_VERSI_1                             AnyOdd (1st, 2nd)

       DEFINISI DAN SPESIFIKASI

                AnyOdd              : 2 integer  “ADA”, “TIDAK ADA”

                {AnyOdd (1st, 2nd) bernilai “ADA” jika 1st mod 2 sama dengan
                satu,atau 2nd mod 2 sama dengan satu. Bernilai “TIDAK ADA” jika
                kondisi tersebut tidak ada yang terpenuhi.}

       REALISASI FUNGSIONAL

                AnyOdd (1st, 2nd):
                             let   M1 = 1st mod 2
                                   M2 = 2nd mod 2
                             in    depend on M1, M2
                                         (M1 = 1) or (M2 = 1)           : “ADA”
                                         else                           : “TIDAK ADA”

       REALISASI LISP

                 (defun AnyOdd (1st 2nd)
                                  (let ((M1 (mod 1st 2))
                                           (M2 (mod 2nd 2))
                                         )
                                         (cond ((or (= M1 1) (= M2 1)) "ADA")
                                                (t "TIDAK ADA")
                                         )
                                  )
                   )
                AnyOdd

       APLIKASI

                 (AnyOdd -9 -4)
                “ADA”
                 (AnyOdd -3 0)
                “ADA”
                 (AnyOdd 2 4)
                “TIDAK ADA”



44.    JUDUL

                ADAKAH_GANJIL_VERSI_2                       AnyOddV2 (1st, 2nd, 3rd)

       DEFINISI DAN SPESIFIKASI

                AnyOdd              : 2 integer  “ADA”, “TIDAK ADA”

                {AnyOdd (1st, 2nd) bernilai “ADA” jika salah satu parameternya,
                yakni 1st atau 2nd, menyisakan 1 jika dibagi dengan angka 2.
                Bernilai “TIDAK ADA” jika tidak satu pun dari kedua parameter
                tersebut menyisakan 1 jika dibagi dengan angka 2.}

                AnyOddV2            : 3 integer  “ADA”, “TIDAK ADA”

                {AnyOddV2 (1st, 2nd, 3rd) bernilai “ADA” jika salah satu
                parameternya, yakni AnyOdd (1st, 2nd) atau 3rd, bernilai
                benar. Bernilai “TIDAK ADA” jika tidak ada satu pun dari ketiga
                parameter tersebut yang memenuhi syarat.}



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


       REALISASI FUNGSIONAL

                AnyOdd (1st, 2nd):
                             let   M1 = 1st mod 2
                                   M2 = 2nd mod 2
                             in    depend on M1, M2
                                         (M1 = 1) or (M2 = 1) : “ADA”
                                         else : “TIDAK ADA”

                AnyOddV2 (1st, 2nd, 3rd):
                      let M3 = 3rd mod 2
                      in depend on AnyOdd (1st, 2nd) , 3rd
                             (AnyOdd (1st, 2nd) = “ADA”) or (M3 = 1) : “ADA”
                             else : “TIDAK ADA”

       REALISASI LISP

                 (defun AnyOdd (1st 2nd)
                                  (let ((M1 (mod 1st 2))
                                           (M2 (mod 2nd 2))
                                         )
                                         (cond ((or (= M1 1) (= M2 1)) "ADA")
                                                (t "TIDAK ADA")
                                         )
                                  )
                   )
                AnyOdd
                 (defun AnyOddV2 (1st 2nd 3rd)
                            (let ((M3 (mod 3rd 2))
                                  )
                                  (cond ((or (equal (AnyOdd 1st 2nd) “ADA”)
                                               (= M3 1)) “ADA”)
                                         (t “TIDAK ADA”)
                                  )
                            )
                   )
                AnyOddV2

       APLIKASI

                 (AnyOddV2         2 3 5)
                “ADA”
                 (AnyOddV2         3 0 5)
                “ADA”
                 (AnyOddV2         2 4 6)
                “TIDAK ADA”
                 (AnyOddV2         1 2 4)
                “ADA”
                 (AnyOddV2         0 0 0)
                “TIDAK ADA”




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


45.    JUDUL

                JUMLAH_GENAP_VERSI_1                  JumlahGenap (1st, 2nd)

       DEFINISI DAN SPESIFIKASI

                JumlahGenap : 2 integer  integer, “ADA ANGKA NOL”

                {JumlahGenap (1st, 2nd) bernilai 1 jika hanya salah   satu
                parameternya yang berupa bilangan genap. Bernilai 2   jika kedua
                parameternya adalah bilangan genap. Bernilai 0 jika   keduanya
                bukan merupakan bilangan genap. Bernilai “ADA ANGKA   NOL” jika ada
                angka nol yang menjadi parameternya}

       REALISASI FUNGSIONAL

                JumlahGenap (1st, 2nd):
                   depend on 1st, 2nd
                      (1st = 0) or (2nd = 0)    : “ADA ANGKA NOL”
                      else:
                         let Counter = 0
                              M1 = 1st mod 2
                              M2 = 2nd mod 2
                         in depend on M1
                                 M1 = 0 : let Counter = Counter + 1
                                           in depend on M2
                                                   M2 = 0 : Counter + 1
                                                   else   : Counter + 0
                                 else   : depend on M2
                                              M2 = 0 : Counter + 1
                                              else    : Counter + 0

       REALISASI LISP

                 (defun JumlahGenap (1st 2nd)
                      (cond ((or (= 1st 0) (= 2nd 0)) “ADA ANGKA NOL”)
                              (t  (let ((Counter 0)
                                           (M1 (mod 1st 2))
                                           (M2 (mod 2nd 2))
                                         )
                                         (cond ((= M1 0)
                                                  (let ((Counter (+ Counter 1))
                                                       )
                                                       (cond ((= M2 0)
                                                              (+ Counter 1))
                                                             (t     (+ Counter 0))
                                                       )
                                                  ))
                                                (t     (cond ((= M2 0)
                                                              (+ Counter 1))
                                                             (t     (+ Counter 0))
                                                       )
                                                )
                                         )
                                  )
                            )
                      )
                   )
                JumlahGenap




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


       APLIKASI

                 (JumlahGenap      0 1)
                “ADA ANGKA NOL”
                 (JumlahGenap      2 0)
                “ADA ANGKA NOL”
                 (JumlahGenap      1 2)
                1
                 (JumlahGenap      2 3)
                1
                 (JumlahGenap      2 4)
                2
                 (JumlahGenap      3 5)
                0



46.    JUDUL

                JUMLAH_GENAP_VERSI_2                  JumlahGenap (1st, 2nd, 3rd)

       DEFINISI DAN SPESIFIKASI

                JumlahGenap : 2 integer  integer

                {JumlahGenap (1st, 2nd) bernilai 1 jika hanya salah satu
                parameternya yang berupa bilangan genap. Bernilai 2 jika kedua
                parameternya adalah bilangan genap. Bernilai 0 jika keduanya
                bukan merupakan bilangan genap.}

                JumlahGenapV2 : 3 integer  integer, “ADA ANGKA NOL”

                {hasil dari JumlahGenap (1st, 2nd) akan bertambah 1 jika
                parameter 3rd merupakan bilangan genap. Jika tidak demikian,
                hasilnya tetap. Bernilai “ADA ANGKA NOL” jika ada angka nol yang
                menjadi parameternya.}

       REALISASI FUNGSIONAL

                JumlahGenap (1st, 2nd):
                         let Counter = 0
                              M1 = 1st mod 2
                              M2 = 2nd mod 2
                         in depend on M1
                                 M1 = 0 : let Counter = Counter + 1
                                           in depend on M2
                                                   M2 = 0 : Counter + 1
                                                   else   : Counter + 0
                                 else   : depend on M2
                                              M2 = 0 : Counter + 1
                                              else    : Counter + 0

                JumlahGenapV2 (1st, 2nd, 3rd):
                      depend on 1st, 2nd, 3rd
                             (1st = 0) or (2nd = 0) or (3rd = 0) : “ADA ANGKA NOL”
                             else:
                                   let Counter = JumlahGenap (1st, 2nd)
                                       M3 = 3rd mod 2
                                   in depend on M3
                                          M3 = 0 : Counter + 1
                                          else   : Counter + 0




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


       REALISASI LISP

                 (defun JumlahGenap (1st 2nd)
                      (let ((Counter 0)
                              (M1 (mod 1st 2))
                              (M2 (mod 2nd 2))
                            )
                            (cond ((= M1 0)    (let          ((Counter (+ Counter 1))
                                                             )
                                                             (cond ((= M2 0)
                                                                    (+ Counter 1))
                                                                   (t     (+ Counter 0))
                                                             )
                                                       )
                                         )
                                         (t      (cond ((= M2 0) (+ Counter 1))
                                                       (t    (+ Counter 0))
                                                 )
                                         )
                                    )
                      )
                   )
                JumlahGenap
                 (defun JumlahGenapV2 (1st 2nd 3rd)
                      (cond ((or (= 1st 0) (= 2nd 0) (= 3rd 0)) “ADA ANGKA NOL”)
                             (t   (let ((Counter (JumlahGenap 1st 2nd))
                                           (M3 (mod 3rd 2))
                                         )
                                         (cond ((= M3 0) (+ Counter 1))
                                                (t     (+ Counter 0))
                                         )
                                  )
                             )
                      )
                   )
                JumlahGenapV2

       APLIKASI

                 (JumlahGenapV2        0 0 0)
                “ADA ANGKA NOL”
                 (JumlahGenapV2        1 2 3)
                1
                 (JumlahGenapV2        1 2 4)
                2
                 (JumlahGenapV2        1 5 3)
                0
                 (JumlahGenapV2        2 4 6)
                3
                 (JumlahGenapV2        1 3 4)
                1
                 (JumlahGenapV2        2 6 3)
                2




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


47.    JUDUL

                JUMLAH_GANJIL_VERSI_1                        JumlahGanjil (1st, 2nd)

       DEFINISI DAN SPESIFIKASI

                JumlahGanjil             : 2 integer  integer, “ADA ANGKA NOL”

                {JumlahGanjil (1st, 2nd) bernilai 1 jika hanya salah satu
                parameternya yang berupa bilangan ganjil. Bernilai 2 jika kedua
                parameternya adalah bilangan ganjil. Bernilai 0 jika keduanya
                bukan merupakan bilangan ganjil.}

       REALISASI FUNGSIONAL

                JumlahGanjil        (1st, 2nd):
                   depend on        1st, 2nd
                      (1st =        0) or (2nd = 0)   : “ADA ANGKA NOL”
                      else:
                         let        Counter = 0
                                    M1 = 1st mod 2
                                    M2 = 2nd mod 2
                             in     depend on M1
                                       M1 = 1 : let Counter = Counter + 1
                                                 in depend on M2
                                                         M2 = 1 : Counter + 1
                                                         else   : Counter + 0
                                       else   : depend on M2
                                                    M2 = 1 : Counter + 1
                                                    else    : Counter + 0

       REALISASI LISP

                 (defun JumlahGanjil (1st 2nd)
                      (cond ((or (= 1st 0) (= 2nd 0)) “ADA ANGKA NOL”)
                               (t (let ((Counter 0)
                                           (M1 (mod 1st 2))
                                           (M2 (mod 2nd 2))
                                         )
                                         (cond ((= M1 1)
                                                  (let ((Counter (+ Counter 1))
                                                       )
                                                       (cond ((= M2 1)
                                                              (+ Counter 1))
                                                             (t     (+ Counter 0))
                                                       )
                                                  ))
                                                (t     (cond ((= M2 1)
                                                              (+ Counter 1))
                                                             (t     (+ Counter 0))
                                                       )
                                                )
                                         )
                                  )
                             )
                      )
                   )
                JumlahGanjil




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


       APLIKASI

                 (JumlahGanjil     0 1)
                “ADA ANGKA NOL”
                 (JumlahGanjil     2 0)
                “ADA ANGKA NOL”
                 (JumlahGanjil     1 2)
                1
                 (JumlahGanjil     2 3)
                1
                 (JumlahGanjil     2 4)
                0
                 (JumlahGanjil     3 5)
                2



48.    JUDUL

                JUMLAH_GANJIL_VERSI_2           JumlahGanjil (1st, 2nd, 3rd)

       DEFINISI DAN SPESIFIKASI

                JumlahGanjil : 2 integer  integer

                {JumlahGanjil (1st, 2nd) bernilai 1 jika hanya salah satu
                parameternya yang berupa bilangan ganjil. Bernilai 2 jika kedua
                parameternya adalah bilangan ganjil. Bernilai 0 jika keduanya
                bukan merupakan bilangan ganjil.}

                JumlahGanjilV2 : 3 integer  integer, “ADA ANGKA NOL”

                {hasil dari JumlahGanjil (1st, 2nd) akan bertambah 1 jika
                parameter 3rd merupakan bilangan ganjil. Jika tidak demikian,
                hasilnya tetap. Bernilai “ADA ANGKA NOL” jika ada angka nol yang
                menjadi parameternya.}

       REALISASI FUNGSIONAL

                JumlahGanjil (1st, 2nd):
                         let Counter = 0
                              M1 = 1st mod 2
                              M2 = 2nd mod 2
                         in depend on M1
                                 M1 = 1 : let Counter = Counter + 1
                                           in depend on M2
                                                   M2 = 1 : Counter + 1
                                                   else   : Counter + 0
                                 else   : depend on M2
                                              M2 = 1 : Counter + 1
                                              else    : Counter + 0

                JumlahGanjilV2 (1st, 2nd, 3rd):
                      depend on 1st, 2nd, 3rd
                             (1st = 0) or (2nd = 0) or (3rd = 0) : “ADA ANGKA NOL”
                             else:
                                   let Counter = JumlahGanjil (1st, 2nd)
                                       M3 = 3rd mod 2
                                   in depend on M3
                                          M3 = 1 : Counter + 1
                                          else   : Counter + 0




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


       REALISASI LISP

                 (defun JumlahGanjil        (1st 2nd)
                      (let ((Counter         0)
                              (M1 (mod       1st 2))
                              (M2 (mod       2nd 2))
                            )
                            (cond ((=        M1 1)     (let   ((Counter (+ Counter 1))
                                                              )
                                                              (cond ((= M2 1)
                                                                     (+ Counter 1))
                                                                    (t     (+ Counter 0))
                                                              )
                                                       )
                                        )
                                        (t       (cond ((= M2 1) (+ Counter 1))
                                                       (t    (+ Counter 0))
                                                 )
                                        )
                                    )
                      )
                   )
                JumlahGanjil
                 (defun JumlahGanjilV2 (1st 2nd 3rd)
                      (cond ((or (= 1st 0) (= 2nd 0) (= 3rd 0)) “ADA ANGKA NOL”)
                             (t   (let ((Counter (JumlahGanjil 1st 2nd))
                                           (M3 (mod 3rd 2))
                                         )
                                         (cond ((= M3 1) (+ Counter 1))
                                                (t     (+ Counter 0))
                                         )
                                  )
                             )
                      )
                   )
                JumlahGanjilV2

       APLIKASI

                 (JumlahGanjilV2       0 0 0)
                “ADA ANGKA NOL”
                 (JumlahGanjilV2       1 2 3)
                2
                 (JumlahGanjilV2       1 2 4)
                1
                 (JumlahGanjilV2       1 5 3)
                3
                 (JumlahGanjilV2       2 4 6)
                0
                 (JumlahGanjilV2       1 3 4)
                2
                 (JumlahGanjilV2       2 6 3)
                1




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


49.    JUDUL

                JUMLAH_GENAP_VERSI_3            JumlahGenap (1st, 2nd, 3rd, 4th)

       DEFINISI DAN SPESIFIKASI

                JumlahGenap : 2 integer  integer

                {JumlahGenap (1st, 2nd) bernilai 1 jika hanya salah satu
                parameternya yang berupa bilangan genap. Bernilai 2 jika kedua
                parameternya adalah bilangan genap. Bernilai 0 jika keduanya
                bukan merupakan bilangan genap.}

                JumlahGenapV2 : 3 integer  integer

                {hasil dari JumlahGenap (1st, 2nd) akan bertambah 1 jika
                parameter 3rd merupakan bilangan genap. Jika tidak demikian,
                hasilnya tetap.}

                JumlahGenapV3 : 4 integer  integer, “ADA ANGKA NOL”

                {hasil dari JumlahGenapV2 (1st, 2nd) akan bertambah 1 jika
                parameter 4th merupakan bilangan genap. Jika tidak demikian,
                hasilnya tetap. Bernilai “ADA ANGKA NOL” jika ada angka nol yang
                menjadi parameternya.}

       REALISASI FUNGSIONAL

                JumlahGenap (1st, 2nd):
                         let Counter = 0
                              M1 = 1st mod 2
                              M2 = 2nd mod 2
                         in depend on M1
                                 M1 = 0 : let Counter = Counter + 1
                                           in depend on M2
                                                   M2 = 0 : Counter + 1
                                                   else   : Counter + 0
                                 else   : depend on M2
                                              M2 = 0 : Counter + 1
                                              else    : Counter + 0

                JumlahGenapV2 (1st, 2nd, 3rd):
                      let Counter = JumlahGenap (1st, 2nd)
                          M3 = 3rd mod 2
                      in depend on M3
                             M3 = 0 : Counter + 1
                             else   : Counter + 0

                JumlahGenapV3 (1st, 2nd, 3rd, 4th):
                      depend on 1st, 2nd, 3rd, 4th
                             (1st = 0) or (2nd = 0) or
                             (4th = 0)(3rd = 0) : “ADA ANGKA NOL”
                             else:
                                   let Counter = JumlahGenapV2 (1st, 2nd, 3rd)
                                       M4 = 4th mod 2
                                   in depend on M4
                                          M4 = 0 : Counter + 1
                                          else   : Counter + 0




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


       REALISASI LISP

                 (defun JumlahGenap (1st 2nd)
                      (let ((Counter 0)
                              (M1 (mod 1st 2))
                              (M2 (mod 2nd 2))
                            )
                            (cond ((= M1 0)    (let        ((Counter (+ Counter 1))
                                                           )
                                                           (cond ((= M2 0)
                                                                  (+ Counter 1))
                                                                 (t     (+ Counter 0))
                                                           )
                                                     )
                                         )
                                         (t    (cond ((= M2 0) (+ Counter 1))
                                                     (t    (+ Counter 0))
                                               )
                                         )
                                    )
                      )
                   )
                JumlahGenap
                 (defun JumlahGenapV2 (1st 2nd 3rd)
                      (let ((Counter (JumlahGenap 1st 2nd))
                               (M3 (mod 3rd 2))
                             )
                             (cond ((= M3 0) (+ Counter 1))
                                    (t     (+ Counter 0))
                             )
                      )
                   )
                JumlahGenapV2
                 (defun JumlahGenapV3 (1st 2nd 3rd 4th)
                      (cond ((or (= 1st 0) (= 2nd 0)
                                   (= 3rd 0) (= 4th 0)) “ADA ANGKA NOL”)
                             (t     (let ((Counter (JumlahGenapV2 1st 2nd 3rd))
                                             (M4 (mod 4th 2))
                                           )
                                           (cond ((= M4 0) (+ Counter 1))
                                                  (t     (+ Counter 0))
                                           )
                                    )
                             )
                      )
                   )
                JumlahGenapV3


       APLIKASI

                 (JumlahGenapV2        0 0 0 0)
                “ADA ANGKA NOL”
                 (JumlahGenapV2        1 2 3 4)
                2
                 (JumlahGenapV2        1 2 4 6)
                3
                 (JumlahGenapV2        1 5 3 7)
                0
                 (JumlahGenapV2        2 4 6 8)
                4
                 (JumlahGenapV2        1 3 4 9)
                1



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

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:96
posted:1/7/2012
language:Malay
pages:14
Description: Implementasi pemprograman fungsional LISP dalam notasi algoritmik untuk: fungsi konversi jam digital menggunakan 'car', 'cdr', sistem 24 jam, dan struktur kondisional; fungsi cek keberadaan bilangan genap dalam sebuah list; fungsi cek keberadaan bilangan ganjil dalam sebuah list; fungsi cek jumlah bilangan ganjil dan genap dalam sebuah list; dan fungsi cek jumlah bilangan genap dari empat buah bilangan.