Pemrograman Visual Prolog - Dasar ( II )
Tulisan berikut tentang penggunaan tipe data string dan symbol. Sebelumnya perlu diketahui bahwa kita harus mendeklarasikan predikat yang ada pada bagian predicates dan mendefinisikannya dalam bagian clauses. Jika tidak program tersebut tidak dapat berjalan karena visual prolog tidak mengenalnya.
Beriku sintaks ( kode programnya)
Baris sintak diatas merupakan klausa. Kata orang, dapat_membeli, mobil, suka, dan dijual disebut relasi, dan yang berada di dalam tanda kurung merupakan objek dan disebut argument. Nama relasi seperti orang disebut juga predikat. Predikat boleh juga tanpa argument. Jadi predikat dapat dikatakan sebagai nama suatu relasi dan menentukan jenis objek yang terlibat. Dalam section CLAUSES ini setiap penulisan fakta harus diakhiri dengan tanda titik.
Sekumpulan klausa dari predikat yang sama harus disatukan (dikelompokkan) dalam bagian clauses dan disebut prosedur. Jika melakukan pemanggilan klausa atau matching, program ini melacaknya dari atas ke bawah. Jika prolog menemukan bandingan atau klausa yang match, prolog mencatat tempat ditemukannya klausa yang match. Bagian clauses merupakan inti program ini, dapat juga tanpa clauses tetapi tentunya goal hanya terdiri dari predikat standar. Jika ada bagian clauses harus ada bagian predicates atau sebaliknya. Urutan dalam prosedur harus benar untuk menjaga prolog dapat mencari jawaban dengan benar dan juga menentukan kecepatan eksekusi program.
Berikut arti sebagian sintak clausa jika diartikan dalam bahasa formal, misal ;
GOAL
dapat_membeli(Siapa, Apa).
Baris sintak diatas merupakan Goal. Dalam bahasa formal biasa disebut sebagai sebuah kalimat pertanyaan atau tujuan. Arti dari goal tersebut jika diubah kedalam bahasa formal yaitu : Siapa yang dapat membeli Apa? ==> dalam hal ini Siapa merupakan variabel X dan Apa merupakan variabel Y.
Hasil dari Goal tersebut yaitu :
Hasil menunjukkan seperti diatas karena ada predicates nondeterm dapat_membeli(symbol,symbol) dan klausa dapat_membeli(X,Y):-orang(X), mobil(Y), suka(X,Y), dijual(Y). Dimana Prolog tahu bahwa : orang(dian)., mobil(atoz)., suka(dian,atoz)., dijual(atoz).
predicatesDeklarasi predikat pada bagian predicates, harus juga disertai argument jika memang berargumen, jika tidak berarti tidak memiliki argument. Jumlah argument dalam predikat disebut aritas (arity). Satu predikat boleh memiliki aritas yang berbeda (dengan syarat harus dikelompokkan dalam bagian clausenya). Kata nondeterm pada section predicates berfungsi untuk memberi tahu compiler bahwa predikat tersebut mempunyai lebih dari satu kemungkinan jawaban (non-deterministik).
nondeterm dapat_membeli(symbol, symbol)
nondeterm orang(symbol)
nondeterm mobil(symbol)
suka(symbol, symbol)
dijual(symbol)
clauses
dapat_membeli(X,Y):-
orang(X),
mobil(Y),
suka(X,Y),
dijual(Y).
orang(nur).
orang(yudi).
orang(dian).
orang(heni).
mobil(atoz).
mobil(kijang).
suka(dian, atoz).
suka(yudi, pecel).
suka(heri, buku).
suka(nur, komputer).
dijual(kijang).
dijual(atoz).
dijual(buku).
goal
dapat_membeli(Siapa,Apa).
Baris sintak diatas merupakan klausa. Kata orang, dapat_membeli, mobil, suka, dan dijual disebut relasi, dan yang berada di dalam tanda kurung merupakan objek dan disebut argument. Nama relasi seperti orang disebut juga predikat. Predikat boleh juga tanpa argument. Jadi predikat dapat dikatakan sebagai nama suatu relasi dan menentukan jenis objek yang terlibat. Dalam section CLAUSES ini setiap penulisan fakta harus diakhiri dengan tanda titik.
Sekumpulan klausa dari predikat yang sama harus disatukan (dikelompokkan) dalam bagian clauses dan disebut prosedur. Jika melakukan pemanggilan klausa atau matching, program ini melacaknya dari atas ke bawah. Jika prolog menemukan bandingan atau klausa yang match, prolog mencatat tempat ditemukannya klausa yang match. Bagian clauses merupakan inti program ini, dapat juga tanpa clauses tetapi tentunya goal hanya terdiri dari predikat standar. Jika ada bagian clauses harus ada bagian predicates atau sebaliknya. Urutan dalam prosedur harus benar untuk menjaga prolog dapat mencari jawaban dengan benar dan juga menentukan kecepatan eksekusi program.
Berikut arti sebagian sintak clausa jika diartikan dalam bahasa formal, misal ;
- dapat_membeli(X,Y):-orang(X), mobil(Y), suka(X,Y), dijual(Y). Arti sintak diatas dalam bahasa formal yaitu : X dapat membeli Y jika X adalah orang dan Y adalah mobil dan X suka Y dan Y dijual.
- orang(nur). Arti sintak diatas dalam bahasa formal yaitu : nur adalah orang.
- mobil(atoz). Arti sintak diatas dalam bahasa formal yaitu : atoz adalah mobil.
- suka(yudi, pecel). Arti sintak diatas dalam bahasa formal yaitu : yudi suka pecel.
- dijual(atoz). Arti sintak diatas dalam bahasa formal yaitu : atoz dijual.
GOAL
dapat_membeli(Siapa, Apa).
Baris sintak diatas merupakan Goal. Dalam bahasa formal biasa disebut sebagai sebuah kalimat pertanyaan atau tujuan. Arti dari goal tersebut jika diubah kedalam bahasa formal yaitu : Siapa yang dapat membeli Apa? ==> dalam hal ini Siapa merupakan variabel X dan Apa merupakan variabel Y.
Hasil dari Goal tersebut yaitu :
Hasil menunjukkan seperti diatas karena ada predicates nondeterm dapat_membeli(symbol,symbol) dan klausa dapat_membeli(X,Y):-orang(X), mobil(Y), suka(X,Y), dijual(Y). Dimana Prolog tahu bahwa : orang(dian)., mobil(atoz)., suka(dian,atoz)., dijual(atoz).
Comments
Post a Comment
Please Don't make SPAM HERE !