Jl Srijaya Negara Bukit Besar Palembang 30139, Telpon : +62711‐353414
PROGRAM STUDI D3 JURUSAN TEKNIK KOMPUTER POLITEKNIK NEGERI SRIWIJAYA PALEMBANG TK
Mendalami SWI Prolog
Hand On Lab 2
Inteligensi Buatan
100 menit
Lecturer : M. Miftakul Amin, S. Kom., M. Eng. Website : http://mafisamin.blog.ugm.ac.id Tujuan : 1. Mahasiswa dapat menjelaskan konsep predikat dalam prolog. 2. Mahasiswa dapat menggunakan prolog untuk menyelesaikan masalah yang diberikan. Perlengkapan : Perangkat lunak SWI Prolog 1. Syntax SWI Prolog Sebagaimana bahasa pemrograman lain, SWI prolog memiliki beberapa aturan penulisan yang harus ditaati oleh programmer yang jika dilanggar akan berakibat terjadi error. Beberapa aturan penting yang perlu diperhatikan adalah: 1.1 Komentar Komentar merupakan notasi yang tidak akan dijalankan atau dieksekusi oleh interpreter prolog. Komentar yang digunakan adalah: /* untuk komentar yang terdiri dari beberapa baris */ % komentar juga dapat diawali dengan tanda persen jika hanya untuk satu baris 1.2 Fakta/fact Fakta merupakan apa yang diketahui, sebagai database. Dalam prolog relasi antara objek disebut dengan predicate. Setiap kalimat harus diakhiri dengan titik (.). Sebagai contoh : ahmad suka steak. Æ dalam prolog menjadi Æ suka(ahmad, steak). dina suka steak. Æ dalam prolog menjadi Æ suka(dina, steak). badar suka steak. Æ dalam prolog menjadi Æ suka(badar, steak). badar suka suci. Æ dalam prolog menjadi Æ suka(badar, suci). yuda suka kucing. Æ dalam prolog menjadi Æ suka(yuda, kucing). Yang perlu diperhatikan adalah predicate dan objek ditulis dalam huruf kecil. 1.3 Aturan/rule Aturan merupakan apa yang dapat disimpulkan dari fakta yang ada. Aturan dapat mengambil suatu fakta dari fakta yang lain. Sebagai contoh: Ahmad suka sesuatu jika dina juga menyukai sesuatu tersebut. Dalam prolog menjadi Æ suka(ahmad, Sesuatu) :- suka(dina, Sesuatu). Atau dapat juga ditulis Æ suka(ahmad, X) :- suka(dina, X).
1 | H a l a m a n
1.4 Query Query merupakan pertanyaan yang kita berikan ke sistem prolog yang jawabannya ada dalam fakta yang sudah diberikan. Sebagai contoh: Apa yang disukai oleh badar? Æ dalam prolog menjadi Æ suka(badar, X). 1.5 Variabel dan konstanta Variable merupakan tempat penyimpanan data yang isinya sewaktu-waktu dapat berubah, sedangkan konstanta merupakan nilai yang sifatnya tetap. Sebagai contoh : suka(badar, suci). Æ dalam hal ini badar dan suci merupakan konstanta. Suka(X, steak). Æ dalam hal ini X adalah variable dan steak adalah konstanta. Penulisan variable harus diawali dengan menggunakan huru besar seperti X,A,P,Q, Sesuatu, What, dll serta dapat diawali dengan tanda _ (garis bawah). 1.6 Menggunakan operator AND dan OR. Klausa konjungsi (AND) dinotasikan dengan tanda koma (,) sedangkan disjungsi (OR) dinotasikan dengan tanda titik koma (;). Sebagai contoh: Siapa yang suka steak dan suci? Æ suka(X, steak), suka(X,suci). Siapa yang suka steak atau suci? Æ suka(X, steak); suka(X,suci). 1.7 Menggunakan tanda semi colon (;) Tanda (;) dapat digunakan untuk menampilkan seluruh kemungkinan jawaban yang dihasilkan dari sebuah query. Sebagai contoh: ?- suka(X,steak);suka(X,suci). X = ahmad ; X = dina ; X = badar ; X = ahmad ; X = badar ; No Jika tidak ada tanda (;) pada saat menekan tombol Enter, maka hanya satu alternatif jawaban saja yang ditampilkan. 1.8 Menggunakan klausa write Klausa write digunakan untuk menuliskan output ke layar monitor. Sebagai contoh: ?- write('Halo'),nl,write('Selamat Belajar SWI Prolog'). Halo Selamat Belajar SWI Prolog Yes
2 | H a l a m a n
2. Objek Data dalam Prolog Beberapa objek data dalam prolog dikenal dengan istilah term. Berikut objek data yang ada dalam SWI Prolog: 2.1 Number Merupakan bilangan dari 0-9 baik yang memiliki tanda atau tidak, seperti 623, -47, +5. 2.2 Atoms Merupakan konstanta yang tidak memiliki nilai numerik untuk operasi aritmatika. Seperti john, ‘Today is Tuesday’. 2.3 Variabel Pemberian nama variable harus diawali huruf besar atau garis bawah. Sebagai contoh X, Author, _123A tetapi tidak boleh diawali dengan numeric. 2.4 Compound term Klausa yang terdiri dari predicate dan sekumpulan parameter. Contoh suka(badar, suci), read(X). 2.5 List Merupakan daftar yang berisi elemen. Sebagai contoh [dog, cat, y, z]. 3. Predicate member. SWI prolog memiliki sebuah predicate built-in dengan nama member, yang digunakan untuk mengetahui apakah sebuah nilai merupakan anggota dalam daftar nilai. Predicate member ini memiliki 2 buah argument, argument pertama adalah nilai yang akan dicari, sedangkan argument ke-2 adalah daftar nilai yang berisi alternatif kemungkinan nilai yang ada. 1 ?- member(1,[2,5,6,7,1]). Yes 2 ?- member(8,[2,5,6,7,1]). No 3 ?- member(X, [2,5,6,7,1]). X = 2 ; X = 5 ; X = 6 ; X = 7 ; X = 1 ; No
4. Syntax Aturan/rules Aturan dalam menuliskan aturan/rules adalah sebagai berikut: head :- t1,t2, …, tk. (k>=1) t1,t2, …, tk merupakan badan dari klausa yang mengikuti head setelah tanda :- (yang berarti jika). Berikut beberapa contoh aturan : hewan_besar(X) :- hewan(X), besar(X). kakek(X,Y) :- ayah(X,Z), orangtua(Z,Y). go :- write(‘Selamat Datang’),nl.
3 | H a l a m a n
Tugas Praktikum : 1) Coba beberapa klausa berikut melalui prompt SWI Prolog. Berikan penjelasan dari hasil ujicoba tersebut yang dapat anda pahami. ?????????-
write(hello). write(Hello). write('Hello'). write('Hello!'),nl. 100=100. 100=1000/10. 100 is 1000/10. 1000 is 100*10. 2 is (5+7)/2.
2) Eksekusi beberapa klausa berikut melalui prompt SWI Prolog. Kemudian berikan penjelasan dari hasil yang diperoleh. ?????-
read(X). put(97),nl. put(122),nl. put(64),nl. get0(N).
3) Tulis program berikut kemudian simpan dengan nama perulangan.pl. loop(0). loop(N) :- N>0, write('Nilainya adalah :'),write(N),nl, M is N-1, loop(M).
kemudian jalankan program tersebut dengan perintah berikut. ?- ['C:/SWIProlog/perulangan.pl']. % C:/SWIProlog/perulangan.pl compiled 0.00 sec, 0 bytes Yes ?- loop(6). Nilainya adalah Nilainya adalah Nilainya adalah Nilainya adalah Nilainya adalah Nilainya adalah
:6 :5 :4 :3 :2 :1
4) Coba tulis dan eksekusi program berikut untuk membuat sebuah menu utama, dan pahami bagaimana cara kerjanya. Simpan file dengan nama menu.pl dan untuk menjalankannya anda cukup mengetikkan ?- go. go :- write('Menguji Bagaimana Repeated Menu Bekerja'),menu. menu :- nl,write('Menu'),nl, write('a. Menu 1'),nl, write('b. Menu 2'),nl, write('c. Menu 3'),nl, write('d. Exit'),nl, read(Pilihan),nl,pilihan(Pilihan). pilihan(a) :- write('Menu 1 dipilih'),menu. pilihan(b) :- write('Menu 2 dipilih'),menu. pilihan(c) :- write('Menu 3 dipilih'),menu. pilihan(d) :- write('Good By'),nl. pilihan(_) :- write('Coba Kembali'),menu.
4 | H a l a m a n
?- ['C:/SWIProlog/menu.pl']. % C:/SWIProlog/menu.pl compiled 0.00 sec, 1,712 bytes Yes ?- go. Menguji Menu a. Menu b. Menu c. Menu D. Exit | a.
Bagaimana Repeated Menu Bekerja 1 2 3
Menu 1 dipilih Menu a. Menu 1 b. Menu 2 c. Menu 3 D. Exit
Diperiksa tanggal :_____________ Dosen Pengampu:
(M. Miftakul Amin, S. Kom., M. Eng.) NIP. 197912172012121001 Sumber referensi: Suyoto. 2004. Intelegensi Buatan Teori dan Pemrograman. Yogyakarta: Penerbit Gava Media
5 | H a l a m a n
Nama Laboratorium :
Nomor Komputer :