Selasa, 08 Desember 2009

Fact, Rules, Predicate, and Variable in Prolog

Prolog memiliki beberapa istilah yang disebut clause, fact, rules, predicate, dan variable. Semua bagian itu sangat penting dalam menjalankan program Prolog. Karena semuanya memiliki fungsi masing-masing yang tentunya sangat berguna untuk Logic Programming. Berikut ini akan dijelaskan satu persatu.

Fact and Rule (Fakta dan Aturan)
Program Prolog adalah program yang menggambarkan hubungan. Biasanya, hubungan-hubungan itu didefinisikan dengan menggunakan clause. Ada dua jenis klausa: Fakta dan aturan. Sebuah aturan adalah dalam bentuk
Head : - Body.

dan dibaca sebagai “Head is true if the body is true".


Clauses dengan tubuh kosong disebut fakta. Sebuah contoh fakta adalah:

sapi (randy).

yang setara dengan aturan:

sapi(randy): - true.

Jika predikat benar/0 adalah selalu benar.

Mengingat fakta di atas, kita dapat bertanya:

apakah randy sapi?

? - sapi (randy).
Yes.

apa diketahui tentang sapi?

? - sapi (X).
X = randy

Predicate (Predikat)
Dalam klausa prolog, terkadang juga ada suatu hal yang disebut predikat. Namun, tidak semua klausa memiliki predikat. Dibawah ini adalah contoh klausa berpredikat.
Jebakan(Apriyan, anaconda, jaring).
'jebakan' adalah predikat klausa, dan tiga istilah 'Apriyan', 'anaconda', dan 'jaring' adalah argumen klausa. Predikat 'jebakan' adalah dikatakan telah (atau mengambil) tiga argumen.
Variable (Variabel)
Sebuah variabel Prolog dapat mewakili banyak hal. Misalnya saja nomor, nama, struktur, sebuah array, sesuatu yang rumit yang dikenal sebagai alam semesta. Sebuah program Prolog bekerja dengan membatasi variabel-variabel sampai akhirnya mereka memiliki nilai-nilai tertentu, kemudian mengatakan apa yang nilai-nilai tersebut. Sebuah program yang sederhana mungkin akan

X adalah 3 +2.

dan ketika anda menjalankan itu, hasilnya akan

X = 5.
Yes.

Practical Exercise 2
(1) Type the following program into a file and load it into Prolog.



/* Animals Database */
animal(mammal,tiger,carnivore,stripes).
animal(mammal,hyena,carnivore,ugly).
animal(mammal,lion,carnivore,mane).
animal(mammal,zebra,herbivore,stripes).
animal(bird,eagle,carnivore,large).
animal(bird,sparrow,scavenger,small).
animal(reptile,snake,carnivore,long).
animal(reptile,lizard,scavenger,small).



Devise and test goals to find (a) all the mammals, (b) all the carnivores that are
mammals, (c) all the mammals with stripes, (d) whether there is a reptile that has a
mane.
(2) Type the following program into a file



/* Dating Agency Database */
person(bill,male).
person(george,male).
person(alfred,male).
person(carol,female).
person(margaret,female).
person(jane,female).



Extend the program with a rule that defines a predicate couple with two
arguments, the first being the name of a man and the second the name of a woman.
Load your revised program into Prolog and test it.

Jawaban Exercise 2 Menggunakan Prolog

1. Untuk menjawab pertanyaan no.1 dalam prolog, maka harus memasukkan data dulu ke dalam prolog.



animal(mammal,tiger,carnivore,stripes).
animal(mammal,hyena,carnivore,ugly).
animal(mammal,lion,carnivore,mane).
animal(mammal,zebra,herbivore,stripes).
animal(bird,eagle,carnivore,large).
animal(bird,sparrow,scavenger,small).
animal(reptile,snake,carnivore,long).
animal(reptile,lizard,scavenger,small).

(a) Tambahkan rule hewan apa saja yang merupakan mamalia.


mammal :- animal(mammal,Name,_,_),write(Name),nl,fail.
(b) Tambahkan rule untuk menuliskan daftar mamalia yang juga karnivora


mammal_carnivore :- animal(mammal,Name,carnivore,_),write(Name),nl,fail.
(c) Tambahkan rule untuk menuliskan mamalia dengan corak.



mammal_stripe:- animal(mammal,Name,_,stripes),write(Name),nl,fail.
(d) Tambahkan rule untuk menuliskan daftar reptile dengan mane.


reptile_mane :- animal(reptile,Name,_mane),write(Name),nl,fail.



Gambar input data yang dituliskan dalam prolog.



Gambar yang menunjukkan hasil dari logic programming dengan prolog pada no.1

2. Untuk menjawab pertanyaan no.2 dalam prolog, maka harus memasukkan data dulu ke dalam prolog.
/* Dating Agency Database */
person(bill,male).
person(george,male).
person(alfred,male).
person(carol,female).
person(margaret,female).
person(jane,female).

Kemudian untuk mencari kemungkinan pasangan antara pria dan wanita yang dapat terjadi, kita perlu menambahkan ini.
couple(X,Y) :- person(X,male),person(Y,female).



Gambar input data yang dituliskan dalam prolog.



Gambar yang menunjukkan hasil dari logic programming dengan prolog pada no.2

Tidak ada komentar:

Posting Komentar