Jumat, 13 Maret 2009

Contoh Lisp coding (Terbesar dari 49 bilangan)

Algoritma
-------------------------------------------------------------------------------------
JUDUL : BILANGAN TERBESAR DARI 49 BILANGAN

DEFINISI DAN SPESIFIKASI :
big : 49 bilangan integer
{big (a b c d e f g h i j a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 a2 b2 c2 d2 e2 f2 g2 h2 i2 j2
a3 b3 c3 d3 e3 f3 g3 h3 i3 j3 k l m n o p q r s) menghasilkan maksimum dari 49 bilangan}

REALISASI :
let ((big (max a b c d e f g h i j a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 a2 b2 c2 d2 e2 f2 g2 h2 i2 j2
a3 b3 c3 d3 e3 f3 g3 h3 i3 j3 k l m n o p q r s)))

APLIKASI :
TERBESAR (12 12 3 4 2 6 8 3 2 6 3 5 7 3 5 2 5 7 3 3 6 8 0 45 3 2 5 7 4 -2 4 6 2 4 6 3 3 5 7 8
3 2 6 8 4 99 77 34 43)
-------------------------------------------------------------------------------------

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

(defun terbesar (a b c d e f g h i j
a1 b1 c1 d1 e1 f1 g1 h1 i1 j1
a2 b2 c2 d2 e2 f2 g2 h2 i2 j2
a3 b3 c3 d3 e3 f3 g3 h3 i3 j3
k l m n o p q r s)
(let ((big (max a b c d e f g h i j
a1 b1 c1 d1 e1 f1 g1 h1 i1 j1
a2 b2 c2 d2 e2 f2 g2 h2 i2 j2
a3 b3 c3 d3 e3 f3 g3 h3 i3 j3
k l m n o p q r s)))
(format t "~A ~A" big big)))
-------------------------------------------------------------------------------------

Just one touch!!
dengan satu fungsi bisa menemukan bilangan terbesar dari 49 bilangan..
cara yang sangat simple..
mungkin masih ada yang lebih simple atau lebih ribet lagi..
cara lain untuk membuat max49 adalah dengan cara menentukan terbesar dari 2 bilangan baru kemudian empat bilangan dan seterusnya..
cukup panjang tapi lebih bagus dalam hal pembelajaran..

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..

Contoh Lisp coding (x pangkat 9012)

Algoritma
-------------------------------------------------------------------------------------
JUDUL : X PANGKAT 9012

DEFINISI DAN SPESIFIKASI :
x10 : integer
{x10 untuk menentukan x pangkat 10}
x100 : integer
{x100 untuk menentukan x pangkat 100 yang di dapat dari perkalian 10 kali x10}
x1000 : integer
{x1000 untuk menentukan x pangkat 1000 yang di dapat dari perkalian 10 kali x100}
x9012 : integer
{x9012 untuk menentukan x pangkat 9012 yang di dapat dari perkalian 9 kali x1000 dengan x10 dan x x}

REALISASI :
x10 (x) : x*x*x*x*x*x*x*x*x*x
x100 (x) : x10*x10*x10*x10*x10*x10*x10*x10*x10*x10
x1000 (x) : x100*x100*x100*x100*x100*x100*x100*x100*x100*x100
x9012 (x) : x1000*x1000*x1000*x1000*x1000*x1000*x1000*x1000*x1000*x10*x*x

APLIKASI :
=> PANGKAT (2)
=> PANGKAT (3)
-------------------------------------------------------------------------------------

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

(defun pangkat (x)
(setf x10(* x x x x x x x x x x))
; x10 adalah x pangkat 10
(setf x100 (* x10 x10 x10 x10 x10 x10 x10 x10 x10 x10))
; x100 adalah x pangkat seratus atau samadengan x pangkat 10 di kalikan dengan x pangkat 10 sepuluh kali
(setf x1000 (* x100 x100 x100 x100 x100 x100 x100 x100 x100 x100))
; x1000 adalah x pangkat 1000
(setf x9012 (* x1000 x1000 x1000 x1000 x1000 x1000 x1000 x1000 x1000 x10 x x))
; x9012 adalah hasil kali dari sembilan kali x pangkat 1000 dengan x pangkat sepuluh dan x pangkat 2
(format t "~A pangkat 10 adalah ~A
~A pangkat 100 adalah ~A
~A pangkat 1000 adalah ~A
~A pangkat 9012 adalah ~A" x x10 x x100 x x1000 x x9012))
; format t untuk mencetak nilai dari masing2 variable
-------------------------------------------------------------------------------------


Ada banyak cara untuk membuat perpangkatan di Lisp,, salah satunya dengan cara fungsi sederhana seperti diatas.
cara lainnya menggunakan looping dan fungsi2 standar lisp "sqrt" dan lain2.

Selasa, 10 Maret 2009

LISP

x pangkat 100

(defun pangkat (x)
(setf x10(* x x x x x x x x x x))
; x10 adalah x pangkat 10
(setf x100 (* x10 x10 x10 x10 x10 x10 x10 x10 x10 x10))
; x100 adalah x pangkat seratus atau samadengan x pangkat 10 di kalikan dengan x pangkat 10 sepuluh kali

------------------------------------------------------------------------------------
terbesar dari 10 bilangan

(defun terbesar (a b c d e f g h i j)
(let ((big (max a b c d e f g h i j)

------------------------------------------------------------------------------------
menentukan bidang

bisa di buat dengan cond dan if else..
kalo aku sih tipe inputan dengan memasukan tiga buah panjang rusuk,,
baru kemudian bisa menentukan bidang..

------------------------------------------------------------------------------------
kuadran

kuadan dari soal minggu kemaren rumit bgt sh,, aku jadinya cuma buat kuadran dari 3 buah titik..
yang perlu di ingat
kuadran 1 = x+ y+
kuadran 2 = x- y+
kuadran 3 = x- y-
kuadran 4 = x+ y-

bisa di buat dengan menggunakan if else dan cond atau depend on..


ini sedikit pembahasan dan contoh dari aku buat soal alpro minggu kemaren..
soal pengembangan sampai pangkat 9012, terbesar dari 49bilangan,, dan lain2 kalian bisa buat sendiri..
ekspresikan aksimu!!!!!!!!

baca buku2 pemrograman LISP yang sudah ada link downloadnya di topikku yang sebelumnya..
sekian dan thanks dah mampir ke blogku..

Pemrograman Lisp

LISP programing adalah sebuah bahasa pemrograman yang,, ya bisa dibilang sedikit rumit dengan code2 yang sedikit membingungkan..
di sini aku sertakan sedikit buku yang bisa kalian gunakan dalam pemrograman LISP..
buku2 ini berbahasa inggris tapi bisa di bilang cukup lengkap dalam hal pembelajaran dan contoh2 prakteknya..

klik this URL..


Download
Download

ada 3 buah buku di atas yang bisa kalian gunakan sebagai refrensi...