Kamis, 26 Maret 2009

Pemrograman dengan LISP

Lagi-lagi untuk para sobat iT...nih di fakultas gw ada pemrograman baru berbasis LISP...

;Fungsi hari ke-1900;DEFINISI DAN SPESIFIKASI;iskabisat : integer --> integer
;{iskabisat (x) : menentukan apakah tahun x adalah 1 jika kabisat dan 2 jika tidak kabisat}
; bulat : integer --> integer
;{bulat (x,y) : adalah pembagian 2 bilangan dengan hasil pembulatan kebawah atau mentiadakan sisa hasil pembagian}
;bykkbst : integer --> integer
;{bykkbst (x) : menghitung berapa kali kabisat terjadi selama x tahun dengan menggunakan fungsi bulat sebagai fungsi antara}
;harike1900 : integer --> integer
;{harike1900(d,m,y) : menghitung lama hari dari tahun 1900 (1 januari 1900 adalah hari ke 1) samapai dengan hari d, bulan m dan tahun y}(defun iskabisat(x) (cond ((or (and (= (mod x 4) 0) (not (= (mod x 100) 0))) (= (mod x 400) 0)) 1) (t 2)))
;menghitung jumlah kabisat selama x tahun(defun Bykkbst(x) (+ (- (bulat x 4) (bulat x 100)) (bulat x 400)));pembulatan nilai(defun bulat(x y) (- (/ x y) (/ (mod x y) y)))(defun harike1900(d m y) (let ((b (cond ((=(iskabisat y) 1) (cond ((and (= m 1) (<= d 31) (> d 0)) 0) ((and (= m 2) (<= d 29) (> d 0)) 31) ((and (= m 3) (<= d 31) (> d 0)) 60) ((and (= m 4) (<= d 30) (> d 0)) 91) ((and (= m 5) (<= d 31) (> d 0)) 121) ((and (= m 6) (<= d 30) (> d 0)) 152) ((and (= m 7) (<= d 31) (> d 0)) 182) ((and (= m 8) (<= d 31) (> d 0)) 213) ((and (= m 9) (<= d 30) (> d 0)) 244) ((and (= m 10) (<= d 31) (> d 0)) 238) ((and (= m 11) (<= d 30) (> d 0)) 305) ((and (= m 12) (<= d 31) (> d 0)) 335) (t (- 1))) ) ((=(iskabisat y) 2) (cond ((and (= m 1) (<= d 31) (> d 0)) 0) ((and (= m 2) (<= d 28) (> d 0)) 31) ((and (= m 3) (<= d 31) (> d 0)) 59) ((and (= m 4) (<= d 30) (> d 0)) 90) ((and (= m 5) (<= d 31) (> d 0)) 120) ((and (= m 6) (<= d 30) (> d 0)) 151) ((and (= m 7) (<= d 31) (> d 0)) 181) ((and (= m 8) (<= d 31) (> d 0)) 212) ((and (= m 9) (<= d 30) (> d 0)) 243) ((and (= m 10) (<= d 31) (> d 0)) 237) ((and (= m 11) (<= d 30) (> d 0)) 304) ((and (= m 12) (<= d 31) (> d 0)) 334) (t (- 1))) ) ) ) (th (* (- y 1900) 365)) (hkbst (- (bykkbst y) (bykkbst 1900)))) (cond ((and (= (iskabisat y) 1) (not (= b (- 1)))) (format t "Hari ke : ~s "(+ b d th (- hkbst 1)))) ((and (= (iskabisat y) 2) (not (= b (- 1)))) (format t "Hari ke : ~s "(+ b d th hkbst))) ((= b (- 1)) (format t "format Tanggal salah")))))

Contoh program seperti di atas...

Untuk engine nya nih gw kasiii....click here...

Tidak ada komentar:

Posting Komentar