Pengenalan PROLOG
Tools Pembangun Sistem Pakar • Language – – – – – – – – – – –
LISP Prolog CLIPS Planner Conniver Popler OPS5 AMORD SAIL LOGO Smaltalk
• Shell – – – – – – –
EXSYS PC+ CRYSTAL 1stClass EXPERT EASE INSIGHT2+ e2glite
Dasar-Dasar Prolog • Fakta dan Relasi – Prolog terdiri dari kumpulan data-data obyek yang merupakan suatu fakta – Fakta selalu benar (true) – Dalam prolog, fakta dibedakan menjadi 2 macam : • Menunjukkan relasi • Menunjukkan milik / sifat
– Contoh : • Slamet adalah ayah Amin – ayah(slamet,amin).
• Anita adalah wanita – wanita(anita).
Aturan (Rules) • Suatu pernyataan yang menunjukkan bagaimana faktafakta berinteraksi satu dengan yang lain untuk membentuk suatu kesimpulan • Dinyatakan sebagai suatu kalimat bersyarat • Contoh : – Fakta : Tino suka apel – Aturan : Yuli suka sesuatu yang disukai Tino
• Dalam prolog ditulis : – suka(tino,apel). – suka(yuli,Sesuatu) if suka(tino,Sesuatu).
Pertanyaan (Query) • Untuk mengajukan pertanyaan, misal : Apakah Tini suka boneka? • Dalam prolog ditulis : – suka(tini,boneka).
• Prolog akan memberikan jawaban : – Yes
• Jika pertanyaannya – suka(tini,mobil-mobilan).
• Prolog akan memberikan jawaban : – No
• Prolog juga mampu memberikan jawaban atas pertanyaan apakah, siapakah, dan lain-lain • Misal : Apakah yang disukai Tini ? – suka(tini,Apa).
• Prolog akan memberikan jawaban : – Apa = boneka
• Siapakah yang suka boneka ? – suka(Siapa,boneka). – Siapa = tini
Struktur Program Prolog • Program Turbo Prolog 2.0 terdiri dari 4 bagian utama : – DOMAINS – PREDICATES – CLAUSES – GOAL
Domains • Berisi deklarasi (pernyataan) tentang jenis data yang digunakan dalam fakta dan aturan • Ada 6 buah domain standar: – – – – – –
Integer : -32.768 sampai 32.767 Real : 1e-307 sampai 1e+308 Char String Symbol : kumpulan karakter yang diawali dengan huruf kecil File : digunakan untuk operasi file
• Dapat pula mendefinisikan domain lain yang terdiri dari domain standar
Predicates / Predikat • Nama simbolik untuk relasi – ayah(slamet,amin).
• Predikat dari fakta diatas ditulis : – ayah(symbol,symbol)
• • • •
Slamet dan amin disebut argumen Jumlah argumen disebut aritas (arity) Ditulis tanpa diakhiri tanda titik Syarat penulisan nama predikat : – Diawali huruf kecil dan dapat diikuti huruf, angka, atau garis bawah – Panjang nama maksimum 250 karakter – Tidak diperbolehkan menggunakan spasi, tanda minus, tanda bintang, dan garis miring.
Clauses (Klausa) • Berisi fakta dan aturan yang membentuk keseluruhan program • Mirip prosedur pada bahasa pemrograman lain • Bagian fakta umumnya ditulis sebelum bagian aturan • Fakta dan aturan yang mempunyai relasi yang sama harus dituliskan berkelompok • Fakta/aturan ditulis mulai dari fakta/aturan yang paling atas kemudian urut ke bawah • Kemungkinan yang lebih besar ditempatkan lebih awal daripada kemungkinan yang lebih kecil
• Contoh penulisan yang salah : ayah(slamet,amin). ayah(slamet,anang). kakek(slamet,budi). ayah(amin,budi).
• Contoh penulisan yang benar : ayah(slamet,amin). ayah(slamet,anang). ayah(amin,budi). kakek(slamet,budi).
• Pernyataan if ditulis dengan simbol “:-” suka(ira, Sesuatu) :- suka(anton,Sesuatu)
Goal / Tujuan • Berisi pertanyaan yang diajukan kepada Turbo Prolog • Dapat terdiri dari beberapa bagian yang disebut subgoal • 2 jenis goal : – Goal eksternal : goal yang diberikan melalui compiler, dituliskan dalam jendela Dialog – Goal internal : goal yang dituliskan sekaligus dalam program GOAL : ayah(slamet,badu) True.
Goal Majemuk • Goal yang terdiri lebih dari satu pernyataan • Bagian goal tersebut disebut sub goal GOAL : mobil(Merk,Warna,Harga), Harga < 50. GOAL : mobil(Merk,Warna,Harga), Warna = merah, Harga < 35.
Variabel • Besaran yang nilainya dapat berubah-ubah GOAL : ayah(X,didi) X = anang
• X adalah variabel • Tata cara penulisan variabel – Harus diawali huruf besar atau garis bawah (_) – Dapat terdiri dari huruf, angka atau simbol dan merupakan satu kesatuan – Panjang maksimum 250 karakter – Hendaknya mengandung makna yang berkaitan dengan data yang dinyatakannya
• 3 macam variabel – Variabel bebas (free variable) – Variabel terikat (bound variable) – Variabel tak bernama (anonymous variable) GOAL : ayah(Ayah,amin), ayah(Ayah,anang) GOAL : ayah(Ayah,_) Anonymous variable
Referensi • •
Farid Azis bab 4 Andrey Andoko bab 4