Minggu, 11 Juli 2010

Tipe Bentukan Tipe Point LISP


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:

nur itu cahaya mengatakan...

Wah..Langsung posting ki..
Mantab... =))

Rendy mengatakan...

Mantab Mba` Nurul.. 8-}

dhito mengatakan...

ren .. . neh contoh titik kui di hubungke gawe segitiga/persegi dll pie ?

Posting Komentar