ALPRO | MODUL F-03

Sebelumnya saya sudah pernah posting tentang Modul F-02. Kali ini saya akan memberikan sedikit informasi mata kuliah ALPRO di kampus UDINUS kepada para sobat blogger. langsung saja saya membahas mata kuliah "Algoritma dan Pemrograman Modul F-03". Di sini saya akan mengeshare soal dan jawaban sekaligus :) .....
saya menggunakan aplikasi yang bernama CLISP

soal bisa di download disini

oh iya saya lupa untuk coding bisa menggunakan notepad biasa bisa juga noteped++, disini saya menggunakan notepad++ :)

untuk jawaban nya saya ketik dibawah ini, agar para sobat blogger bisa memahami (biar gak cuma copas aja nanti dikira penjiplak  ^_^ )

==============================================================

pecahan :
(defun pecahan(n d)
  (cond ((and (>= n 0) (or (> d 0) (< d 0))) (list n d))
        (T NIL)
  )
)

(defun pemb(n d)
  (car (pecahan n d))
)

(defun peny(n d)
  (car (cdr (pecahan n d)))
)

(defun MakeP(n d)
  (/ (pemb n d) (peny n d))
)

(defun addp (p1 p2)
    (/ (+ (* (car p1) (car (cdr p2))) (* (car p2) (car (cdr p1))))
        (* (car (cdr p1)) (car (cdr p2))))
)

(defun subp (p1 p2)
    (/ (- (* (car p1) (car (cdr p2))) (* (car p2) (car (cdr p1))))
        (* (car (cdr p1)) (car (cdr p2))))
)

(defun mulp (p1 p2)
    (/ (* (car p1) (car p2))
        (* (car (cdr p1)) (car (cdr p2))))
)

(defun divp (p1 p2)
    (/ (* (car p1) (car (cdr p2)))
        (* (car (cdr p1)) (car p2)))
)

(defun realpc (p1)
    (* (/ (car p1) (car (cdr p1))) 1.0)
)

(defun isEqP? (p1 p2)   
    (and (= (* (car p1) (car (cdr p2))) (* (car p2) (car (cdr p1))))
         (= (* (car (cdr p1)) (* (car (cdr p2)))) (* (car (cdr p2)) (* (car (cdr p1)))))
    )
)

(defun isLtP? (p1 p2)   
    (and (< (* (car p1) (car (cdr p2))) (* (car p2) (car (cdr p1))))
         (= (* (car (cdr p1)) (* (car (cdr p2)))) (* (car (cdr p2)) (* (car (cdr p1)))))
    )
)

(defun isGtP? (p1 p2)   
    (and (> (* (car p1) (car (cdr p2))) (* (car p2) (car (cdr p1))))
         (= (* (car (cdr p1)) (* (car (cdr p2)))) (* (car (cdr p2)) (* (car (cdr p1)))))
    )
)
=============================================================

point :
(defun titik(x y)
  (list x y))

(defun absis(P)
  (car P))

(defun ordinat(P)
  (car (cdr P)))

(defun MakePoint(x y)
  (cons x (cons y nil))
)

(defun IsOrigin(P)
  (and (= (absis P) 0) (= (ordinat P) 0))
)

(defun xsatu(P)
  (car (absis P))
)

(defun ysatu(P)
  (car (cdr (absis P)))
)

(defun xdua(P)
  (car (ordinat P))
)

(defun ydua(P)
  (car (cdr (ordinat P)))
)

(defun fx2(x)
  (* x x)
)

(defun jarak(P)
  (sqrt (+ (fx2 (- (xsatu P) (xdua P))) (fx2 (- (ysatu P) (ydua P)))))
)

(defun jarak0(P)
  (sqrt (- (fx2 (absis P)) (fx2 (ordinat P))))
)

(defun kuadran(P)
  (cond ((and (> (absis P) 0) (> (ordinat P) 0)) 1)
        ((and (< (absis P) 0) (> (ordinat P) 0)) 2)
    ((and (< (absis P) 0) (< (ordinat P) 0)) 3)
    ((and (> (absis P) 0) (< (ordinat P) 0)) 4)
    (T 'TidakAdaTitikSumbu)
  )
)
==============================================================

tanggal :
(defun typeHr(n)
  (if (and (integerp n) (and (>= n 1) (<= n 31))) T NIL)
)

(defun typeBln(n)
  (if (and (integerp n) (and (>= n 1) (<= n 12))) T NIL)
)

(defun typeThn(n)
  (if (and (integerp n) (>= n 1)) T NIL)
)

(defun typedate(h b n)
  (if (and (and (typeHr h) (typeBln b)) (typeThn n)) T NIL)
)

(defun checkdate(d m y)    
    (cond
        ((or (= m 1) (= m 3) (= m 5) (= m 7) (= m 8) (= m 10) (= m 12))
            (if (and (and(>= d 1) (<= d 31)) (>= y 1)) T NIL)
        )
        ((= m 2)
            (if (= (mod y 4) 0)
                (if (and (and(>= d 1) (<= d 29)) (>= y 1)) T NIL)
                (if (and (and(>= d 1) (<= d 28)) (>= y 1)) T NIL)
            )
        )
        ((or (= m 4) (= m 6) (= m 9) (= m 11))
            (if (and (and(>= d 1) (<= d 30)) (>= y 1)) T NIL)
        )
        (t NIL)
    )
)

(defun makedate(d m y)    
    (if (checkdate d m y)
        (cons d(cons m(cons y nil)))
        NIL
    )
)

(defun nextday(d m y)   
    (if (checkdate d m y)
        (cond ((or (= m 1) (= m 3) (= m 5) (= m 7) (= m 8) (= m 10) (= m 12))
                (if (= d 31)
                    (if (= m 12)
                        (cons 1(cons 1(cons (+ y 1) nil)))
                        (cons 1(cons (+ m 1)(cons y nil)))
                    )
                    (cons (+ d 1)(cons m(cons y nil)))
                )
            )
            ((= m 2)
                (if (= (mod y 4) 0)
                    (if (= d 29)
                        (cons 1(cons (+ m 1)(cons y nil)))
                        (cons (+ d 1)(cons m(cons y nil)))
                    )
                    (if (= d 28)
                        (cons 1(cons (+ m 1)(cons y nil)))
                        (cons (+ d 1)(cons m(cons y nil)))
                    )
                )
            )
            ((or (= m 4) (= m 6) (= m 9) (= m 11))
                (if (= d 30)
                    (cons 1(cons (+ m 1)(cons y nil)))
                    (cons (+ d 1)(cons m(cons y nil)))
                )
            )
        )
        NIL
    )
)

(defun yesterday(d m y)   
    (if (checkdate d m y)
        (if (= d 1)
            (cond ((or (= m 2) (= m 4) (= m 6) (= m 8) (= m 9) (= m 11))
                    (cons 31(cons (- m 1)(cons y nil)))
                )
                ((or (= m 5) (= m 7) (= m 10) (= m 12))
                    (cons 30(cons (- m 1)(cons y nil)))
                )
                ((= m 3)
                    (if (= (mod y 4) 0)
                        (cons 29(cons 2(cons y nil)))
                        (cons 28(cons 2(cons y nil)))
                    )
                )
                ((= m 1)
                    (cons 31(cons 12(cons (- y 1) nil)))
                )
            )
            (cons (- d 1)(cons m(cons y nil)))
        )
        NIL
    )
)

(defun HariKe(d m y)   
    (if (checkdate d m y)
        (if (= (mod y 4) 0)
            (cond ((= m 1) d)
                ((= m 2) (+ d 31))
                ((= m 3) (+ d 31 29))
                ((= m 4) (+ d 31 29 31))
                ((= m 5) (+ d 31 29 31 30))
                ((= m 6) (+ d 31 29 31 30 31))
                ((= m 7) (+ d 31 29 31 30 31 30))
                ((= m 8) (+ d 31 29 31 30 31 30 31))
                ((= m 9) (+ d 31 29 31 30 31 30 31 31))
                ((= m 10) (+ d 31 29 31 30 31 30 31 31 30))
                ((= m 11) (+ d 31 29 31 30 31 30 31 31 30 31))
                ((= m 12) (+ d 31 29 31 30 31 30 31 31 30 31 30))
            )
            (cond ((= m 1) d)
                ((= m 2) (+ d 31))
                ((= m 3) (+ d 31 28))
                ((= m 4) (+ d 31 28 31))
                ((= m 5) (+ d 31 28 31 30))
                ((= m 6) (+ d 31 28 31 30 31))
                ((= m 7) (+ d 31 28 31 30 31 30))
                ((= m 8) (+ d 31 28 31 30 31 30 31))
                ((= m 9) (+ d 31 28 31 30 31 30 31 31))
                ((= m 10) (+ d 31 28 31 30 31 30 31 31 30))
                ((= m 11) (+ d 31 28 31 30 31 30 31 31 30 31))
                ((= m 12) (+ d 31 28 31 30 31 30 31 31 30 31 30))
            )
        )
        NIL
    )
)

(defun bilkehari(bil y)    ;mengubah bilangan ke type tanggal
    (if (>= y 1)
        (if (= (mod y 4) 0)
            (if (and (>= bil 1) (<= bil 366))
                (cond ((<= bil 31) (makedate bil 1 y))
                    ((and (> bil 31) (<= bil 60)) (makedate (- bil 31) 2 y))
                    ((and (> bil 60) (<= bil 91)) (makedate (- bil 60) 3 y))
                    ((and (> bil 91) (<= bil 121)) (makedate (- bil 91) 4 y))
                    ((and (> bil 121) (<= bil 152)) (makedate (- bil 121) 5 y))
                    ((and (> bil 152) (<= bil 182)) (makedate (- bil 152) 6 y))
                    ((and (> bil 182) (<= bil 213)) (makedate (- bil 182) 7 y))
                    ((and (> bil 213) (<= bil 244)) (makedate (- bil 213) 8 y))
                    ((and (> bil 244) (<= bil 274)) (makedate (- bil 244) 9 y))
                    ((and (> bil 274) (<= bil 305)) (makedate (- bil 274) 10 y))
                    ((and (> bil 305) (<= bil 335)) (makedate (- bil 305) 11 y))
                    ((and (> bil 335) (<= bil 366)) (makedate (- bil 335) 12 y))
                )
                NIL
            )
            (if (and (>= bil 1) (<= bil 365))
                (cond ((<= bil 31) (makedate bil 1 y))
                    ((and (> bil 31) (<= bil 59)) (makedate (- bil 31) 2 y))
                    ((and (> bil 59) (<= bil 90)) (makedate (- bil 59) 3 y))
                    ((and (> bil 90) (<= bil 120)) (makedate (- bil 90) 4 y))
                    ((and (> bil 120) (<= bil 151)) (makedate (- bil 120) 5 y))
                    ((and (> bil 151) (<= bil 181)) (makedate (- bil 151) 6 y))
                    ((and (> bil 181) (<= bil 212)) (makedate (- bil 181) 7 y))
                    ((and (> bil 212) (<= bil 243)) (makedate (- bil 212) 8 y))
                    ((and (> bil 243) (<= bil 273)) (makedate (- bil 243) 9 y))
                    ((and (> bil 273) (<= bil 304)) (makedate (- bil 273) 10 y))
                    ((and (> bil 304) (<= bil 334)) (makedate (- bil 304) 11 y))
                    ((and (> bil 334) (<= bil 365)) (makedate (- bil 334) 12 y))
                )
                NIL
            )
        )
        NIL
    )
)

(defun nextNday(d m y n)   
    (if (checkdate d m y)
        (if (= (mod y 4) 0)
            (bilkehari (if (<= (+ (harike d m y) n) 366)
                (+ (harike d m y) n)
                (- (+(harike d m y) n) 366) ;looping disini
                )
                (if (> (+(harike d m y)n) 366) (+ y 1) y) ;looping jg perlu utk penambahan tahun lebih dari 1
            )
            (bilkehari (if (<= (+ (harike d m y) n) 365)
                (+ (harike d m y) n)
                (- (+(harike d m y) n) 365) ;looping disini
                )
                (if (> (+(harike d m y)n) 365) (+ y 1) y) ;looping jg perlu utk penambahan tahun lebih dari 1
            )
        )
        NIL
    )
)

(defun iseqd? (d1 d2)
    (if (= (car(reverse(cdr d1))) (car(reverse(cdr d2))))
        (if (= (harike (car d1) (car(cdr d1)) (car(reverse(cdr d1))))
        (harike (car d2) (car(cdr d2)) (car(reverse(cdr d2)))))
            T NIL
        )
        NIL
    )
)
(defun isbefore? (d1 d2)
    (cond ((= (car(reverse(cdr d1))) (car(reverse(cdr d2))))
            (if (< (harike (car d1) (car(cdr d1)) (car(reverse(cdr d1))))
            (harike (car d2) (car(cdr d2)) (car(reverse(cdr d2)))))
                T NIL
            )
        )
        ((< (car(reverse(cdr d1))) (car(reverse(cdr d2)))) T)
        (t NIL)
    )
)
(defun isafter? (d1 d2)
    (cond ((= (car(reverse(cdr d1))) (car(reverse(cdr d2))))
            (if (> (harike (car d1) (car(cdr d1)) (car(reverse(cdr d1))))
            (harike (car d2) (car(cdr d2)) (car(reverse(cdr d2)))))
                T NIL
            )
        )
        ((> (car(reverse(cdr d1))) (car(reverse(cdr d2)))) T)
        (t NIL)
    )
)

(defun iskabisat? (y)
    (if (>= y 1)
        (or (and (= (mod y 4) 0) (not(= (mod y 100) 0))) (= (mod y 400) 0))
        NIL
    )
)
============================================================

jika para blogger malas untuk mengetik, saya langsung kasih file nya dibawah iniii.

jawaban : disini

Sekian postingan  tentang "Modul F-03" tunggu selanjutnya Modul F-04.

0 Comments


EmoticonEmoticon