pertemuan 4 bahasa pemrograman logika

20
1 Pertemuan 4 Bahasa Pemrograman Logika Matakuliah : H0383/Sistem Berbasis Pengetahuan Tahun : 2005 Versi : 1/0

Upload: gaerwn

Post on 20-Jan-2016

50 views

Category:

Documents


0 download

DESCRIPTION

Pertemuan 4 Bahasa Pemrograman Logika. Matakuliah: H0383/Sistem Berbasis Pengetahuan Tahun: 2005 Versi: 1/0. Learning Outcomes. Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu : Mendemonstrasikan bahasa pemrograman untuk implementasi predicate logic. Outline Materi. LISP - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Pertemuan 4 Bahasa Pemrograman Logika

1

Pertemuan 4Bahasa Pemrograman Logika

Matakuliah : H0383/Sistem Berbasis Pengetahuan

Tahun : 2005

Versi : 1/0

Page 2: Pertemuan 4 Bahasa Pemrograman Logika

2

Learning Outcomes

Pada akhir pertemuan ini, diharapkan mahasiswa

akan mampu :

• Mendemonstrasikan bahasa pemrograman untuk implementasi predicate logic

Page 3: Pertemuan 4 Bahasa Pemrograman Logika

3

Outline Materi

• LISP

• PROLOG

Page 4: Pertemuan 4 Bahasa Pemrograman Logika

4

Bahasa LISP

• LISP menggunakan notasi prefix – (+ 5 6 9) – 5 + 6 + 9– Contoh: konversi 50 Celcius Fahrenheit:– (+(*(/ 9 5) 50) 32)

• List dalam LISP– (a b (c d) e f) adalah list– (c d) adalah sublist– c, d adalah top element dari sublist

Page 5: Pertemuan 4 Bahasa Pemrograman Logika

5

Bahasa LISP

• List kosong = NIL

• Variable assignment:– (setq x 10) artinya x = 10– (setq x (+ 3 5)) == x=3+5

• Basic list manipulation function– (car’(a b c))= a– (cdr’(a b c))= (b c)– (cons’a’(b c)) = (a b c)– (list ’a ’(bc)) = (a (b c))

Page 6: Pertemuan 4 Bahasa Pemrograman Logika

6

Bahasa LISP

• Function call:– (function-name arg1 arg2 …)

• Additional manipulation list– (append ’(a) ’(b c)) = (a b c)– (last ’(a b c d)) = (d)– (member ’b ’(a b d) = (b d)– (reserve ’(a (b c) d)) = (d (b c) a)

Page 7: Pertemuan 4 Bahasa Pemrograman Logika

7

Bahasa LISP

• Defining function– (defun name(parm1, parm2 …) body)– Defun averagethree (n1 n2 n3) (/ (+ n1 n2 n3)

3)) – (averagethree 10 20 30) = 20

Page 8: Pertemuan 4 Bahasa Pemrograman Logika

8

Bahasa LISP

• Predicate call:– (atom ‘aabb) = true; aabb is a valid atom– (equal ‘a (car ‘(a b)) = true; a=a– (greaterp 2 4 27)= true; (lessp 5 3 1 2)= nil– (zerop .000001) = nil;– (evenp 3) = nil; (oddp 3) = true;– (number 10) = true;– (listp ‘(a)) = true; a is a valid list

Page 9: Pertemuan 4 Bahasa Pemrograman Logika

9

Bahasa Lisp

• Conditional:– (cond(<test1> <action1>)

(<test2> <action2>)

:

(<testk> <actionk>)

(defun maximum2 (a b)

(cod ((>a b) a)

(t b)))

maximum2(234 320) = 320

Page 10: Pertemuan 4 Bahasa Pemrograman Logika

10

Bahasa LISP

• Logical function: or, and, not, t(true), null

• Input: (+5 (read))

• If 6 is inserted by keyboard then result is 11

• Output: print’(a b c) ; print a list

Page 11: Pertemuan 4 Bahasa Pemrograman Logika

11

Bahasa LISP

• Iteration– (do (<var1 val1><var-update1)

:(<test> <return-value>)(s-expression)

• Contoh : factorial:(defun factorial (n)

(do ((count n (- count 1))(product n (* product (-count 1)((equal 0 count) product)))

Page 12: Pertemuan 4 Bahasa Pemrograman Logika

12

Bahasa LISP

• Recursive:

• (defun factorial (n)

(cond (( zerop n) 1)

(t (* n (factorial (- n 1)))))

Page 13: Pertemuan 4 Bahasa Pemrograman Logika

13

Bahasa LISP

• Property lists– (putprop object value attribute)– (putprop ’car ’ford ’make)– (putprop ’car ’1988 ’year)– (putprop ’car ’red ’color)– (putprop ’car ’four-door ’style)– (get ‘car ‘make) = Ford– (get ‘car ‘color) = red

Page 14: Pertemuan 4 Bahasa Pemrograman Logika

14

Bahasa LISP

• Arrays– (setf myarray(make-array ’(10)))– (setf (aref myarray 0) 25– (setf (aref myarray 1) ’red– (aref myarray 0) = 25– (aref myarray 1) = red

Page 15: Pertemuan 4 Bahasa Pemrograman Logika

15

Bahasa LISP

• Mapping function:– (mapcar ’1 +’(5 10 15 20 25)) = (6 11 16 21

26)– (mapcar ’+ ’(1 2 3 4 5 6) ’(1 2 3 4)) = (2 4 6 8)

• Lambda function:– (defun cubic(lists)

(mapcar #’(lambda (x) (*x x x)) lists))– (cubic(1 2 3 4)) = (1 8 27 64)

Page 16: Pertemuan 4 Bahasa Pemrograman Logika

16

Bahasa PROLOG

• PROLOG: PROgramming in Logic– sister(sue,bill)– parent(ann,sam), parent(joe,ann)– male(joe), female(ann)

If X is the parent of Y, and Y is the parent of Z, and X is a male, then X is grandfather of Z

grandfather(X,Z) :- parent(X,Y), parent(Y,Z),male(X)

Page 17: Pertemuan 4 Bahasa Pemrograman Logika

17

Bahasa PROLOG

• Query:

• ?- parent(X,sam)

• X=ann

• ?- female(joe)

• No

• ?-male(joe)

• yes

Page 18: Pertemuan 4 Bahasa Pemrograman Logika

18

Bahasa PROLOG

• List in PROLOG:

• [tom,sue,joe,marry,bill]

• ?- [Head|Tail] = [tom,sue,joe,marry]

• Head = tom, Tail=[sue,joe,marry]

• List manipulation:

• append, member, conc, add, delete

Page 19: Pertemuan 4 Bahasa Pemrograman Logika

19

Bahasa PROLOG

• member(X,[X|Tail])

• member(X,[Head|Tail]):-member(X,Tail)

• X is a member of the list L if X is the head of L.

• X is a member of L if X is a member of the tail of L

• ?- member(c,[a,b,c,d])yes

• ?- member(b,[a,[b,c],d])No

Page 20: Pertemuan 4 Bahasa Pemrograman Logika

20

Penutup

• Bahasa-bahasa pemrograman logika dapat digunakan untuk implementasi problem berbasis pengetahuan.

• Selain LISP dan PROLOG, terdapat berbagai jenis lainnya misal CLIPS.

• Meski beragam, namun semantiknya serupa.