Pengenalan Prolog - fjrhdp.files.wordpress.com fileProlog Pemrograman prolog terdiri atas: 1....

25
Pengenalan Prolog Teny Handhayani Referensi: Programming in Prolog by William F. Clocksin & Christopher S. Mellish

Transcript of Pengenalan Prolog - fjrhdp.files.wordpress.com fileProlog Pemrograman prolog terdiri atas: 1....

Pengenalan PrologTeny Handhayani

Referensi:Programming in Prolog by William F. Clocksin & Christopher S. Mellish

Prolog

Pemrograman prolog terdiri atas:

1. menjelasan fakta tentang objek dan relasinya

2. menjelaskan rules tentang objek dan relasinya

3. menanyakan pertanyaan tentang onjek dan relasinya

Facts

Facts Mendefinisikan fakta tentang “John likes Mary”. Fakta ini terdiri atas dua objek, “Marry” dan “John”, dan relasinya

“likes” Penulisan dalam Prolog

likes(john,mary).

likes(john,mary). Tidak sama dengan likes(mary,john).

Hal-hal yang harus diperhatikan:1. Nama semua relasi dan objek harus dimulai dengan huruf

kecil. Contoh: likes, john, mary2. Relasi ditulis pertama, dan objek ditulis dan dipisahkan dengan

koma. Objek diletakkan dalam tanda kurung3. Tanda titik “.” digunakan untuk mengakhiri fact. Tanda titik

dinamakan ‘periood’ atau ‘‘full stop

Facts

Contoh

Mendefinisikan sebuah predikat “play”, dengan duapemain dan game yang dimainkanplay(john, mary, football)play(jane, jim, badminton)

valuable(gold). Gold is valuablefemale(jane). Jane is femaleowns(jane,gold). Jane owns goldfather(john,mary). John is the father of Mary

gives(john,book,mary). John gives the book to Mary

Questions

Question mirip seperti fact, perbedaannya adalah adanya simbol di depannya

Contoh?-owns(mary, book).

Jika kita menginterpretasikan mary sebagai manusia yg bernama“Mary” dan ‘book’ adalah semabarang buku

Pertanyaan berarti -> Does Mary own the book? Ketika question ditanyakan pada sistem Prolog, maka akan dicari

dalam database Unify : jika dua facts memiliki predikat yang sama dan jika

hubungan argumen keduanya sama Jika Prolog menemukan fact unify dengan questions maka Prolog

memberikan respon ‘yes’ Jika tidak ada fact yang sesua dalam database maka Prolog

memberikan respon ‘no’

Questions

Contoh 1:likes(joe, fish).likes(joe, mary).likes(mary, book).likes(john, book).likes(john, france).

Questions?-likes(joe, money).

no?-likes(mary, joe)

no?-likes(mary, book).

yes

Questions

Contoh 2:

human(socrates).

human(aristotle).

athenian(socrates).

Questions:

?-athenian(socrates).

yes

?-athenian(aristotle).

no

Variables

Menjelaskan suatu objek X yang belum diketahui

Variable pada Prolog: instantiated atau not instantiated

Variable instantiated: penjelasan tentang objek tersebutdiketahui

Variable not instantiated: penjelasan objek tidakdiketahui

Contoh:

Does John like X?

X tidak diketahui sebagai objek apa?

Variables

Contoh

?-likes(john, something that John likes).

Menggunakan variable dalam prolog

?-likes(john, X).

Questions

?-likes(john, SomethingThatJohnLIkes).

*variable dapat berupa sembarang huruf yang diawalidengan huruf kapital

Variable

Factslikes(john, flowers).likes(john, mary).likes(paul, mary).

Question?-likes(john, X).

Pertanyaan menanyakan Is there anything that John likes? Prolog akan memberikan respon X = flowers Question

?-likes(X, mary).X = john; jawaban pertamaX = paul; jawaban ke duano tidak ada lagi jawaban

Conjuctions

Do John and Mary like each other?

Database

likes(mary, chocolate).

likes(mary, wine).

likes(john, wine).

likes(john, mary).

Does John like mary? And does Mary like John?

Menggunakan koma ‘,’ untuk melakukan conjuction‘and’

?-likes(john, mary), likes(mary, john).

Conjuctions ?-likes(mary, X), likes(john, X).

Rules Menjelaskan bahwa John likes all people

likes(john,alfred).likes(john, bertrand).likes(john, charles).….

I use an umbrella if there is rain John buys the wine if it is less expensive than the beer Rules:

X is a bird if:

X is an animal, and

X has feathers.

atauX is a sister of Y if:

X is female, and

X and Y has the same parents

Rules

Rukes terdiri atas head dan body yang dihubungkandengan simbol ”:-” dibaca “if”

likes(john, X) :- likes(X, wine).

likes(john, X) :-likes(X,wine), likes(X, food).

John likes anyone who likes wine and food

John likes any female who likes wine

likes(john, X) :- female(X), likes(X,wine).

Latihan

Nama:

Hayam_wuruk (raja - true)

Hasanudin (raja - true)

Tribuana (ratu - true)

Elizabeth (ratu - true)

Jokowi (bukan raja, bukan ratu)

Kartini (bukan raja, bukan ratu)

Desi (bukan raja, bukn ratu)

Buatlah program Prolog yang dapat mengidentifikasi nama-nama tersebut apakah sebagai ratu atau raja!

Nama:Hayam_wurukHasanudinTribuanaElizabethJokowiKartinidesi

Instalasi

Instal SWI Prolog

Instal SWI Editor, SWI Editor hanya bisa digunakandengan SWI Prolog 32 bit

Buatlah rule untukhubungan:1.father2.mother3.son4.daughter5.grandfather6.aunt7.sister8.uncle9.cousin10.brother

Buatlah rule untuk hubungan:1.father2.mother3.son4.daughter5.grandfather6.aunt7.sister8.uncle9.cousin10.brother