Pengenalan Prolog Teny 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: Nama semua relasi dan objek harus dimulai dengan huruf kecil. Contoh: likes, john, mary Relasi ditulis pertama, dan objek ditulis dan dipisahkan dengan koma. Objek diletakkan dalam tanda kurung Tanda titik “.” digunakan untuk mengakhiri fact. Tanda titik dinamakan ‘periood’ atau ‘‘full stop
Facts Contoh Mendefinisikan sebuah predikat “play”, dengan dua pemain dan game yang dimainkan play(john, mary, football) play(jane, jim, badminton) valuable(gold). Gold is valuable female(jane). Jane is female owns(jane,gold). Jane owns gold father(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) ?-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 tersebut diketahui Variable not instantiated: penjelasan objek tidak diketahui 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 diawali dengan huruf kapital
Variable Facts likes(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 ?-likes(X, mary). X = john; jawaban pertama X = paul; jawaban ke dua no 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. atau X 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 dihubungkan dengan 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_wuruk Hasanudin Tribuana Elizabeth Jokowi Kartini desi
Instalasi Instal SWI Prolog Instal SWI Editor, SWI Editor hanya bisa digunakan dengan SWI Prolog 32 bit
Buatlah rule untuk hubungan: 1.father 2.mother 3.son 4.daughter 5.grandfather 6.aunt 7.sister 8.uncle 9.cousin 10.brother
Buatlah rule untuk hubungan: 1.father 2.mother 3.son 4.daughter 5.grandfather 6.aunt 7.sister 8.uncle 9.cousin 10.brother