LOGIC PROGRAMMING. (BAHASA PEMROGRAMAN LOGIKA). ALGORITMA
DAN PEMROGRAMAN 1 C. HENNY MEDYAWATI. Sumber: Papadopoulos,
Harris ...
LOGIC PROGRAMMING (BAHASA PEMROGRAMAN LOGIKA)
ALGORITMA DAN PEMROGRAMAN 1 C HENNY MEDYAWATI
Sumber: Papadopoulos, Harris. ACSC300: Logic Programming, lecture 1: Introduction to Logic Programming and Prolog
LOGIC PROGRAMMING • PROBLEM SOLVING = PROBLEM DESCRIPTION + LOGICAL DEDUCTIONS Bagaimana kita dapat memiliki kemampuan membuat logika deduksi? Idealnya, kita memberitahukan kepada komputer ‘apa’ yang kita ingin kerjakan, bukan ‘bagaimana’ cara mengerjakannya
Bahasa Pemrograman Imperative vs Deklarative • Pada bahasa pemrograman imperative, contohnya Java, Pascal, C++), kita memberitahu komputer ‘bagaimana/how’ cara menyelesaikan masalah, misalnya cetak A, kalikan A dan B…dsb • Pada bahasa pemrograman deklarative (contohnya Prolog), kita mendeklarasikan ‘apa/what’ permasalahannya dan komputer yang akan memecahkan masalah nya
Pengenalan Prolog • Prolog adalah bahasa pemrograman pertama yang murni menggunakan bahasa pemrograman deklarative • Prolog kependekan dari ‘Programmation en Logique’ • Pertama kali diperkenalkan tahun 1970 oleh Robert Kowalski dan Maarten van Emden, Alain Colmerauer , selanjutnya diimplementasikan oleh David Warren
Pengenalan Prolog • Pada saat kita menuliskan program dalam bahasa prolog, artinya kita menuliskan pengetahuan kita mengenai suatu masalah, kita membuat model dari suatu masalah • Prolog secara luas dipergunakan untuk pemodelan sistem (contoh prototipe perangkat lunak, desain sirkuit) dan untuk banyak aplikasi intelegensi buatan seperti Expert System dan Natural Language Processing
Konsep Prolog • Program Prolog terdiri dari sekumpulan clauses • Setiap clause dapat berupa fakta atau aturan (fact or rule) • Contoh clauses : Facts : male(philip). female(anne). parent(philip,anne). Rules : father(X,Y) : - parent(X,Y), male(X). ancestor(X,Y) :- parent(X,Y). ancestor(X,Y) :- ancestor(X,Z), parent(Z,Y).
Terms (Terminologi/Istilah) • Sebuah terms mewakili suatu objek atau kelas dari objek yang akan dibahas
• Objek dapat berupa : - konstanta, yang dapat berupa : angka : 37, 12.4, -5 string : ‘helo world’, ‘Pete’ atom : philip, monkey - variabel : X, Person - compound term : tanggal (May, 1, 2004)
Facts (Fakta) • Fakta mewakili satu unit informasi yang diasumsikan bernilai benar • Kadangkala suatu fakta terdiri dari beberapa istilah atau merupakan suatu daftar istilah male(philip). parent(philip,anne).
Rules (Aturan-aturan) • Suatu aturan mewakili beragam kondisi (‘this is true if this is true’) need_umbrella :- its_raining. father(X,Y) :- parent(X,Y), male(X). IF
AND
• Secara umum aturan adalah suatu ekspresi dengan bentuk : A :- B1, B2,…,Bn dimana A dan B1, B2, …Bn adalah formula atomik A adalah head (kepala) dari aturan B1, B2, …., Bn adalah body (tubuh) dari aturan Variabel : Penulisannya dengan huruf besar atau underscores (contoh : X, TimeTable, _24) Semua yang dimulai dengan huruf besar pada prolog adalah variabel (kecuali dalam tanda petik “)
• Suatu clause merupakan statemen prolog, contohnya fakta atau aturan (fact or rule)
• Semua clause pada prolog harus diakhiri dengan tanda titik (dot) • Penggunaan program prolog dilakukan melalui query contoh : ? –parent(philip, anne). ? –border(wales,scotland). Interpreter pada Prolog akan merespon : Yes or No Semua query harus diakhiri tanda titik (dot)
Query • Query dapat terdiri dari variabel-variabel : ?- parent(philip, who). interpreter prolog akan memberikan respon melalui nilai2 yang terdapat pada variabel sehingga query akan menjadi benar (jika ada), kalau tidak ada jawaban yang benar, maka akan direspon dengan no