Jumat, 13 Maret 2009

Contoh Lisp coding (menentukan bidang)

Algoritma
-------------------------------------------------------------------------------------
JUDUL : MENENTUKAN BENTUK BIDANG

DEFINISI DAN SPESIFIKASI :
r1 : integer
{r1 menampung nilai dari rusuk pertama}
r2 : integer
{r2 menampung nilai dari rusuk kedua}
r3 : integer
{r3 menampung nilai dari rusuk ketiga}

REALISASI :
if r1 number and r2 number and r3 number then ()
else (bidang)
{(bidang) untuk kembali input rusuk}
if r1=0 or r2=0 then (bidang)
else ()
depend on (r1=r2 and r3=0) : "segi empat"
((r1 > r2 or r2 > r1) and r3=0) : "bujur sangkar"
(r1=r2 and r2=r3) : "kubus"
(r1>r2 or r2>r1 or r3>r1 or r3>r2) and r3>0 : "balok"

APLIKASI :
BIDANG()
-------------------------------------------------------------------------------------

Coding
-------------------------------------------------------------------------------------

(defun bidang ()
(format t "~%PROGRAM UNTUK MENENTUKAN BENTUK~%")
(FORMAT T "INPUT HARUS BERUPA ANGKA~%")
(format t "~%~%Masukkan Panjang Rusuk 1 : ")
(let ((r1 (read)))
(format t "Masukkan Panjang Rusuk 2 : ")
(let ((r2 (read)))
(format t "RUSUK 3 HANYA UNTUK BENDA 3 DIMENSI (KUBUS ATAU BALOK)
ISI DENGAN 0 UNTUK BENDA 2 DIMENSI~%")
(format t "Masukkan Panjang Rusuk 3 : ")
(let ((r3 (read)))
(format t "~%Rusuk 1 = ~A~%Rusuk 2 = ~A~%Rusuk 3 = ~A~%" r1 r2 r3)
(if (and (numberp r1) (numberp r2) (numberp r3))
()
(bidang))
(if (or (<= r1 0) (<= r2 0))
(bidang)
())
(cond ((and (= r1 r2) (= r3 0)) (format t "~%SEGI EMPAT"))
((and (or (> r1 r2) (> r2 r1)) (= r3 0)) (format t "~%BUJUR SANGKAR"))
((and (= r1 r2) (= r3 r2)) (format t "~%KUBUS"))
((and (or (> r1 r2) (> r2 r1) (> r3 r1) (> r3 r2)) (> r3 0) ) (format t "~%BALOK"))
)))))
-------------------------------------------------------------------------------------


Coding sederhana yang cuma melibatkan kondisi,, if else,, dan cond..
bisa di buat dengan looping juga tapi lebih praktis dengan kondisi..

1 komentar:

how about this post??