Pada kesempatan ini saya ingin sharing tentang pembuatan tipe bentukan dalam bahasa pemrograman LISP khususnya untuk tipe point, struktur tipe bentukan terdiri dari Nama dan Struktur Type (Komponen - komponennya), Selector untuk mengakses komponen - komponen type, Konstruktor untuk membentuk type, Predikat untuk membentuk karakteristik dan penneriksaan besaran, Fungsi - fungsi lain yang didefinisikan untuk type tersebut. Langsung aja let`s study :
Definisi & Spesifikasi Selector
Absis : Point --> Real
{Absis(P) memberikan absis point P}
Ordinat : Point --> Real
{Ordinat(P) memberikan ordinat dari point P}
;Realisasi Selector
(defun Absis(P) (car p))
(Defun Ordinat(P) (car (cdr P)))
Definisi & Spesifikasi Konstuktor
MakePoint : 2 Real --> Point
{MakePoint(a,b) membentuk sebuah point dari a dan b dengan a sebagai absis dan b sebagai ordinat}
;Realisasi Konstruktor
(defun MakePoint(a b) (list a b))
Definisi & Spesifikasi Predikat IsOrigin?
IsOrigin? : Point --> Bolean
{IsOrigin?(P) memberikan benar jika P adalah titik origin yaitu <0,0>}
;Realisasi Predikat IsOrigin?
(defun IsOrigin?(P)
(and (= (Absis P) 0) (= (Ordinat P) 0))
)
Definisi & Spesifikasi Fungsi Kuadran
Kuadran : Point --> Char
{Kuadran(P) menentukan posisi kuadran suatu titik, prekondisi P bukan di titik origin dan bukan terletak pada sumbu x dan sumbu y}
;Realisasi Fungsi Kuadran
(defun Kuadran(P)
(cond ((and (> (Absis P) 0) (> (Ordinat P) 0)) "Kuadran 1")
((and (< (Absis P) 0) (> (Ordinat P) 0)) "Kuadran 2")
((and (> (Absis P) 0) (< (Ordinat P) 0)) "Kuadran 3")
((and (< (Absis P) 0) (< (Ordinat P) 0)) "Kuadran 4")
)
)
Definisi & Spesifikasi Fungsi IsTegakLurus
IsTegakLurus : 2 Point --> Bolean
{IsTegakLurus(P1 P2) memberikan benar jika P1 dan P2 adalah adalah tegak lurus}
;Realisasi Fungsi IsTegakLurus
(defun IsTegakLurus(P1 P2)
(= (Absis P1) (Absis P2))
)
Definisi & Spesifikasi Fungsi Jarak Titik
Jarak : 2 Point --> Real
{Jarak(P1 P2) menghitung jarak titik antara P1 dan P2}
;Realisasi Fungsi Jarak Titik
(defun Jarak(P1 P2)
(sqrt (+ (* (- (Absis P2) (Absis P1)) (- (Absis P2) (Absis P1)))
(* (- (Ordinat P2) (Ordinat P1)) (- (Ordinat P2) (Ordinat P1))))
)
)
;Aplikasi Tipe Bentukan
=> (setq P1(MakePoint 1 3))
(1 3)
=> (setq P1(MakePoint 3 1))
(3 1)
=> (Absis P1)
1
=> (Ordinat P1)
3
=> (IsOigin? P1)
NILL
=> (Kuadran P1)
2
Selamat mencoba, mohon maaf kalo ada kesalahan dan kekurangan dalam postingan ini, mengingat penulis adalah seorang newbie yang mencoba untuk terus belajar dan berbagi ilmu serta pengalaman, Salam Opensource.
3 komentar:
Wah..Langsung posting ki..
Mantab... =))
Mantab Mba` Nurul.. 8-}
ren .. . neh contoh titik kui di hubungke gawe segitiga/persegi dll pie ?
:)) ;)) ;;) :D ;) :p :(( :) :( :X =(( :-o :-/ :-* :| 8-} :)] ~x( :-t b-( :-L x( =))
Posting Komentar