1
Modul 1 PENGENALAN PROLOG PENDAHULUAN Prolog adalah singkatan dari Programming in Logic. Prolog adalah bahasa yang dibangun atas dasar pemrograman alamiah dan logika. Prolog merupakan bahasa deklaratif, artinya jika diberi fakta dan aturan maka Prolog akan menyelesaikan problem secara deduktif, atau menurunkan kesimpulan sebagai jawaban berdasarkan fakta dan aturan yang diberikan. Perbedaan bahasa deklaratif dan prosedural : Pada bahasa deklaratif hanya membutuhkan deklarasi atau uraian masalah, sedangkan pada bahasa prosedural seperti : bahasa C, dll memerlukan perintah. Prolog : Goal oriented (apa yang harus dipecahkan), sedangkan pada bahasa prosedural menjawab bagaimana harus memecahkan masalah. Dalam logika predikat, fakta dan aturan dinyatakan melalui predikat. contohnya : ‐ lelaki(iwan). (fakta) (Dibaca : Iwan lelaki) ‐ anak(tina,iwan). (fakta) (Dibaca : Tina anak Iwan) ‐ menikahi(iwan,ira). (fakta) (Dibaca : Iwan menikahi Ira) ‐ menikahi(X,Y) :‐ lelaki(X) , perempuan (Y) (aturan) (Dibaca : X menikahi Y jika X lelaki dan Y perempuan) CIRI BAHASA PROLOG Bahasa Prolog selain mencari jawaban secara logika terhadap pertanyaan yang diajukan, juga dapat memberi semua kemungkinan jawaban. Predikat : Menggambarkan relasi dua buah objek atau lebih atau sifat suatu objek. Objek yang terkait disebut argumen. Contoh : suka(irwan, permen). predikat : suka; argumen : Irwan, permen. (Dibaca : Irwan suka permen) manis(permen). predikat : manis ; argumen : permen. (Dibaca : permen manis) Deduksi : Prolog dapat melakukan penarikan kesimpulan. Contoh : Diberikan fakta : Dede suka Iik 2
Cece suka Ryan Dan aturan : Celung suka seseorang jika Cece suka orang itu. Prolog menarik kesimpulan : Celung suka Ryan. Pemadanan/Unifikasi : Dalam mencari jawaban atau menarik kesimpulan, Prolog melakukan pemadanan, yaitu argumen pertama dipadankan dengan argumen pertama pada predikat lain yang sama dan seterusnya. STRUKTUR PROGRAM PROLOG Program Prolog terdiri dari : a. Domains ‐ Domains menyatakan jenis suatu variabel. ‐ Itu berarti domains seperti tipe dalam Pascal, C, atau bahasa Prosedural lainnya. Beberapa domains standar dalam prolog: char, integer, real, string, symbol. contoh: Domains namaOrg = symbol alamat = string nilai = integer ‐ Domains char dipakai pada predikat yang argumennya memiliki nilai berupa karakter tunggal, yaitu abjad, angka, pungtuasi (?.!,<,...), dan operasi(+,‐,...). Penulisan argumen bertipe char dalam prolog diapit tanda ’...’. contoh: nilai(doni,’A’). ‐ Domains string dipakai pada predikat yang argumennya memiliki nilai berupa karakter jamak yang dapat berupa kata maupun suatu tulisan (kumpulan kata‐kata termasuk di dalamnya pungtuasi dan tanda operasi yang dapat dipisahkan spasi). Penulisan argumen bertipe string dalam prolog diapit tanda ”...”. contoh: kuliah(joko,”Intelegensi Buatan”). ‐ Domains integer dipakai pada predikat yang argumennya memiliki nilai berupa bilangan bulat. contoh: nilai(rudi,”Statistika”,85). ‐ Domains real dipakai pada predikat yang argumennya memiliki nilai berupa bilangan pecahan. Penulisan argumen bertipe real dalam prolog untuk nilai pecahan ditulis di belakang tanda . (titik). contoh: ipk(deni, 3.25). 3
‐ Domains symbol dipakai pada predikat yang argumennya memiliki nilai berupa kumpulan karakater yang hanya terdiri dari huruf atau kata tanpa dipisahkan oleh spasi. Suatu kata dapat disambungkan dengan kata lain dengan tanda _ (underscore). contoh: lelaki(toni_setiawan). b. Predicates ‐Predicates digunakan untuk mendeklarasikan predikat. ‐ Penulisan dalam Prolog : Diawali dengan huruf kecil. Contoh: orangtua(x,y) lulus(orang,matakuliah) pedas(z) c. Clauses - Clauses digunakan untuk mendefinisikan predikat. - Clauses terdiri dari fakta dan aturan 1. Fakta ‐Fakta merupakan suatu kenyataan atau kebenaran yang diketahui. ‐ Fakta menyatakan hubungan / relasi antara dua obyek atau lebih atau menunjukkan sifat suatu obyek. ‐ Penulisan dalam Prolog : Diawali dengan huruf kecil dan diakhiri dengan tanda titik. Contoh : orangtua (ali, husein). lulus(deni,kalkulus). pedas(cabe). 2. Aturan ‐ Aturan penulisan : If ditulis sebagai :‐ And ditulis sebagai , Or ditulis sebagai ; d. Goal Goal adalah tempat pernyataan (query) diberikan atau meminta prolog untuk mencapai tujuan yang dikehendaki.
Contoh : Kasus UJI KELULUSAN
Terdapat Fakta dengan definisi sebagai berikut : 4
kuliah(X,Y) : X kuliah Y nilai(X,Y,Z) : nilai X untuk mata kuliah Y adalah Z
Terdapat Aturan dengan definisi sebagai berikut : lulus(X,Y) : X lulus Y jika X kuliah Y dan nilai X untuk mata kuliah Y adalah Z dan Z lebih dari 50
1. Berdasarkan definisi Fakta dan Aturan yang diberikan di atas ketikan program berikut domains orang = symbol mk = string nilai = integer predicates kuliah(orang,mk). nilai(orang,mk,nilai). lulus(orang,mk). clauses kuliah(adi,"logika"). kuliah(adi,"fisika"). kuliah(budi,"logika"). kuliah(cika,"fisika"). kuliah(cika,"logika"). kuliah(deni,"logika"). kuliah(eni,"logika"). nilai(adi,"logika",50). nilai(adi,"fisika",45). nilai(budi,"logika",80). nilai(cika,"fisika",85). nilai(cika,"logika",70). nilai(deni,"logika", 70). nilai(eni,"logika",40). lulus(X,Y) :‐ kuliah(X,Y), nilai(X,Y,Z), Z>50. goal ... Tentukan dulu goalnya dan jalankan program dengan menekan tombol Ctrl+G sehingga muncul hasil TEST GOAL. 5
2. Test goal berikut ini a. Apakah Budi mengikuti kuliah Logika ? goal Goal kuliah(budi,”logika”). Hasil Eksekusi Goal: yes b. Siapa saja yang mengikuti kuliah Logika ? goal kuliah(X,”logika”). Goal Maka akan muncul warning: Nondeterministic Clause : kuliah Mengapa demikian??? Karena clause kuliah(orang,mk) tidak tergantung pada nilai tertentu(nondeterministik). Solusi:
Maka Hasil Eksekusi Goal:Yes c. Siapa saja yang lulus kuliah Logika ? goal lulus(X,”logika”). Hasil Eksekusi Goal: X=budi X=cika X=deni 3 Solutions d. Cika lulus mata kuliah apa saja ? goal lulus(cika,Y). Hasil Eksekusi Goal: Y=fisika Y=logika 2 Solutions
6
Nama : NIM : Kelas : Guided (Berdasarkan Kasus di atas tentukan Goal dan Test Goalnya) : Siapa saja yang memperoleh nilai lebih dari 70 untuk mata kuliah Logika? .................................................................................................................. .................................................................................................................. Siapa saja yang lulus Logika dan Fisika ? .................................................................................................................. .................................................................................................................. Siapa saja yang lulus Logika atau Fisika ? .................................................................................................................. .................................................................................................................. Siapa saja yang berhasil lulus dan untuk mata kuliah apa ? .................................................................................................................. .................................................................................................................. Buatlah aturan untuk mencari mahasiswa yang tidak lulus suatu mata kuliah (nilai <= 50)! Ujilah aturan anda untuk mencari siapa saja yang tidak lulus Logika ! .................................................................................................................. .................................................................................................................. Siapa saja yang lulus Logika tetapi tidak lulus Fisika? ................................................................................................................. .................................................................................................................
Kasus Pohon Keluarga Iwan >< Ani >< Budi Ana >< Badu Edi Mira Jeni Dodi Nani Berdasarkan pohon keluarga di atas diberikan definisi Fakta dan Aturan sebagai berikut: definisi Fakta : 7
lelaki(X) : X adalah lelaki perempuan(X) : X adalah perempuan ayah(Y,X) : Y adalah ayah dari X ibu(Y,X) : Y adalah ibu dari X definisi Aturan : anaklelaki(X,Y,Z) : X adalah anaklelaki dari Y dan Z jika Y adalah ayah dari X dan Z adalah ibu dari X dan X adalah lelaki anakperempuan(X,Y,Z) : X adalah anakperempuan dari Y dan Z jika Y adalah ayah dari X dan Z adalah ibu dari X dan X adalah perempuan
Berdasarkan definisi Fakta dan Aturan yang diberikan di atas maka ketikan program berikut: domains child = symbol father = symbol mother = symbol predicates anaklelaki(child,father,mother). anakperempuan(child,father,mother). lelaki(child). perempuan(child). ayah(father,child). ibu(mother,child). clauses perempuan(mira). perempuan(nani). lelaki(edi). ayah(budi,edi). ibu(ani,edi). ayah(budi,mira). ibu(ani,mira). ayah(badu,nani). ibu(ana,nani). anaklelaki(X,Y,Z):ayah(Y,X),ibu(Z,X),lelaki(X). anakperempuan(X,Y,Z):ayah(Y,X),ibu(Z,X),perempuan(X). Tentukan Goal Dan Hasil Test Goalnya : Siapa ibu dari mira ?
8
......................................................................................................................................... ................................................................................................................. Siapa ibu dari edi dan nani? .......................................................................................................................................... .......................................................................................................................................... Siapa anak lelaki Ani tetapi bukan anak lelaki Budi? ............................................................................................................................ ............................................................................................................................ Siapa anak perempuan Iwan tetapi juga anak perempuan Ani tetapi bukan anak perempuan Budi? ........................................................................................................................... ...........................................................................................................................
9