Top Banner
CLIPS Prolog Exsys Corvid Microsoft Visual Basic
69

Modul Praktikum ES

Jun 25, 2015

Download

Documents

Ryo Mikiyo
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Modul Praktikum ES

CLIPS

Prolog

Exsys Corvid

Microsoft Visual Basic

Page 2: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

FAKTA RULE GOAL

Page 3: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

Fakta, Rule dan Query pada Prolog Pengetahuan pada prolog dituliskan dengan menyatakan fakta (facts) dan aturan (rules) yang disebut dengan : Clauses. Fakta pada prolog ada yang berupa fakta penjelasan sifat satu objek dan ada fakta yang menghubungkan (relasi) keterkaitan dua objek. Aturan/Rules pada prolog merupakan pernyataan sebab-akibat antara beberapa fakta. Selanjutnya untuk menguji pengetahuan tersebut prolog menyediakan fasilitas penulisan Goal. Goal pada prolog dapat dituliskan di dalam kode program langsung (internal) dan dapat juga dituliskan saat program dijalankan/run (external). Menuliskan Goal pada prolog disebut juga memberikan Query (pengajuan pertanyaan)

FAKTA Jika diketahui fakta-fakta berikut :

Windows termasuk Sistem operasi, Linux juga termasuk sistem operasi, Novell juga termasuk sistem operasi, Pascal adalah tool bahasa pemrograman, Delphi juga tool bahasa pemrograman, Office adalah aplikasi, Photoshop adalah aplikasi, Flash adalah aplikasi, JetAudio adalah aplikasi

Untuk menuliskan fakta-fakta di atas, maka ketikkan kode berikut pada prolog :

Clauses Os(windows). Os(linux). Os(novell). Bahasa(vb). Bahasa(delphi). Aplikasi(office). Aplikasi(photoshop). Aplikasi(flash). Aplikasi(jetAudio).

Simpan program tersebut dengan nama file ES0101.pro. Jika program di atas langsung anda jalankan, maka prolog akan memberikan pesan kesalahan sebab predicate : Os, bahasa dan aplikasi belum dideklarasikan. Untuk itu sebelum bagian Clauses tambahkan kode deklarasi predicate berikut :

Predicates Os(symbol). Bahasa(symbol). Aplikasi(symbol).

Page 4: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

Setelah anda tambahkan kode di atas, jalankan kembali program anda. Jika pengetikan anda benar, maka prolog akan memberi anda kesempatan untuk mengajukan query melalui prompt Goal.

Ajukan pertanyaan berikut : - Software apa sajakah yang termasuk Sistem Operasi ?

Goal : Os(A)

- Software mana saja yang termasuk bahasa pemrograman ?

Goal : bahasa(A)

- Software mana saja yang termasuk aplikasi ?

Goal : …………………………………………(tentukan sendiri !)

Symbol A pada pernyataan di atas dapat anda ganti dengan yang lain dan boleh lebih dari 1 karakter asalkan karakter pertamanya huruf besar. Catatan : Penulisan fakta seperti di atas termasuk jenis penulisan fakta yang hanya menjelaskan sifat satu objek, sebab parameter predikatnya hanya satu. Untuk mencobakan penulisan fakta yang merelasikan beberapa objek, tambahkan fakta-fakta di atas menjadi seperti berikut:

Windows termasuk Sistem operasi, Linux juga termasuk sistem operasi, Novell juga termasuk sistem operasi, Vb adalah tool bahasa pemrograman, Delphi juga tool bahasa pemrograman, Office adalah aplikasi, Photoshop adalah aplikasi, Flash adalah aplikasi, JetAudio adalah aplikasi Perusahaan Microsoft membuat windows, Microsoft juga membuat VB, Microsoft juga membuat Office, Borland membuat Delphi, Adobe membuat Photoshop Cowon membuat JetAudio Untuk itu kode prolog anda tambahkan menjadi berikut :

Predicates Os(symbol). Bahasa(symbol). Aplikasi(symbol). Perusahaan(symbol,symbol). Clauses

Page 5: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

Os(windows). Os(linux). Os(novell). Bahasa(vb). Bahasa(delphi). Aplikasi(office). Aplikasi(photoshop). Aplikasi(flash). Aplikasi(jetAudio). Perusahaan(microsoft,windows). Perusahaan(microsoft,vb). Perusahaan(microsoft,office). Perusahaan(borland,delphi). Perusahaan(adobe,photoshop). Perusahaan(cowon,jetAudio).

Simpan program tersebut dengan nama file ES0102.pro. Jalankan/Run program dan ajukan kembali query seperti berikut :

- Apa saja software yang dibuat oleh perusahaan microsoft ? Goal : Perusahaan(microsoft,Software)

- Apakah Delphi dibuat oleh Microsoft ?

Goal : Perusahaan(microsoft,delphi)

- Perusahaan apakah yang membuat Delphi ?

Goal : Perusahaan(Perusahaan,delphi)

- Software apa yang dibuat perusahaan Adobe ?

Goal : ……………………………………………… (tentukan sendiri !)

- Siapakah yang membuat JetAudio ?

Goal : ……………………………………………… (tentukan sendiri !)

Misalkan dari program prolog dari file ES0102.pro diajukan pertanyaan: Microsoft membuat software sistem operasi apa ? Untuk menuliskan pernyataan di atas pada bagian Goal maka akan melibatkan predicate os() juga predicate perusahaan(). Pernyataan demikian disebut dengan pernyataan majemuk. Jalankan kembali program prolog anda dan tuliskan Goal berikut :

Goal : Perusahaan(microsoft,Software),Os(Software)

Artinya : Microsoft membuat software sistem operasi apa ?

Page 6: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

RULE/ATURAN Aturan yaitu hubungan sebab-akibat (if-then) antara beberapa fakta. Aturan juga dapat digunakan untuk mendapatkan fakta baru dari beberapa fakta yang ada. Contoh aturan :

“Sebuah software disebut mahal jika dibuat oleh perusahaan Microsoft.” Maka untuk menuliskan aturan tersebut pada prolog pernyataannya adalah :

Mahal(Software) :- perusahaan(microsoft,Software).

Tambahkan pernyataan di atas pada program prolog dari file ES0102.pro Jangan lupa menambahkan deklarasi predicate mahal().Simpan program tersebut dengan nama file ES0103.pro.

Kemudian jalankan dan berikan query berikut : - Software apa saja yang termasuk mahal ?

Goal : Mahal(Software)

- Apakah Delphi termasuk mahal ?

Goal : Mahal(delphi)

GOAL INTERNAL Goal internal yaitu Goal yang dituliskan di dalam kode program. Dengan adanya Goal Internal maka saat program dijalankan/run tidak ada lagi prompt Goal. Tambahkan kode berikut pada program prolog ES0103.pro anda: Goal Clearwindow, Aplikasi(S), Perusahaan(P,S), write("Yang membuat Aplikasi ",S," adalah Perusahaan ",P).

Jalankan/run program dan perhatikan hasil keluarannya !

Tambahkan kode di bagian goal tersebut menjadi seperti berikut:

Goal Clearwindow, Aplikasi(S), Perusahaan(P,S), write("Yang membuat Aplikasi ",S," adalah Perusahaan ",

P),nl,fail.

Jalankan/run program dan perhatikan hasil keluarannya !

Page 7: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

LATIHAN 1. Tambahkan pada program prolog dari file ES0102.pro untuk fakta-fakta

berikut : Linux dibuat oleh Perusahaan RedHat, Linux juga dibuat oleh Mandrake, Linux juga dibuat oleh Suse, Novell dibuat oleh Netware Dan Flash dibuat oleh macromedia

Setelah anda tambahkan tuliskan Goal untuk pertanyaan berikut : a. Perusahaan apa yang membuat Linux ? b. Apakah Flash dibuat oleh Microsoft ? c. Apa saja software yang dibuat oleh Netware ? d. Software Aplikasi apa yang dibuat oleh Microsoft ? e. Perusahaan apa saja yang membuat Bahasa Pemrograman ? f. Apakah Borland ada membuat Sistem Operasi ?

2. Buatlah pernyataan prolog untuk aturan berikut :

“Perusahaan software masa depan adalah perusahaan yang mengembangkan Linux.”

Tambahkan pada program prolog dari file ES0103.pro. Berdasarkan aturan tersebut buat query yang menanyakan : Perusahaan apa saja yang termasuk perusahaan masa depan ?

3. Buatlah goal internal dari file ES0103.pro untuk menghasilkan output

dengan pesan: a. Perusahaan-perusahaan yang membuat bahasa pemrograman b. Perusahaan-perusahaan yang membuat sistem operasi c. Yang termasuk Software mahal d. Yang termasuk Software tidak mahal

4. Buatlah program prolog untuk fakta dan rule seperti ditentukan berikut :

Boeing adalah pembuat Boeing_747 Fokker adalah pembuat F28 IPTN adalah pembuat F250 Boeing_747 penumpangnya 500 F28 penumpangnya 600 N250 penumpangnya 50 Pesawat kecil adalah pesawat yang penumpangnya <= 50 Pesawat besar adalah pesawat yang penumpangnya >=300

Page 8: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

Program 1. Sistem Pakar Diagnosa Gangguan Pada Sepeda Motor % *************************************************************** % NAMA FILE : Motor.PRO % SISTEM PAKAR DIAGNOSA GANGGUAN PADA SEPEDA MOTOR % *************************************************************** predicates mulai hasil1 jenis maaf pilih1 pilih2 pilih3 pilih4 pilih5 pilih6 pilih7 sebab1 sebab2 sebab3 sebab4 sebab5 sebab6 sebab7 pemecahan1 pemecahan2 pemecahan3 pemecahan4 pemecahan5 pemecahan6 pemecahan7 thanks terus(char) terus1(char) terus2(char) terus3(char) terus4(char) terus5(char) terus6(char) terus7(char) pilih(char) balik1(char) balik2(char) balik3(char) balik4(char) balik5(char) balik6(char) balik7(char) balik11(char) balik22(char) balik33(char) balik44(char) balik55(char) balik66(char) balik77(char) hasil(char) kel(char) kell(char) rx(char,char) ww(char,char) vv(char,char) clauses rx(Y,Y):- !. rx(_,_):- fail. mulai:- makewindow(1,0,64,"SISTEM PAKAR",0,0,25,80),

Page 9: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

write("\n"), makewindow(2,15,9,"DIAGNOSA GANGGUAN PADA SEPEDA MOTOR",5,5,18,70), write("\n"), write("\n"), cursor(15,10),write(" UNTUK MEMERIKSA HASILNYA TEKAN TOMBOL 'Y'\n"), readchar(A),hasil(A). hasil(A):- rx(A,'Y'), hasil1. hasil(A):- rx(A,'y'), hasil1. hasil(_):- mulai. hasil1:- makewindow(1,15,16,"KONSULTASI MESIN SEPEDA MOTOR",0,0,25,80), write("\n"), write("\n"), write(" MACAM - MACAM PERMASALAHAN YANG SERING TIMBUL PADA SEPEDAMOTOR\n"), write("\n"), write(" 1. SEPEDAMOTOR TIDAK BISA DI STATER ATAU TIDAK HIDUP.\n"), write(" 2. SEPEDAMOTOR HIDUP TAPI MESIN TIDAK STABIL.\n"), write(" 3. MESIN BERBUNYI KASAR.\n"), write(" 4. SEPEDAMOTOR BERJALAN TERSENDAT-SENDAT.\n"), write(" 5. REM BERBUNYI WAKTU DIGUNAKAN.\n"), write(" 6. LAMPU TIDAK BISA MENYALA.\n"), write(" 7. MOTOR TERLALU BOROS BENSIN.\n"), write("\n"), cursor(22,0),write(" APAKAH MASALAH ANDA ADA DALAM DAFTAR DI ATAS ? (Y/T)\n"), readchar(A),terus(A). terus(A):- rx(A,'Y'),jenis. terus(A):- rx(A,'y'),jenis. terus(A):- rx(A,'T'),maaf. terus(A):- rx(A,'t'),maaf. terus(_):- hasil1. jenis:- makewindow(1,9,64,"KONSULTASI MESIN SEPEDA MOTOR",0,0,25,80), write("\n"), write("\n"), write(" MASALAH YANG SAUDARA HADAPI ADALAH : \n"), write("\n"), write(" 1. SEPEDAMOTOR TIDAK BISA DISTATER ATAU TIDAK HIDUP.\n"), write(" 2. SEPEDAMOTOR MENYALA TAPI TIDAK BISA STABIL.\n"), write(" 3. MESIN BERBUNYI KASAR.\n"), write(" 4. SEPEDAMOTOR BERJALAN TERSENDAT-SENDAT.\n"), write(" 5. REM BERBUNYI WAKTU DIGUNAKAN.\n"), write(" 6. LAMPU TIDAK BISA MENYALA.\n"), write(" 7. SEPEDAMOTOR TERLALU BOROS BENSIN.\n"), cursor(22,0),write(" PILIH SALAH SATU (1-7)\n"), readchar(A),pilih(A). pilih(A):- rx(A,'1'),pilih1. pilih(A):- rx(A,'2'),pilih2. pilih(A):- rx(A,'3'),pilih3. pilih(A):- rx(A,'4'),pilih4. pilih(A):- rx(A,'5'),pilih5. pilih(A):- rx(A,'6'),pilih6. pilih(A):- rx(A,'7'),pilih7. pilih(_):- jenis. pilih1:- makewindow(1,9,64,"KONSULTASI MESIN SEPEDA MOTOR",0,0,25,80), write("\n"),

Page 10: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

write("\n"), write(" GANGGUAN YANG SAUDARA HADAPI ADALAH SEPEDAMOTOR TIDAK BISA DISTATER \n"), write(" ATAU TIDAK BISA HIDUP.\n"), write(" \n"), write(" PILIH YANG INGIN ANDA KETAHUI !\n"), write(" A. PENYEBAB GANGGUAN\n"), write(" B. PEMECAHAN MASALAH GANGGUAN\n"), cursor(20,26),write("TEKAN TOMBOL A ATAU B!! "), readchar(A),terus1(A). terus1(A):- rx(A,'A'),sebab1. terus1(A):- rx(A,'a'),sebab1. terus1(A):- rx(A,'B'),pemecahan1. terus1(A):- rx(A,'b'),pemecahan1. terus1(_):- pilih1. pilih2:- makewindow(1,9,64,"KONSULTASI MESIN SEPEDA MOTOR",0,0,25,80), write("\n"), write("\n"), write(" GANGGUAN YANG SAUDARA HADAPI ADALAH SEPEDAMOTOR MENYALA TAPI TIDAK STABIL.\n"), write("\n"), write(" PILIH YANG INGIN ANDA KETAHUI !\n"), write(" A. PENYEBAB GANGGUAN.\n"), write(" B. PEMECAHAN MASALAH GANGGUAN.\n"), cursor(20,26),write("TEKAN TOMBOL A ATAU B!! "), readchar(A),terus2(A). terus2(A):- rx(A,'A'),sebab2. terus2(A):- rx(A,'a'),sebab2. terus2(A):- rx(A,'B'),pemecahan2. terus2(A):- rx(A,'b'),pemecahan2. terus2(_):- pilih2. pilih3:- makewindow(1,9,64,"KONSULTASI MESIN SEPEDA MOTOR",0,0,25,80), write("\n"), write("\n"), write(" GANGGUAN YANG SAUDARA HADAPI ADALAH MESIN BERBUNYI KASAR.\n"), write("\n"), write(" PILIH YANG INGIN ANDA KETAHUI !\n"), write(" A. PENYEBAB GANGGUAN\n"), write(" B. SOLUSI GANGGUAN\n"), cursor(20,26),write("TEKAN TOMBOL A ATAU B!! "), readchar(A),terus3(A). terus3(A):- rx(A,'A'),sebab3. terus3(A):- rx(A,'a'),sebab3. terus3(A):- rx(A,'B'),pemecahan3. terus3(A):- rx(A,'b'),pemecahan3. terus3(_):- pilih3. pilih4:- makewindow(1,9,64,"KONSULTASI MESIN SEPEDA MOTOR",0,0,25,80), write("\n"), write("\n"), write(" GANGGUAN YANG SAUDARA HADAPI ADALAH SEPEDA MOTOR BERJALAN TERSENDAT-SENDAT.\n"), write("\n"), write(" PILIH YANG INGIN ANDA KETAHUI !\n"), write(" A. PENYEBAB GANGGUAN\n"), write(" B. PEMECAHAN MASALAH GANGGUAN\n"), cursor(20,26),write("TEKAN TOMBOL A ATAU B!! "), readchar(A),terus4(A). terus4(A):- rx(A,'A'),sebab4. terus4(A):- rx(A,'a'),sebab4. terus4(A):- rx(A,'B'),pemecahan4.

Page 11: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

terus4(A):- rx(A,'b'),pemecahan4. terus4(_):- pilih4. pilih5:- makewindow(1,9,64,"KONSULTASI MESIN SEPEDA MOTOR",0,0,25,80), write("\n"), write("\n"), write(" GANGGUAN YANG SAUDARA HADAPI ADALAH REM BERBUNYI WAKTU DIGUNAKAN.\n"), write("\n"), write(" PILIH YANG INGIN ANDA KETAHUI !\n"), write(" A. PENYEBAB GANGGUAN\n"), write(" B. PEMECAHAN MASALAH GANGGUAN\n"), cursor(20,26),write("TEKAN TOMBOL A ATAU B!! "), readchar(A),terus5(A). terus5(A):- rx(A,'A'),sebab5. terus5(A):- rx(A,'a'),sebab5. terus5(A):- rx(A,'B'),pemecahan5. terus5(A):- rx(A,'b'),pemecahan5. terus5(_):- pilih5. pilih6:- makewindow(1,9,64,"KONSULTASI MESIN SEPEDA MOTOR",0,0,25,80), write("\n"), write("\n"), write(" GANGGUAN YANG SAUDARA HADAPI ADALAH LAMPU TIDAK BISA MENYALA.\n"), write("\n"), write(" PILIH YANG INGIN ANDA KETAHUI !\n"), write(" A.PENYEBAB GANGGUAN\n"), write(" B.PEMECAHAN MASALAH GANGGUAN\n"), cursor(20,26),write("TEKAN TOMBOL A ATAU B!! "), readchar(A),terus6(A). terus6(A):- rx(A,'A'),sebab6. terus6(A):- rx(A,'a'),sebab6. terus6(A):- rx(A,'B'),pemecahan6. terus6(A):- rx(A,'b'),pemecahan6. terus6(_):-pilih6. pilih7:- makewindow(1,9,64,"KONSULTASI MESIN SEPEDA MOTOR",0,0,25,80), write("\n"), write("\n"), write(" GANGGUAN YANG SAUDARA HADAPI ADALAH SEPEDAMOTOR TERLALU BOROS BENSIN.\n"), write("\n"), write(" PILIH YANG INGIN ANDA KETAHUI !\n"), write(" A.PENYEBAB GANGGUAN\n"), write(" B.PEMECAHAN MASALAH GANGGUAN\n"), cursor(20,26),write("TEKAN TOMBOL A ATAU B!! "), readchar(A),terus7(A). terus7(A):- rx(A,'A'),sebab7. terus7(A):- rx(A,'a'),sebab7. terus7(A):- rx(A,'B'),pemecahan7. terus7(A):- rx(A,'b'),pemecahan7. terus7(_):-pilih7. ww(Z,Z):- !. ww(_,_):- fail. sebab1:- makewindow(1,15,16,"KONSULTASI MESIN SEPEDA MOTOR",0,0,25,80), write("\n"), write("\n"), write(" SEPEDA MOTOR TIDAK BISA DISTATER ATAU TIDAK HIDUP DISEBABKAN OLEH :\n"), write("\n"), write(" 1. SEPEDA MOTOR KEHABISAN BENSIN.\n"),

Page 12: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

write(" 2. BUSI PADA SEPEDA MOTOR TELAH SOAK ATAU MATI.\n"), write(" 3. KABEL BUSI KURANG KENCANG DALAM PEMASANGAN.\n"), write(" 4. CDI MATI SEHINGGA PENGAPIAN KURANG SEMPURNA.\n"), write(" 5. KABEL KUNCI KONTAK PUTUS.\n"), cursor(20,0),write(" APAKAH ANDA MASIH PUNYA MASALAH YANG LAIN ? (Y/T)"), readchar(A),balik1(A). balik1(A):- ww(A,'Y'),hasil1. balik1(A):- ww(A,'y'),hasil1. balik1(A):- ww(A,'T'),thanks. balik1(A):- ww(A,'t'),thanks. balik1(_):- sebab1. pemecahan1:- makewindow(1,9,64,"KONSULTASI MESIN SEPEDA MOTOR",0,0,25,80), write("\n"), write("\n"), write(" YANG PERLU ANDA LAKUKAN JIKA SEPEDA MOTOR TIDAK BISA HIDUP :\n"), write("\n"), write(" 1. HINDARI JANGAN SAMPAI KEHABISAN BENSIN.\n"), write(" 2. CEK LISTRIK YANG KELUAR DARI BUSI .\n"), write(" 3. KALAU SUDAH TIDAK ADA ARUS SEGERA GANTI DENGAN BUSI YANG BARU.\n"), write(" 4. CEK DAN KENCANGKAN KABEL KONEKTOR KE BUSI.\n"), write(" 5. BERSIHKAN KERAK YANG MENEMPEL PADA CDI.\n"), write(" 6. CEK DAN PERIKSA LILITAN ROTOR PADA CDI.\n"), write(" 7. PERIKSA DAN BETULKAN KABEL PADA KONTAK SEPEDA MOTOR.\n"), cursor(20,0),write(" APAKAH ANDA MASIH PUNYA MASALAH YANG LAIN ? (Y/T)"), readchar(A),balik11(A). balik11(A):- ww(A,'Y'),hasil1. balik11(A):- ww(A,'y'),hasil1. balik11(A):- ww(A,'T'),thanks. balik11(A):- ww(A,'t'),thanks. balik11(_):- pemecahan1. sebab2:- makewindow(1,15,16,"KONSULTASI MESIN SEPEDA MOTOR",0,0,25,80), write("\n"), write("\n"), write(" SEPEDA MOTOR MENYALA TAPI TIDAK BISA STABIL DI AKIBATKAN OLEH :\n"), write("\n"), write(" 1. ALIRAN BENSIN DARI KABURATOR KERUANG BAKAR TIDAK LANCAR.\n"), write(" 2. PENYETELAN ANGIN PADA KABURATOR TERLALU BESAR.\n"), write(" 3. BUSI TERGENANG BENSIN.\n"), write(" 4. PENYETELAN GAS PADA KABURATOR TERLALU KECIL.\n"), write(" 5. PEMBAKARAN YANG TERJADI PADA RUANG BAKAR TIDAK SEMPURNA.\n"), write(" 6. PENYETELAN ALIRAN BENSIN TERLALU IRIT.\n"), write(" 7. PENYETELAN GAS DAN ANGIN TIDAK SESUAI.\n"), write(" 8. BENSIN TIDAK MURNI ATAU TERCAMPUR AIR.\n"), cursor(20,0),write(" APAKAH ANDA MASIH PUNYA MASALAH YANG LAIN ? (Y/T)"), readchar(A),balik1(A). balik2(A):- ww(A,'Y'),hasil1. balik2(A):- ww(A,'y'),hasil1. balik2(A):- ww(A,'T'),thanks. balik2(A):- ww(A,'t'),thanks. balik2(_):- sebab2. pemecahan2:- makewindow(1,9,64,"KONSULTASI MESIN SEPEDA MOTOR",0,0,25,80), write("\n"), write("\n"), write(" YANG PERLU ANDA LAKUKAN JIKA SEPEDA MOTOR MENYALA TAPI TIDAK BISA STABIL :\n"), write("\n"), write(" 1. BERSIHKAN KERAN BENSIN YANG MENGHUBUNGKAN TANGKI DAN KABURATOR \n"), write(" DAN RUANG PEMBAKARAN.\n"),

Page 13: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

write(" 2. SESUAIKAN PENYETELAN GAS MAUPUN ANGIN SAAT SEPEDA MOTOR DIHIDUPKAN \n"), write(" SAMPAI GAS MAKSIMAL, JANGAN SAMPAI SUARA SEPEDA MOTOR TERSENDAT-SENDAT.\n"), write(" 3. JANGAN SAMPAI ADA CELAH SEDIKITPUN ANTARA SILINDER DENGAN BLOK MESIN\n"), write(" PADA RUANG BAKAR.\n"), write(" 4. PERIKSA DAN BERSIHKAN CDI SERTA ALAT KELISTRIKAN LAIN DARI KERAK\n"), write(" DAN BAHAN ISOLATOR LAINNYA.\n"), write(" 5. BIASAKAN PANASI MESIN APABILA AKAN DIPAKAI.\n"), write(" 6. PERIKSA SPUYER BENSIN SERTA ANGIN JANGAN SAMPAI TERSUMBAT.\n"), write(" 7. PERIKSA DAN HINDARKAN SUPAYA BENSIN TIDAK TERCAMPUR DENGAN AIR.\n"), cursor(20,0),write(" APAKAH ANDA MASIH PUNYA MASALAH YANG LAIN ? (Y/T)"), readchar(A),balik22(A). balik22(A):- ww(A,'Y'),hasil1. balik22(A):- ww(A,'y'),hasil1. balik22(A):- ww(A,'T'),thanks. balik22(A):- ww(A,'t'),thanks. balik22(_):- pemecahan2. sebab3:- makewindow(1,15,16,"KONSULTASI MESIN SEPEDA MOTOR",0,0,25,80), write("\n"), write("\n"), write(" MESIN BERBUNYI KASAR DIAKIBATKAN OLEH :\n"), write("\n"), write(" 1. KLEB BENSIN YANG TIDAK SESUAI.\n"), write(" 2. MESIN KEHABISAN OLI.\n"), write(" 3. RANTAI KAMPRAT KURANG KENCANG.\n"), write(" 4. RING PISTON ATAU PISTON TERGORES.\n"), write(" 5. ADA GIGI PADA MESIN YANG SUDAH RUSAK.\n"), write(" 6. KAMPAS KOPLING SUDAH HABIS.\n"), cursor(20,0),write(" APAKAH ANDA MASIH PUNYA MASALAH YANG LAIN ? (Y/T)"), readchar(A),balik3(A). balik3(A):- ww(A,'Y'),hasil1. balik3(A):- ww(A,'y'),hasil1. balik3(A):- ww(A,'T'),thanks. balik3(A):- ww(A,'t'),thanks. balik3(_):- sebab3. pemecahan3:- makewindow(1,9,64,"KONSULTASI MESIN SEPEDA MOTOR",0,0,25,80), write("\n"), write("\n"), write(" YANG PERLU SAUDARA LAKUKAN JIKA TERDENGAR SUARA MESIN YANG KASAR ADALAH :\n"), write("\n"), write(" 1. BIASAKAN GANTI OLI MESIN SETIAP 3000 KM \n"), write(" DAN JANGAN SAMPAI TERLAMBAT MENGISI OLI SAMPING.\n"), write(" 2. PERIKSA RANTAI KAMPRAT DAN KENCANGKAN SESUAI PADA BUKU PETUNJUK.\n"), write(" 3. GANTI RING PISTON ATAU PISTON APABILA SUDAH TERJADI GORESAN.\n"), write(" 4. BERIKAN OLI MESIN SESUAI UKURAN YANG DITETAPKAN.\n"), write(" 5. CEPAT GANTI KAMPAS KOPLING APABILA ADA YANG AUS SEBELUM MENJALAR\n"), write(" PADA YANG LAIN.\n"), cursor(20,0),write(" APAKAH ANDA MASIH PUNYA MASALAH YANG LAIN ? (Y/T)"), readchar(A),balik33(A). balik33(A):- ww(A,'Y'),hasil1. balik33(A):- ww(A,'y'),hasil1. balik33(A):- ww(A,'T'),thanks. balik33(A):- ww(A,'t'),thanks. balik33(_):- pemecahan3. sebab4:- makewindow(1,15,16,"KONSULTASI MESIN SEPEDA MOTOR",0,0,25,80), write("\n"),

Page 14: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

write("\n"), write(" SEPEDA MOTOR BERJALAN TERSENDAT-SENDAT DIAKIBATKAN OLEH :\n"), write("\n"), write(" 1. ALIRAN BENSIN KURANG LANCAR.\n"), write(" 2. PEMBAKARAN TIDAK SEMPURNA.\n"), write(" 3. RUJI PADA RODA SEPEDA MOTOR TIDAK KENCANG.\n"), write(" 4. RANTAI KURANG PAS ATAU ADA GIGI GEAR YANG TERKIKIS.\n"), write(" 5. ANGIN PADA KABURATOR TERLALU BESAR.\n"), write(" 6. RODA KURANG ANGIN.\n"), write(" 7. PEMASANGAN RODA KURANG TEPAT.\n"), cursor(20,0),write(" APAKAH ANDA MASIH PUNYA MASALAH YANG LAIN ? (Y/T)"), readchar(A),balik4(A). balik4(A):- ww(A,'Y'),hasil1. balik4(A):- ww(A,'y'),hasil1. balik4(A):- ww(A,'T'),thanks. balik4(A):- ww(A,'t'),thanks. balik4(_):- sebab4. pemecahan4:- makewindow(1,9,64,"KONSULTASI MESIN SEPEDA MOTOR",0,0,25,80), write("\n"), write("\n"), write(" YANG PERLU SAUDARA LAKUKAN JIKA SEPEDA MOTOR JALANYA TERSENDAT-SENDAT.\n"), write("\n"), write(" 1. BERSIHKAN SALURAN BENSIN DARI KOTORAN SUPAYA BENSIN BISA LANCAR.\n"), write(" 2. PASTIKAN KOMPONEN RUANG BAKAR BEKERJA DENGAN BAIK.\n"), write(" 3. SETEL RUJI RODA SUPAYA KEKENCANGANNYA SAMA.\n"), write(" 4. PERIKSA DAN PERBAIKI APABILA PELEK BENGKONG.\n"), write(" 5. SESUAIKAN KEKENCANGAN RANTAI SESUAI PADA BUKU PETUNJUK.\n"), write(" 6. GANTI GEAR APABILA RUSAK SUPAYA RANTAI JUGA TIDAK CEPAT RUSAK.\n"), cursor(20,0),write(" APAKAH ANDA MASIH PUNYA MASALAH YANG LAIN ? (Y/T)"), readchar(A),balik44(A). balik44(A):- ww(A,'Y'),hasil1. balik44(A):- ww(A,'y'),hasil1. balik44(A):- ww(A,'T'),thanks. balik44(A):- ww(A,'t'),thanks. balik44(_):- pemecahan4. sebab5:- makewindow(1,15,16,"KONSULTASI MESIN SEPEDA MOTOR",0,0,25,80), write("\n"), write("\n"), write(" REM BERBUNYI WAKTU DIGUNAKAN DIAKIBATKAN OLEH :\n"), write("\n"), write(" 1. KAMPAS REM KOTOR.\n"), write(" 2. KAMPAS REM HABIS.\n"), write(" 3. PEMASANGAN KAMPAS REM KURANG TEPAT.\n"), write(" 4. PEMASANGAN RODA TIDAK PAS TENGAH.\n"), write(" 5. KAMPAS REM DALAM KEADAAN BASAH.\n"), cursor(20,0),write(" APAKAH ANDA MASIH PUNYA MASALAH YANG LAIN ? (Y/T)"), readchar(A),balik5(A). balik5(A):- ww(A,'Y'),hasil1. balik5(A):- ww(A,'y'),hasil1. balik5(A):- ww(A,'T'),thanks. balik5(A):- ww(A,'t'),thanks. balik5(_):- sebab5. pemecahan5:- makewindow(1,9,64,"KONSULTASI MESIN SEPEDA MOTOR",0,0,25,80), write("\n"), write("\n"), write(" YANG PERLU SAUDARA LAKUKAN JIKA REM BERBUNYI WAKTU DIGUNAKAN :\n"), write("\n"), write(" 1. BERSIHKAN KAMPAS REM.\n"), write(" 2. GANTI APABILA KAMPAS REM HABIS SUPAYA TROMOL TIDAK IKUT TERKIKIS.\n"),

Page 15: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

write(" 3. USAHAKAN DALAM PEMASANGAN KAMPAS REM DAN RODA TIDAK MELESET.\n"), write(" 4. KERINGKAN KAMPAS REM SEBELUM DIPAKAI.\n"), cursor(20,0),write(" APAKAH ANDA MASIH PUNYA MASALAH YANG LAIN ? (Y/T)"), readchar(A),balik55(A). balik55(A):- ww(A,'Y'),hasil1. balik55(A):- ww(A,'y'),hasil1. balik55(A):- ww(A,'T'),thanks. balik55(A):- ww(A,'t'),thanks. balik55(_):- pemecahan5. sebab6:- makewindow(1,15,16,"KONSULTASI MESIN SEPEDA MOTOR",0,0,25,80), write("\n"), write("\n"), write(" LAMPU TIDAK MENYALA DIAKIBATKAN OLEH :\n"), write("\n"), write(" 1. TIDAK ADA ARUS YANG MENGALIR DARI AKI.\n"), write(" 2. BOLA LAMPU SUDAH MATI ATAU PUTUS.\n"), write(" 3. KABEL DARI ROTOR ATAU DARI AKI ADA YANG PUTUS.\n"), write(" 4. SEKERING PADA AKI ADA YANG PUTUS.\n"), cursor(20,0),write(" APAKAH ANDA MASIH MEMPUNYAI MASALAH YANG LAIN?(Y/T)"), readchar(A),balik6(A). balik6(A):- rx(A,'Y'),hasil1. balik6(A):- rx(A,'y'),hasil1. balik6(A):- rx(A,'T'),thanks. balik6(A):- rx(A,'t'),thanks. balik6(_):- sebab6. pemecahan6:- makewindow(1,15,16,"KONSULTASI MESIN SEPEDA MOTOR",0,0,25,80), write("\n"), write("\n"), write(" YANG PERLU SAUDARA LAKUKAN JIKA LAMPU TIDAK MENYALA.\n"), write("\n"), write(" 1. SETRUM KEMBALI AKI BILA AKI SUDAH SOAK.\n"), write(" 2. GANTI AKI BILA ARUS BENAR-BENAR HABIS.\n"), write(" 3. CEK DAN GANTI BILA BOLA LAMPU PUTUS.\n"), write(" 4. CEK DAN SAMBUNG KEMBALI JIKA ADA KABEL YANG PUTUS.\n"), write(" 5. CEK DAN GANTI BILA SEKERING PADA AKI PUTUS.\n"), cursor(20,0),write(" APAKAH ANDA MEMPUNYAI MASALAH YANG LAIN?(Y/T)"), readchar(A),balik66(A). balik66(A):- rx(A,'Y'),hasil1. balik66(A):- rx(A,'y'),hasil1. balik66(A):- rx(A,'T'),thanks. balik66(A):- rx(A,'t'),thanks. balik66(_):- pemecahan6. sebab7:- makewindow(1,15,16,"KONSULTASI MESIN SEPEDA MOTOR",0,0,25,80), write("\n"), write("\n"), write(" SEPEDA MOTOR TERLALU BOROS BENSIN DIAKIBATKAN OLEH :\n"), write("\n"), write(" 1. PEMASANGAN STEP PADA JARUM KABURATOR TERLALU RENDAH.\n"), write(" 2. BUSI YANG DIGUNAKAN TIDAH SESUAI.\n"), write(" 3. PENGAPIAN TERLALU BESAR.\n"), write(" 4. PENYETELAN GAS TERLALU BESAR.\n"), cursor(20,0),write(" APAKAH ANDA MEMPUNYAI MASALAH YANG LAIN?(Y/T)"), readchar(A),balik7(A). balik7(A):- rx(A,'Y'),hasil1. balik7(A):- rx(A,'y'),hasil1. balik7(A):- rx(A,'T'),thanks. balik7(A):- rx(A,'t'),thanks. balik7(_):- sebab7.

Page 16: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

pemecahan7:- makewindow(1,9,64,"KONSULTASI MESIN SEPEDA MOTOR",0,0,25,80), write("\n"), write("\n"), write(" YANG PERLU SAUDARA LAKUKAN JIKA BENSIN TERLALU BOROS ADALAH :\n"), write("\n"), write(" 1. PASANG STEP JARUM PADA POSISI STANDART YAITU POSISI 3 ATAU TENGAH.\n"), write(" 2. GUNAKAN BUSI STANDART DARI PABRIK DAN JANGAN GUNAKAN BUSI UNTUK RACING.\n"), write(" 3. JANGAN MENGUBAH BESAR LUBANG PENGAPIAN DAN JANGAN MEMOTONG SILINDER.\n"), write(" 4. KEMBALIKAN PADA SETELAN STANDART SELURUH ONDERDIL SESUAI STANDART PABRIK.\n"), write(" 5. JANGAN TERLALU MENGGEBER GAS.\n"), cursor(20,0),write(" APAKAH ANDA MASIH MEMPUNYAI MASALAH YANG LAIN?(Y/T)"), readchar(A),balik77(A). balik77(A):- rx(A,'Y'),hasil1. balik77(A):- rx(A,'y'),hasil1. balik77(A):- rx(A,'T'),thanks. balik77(A):- rx(A,'t'),thanks. balik77(_):- pemecahan7. vv(Q,Q):- !. vv(_,_):- fail. maaf:- makewindow(1,15,16,"KONSULTASI MESIN SEPEDA MOTOR",0,0,25,80), cursor(10,0),write(" MAAF FASILITAS YANG ADA PADA PROGRAM INI\n"), cursor(12,0),write(" TIDAK DAPAT MENYELESAIKAN MASALAH YANG SEDANG SAUDARA HADAPI.\n"), cursor(20,0),write(" TEKAN TOMBOL 'B' JIKA INGIN KEMBALI KE MENU UTAMA.\n"), cursor(22,0),write(" TEKAN TOMBOL 'X' JIKA ANDA INGIN KELUAR.\n"), readchar(A),kel(A). kel(A):- vv(A,'B'),hasil1. kel(A):- vv(A,'b'),hasil1. kel(A):- vv(A,'X'),exit. kel(A):- vv(A,'x'),exit. kel(_):- maaf. thanks:- makewindow(1,15,16,"KONSULTASI MESIN SEPEDA MOTOR",0,0,25,80), cursor(8,0),write(" TERIMA KASIH, ANDA TELAH MENGGUNAKAN PROGRAM INI"), cursor(10,0),write(" SEMOGA SEPEDA MOTOR ANDA BISA BERJALAN DENGAN NORMAL KEMBALI.\n"), cursor(18,0),write(" TEKAN TOMBOL 'B' JIKA INGIN KEMBALI KE MENU UTAMA.\n"), cursor(20,0),write(" TEKAN TOMBOL 'X' JIKA INGIN KELUAR.\n"), readchar(A),kell(A). kell(A):- vv(A,'B'),hasil1. kell(A):- vv(A,'b'),hasil1. kell(A):- vv(A,'X'),exit. kell(A):- vv(A,'x'),exit. kell(_):- thanks. goal mulai

Page 17: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

Program 2. Sistem Pakar Analisa Kerusakan Komputer % *************************************************************** % NAMA FILE : Komputer.PRO % SISTEM PAKAR ANALISA KERUSAKAN KOMPUTER % *************************************************************** domains predicates judul mulai pesan dialog(integer) respon(symbol) komponen(char,string) monitor(char,string) gejala(char,char,string) gejala(char) indeks(symbol) konsultasi(integer) saran(symbol) kesimpulan(char,char) solusi(char,char) solusi(symbol) jawab(integer) goal clearwindow,makewindow(7,7,11,"",0,0,24,80),pesan, makewindow(5,47,11,"",0,0,4,80),judul, makewindow(6,30,13,"",4,1,3,78),mulai, makewindow(1,7,10," Gejala Kerusakan Komponen ",4,0,10,40), makewindow(2,7,14," Kesimpulan dan Saran ",14,40,10,40), makewindow(3,7,11," Pelacakan Kerusakan ",14,0,10,40), makewindow(4,7,15," Indeks Pilihan ",4,40,10,40), konsultasi(1). clauses judul:-shiftwindow(5), write("Aplikasi Sistem Pakar untuk Analisa Kerusakan Komputer IBM PC"), mulai:-shiftwindow(6), write("<< Enter = Start Program >> << Any key = Stop Program >>"),readchar(X),X=13. pesan:-shiftwindow(7),cursor(7,8), write("SoftWare ini dapat membantu Anda untuk mencari sebab-sebab kerusakan"),nl, write("yang terjadi pada Komputer IBM PC 8088 sekaligus menyediakan prosedur"),nl, write("Pelacakan kerusakan tahap demi tahap secara berurutan."),nl, write("Selamat Mencoba!"). % Keterangan Indeks Kerusakan dan Gejala komponen('d',"(d) Disk drive"). komponen('k',"(k) Keyboard"). komponen('m',"(m) Monitor"). komponen('p',"(p) Power"). komponen('s',"(s) Sistem"). monitor('m',"(m) Monokrom"). monitor('w',"(w) Warna/grafik"). gejala('d','s',"(s) Satu drive tidak mau membaca"). gejala('d','d',"(d) Satu drive tidak mau menulis"). gejala('k','t',"(t) Tidak ada respon atau salah cetak"). gejala('k','b',"(b) Tombol tidak bekerja"). gejala('m','t',"(t) Tak ada tampilan"). gejala('m','v',"(v) Tak ada sinkronisasi vertikal"). gejala('m','h',"(h) Tak ada sinkronisasi horisontal"). gejala('m','p',"(p) Penampilan karakter rusak"). gejala('w','t',"(t) Tak ada tampilan").

Page 18: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

gejala('w','p',"(p) Penampilan karakter rusak"). gejala('w','g',"(g) Tidak ada grafik"). gejala('w','r',"(r) Rusak atau tak berwarna"). gejala('p','t',"(t) Tidak ada sesuatu pun yang bekerja"). gejala('s','t',"(t) Tidak mau booting"). gejala('s','k',"(k) Komputer mengunci"). % Menampilkan Indeks Gejala gejala('d'):-gejala('d',_,X),write(X),nl,fail;true. gejala('k'):-gejala('k',_,X),write(X),nl,fail;true. gejala('m'):-gejala('m',_,X),write(X),nl,fail;true. gejala('w'):-gejala('w',_,X),write(X),nl,fail;true. gejala('p'):-gejala('p',_,X),write(X),nl,fail;true. gejala('s'):-gejala('s',_,X),write(X),nl,fail;true. % Menampilkan Indeks Kerusakan indeks(komponen):-shiftwindow(4),clearwindow, komponen(_,X),write(X),nl,fail;nl,nl,write("(Esc) = Stop"). indeks(monitor):-shiftwindow(4),clearwindow, monitor(_,X),write(X),nl,fail;true. % Variabel Masukan untuk Masalah yang dihadapi dialog(1):-write("Apa yang rusak?..."). dialog(2):-write("Apa jenisnya?..."). dialog(3):-write("Apa gejalanya?..."). dialog(4):-shiftwindow(3),write("Ikuti prosedur pelacakan kerusakan berikut :"). dialog(5):-write("Penyebab yang mungkin :"). dialog(6):- write("- Matikan daya."),nl, write("- Pindahkan adapter card monokrom."),nl. dialog(7):- write("- Pasang kembali adapter card."),nl, write("- Hidupkan daya dan uji."),nl. dialog(8):- write("- Matikan daya."),nl, write("- Pindahkan adapter card warna/grafik"),nl. dialog(9):-write("- Matikan daya dan lepaskan cord daya."). dialog(10):- write("- Sambungkan cord daya."),nl, write("- Hidupkan daya dan uji."). dialog(11):-write("- Coba jalankan!..."),nl. % Aturan-aturan % Rule 1 :IF komponen X rusak AND gejalanya Y % THEN kesimpulan(X,Y) AND solusi(X,Y) % Rule 2 :IF komponen X = monitor % THEN Rule 3 % Rule 3 :IF X = monitor AND jenisnya Y AND gejalanya Z % THEN kesimpulan(Y,Z) AND solusi(Y,Z) konsultasi(1):- indeks(komponen),shiftwindow(1),clearwindow, dialog(1),nl,write(">>"),readchar(X),jawab(X),komponen(X,B), frontstr(3,B,_,S),upper_lower(S,K),write(K),nl, shiftwindow(4),clearwindow,gejala(X),shiftwindow(1), dialog(3),nl,write(">>"),readchar(Y),gejala(X,Y,Z), frontstr(3,Z,_,T),upper_lower(T,L),write(L),nl, shiftwindow(2),clearwindow,kesimpulan(X,Y), shiftwindow(3),clearwindow,solusi(X,Y),!,fail. konsultasi(2):-write("monitor"),nl,indeks(monitor), shiftwindow(1),dialog(2),nl,write(">>"),readchar(X),monitor(X,B), frontstr(3,B,_,S),upper_lower(S,K),write(K),nl, shiftwindow(4),clearwindow,gejala(X), shiftwindow(1),dialog(3),nl,write(">>"),readchar(Y),gejala(X,Y,Z), frontstr(3,Z,_,T),upper_lower(T,L),write(L),nl, shiftwindow(2),kesimpulan(X,Y), shiftwindow(3),solusi(X,Y),!,fail. jawab(100):-true. jawab(107):-true.

Page 19: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

jawab(109):-!,konsultasi(2). jawab(112):-true. jawab(115):-true. jawab(27):-!,clearwindow,nl,nl,nl,nl,write(" ------> Program Terhenti <------"),nl,nl,fail. jawab(_):-!,konsultasi(1). % Pangkalan pengetahuan yang berisi tentang penyebab kerusakan komponen % Penyebab kerusakan disk drive kesimpulan('d','s'):-dialog(5),nl, write("1. Data tidak datang dari disk."),nl, write("2. Head pembaca tidak membaca."),nl, write("3. Data tidak keluar dari drive."),nl, write("4. IC jelek pada analog card."). kesimpulan('d','d'):-dialog(5),nl, write("1. Disket diproteksi."),nl, write("2. Drive tidak tahu tempat yang harus ditulis."). % Penyebab kerusakan keyboard kesimpulan('k','t'):-dialog(5),nl, write("1. Sinyal tidak mencapai motherboard."),nl, write("2. Tidak menghasilkan karakter."),nl, write("3. Tidak ada sinyal yang ke data bus."). kesimpulan('k','b'):-dialog(5),nl, write("1. Tombol tidak mengadakan kontak yang tepat."),nl, write("2. Sinyal keyboard tidak tepat."). % Penyebab kerusakan monitor monokrom kesimpulan('m','t'):-dialog(5),nl, write("1. Tidak ada video ke dalam monitor tampilan."),nl, write("2. Sinyal video terlalu kecil."),nl, write("3. Tidak ada sinyal video yg dibangkit kan."). kesimpulan('m','v'):-dialog(5),nl, write("1. Tidak ada sinyal sinkronisasi verti kal ke monitor."),nl, write("2. Monitor tidak sinkron dengan kompu- ter."). kesimpulan('m','h'):-dialog(5),nl, write("1. Tidak dihasilkan sinkronisasi hori sontal."),nl, write("2. Monitor tidak sinkron."),nl, write("3. Monitor tidak berfungsi."). kesimpulan('m','p'):-dialog(5),nl, write("1. Data tidak tersimpan semestinya."),nl, write("2. Data tidak berada pada RAM yang tepat."),nl, write("3. Karakter tidak dihasilkan semesti- nya."). % Penyebab kerusakan monitor warna kesimpulan('w','t'):-dialog(5),nl, write("1. Tidak ada video ke dalam monitor."),nl, write("2. Sinyal video terlalu kecil."),nl, write("3. Tidak ada sinyal video yg dibangkit kan pada adapter card warna/color."). kesimpulan('w','p'):-dialog(5),nl, write("1. Data tidak tersimpan semestinya."),nl, write("2. Data tidak berada pada RAM yang tepat."),nl, write("3. Karakter tidak dihasilkan semesti- nya."). kesimpulan('w','g'):-dialog(5),nl, write("1. Tidak ada teks lo-res yg diseleksi atau dihasilkan."). kesimpulan('w','r'):-dialog(5),nl, write("1. Monitor salah atur."),nl, write("2. Sinyal warna tidak tepat."). % Penyebab kerusakan power kesimpulan('p','t'):- write("Power Supply komputer Anda tidak bekerja."),nl, write("Penyebab yang mungkin :"),nl, write("1. Colokan daya tidak ditancapkan."),nl, write("2. Power Supply rewel."),nl, write("3. Kabel power tidak tersambung."). % Penyebab kerusakan sistem

Page 20: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

kesimpulan('s','k'):-dialog(5),nl, write("1. Kesalahan dalam program."),nl, write("2. Gangguan pada rangkaian keyboard."),nl, write("3. Gangguan pada chip di dalam CPU."). kesimpulan('s','t'):-dialog(5),nl, write("1. Tidak ada clock."),nl, write("2. Tidak ada data."),nl, write("3. Gangguan pada Mikroprosesor."). % Respon-respon respon(baik):-shiftwindow(3), write("Bagaimana, bisa bekerja normal?(y/t)"),readchar(Y),write(Y),nl,Y='y', shiftwindow(2),cursor(5,0),write("<<<<<<< Komputer Anda sudah OK >>>>>>>"). respon(jelek):-shiftwindow(3), write("Bagaimana, bisa bekerja normal?(y/t)"),readchar(Y),write(Y),nl,Y='t', shiftwindow(2). respon(solusi):-shiftwindow(3), write("Apakah Anda ingin melacak kerusakan? (y/t)"),readchar(Y),write(Y),nl,Y='y', clearwindow,dialog(4). respon(lacakulang):-shiftwindow(3),nl, write("Apakah Anda ingin melacak ulang?(y/t)"),sound(30,600),sound(20,50),sound(30,600), readchar(Y),write(Y),nl,Y='t',clearwindow. respon(ulang):-nl,shiftwindow(3), write("Apakah Anda ingin berkonsultasi lagi? (y/t)"),sound(30,600), readchar(X),write(X),nl,X='y',shiftwindow(2),clearwindow,shiftwindow(3),clearwindow, konsultasi(1). respon(ulang):-shiftwindow(2),cursor(7,7), write("***** Terima kasih *****"),nl. % Saran-saran saran(ds1):-shiftwindow(3), write("Lakukan apa yang disarankan!"),nl, shiftwindow(2),clearwindow, write("- Masukan disket ke disk drive dengan benar!"),nl, dialog(11). saran(ds2a):-shiftwindow(2),clearwindow, write("- Keluarkan disket dan cobalah dengan disket yang lain yang baru"),nl, dialog(11). saran(ds2b):-shiftwindow(2),clearwindow, write("- Berarti disket yang lama jelek."),nl. saran(ds3):-shiftwindow(2),clearwindow, write("- Matikan daya dan lepaskan cord daya"),nl, write("- Pindahkan kabel dari analog card dan adapter card."),nl, write("- Bersihkan sambungan antara kedua konektor."),nl, write("- Hubungkan lagi kabel ke konektor."),nl,dialog(7). saran(ds4a):-shiftwindow(2),clearwindow,dialog(9), write("- Tukarkan drive A dengan B dan drive B ke A."),nl,dialog(10). saran(ds4b):-shiftwindow(2),clearwindow, write("- Berarti disk drive A jelek."),nl, write("- Segera perbaiki."),nl. saran(ds5):-shiftwindow(2),clearwindow, write("- Ganti kabel disk drive."),nl,dialog(11). saran(ds6):-shiftwindow(2),clearwindow,dialog(9), write("- Lacak kerusakan drive."),nl, write("- Ganti IC 7438 pada disk drive ana log card."),nl,dialog(10). saran(ds7):-shiftwindow(2),clearwindow,dialog(9), write("- Ganti IC 221 pada 5E pada disk dri ve analog card."),nl,dialog(10). saran(ds8):-shiftwindow(2),clearwindow,dialog(9),

Page 21: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

write("- Ganti IC 74LS86 pada 5D."),nl,dialog(10). saran(ds9):-shiftwindow(2),clearwindow,dialog(9), write("- Ganti IC 74LS74 pada 5C."),nl,dialog(10). saran(ds10):-shiftwindow(2),clearwindow, write("- Tracking-nya rusak."). saran(dd1):-shiftwindow(2),clearwindow, write("- Pindahkan tab write protect."),nl, write("- Coba jalankan kembali"),nl. saran(dd2):-shiftwindow(2),clearwindow, write("- Format ulang disketnya."),nl, write("- Coba jalankan kembali"),nl. saran(dd3):-shiftwindow(2),clearwindow,dialog(9), write("- Bersihkan sambungan ke analog card."),nl,dialog(10),nl, write("- Coba menulis lagi"),nl. saran(dd4):-shiftwindow(2),clearwindow,dialog(9), write("- Periksa apakah kabel drive sambungan nya cukup kencang."),nl, write("- Periksa apakah saklar write protec sejajar dengan slot tab pada disk"),nl,dialog(10). saran(dd5):-shiftwindow(2),clearwindow,dialog(9), write("- Ganti IC 74LS14 pada 2E pada analog card"),nl,dialog(10). saran(dd6):-shiftwindow(2),clearwindow,dialog(9), write("- Ganti IC 74LS74 pada 5C pada analog card"),nl,dialog(10). saran(dd7):-shiftwindow(2),clearwindow,dialog(9), write("- Ganti IC 74LS06 pada 2B pada analog card"),nl,dialog(10). saran(kb1):-shiftwindow(2),clearwindow, write("- Matikan daya dan lepaskan keyboard!"),nl, write("- Bongkar keyboard dan ganti tombol yg tidak bekerja."),nl, write("- Uji lagi!"). saran(kb2a):-shiftwindow(2),clearwindow, write("- Matikan daya dan lepaskan keyboard!"),nl, write("- Bongkar keyboard dan ganti IC 8084."),nl, write("- Uji lagi!"),nl. saran(kb2b):-shiftwindow(2),clearwindow, write("- Ganti keyboard dengan yang baru!"),nl, write("- Kalau masih tidak bekerja,"),nl. saran(kt1):-shiftwindow(2),clearwindow, write("- Kalau rusak, disarankan untuk ganti kabel yang baru!"),nl, write("- Hal ini menyebabkan sinyal tidak men capai keyboard."),nl, write("- Coba jalankan lagi komputernya."),nl. saran(kt2):-shiftwindow(2),clearwindow, write("- Coba jalankan sekali lagi."),nl. saran(kt3):-shiftwindow(2),clearwindow, write("- Kemungkinan tidak ada sinyal yang ke data bus"),nl, write("- Matikan daya dan ganti IC 74LS322 pada U24"),nl, write("- Coba jalankan lagi."),nl. saran(kt4):-shiftwindow(2),clearwindow, write("- Matikan daya dan ganti IC 8255 pa da U36"),nl, write("- Coba jalankan lagi."),nl. saran(kt5):-shiftwindow(2),clearwindow, write("- Matikan daya dan bongkar keyboard."), write("- Ganti IC 8048 dalam keyboard."),nl, write("- Coba jalankan lagi."),nl. saran(kt6):-shiftwindow(2),clearwindow, write("- Ganti keyboard yang baru."),nl, write("- Jika tidak bekerja lagi,"),nl. saran(mt1):-shiftwindow(2),clearwindow, write("- Ganti kabel video dengan yang baru!"),nl, write("- Jalankan lagi."),nl. saran(mt2):-shiftwindow(2),clearwindow, write("- Service monitornya atau ganti dgn yang baru!"),nl,

Page 22: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

write("- Jalankan lagi."),nl. saran(mt3):-shiftwindow(2),clearwindow, write("- Atur kecemerlangannya!"),nl, write("- Jalankan lagi."),nl. saran(mt4):-shiftwindow(2),clearwindow, write("- Matikan daya dan lepaskan semua pe riferal interface video."),nl, write("- Hubungkan monitor ke komputer"),nl, write("- Pindahkan adapter card monokrom."),nl, write("- Ganti IC 74LS244 pada U64."),nl, dialog(7). saran(mt5):-shiftwindow(2),clearwindow,dialog(6), write("- Ganti IC 74S74 pada U101."),nl,dialog(7). saran(mt6):-shiftwindow(2),clearwindow,dialog(6), write("- Ganti IC 74S86 pada U54."),nl,dialog(7). saran(mt7):-shiftwindow(2),clearwindow,dialog(6), write("- Ganti IC MK36000 pada U33."),nl,dialog(7). saran(mt8):-shiftwindow(2),clearwindow,dialog(6), write("- Ganti IC 74LS273 pada U34."),nl,dialog(7). saran(mt9):-shiftwindow(2),clearwindow,dialog(6), write("- Ganti IC 6845 pada U35."),nl,dialog(7). saran(mv1):-shiftwindow(3), write("Lakukan apa yang disarankan!"),nl,shiftwindow(2),clearwindow, write("- Matikan daya!"),nl, write("- Atur sinkronisasi vertikal ke moni tor."),nl, write("- Nyalakan dan uji!"). saran(mv2):-shiftwindow(2),clearwindow,dialog(6), write("- Ganti IC 74S86 pada U54!"),nl,dialog(7). saran(mv3):-shiftwindow(2),clearwindow, write("- Mungkin bukan karena kerusakan IC!"),nl. saran(mh2):-shiftwindow(2),clearwindow,dialog(6), write("- Ganti IC 74S74 pada U101."),nl,dialog(7). saran(mh3):-shiftwindow(2),clearwindow,dialog(6), write("- Ganti IC 74LS32 pada U100."),nl,dialog(7). saran(mh4):-shiftwindow(2),clearwindow,dialog(6), write("- Ganti IC 74LS08 pada U3."),nl,dialog(7). saran(mh5):-shiftwindow(2),clearwindow, write("- Mungkin bukan karena kerusakan IC!"),nl. saran(mp1):-shiftwindow(3), write("Lakukan apa yang disarankan!"),nl, shiftwindow(2),clearwindow,dialog(6), write("- Ganti IC 74LS157 pada U16 sampai U18."),nl, write("- Uji pergantian setiap IC."),nl,dialog(7). saran(mp2):-shiftwindow(2),clearwindow,dialog(6), write("- Ganti IC 74LS273 pada U34."),nl,dialog(7). saran(mp3):-shiftwindow(2),clearwindow,dialog(6), write("- Ganti IC MK36000 pada U33."),nl,dialog(7). saran(mp4):-shiftwindow(2),clearwindow,dialog(6), write("- Ganti IC 74S86 pada U54."),nl,dialog(7). saran(mp5):-shiftwindow(2),clearwindow,dialog(6), write("- Ganti IC 74LS166 pada U32."),nl,dialog(7). saran(mp6):-shiftwindow(2),clearwindow,dialog(6), write("- Ganti IC 74S11 pada U26."),nl,dialog(7). saran(mp7):-shiftwindow(2),clearwindow,dialog(6), write("- Ganti IC 74LS175 pada U29."),nl,dialog(7). saran(mp8):-shiftwindow(2),clearwindow,dialog(6), write("- Ganti IC 74S31 pada U43."),nl,dialog(7). saran(mp9):-shiftwindow(2),clearwindow,dialog(6), write("- Kerusakan pada bagian RAM."),nl, write("- Ganti tiap RAM mulai U9 sampai U15."),nl, write("- Uji setiap pergantian sampai tidak ada yang rusak."),nl, dialog(7). saran(wt4):-shiftwindow(2),clearwindow,

Page 23: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

write("- Matikan daya dan lepaskan semua pe riferal interface video."),nl, write("- Hubungkan monitor ke komputer"),nl, write("- Pindahkan adapter card warna/grafik."), write("- Ganti IC 74LS244 pada U64."),nl,dialog(7). saran(wt5):-shiftwindow(2),clearwindow,dialog(8), write("- Ganti IC 74LS151 pada U45."),nl,dialog(7). saran(wt6):-shiftwindow(2),clearwindow,dialog(8), write("- Ganti IC 74S174 pada U101."),nl,dialog(7). saran(wt7):-shiftwindow(2),clearwindow,dialog(8), write("- Ganti IC 74LS32 pada U23."),nl,dialog(7). saran(wt8):-shiftwindow(2),clearwindow,dialog(8), write("- Ganti IC 74LS58 pada U22."),nl,dialog(7). saran(wt9):-shiftwindow(2),clearwindow,dialog(8), write("- Ganti IC 74LS32 pada U14."),nl,dialog(7). saran(wt10):-shiftwindow(2),clearwindow,dialog(8), write("- Ganti IC 74LS08 pada U13."),nl,dialog(7). saran(wt11):-shiftwindow(2),clearwindow,dialog(8), write("- Ganti IC 74LS166 pada U32."),nl,dialog(7). saran(wt12):-shiftwindow(2),clearwindow,dialog(8), write("- Ganti MK36000 pada U33."),nl,dialog(7). saran(wt13):-shiftwindow(2),clearwindow,dialog(8), write("- Ganti IC 6845 pada U38."),nl,dialog(7). saran(wp1):- shiftwindow(3),write("Lakukan apa yang disarankan!"),nl, shiftwindow(2),clearwindow,dialog(8), write("- Ganti IC MK36000 pada U33."),nl,dialog(7). saran(wp2):-shiftwindow(2),clearwindow,dialog(8), write("- Ganti IC 74LS166 pada U32."),nl,dialog(7). saran(wp3):-shiftwindow(2),clearwindow,dialog(8), write("- Ganti IC 74LS08 pada U13."),nl,dialog(7). saran(wp4):-shiftwindow(2),clearwindow,dialog(8), write("- Ganti IC 74S32 pada U14."),nl,dialog(7). saran(wp5):-shiftwindow(2),clearwindow,dialog(8), write("- Ganti IC 74LS51 pada U22."),nl,dialog(7). saran(wp6):-shiftwindow(2),clearwindow,dialog(8), write("- Ganti IC 74LS32 pada U23."),nl,dialog(7). saran(wp7):-shiftwindow(2),clearwindow,dialog(8), write("- Ganti IC 74LS273 pada U35."),nl,dialog(7). saran(wp8):-shiftwindow(2),clearwindow,dialog(8), write("- Ganti IC 74LS273 pada U34."),nl,dialog(7). saran(wp9):-shiftwindow(2),clearwindow,dialog(8), write("- Ganti IC 74153 pada U9."),nl,dialog(7). saran(wp10):-shiftwindow(2),clearwindow,dialog(8), write("- Ganti IC 74153 pada U10."),nl,dialog(7). saran(wp11):-shiftwindow(2),clearwindow,dialog(8), write("- Ganti IC 74LS244 pada U36."),nl,dialog(7). saran(wp12):-shiftwindow(2),clearwindow,dialog(8), write("- Ganti IC 74LS374 pada U37."),nl,dialog(7). saran(wp13):-shiftwindow(2),clearwindow,dialog(8), write("- Kerusakan pada bagian RAM."),nl, write("- Ganti tiap RAM mulai U50 sampai U57"),nl, write("- Uji setiap pergantian sampai tidak ada yang rusak."),nl,dialog(7). saran(wr2):-shiftwindow(2),clearwindow,dialog(8), write("- Ganti IC 74S74 pada U43."),nl,dialog(7). saran(wr3):-shiftwindow(2),clearwindow,dialog(8), write("- Ganti IC 74S74 pada U44."),nl,dialog(7). saran(wr4):-shiftwindow(2),clearwindow,dialog(8), write("- Ganti IC 74S174 pada U101."),nl,dialog(7). saran(wr5):-shiftwindow(2),clearwindow,dialog(8), write("- Ganti IC 74LS151 pada U45."),nl,dialog(7). saran(wr6):-shiftwindow(2),clearwindow,dialog(8), write("- Ganti IC 74LS244 pada U67."),nl,dialog(7). saran(wg1):-shiftwindow(3), write("Lakukan apa yang disarankan!"),nl, shiftwindow(2),clearwindow,dialog(8),

Page 24: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

write("- Ganti IC 74LS174 pada U40."),nl,dialog(7). saran(wg2):-shiftwindow(2),clearwindow,dialog(8), write("- Ganti IC 74LS04 pada U16."),nl,dialog(7). saran(pt1a):-shiftwindow(2),clearwindow, write("- Kalau belum, coba tancapkan!"),nl, write("- Dan ulangi booting."),nl. saran(pt1b):-shiftwindow(2),clearwindow, write("- Anda lupa tidak menancapkan kabel."),nl, write("- Periksa semua kabel sebelum Anda men jalankan komputer."),nl. saran(pt2a):-shiftwindow(2),clearwindow, write("- Disarankan untuk mengganti dgn yang baru!"),nl, write("- Dan jalankan lagi komputer Anda!"),nl. saran(pt2b):-shiftwindow(2),clearwindow, write("- Penyebab kerusakan karena Catu Daya rusak/jelek."),nl. saran(pt3a):-shiftwindow(2),clearwindow, write("- Hubungkan!"),nl, write("- Dan jalankan lagi komputer Anda!"),nl. saran(sk1):-shiftwindow(2),clearwindow, write("- Mungkin ada kesalahan dalam program."), write("- Perbaiki dengan program debug."),nl, write("- Atur kembali komputer."),nl, write("- Jalankan lagi komputer Anda."). saran(sk2a):-shiftwindow(2),clearwindow, write("- Mungkin tidak ada output dari rang kaian keyboard."),nl, write("- Ujilah tombol-tombol keyboard."),nl, write("- Tekan setiap tombol karakter."),nl. saran(sk2b):-shiftwindow(2),clearwindow, write("- Jika ada salah satu tombol yg tidak berfungsi."),nl, write("- Berarti ada kerewelan dlm rangkaian keyboard."),nl, write("- Ganti keyboard dengan yang baru."),nl, write("- Jalankan lagi komputer Anda."). saran(sk3a):-shiftwindow(2),clearwindow, write("- Coba buka penutup sistem!"),nl, write("- Kemudian jalankan program Anda."),nl. saran(sk3b):-shiftwindow(2),clearwindow, write("- Masalah mungkin karena panas pada motherboard yang menyebabkan gang guan pada chip RAM."),nl, write("- Pasang Fan luar. Dan jalankan lagi."). saran(sk4):-shiftwindow(2),clearwindow, write("- Kemungkinan tidak ada sinyal penye leksi RAM."),nl, write("- Matikan daya."),nl, write("- Ganti chip 8288 pada U6. "),nl,dialog(10). saran(sk5):-shiftwindow(2),clearwindow, write("- Matikan daya."),nl, write("- Ganti chip 8088 pada U3. "),nl,dialog(10). saran(sk6):-shiftwindow(2),clearwindow, write("- Mungkin chip pada motherboard rewel."). saran(st2):-shiftwindow(2),clearwindow, write("- Matikan daya dari komputer"),nl, write("- Lepaskan hubungan semua periferal hardware."),nl, write("- Hubungkan monitor ke komputer."),nl, write("- Nyalakan lagi komputer dan monitor."),nl. saran(st3):-shiftwindow(2),clearwindow, write("- Kemungkinan tidak ada clock."),nl, write("- Matikan daya."),nl, write("- Ganti chip 8284 pada U11."),nl, write("- Jalankan kembali."),nl. saran(st4):-shiftwindow(2),clearwindow, write("- Kemungkinan tidak ada data."),nl, write("- Matikan daya."),nl, write("- Ganti ROM pada U33."),nl, write("- Jalankan kembali."),nl. saran(st5):-shiftwindow(2),clearwindow, write("- Kemungkinan terjadi gangguan pada mikroprosesor."),nl, write("- Matikan daya."),nl,

Page 25: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

write("- Ganti chip 8088 pada U3."),nl, write("- Jalankan kembali."),nl. saran(akhir):- shiftwindow(2),nl, write("<<<<<< Kerusakan komputer Anda >>>>>>"),nl , write("<<<<<< di luar kemampuan kami >>>>>>"),nl,nl, write(" Bawalah ke Service Centre terdekat!"),nl,nl. % Prosedur Pelacakan kerusakan solusi('d','s'):-respon(solusi),nl,nl,solusi(ds1).solusi('d','s'):-respon(ulang). solusi('d','d'):-respon(solusi),nl,nl,solusi(dd1).solusi('d','d'):-respon(ulang). solusi('k','t'):-respon(solusi),nl,nl,solusi(kt1).solusi('k','t'):-respon(ulang). solusi('k','b'):-respon(solusi),nl,nl,solusi(kb1).solusi('k','b'):-respon(ulang). solusi('m','t'):-respon(solusi),nl,nl,solusi(mt1).solusi('m','t'):-respon(ulang). solusi('m','v'):-respon(solusi),nl,nl,solusi(mv1).solusi('m','v'):-respon(ulang). solusi('m','h'):-respon(solusi),nl,nl,solusi(mh1).solusi('m','h'):-respon(ulang). solusi('m','p'):-respon(solusi),nl,nl,solusi(mp1).solusi('m','p'):-respon(ulang). solusi('w','t'):-respon(solusi),nl,nl,solusi(wt1).solusi('w','t'):-respon(ulang). solusi('w','p'):-respon(solusi),nl,nl,solusi(wp1).solusi('w','p'):-respon(ulang). solusi('w','g'):-respon(solusi),nl,nl,solusi(wg1).solusi('w','g'):-respon(ulang). solusi('w','r'):-respon(solusi),nl,nl,solusi(wr1).solusi('w','r'):-respon(ulang). solusi('p','t'):-respon(solusi),nl,nl,solusi(pt1).solusi('p','t'):-respon(ulang). solusi('s','k'):-respon(solusi),nl,nl,solusi(sk1).solusi('s','k'):-respon(ulang). solusi('s','t'):-respon(solusi),nl,nl,solusi(st1).solusi('s','t'):-respon(ulang). solusi(ds1):- saran(ds1),respon(baik),respon(ulang). solusi(ds1):-solusi(ds2). solusi(ds2):- saran(ds2a),respon(baik),saran(ds2b),respon(ulang). solusi(ds2):-solusi(ds3). solusi(ds3):- saran(ds3),respon(baik),respon(ulang). solusi(ds3):-solusi(ds4). solusi(ds4):- saran(ds4a),respon(baik),saran(ds4b),respon(ulang). solusi(ds4):-solusi(ds5). solusi(ds5):-shiftwindow(3), write("Apakah sistem dapat diboot?"),readchar(X),write(X),nl,X='t', saran(ds5),respon(baik),respon(ulang). solusi(ds5):-solusi(ds6). solusi(ds6):- saran(ds6),respon(baik),respon(ulang). solusi(ds6):-solusi(ds7). solusi(ds7):- saran(ds7),respon(baik),respon(ulang). solusi(ds7):-solusi(ds8). solusi(ds8):- saran(ds8),respon(baik),respon(ulang). solusi(ds8):-solusi(ds9). solusi(ds9):- saran(ds9),respon(baik),respon(ulang).

Page 26: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

solusi(ds9):-saran(ds10),saran(akhir),respon(lacakulang),respon(ulang). solusi(ds9):-clearwindow,shiftwindow(2),clearwindow,dialog(4),nl,solusi(ds1). solusi(dd1):- write("Periksa apakah disket diprotek? (y/t)"),readchar(X),write(X),nl, X='y',saran(dd1),respon(baik),respon(ulang). solusi(dd1):-solusi(dd2). solusi(dd2):- write("Periksa apakah disket diformat dengan tepat?(y/t)"),readchar(X),write(X),nl, X='t',saran(dd2),respon(baik),respon(ulang). solusi(dd2):-solusi(dd3). solusi(dd3):- saran(dd3),respon(baik),respon(ulang). solusi(dd3):-solusi(dd4). solusi(dd4):- saran(dd4),respon(baik),respon(ulang). solusi(dd4):-solusi(dd5). solusi(dd5):- saran(dd5),respon(baik),respon(ulang). solusi(dd5):-solusi(dd6). solusi(dd6):- saran(dd6),respon(baik),respon(ulang). solusi(dd6):-solusi(dd7). solusi(dd7):-saran(dd7),respon(baik),respon(ulang). solusi(dd7):-saran(akhir),respon(lacakulang),respon(ulang). solusi(dd7):-clearwindow,shiftwindow(2),clearwindow,dialog(4),nl,solusi(dd1). solusi(kb1):- write("Periksa, apakah setiap tombol bekerja?(y/t)"),readchar(X),write(X),nl, X='t',nl,saran(kb1),respon(baik),respon(ulang). solusi(kb1):-solusi(kb2). solusi(kb2):-saran(kb2a),respon(baik),respon(ulang). solusi(kb2):-saran(kb2b),saran(akhir),respon(lacakulang),respon(ulang). solusi(kb2):-clearwindow,shiftwindow(2),clearwindow,dialog(4),nl,solusi(kb1). solusi(kt1):- write("Periksa apakah kabel keyboard rusak/jelek?(y/t)"),readchar(X),write(X),nl, X='y',saran(kt1),respon(baik),respon(ulang). solusi(kt1):-solusi(kt2). solusi(kt2):- write("Periksa apakah tombol bekerja normal? (y/t)"),readchar(X),write(X),nl, X='y',saran(kt2),respon(baik),respon(ulang). solusi(kt2):-solusi(kt3). solusi(kt3):-saran(kt3),respon(baik),respon(ulang). solusi(kt3):-solusi(kt4). solusi(kt4):-saran(kt4),respon(baik),respon(ulang). solusi(kt4):-solusi(kt5). solusi(kt5):-saran(kt5),respon(baik),respon(ulang). solusi(kt5):-saran(kt6),saran(akhir),respon(lacakulang),respon(ulang). solusi(kt5):-clearwindow,shiftwindow(2),clearwindow,dialog(4),nl,solusi(kt1). solusi(mt1):- write("Periksa apakah kabel videonya rusak? (y/t)"),readchar(X),write(X),nl, X='y',saran(mt1),respon(baik),respon(ulang). solusi(mt1):-solusi(mt2). solusi(mt2):-

Page 27: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

write("Periksa apakah monitornya rusak?(y/t)"),readchar(X),write(X),nl, X='y',saran(mt2),respon(baik),respon(ulang). solusi(mt2):-solusi(mt3). solusi(mt3):- write("Periksa apakah kecemerlangan video ku rang?(y/t)"),readchar(X),write(X),nl, X='y',saran(mt3),respon(baik),respon(ulang). solusi(mt3):-solusi(mt4). solusi(mt4):-saran(mt4),respon(baik),respon(ulang). solusi(mt4):-solusi(mt5). solusi(mt5):-saran(mt5),respon(baik),respon(ulang). solusi(mt5):-solusi(mt6). solusi(mt6):-saran(mt6),respon(baik),respon(ulang). solusi(mt6):-solusi(mt7). solusi(mt7):- saran(mt7),respon(baik),respon(ulang). solusi(mt7):-solusi(mt8). solusi(mt8):- saran(mt8),respon(baik),respon(ulang). solusi(mt8):-solusi(mt9). solusi(mt9):- saran(mt9),respon(baik),respon(ulang). solusi(mt9):-saran(akhir),respon(lacakulang),respon(ulang). solusi(mt9):-clearwindow,shiftwindow(2),clearwindow,dialog(4),nl,solusi(mt1). solusi(mv1):- saran(mv1),respon(baik),respon(ulang). solusi(mv1):-solusi(mv2). solusi(mv2):- saran(mv2),respon(baik),respon(ulang). solusi(mv2):-saran(mv3),saran(akhir),respon(lacakulang),respon(ulang). solusi(mv2):-clearwindow,shiftwindow(2),clearwindow,dialog(4),nl,solusi(mv1). solusi(mh1):- write("Periksa kontrol sinkronisasi horison- tal monitor!"),nl, respon(baik),respon(ulang). solusi(mh1):-solusi(mh2). solusi(mh2):- saran(mh2),respon(baik),respon(ulang). solusi(mh2):-solusi(mh3). solusi(mh3):- saran(mh3),respon(baik),respon(ulang). solusi(mh3):-solusi(mh4). solusi(mh4):- saran(mh4),respon(baik),respon(ulang). solusi(mh4):-saran(mh5),saran(akhir),respon(lacakulang),respon(ulang). solusi(mh4):-clearwindow,shiftwindow(2),clearwindow,dialog(4),nl,solusi(mh1). solusi(mp1):- saran(mp1),respon(baik),respon(ulang). solusi(mp1):-solusi(mp2). solusi(mp2):- saran(mp2),respon(baik),respon(ulang). solusi(mp2):-solusi(mp3). solusi(mp3):- saran(mp3),respon(baik),respon(ulang). solusi(mp3):-solusi(mp4). solusi(mp4):- saran(mp4),respon(baik),respon(ulang). solusi(mp4):-solusi(mp5).

Page 28: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

solusi(mp5):- saran(mp5),respon(baik),respon(ulang). solusi(mp5):-solusi(mp6). solusi(mp6):- saran(mp6),respon(baik),respon(ulang). solusi(mp6):-solusi(mp7). solusi(mp7):- saran(mp7),respon(baik),respon(ulang). solusi(mp7):-solusi(mp8). solusi(mp8):- saran(mp8),respon(baik),respon(ulang). solusi(mp8):-solusi(mp9). solusi(mp9):- saran(mp9),respon(baik),respon(ulang). solusi(mp9):-saran(akhir),respon(lacakulang),respon(ulang). solusi(mp9):-clearwindow,shiftwindow(2),clearwindow,dialog(4),nl,solusi(mp1). solusi(wt1):- write("Periksa apakah kabel videonya rusak? (y/t)"),readchar(X),write(X),nl, X='y',saran(mt1), respon(baik),respon(ulang). solusi(wt1):-solusi(wt2). solusi(wt2):- write("Periksa apakah monitornya rusak?(y/t)"),readchar(X),write(X),nl, X='y',saran(mt2), respon(baik),respon(ulang). solusi(wt2):-solusi(wt3). solusi(wt3):- write("Periksa apakah kecemerlangan video ku rang?(y/t)"),readchar(X),write(X),nl, X='y',saran(mt3), respon(baik),respon(ulang). solusi(wt3):-solusi(wt4). solusi(wt4):- saran(wt4),respon(baik),respon(ulang). solusi(wt4):-solusi(wt5). solusi(wt5):- saran(wt5),respon(baik),respon(ulang). solusi(wt5):-solusi(wt6). solusi(wt6):- saran(wt6),respon(baik),respon(ulang). solusi(wt6):-solusi(wt7). solusi(wt7):- saran(wt7),respon(baik),respon(ulang). solusi(wt7):-solusi(wt8). solusi(wt8):- saran(wt8),respon(baik),respon(ulang). solusi(wt8):-solusi(wt9). solusi(wt9):- saran(wt9),respon(baik),respon(ulang). solusi(wt9):-solusi(wt10). solusi(wt10):- saran(wt10),respon(baik),respon(ulang). solusi(wt10):-solusi(wt11). solusi(wt11):- saran(wt11),respon(baik),respon(ulang). solusi(wt11):-solusi(wt12). solusi(wt12):- saran(wt12),respon(baik),respon(ulang). solusi(wt12):-solusi(wt13). solusi(wt13):- saran(wt13),respon(baik),respon(ulang). solusi(wt13):-saran(akhir),respon(lacakulang),respon(ulang).

Page 29: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

solusi(wt13):-clearwindow,shiftwindow(2),clearwindow,dialog(4),nl,solusi(wt1). solusi(wp1):- saran(wp1),respon(baik),respon(ulang). solusi(wp1):-solusi(wp2). solusi(wp2):- saran(wp2),respon(baik),respon(ulang). solusi(wp2):-solusi(wp3). solusi(wp3):- saran(wp3),respon(baik),respon(ulang). solusi(wp3):-solusi(wp4). solusi(wp4):- saran(wp4),respon(baik),respon(ulang). solusi(wp4):-solusi(wp5). solusi(wp5):- saran(wp5),respon(baik),respon(ulang). solusi(wp5):-solusi(wp6). solusi(wp6):- saran(wp6),respon(baik),respon(ulang). solusi(wp6):-solusi(wp7). solusi(wp7):- saran(wp7),respon(baik),respon(ulang). solusi(wp7):-solusi(wp8). solusi(wp8):- saran(wp8),respon(baik),respon(ulang). solusi(wp8):-solusi(wp9). solusi(wp9):- saran(wp9),respon(baik),respon(ulang). solusi(wp9):-solusi(wp10). solusi(wp10):- saran(wp10),respon(baik),respon(ulang). solusi(wp10):-solusi(wp11). solusi(wp11):- saran(wp11),respon(baik),respon(ulang). solusi(wp11):-solusi(wp12). solusi(wp12):- saran(wp12),respon(baik),respon(ulang). solusi(wp12):-solusi(wp13). solusi(wp13):- saran(wp13),respon(baik),respon(ulang). solusi(wp13):-saran(akhir),respon(lacakulang),respon(ulang). solusi(wp13):-clearwindow,shiftwindow(2),clearwindow,dialog(4),nl,solusi(wp1). solusi(wr1):- write("Atur kontrol warna pada tampilan untuksinyal warna yang optimum!"),nl, respon(baik),respon(ulang). solusi(wr1):-solusi(wr2). solusi(wr2):- saran(wr2),respon(baik),respon(ulang). solusi(wr2):-solusi(wr3). solusi(wr3):- saran(wr3),respon(baik),respon(ulang). solusi(wr3):-solusi(wr4). solusi(wr4):- saran(wr4),respon(baik),respon(ulang). solusi(wr4):-solusi(wr5). solusi(wr5):- saran(wr5),respon(baik),respon(ulang). solusi(wr5):-solusi(wr6). solusi(wr6):- saran(wr6),respon(baik),respon(ulang). solusi(wr6):-saran(akhir),respon(lacakulang),respon(ulang).

Page 30: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

solusi(wr6):-clearwindow,shiftwindow(2),clearwindow,dialog(4),nl,solusi(wr1). solusi(wg1):- saran(wg1), respon(baik),respon(ulang). solusi(wg1):-solusi(wg2). solusi(wg2):- saran(wg2), respon(baik),respon(ulang). solusi(wg2):-solusi(wg3). solusi(wg3):- saran(wg3), respon(baik),respon(ulang). solusi(wg3):-saran(akhir),respon(lacakulang),respon(ulang). solusi(wg3):-clearwindow,shiftwindow(2),clearwindow,dialog(4),nl,solusi(wg1). solusi(pt1):- write("Apakah colokan daya menancap?(y/t)"),readchar(X),write(X),nl, X='t',saran(pt1a), respon(baik),saran(pt1b),respon(ulang). solusi(pt1):-solusi(pt2). solusi(pt2):- write("Apakah catu dayanya berfungsi?(y/t)"),readchar(X),write(X),nl, X='t',saran(pt2a), respon(baik),saran(pt2b),respon(ulang). solusi(pt2):-solusi(pt3). solusi(pt3):- write("Apakah kabel daya sudah terhubung ke motherboard?(y/t)"), readchar(X),write(X),nl,X='t',saran(pt3a), respon(baik),saran(pt1b),respon(ulang). solusi(pt3):-saran(akhir),respon(lacakulang),respon(ulang). solusi(pt3):-clearwindow,shiftwindow(2),clearwindow,dialog(4),nl,solusi(pt1). solusi(sk1):- write("Coba jalankan komputer Anda."),nl, write("Apakah program komputer kacau?(y/t)"),readchar(X),write(X),nl, X='y',saran(sk1),respon(baik),respon(ulang). solusi(sk1):-solusi(sk2). solusi(sk2):- saran(sk2a),shiftwindow(3), write("Apakah tombol bekerja?(y/t)"),readchar(X),write(X),nl, X='t',saran(sk2b),respon(baik),respon(ulang). solusi(sk2):-solusi(sk3). solusi(sk3):- saran(sk3a),shiftwindow(3), write("Apakah komputer masih mengunci?(y/t)"),readchar(X),write(X),nl, X='y',saran(sk3b),respon(baik),respon(ulang). solusi(sk3):-solusi(sk4). solusi(sk4):- saran(sk4),respon(baik),respon(ulang). solusi(sk4):-solusi(sk5). solusi(sk5):- saran(sk5),respon(baik),respon(ulang). solusi(sk5):-saran(sk6),saran(akhir),respon(lacakulang),respon(ulang). solusi(sk5):-clearwindow,shiftwindow(2),clearwindow,dialog(4),nl,solusi(sk1). solusi(st1):- write("Coba jalankan komputer Anda."),nl, respon(baik),respon(ulang).

Page 31: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

solusi(st1):-solusi(st2). solusi(st2):- saran(st2),respon(baik),respon(ulang). solusi(st2):-solusi(st3). solusi(st3):- saran(st3),respon(baik),respon(ulang). solusi(st3):-solusi(st4). solusi(st4):- saran(st4),respon(baik),respon(ulang). solusi(st4):-solusi(st5). solusi(st5):- saran(st5),respon(baik),respon(ulang). solusi(st5):-saran(akhir),respon(lacakulang),respon(ulang). solusi(st5):-clearwindow,shiftwindow(2),clearwindow,dialog(4),nl,solusi(st1).

Page 32: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

Program 3. Sistem Pakar Diagnosa Penyakit THT % *************************************************************** % NAMA FILE : DiagTHT.PRO % SISTEM PAKAR DIAGNOSA PENYAKIT THT % *************************************************************** domains penyakit = string gejala = symbol query = string jawab = char database dbmengalami(gejala) dbtdkmengalami(gejala) predicates penyebab(penyakit) go mengalami(query,gejala) tdkmengalami(query,gejala) gejala(gejala) clear_fakta2 simpan(gejala,jawab) tanya(query,gejala,jawab) go_once diagnosa(penyakit) solusi(penyakit) goal clearwindow, makewindow(1,7,7," DIAGNOSA PENYAKIT THT ",0,0,24,80), go, removewindow. clauses go:- go_once,nl,nl,nl,nl,nl, write("Ingin mengulang lagi (Y/T) ?"), readchar(Jawab),nl, clearwindow, Jawab = 'y', go. go_once:- diagnosa(_),!, save("test.dat"), clear_fakta2. go_once:- write("Maaf penyakit tidak bisa didiagnosa"),nl, clear_fakta2. mengalami(_,Gejala):- dbmengalami(Gejala),!. mengalami(Query,Gejala):- not(dbtdkmengalami(Gejala)), tanya(Query,Gejala,Jawab), Jawab='y'. tdkmengalami(_,Gejala):- dbtdkmengalami(Gejala),!. tdkmengalami(Query,Gejala):- not(dbmengalami(Gejala)), tanya(Query,Gejala,Jawab), Jawab='t'. tanya(Query,Gejala,Jawab):- write(Query), readchar(Jawab), write(Jawab),nl, simpan(Gejala,Jawab). simpan(Gejala,'y'):- asserta(dbmengalami(Gejala)). simpan(Gejala,'t'):- asserta(dbtdkmengalami(Gejala)).

Page 33: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

clear_fakta2:- retract(dbmengalami(_)),fail. clear_fakta2:- retract(dbtdkmengalami(_)),fail. clear_fakta2. /*------------gejala-----------*/ gejala(Gejala):- dbmengalami(Gejala),!. gejala(Gejala):- dbtdkmengalami(Gejala),!,fail. gejala(demam):- mengalami("Apakah Anda demam (Y/T)?",demam). gejala(sakit_kepala):- mengalami("Apakah Anda sakit_kepala (Y/T)?",sakit_kepala). gejala(nyeri_bicara_menelan):- mengalami("Apakah Anda merasa nyeri pada saat berbicara atau menelan (Y/T)? ",nyeri_bicara_menelan). gejala(batuk):- mengalami("Apakah Anda batuk (Y/T)? ",batuk). gejala(hidung_tersumbat):- mengalami("Apakah hidung Anda tersumbat (Y/T)? ",hidung_tersumbat). gejala(nyeri_telinga):- mengalami("Apakah Anda mengalami nyeri telinga (Y/T)? ",nyeri_telinga). gejala(nyeri_tenggorokan):- mengalami("Apakah Anda mengalami nyeri tenggorokan (Y/T)?",nyeri_tenggorokan). gejala(hidung_meler):- mengalami("Apakah Anda sering mengeluarkan ingus (meler) (Y/T)? ",hidung_meler). gejala(letih_lesu):- mengalami("Apakah Anda mengalami letih dan lesu (Y/T)? ",letih_lesu). gejala(mual_muntah):- mengalami("Apakah Anda mengalami mual atau muntah (Y/T)? ",mual_muntah). gejala(selaput_lendir_merah):- mengalami("Apakah selaput lendir Anda berwarna merah dan bengkak (Y/T)? ",selaput_lendir_merah). gejala(benjolan_dileher):- mengalami("Apakah ada benjolan di leher Anda (Y/T)? ",benjolan_leher). gejala(nyeri_leher):- mengalami("Apakah Anda mengalami nyeri di leher (Y/T)? ",nyeri_leher). gejala(getah_bening):- mengalami("Apakah Anda mengalami pembengkakan getah bening (Y/T)? ",getah_bening). gejala(pendarahan_hidung):- mengalami("Apakah Anda mengalami pendarahan hidung (Y/T)? ",pendarahan_hidung). gejala(suara_serak):- mengalami("Apakah suara Anda terasa serak (Y/T)? ",suara_serak). gejala(bolamata_bergerak):- mengalami("Apakah bola mata Anda bergerak tanpa sadar (Y/T)? ",bolamata_bergerak). gejala(dahi_sakit):- mengalami("Apakah dahi Anda terasa sakit (Y/T)? ",dahi_sakit). gejala(leher_bengkak):- mengalami("Apakah leher Anda bengkak (Y/T)? ",leher_bengkak). gejala(tuli):- mengalami("Apakah ada gejala tuli (Y/T)? ",tuli). gejala(tumbuh_dimulut):- mengalami("Apakah ada yang tumbuh di mulut Anda (Y/T)? ",tumbuh_dimulut). gejala(airliur_menetes):-

Page 34: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

mengalami("Apakah air liur Anda sering menetes (Y/T)?",airliur_menetes). gejala(beratbadan_turun):- mengalami("Apakah berat badan Anda turun (Y/T)? ",beratbadan_turun). gejala(nafas_abnormal):- mengalami("Apakah bunyi nafas Anda abnormal (Y/T)? ",nafas_abnormal). gejala(infeksi_sinus):- mengalami("Apakah Anda mengalami infeksi sinus (Y/T)? ",infeksi_sinus). gejala(nyeri_antara_mata):- mengalami("Apakah Anda mengalami nyeri antara mata (Y/T)? ",nyeri_antara_mata). gejala(nyeri_pinggir_hidung):- mengalami("Apakah Anda mengalami nyeri di pinggir hidung (Y/T)? ",nyeri_pinggir_hidung). gejala(nyeri_pipi):- mengalami("Apakah Anda mengalami nyeri pipi di bawah mata (Y/T)? ",nyeri_pipi). gejala(nyeri_wajah):- mengalami("Apakah Anda mengalami nyeri di wajah (Y/T)? ",nyeri_wajah). gejala(perubahan_kulit):- mengalami("Apakah kulit Anda mengalami perubahan (Y/T)? ",perubahan_kulit). gejala(perubahan_suara):- mengalami("Apakah Anda mengalami perubahan suara (Y/T)? ",perubahan_suara). gejala(radang_gendang_telinga):- mengalami("Apakah Anda mengalami radang gendang telinga (Y/T)? ",radang_gendang_telinga). gejala(sakit_gigi):- mengalami("Apakah Anda mengalami sakit gigi (Y/T)? ",sakit_gigi). gejala(serangan_vertigo):- mengalami("Apakah Anda mengalami serangan vertigo (Y/T)? ",serangan_vertigo). gejala(telinga_berdenging):- mengalami("Apakah telinga Anda berdenging (Y/T)? ",telinga_berdenging). gejala(telinga_penuh):- mengalami("Apakah telinga Anda terasa penuh (Y/T)? ",telinga_penuh). gejala(tenggorokan_gatal):- mengalami("Apakah tenggorokan Anda terasa gatal (Y/T)? ",tenggorokan_gatal). gejala(tubuh_tak_seimbang):- mengalami("Apakah tubuh Anda terasa tak seimbang (Y/T)? ",tubuh_tak_seimbang). /* --------------------diagnosa------------------ */ diagnosa("Tonsilitis"):- gejala(demam), gejala(sakit_kepala), gejala(nyeri_bicara_menelan), gejala(batuk), gejala(nyeri_tenggorokan), gejala(selaput_lendir_merah), penyebab("Tonsilitis"). diagnosa("Sinusitis Maksilaris"):- gejala(demam), gejala(sakit_kepala), gejala(batuk), gejala(hidung_tersumbat), gejala(hidung_meler), gejala(letih_lesu), gejala(benjolan_dileher), penyebab("Sinusitis Maksilaris"). diagnosa("Sinusitis Frontalis"):-

Page 35: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

gejala(demam), gejala(sakit_kepala), gejala(batuk), gejala(hidung_tersumbat), gejala(hidung_meler), gejala(letih_lesu), gejala(selaput_lendir_merah), gejala(dahi_sakit), penyebab("Sinusitis Frontalis"). diagnosa("Sinusitis Edmoidalis"):- gejala(demam), gejala(sakit_kepala), gejala(batuk), gejala(hidung_tersumbat), gejala(hidung_meler), gejala(letih_lesu), gejala(selaput_lendir_merah), gejala(nyeri_antara_mata), gejala(nyeri_pinggir_hidung), gejala(dahi_sakit), penyebab("Sinusitis Edmoidalis"). diagnosa("Sinusitis Sfenoidalis"):- gejala(demam), gejala(sakit_kepala), gejala(batuk), gejala(hidung_tersumbat), gejala(hidung_meler), gejala(letih_lesu), gejala(benjolan_dileher), gejala(nyeri_leher), penyebab("Sinusitis Sfenoidalis"). diagnosa("Abses Peritonsiler"):- gejala(demam), gejala(sakit_kepala), gejala(nyeri_tenggorokan), gejala(getah_bening), gejala(suara_serak), gejala(benjolan_dileher), penyebab("Abses Peritonsiler"). diagnosa("Faringitis"):- gejala(demam), gejala(nyeri_bicara_menelan), gejala(nyeri_tenggorokan), gejala(nyeri_leher), gejala(getah_bening), penyebab("Faringitis"). diagnosa("Kanker Laring"):- gejala(nyeri_bicara_menelan), gejala(batuk), gejala(nyeri_tenggorokan), gejala(getah_bening), gejala(suara_serak), penyebab("Kanker Laring"). diagnosa("Deviasi Septum"):- gejala(demam), gejala(hidung_tersumbat), gejala(nyeri_telinga), gejala(pendarahan_hidung), penyebab("Deviasi Septum"). diagnosa("Laringitis"):- gejala(demam), gejala(nyeri_bicara_menelan), gejala(getah_bening), gejala(leher_bengkak), penyebab("Laringitis"). diagnosa("Kanker Leher & Kepala"):- gejala(nyeri_bicara_menelan), gejala(benjolan_leher), gejala(pendarahan_hidung), penyebab("Kanker Leher & Kepala").

Page 36: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

diagnosa("Otitis Media Akut"):- gejala(demam), gejala(nyeri_telinga), gejala(mual_muntah), penyebab("Otitis Media Akut"). diagnosa("Contact Ulcers"):- gejala(nyeri_bicara_menelan), gejala(suara_serak), penyebab("Contact ulcers"). diagnosa("Abses Parafaringeal"):- gejala(nyeri_bicara_menelan), gejala(leher_bengkak), penyebab("Abses Parafaringeal"). diagnosa("Barotitis Media"):- gejala(sakit_kepala), gejala(nyeri_telinga), penyebab("Barotitis Media"). diagnosa("Kanker Nafasoring"):- gejala(hidung_tersumbat), gejala(pendarahan_hidung), penyebab("Kanker Nafasoring"). diagnosa("Kanker Tonsil"):- gejala(nyeri_tenggorokan), gejala(benjolan_dileher), penyebab("Kanker Tonsil"). diagnosa("Neuronitis Vestibularis"):- gejala(mual_muntah), gejala(bolamata_bergerak), penyebab("Neuronitis Vestibularis"). diagnosa("Meniere"):- gejala(nyeri_telinga), gejala(mual_muntah), penyebab("Meniere"). diagnosa("Tumor Syaraf Pendengaran"):- gejala(sakit_kepala), gejala(tuli), penyebab("Tumor Syaraf Pendengaran"). diagnosa("Kanker Leher Metastatik"):- gejala(benjolan_dileher), penyebab("Kanker Leher Metastatik"). diagnosa("Osteosklerosis"):- gejala(tuli), penyebab("Osteosklerosis"). diagnosa("Vertigo Postular"):- gejala(bolamata_bergerak), penyebab("Vertigo Postular"). penyebab("Tonsilitis"):- solusi("Tonsilitis"). penyebab("Sinusitis Frontalis"):- solusi("Sinusitis Frontalis"). penyebab("Sinusitis Edmoidalia"):- gejala(nyeri_antara_mata), gejala(nyeri_pinggir_hidung), solusi("Sinusitis Edmoidalis"). penyebab("Sinusitis Sfenoidalis"):- solusi("Sinusitis Sfenoidalis"). penyebab("Abses Peritonsiler"):- gejala(airliur_menetes), solusi("Abses Peritonsiler"). penyebab("Faringitis"):- solusi("Faringitis"). penyebab("Kanker Laring"):- gejala(beratbadan_turun), gejala(nafas_abnormal), solusi("Kanker Laring"). penyebab("Deviasi Septum"):- gejala(infeksi_sinus), gejala(nyeri_wajah), solusi("Deviasi Septum"). penyebab("Laringitis"):-

Page 37: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

gejala(tenggorokan_gatal), solusi("Laringitis"). penyebab("Kanker Leher & Kepala"):- gejala(tumbuh_dimulut), gejala(perubahan_kulit), gejala(perubahan_suara), solusi("Kanker Leher & Kepala"). penyebab("Otitis Media Akut"):- gejala(radang_gendang_telinga), solusi("Otitis Media Akut"). penyebab("Contact Ulcers"):- solusi("Contact Ulcers"). penyebab("Abses Parafaringeal"):- solusi("Abses Parafaringeal"). penyebab("Barotitis Media"):- solusi("Barotitis Media"). penyebab("Kanker Nafasoring"):- solusi("Kanker Nafasoring"). penyebab("Kanker Tonsil"):- solusi("Kanker Tonsil"). penyebab("Neuronitis Vestibularis"):- solusi("Neuronitis Vestibularis"). penyebab("Meniere"):- gejala(serangan_vertigo), gejala(telinga_penuh), solusi("Meniere"). penyebab("Tumor Syaraf Pendengaran"):- gejala(tubuh_tak_seimbang), solusi("Tumor Syaraf Pendengaran"). penyebab("Kanker Leher Metastatik"):- solusi("Kanker Leher Metastatik"). penyebab("Osteosklerosis"):- gejala(telinga_berdenging), solusi("Osteosklerosis"). penyebab("Vertigo Postular"):- solusi("Vertigo Postular"). solusi(Penyakit):- upper_lower(BPenyakit,Penyakit),nl,nl,nl, write(" Penyakit Anda adalah ",BPenyakit),nl.

Page 38: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

NOTASI FIELDS FACTS DEFRULE DEFFACTS

Page 39: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

PENGENALAN CLIPS Elemen pokok Bahasa CLIPS adalah

Fact-list : global memory untuk data Knowledge-base : berisi seluruh baris Inference engine : mengontrol seluruh pembuatan

NOTASI Notasi berisi tiga type yang berbeda dari teks yang dimasukkan. Type notasi pertama adalah kata atau karakter yang dimasukkan nyata seperti ditunjukkan. Sesuatu yang tidak dilampiri dengan symbol pasangan [] atau {}, harus dimasukkan nyata seperti ditunjukkan. Contoh 1: (example)

Deskripsi syntax ini berarti bahwa “(example)” harus dimasukkan seperti ditunjukkan. Agar nyata, karakter “(“ harus dimasukkan pertama kali, diikuti dengan karakter “e”, kemudian ”x”, ”a”, ”m”, ”p”, ”l”, ”e”, dan akhirnya karakter ”)”. Tanda kurung ”[]” menunjukkan bahwa isi tanda kurung tersebut adalah pilihan. Contoh 2: (example [1])

Deskripsi syntax menunjukkan bahwa 1 yang ditemukan dalam tanda kurung adalah opsional/pilihan. Contoh 3: (example <integer>)

Symbol “<>” menunjukkan bahwa penempatan/penggantian harus dibuat dengan angka yang ditentukan dengan kata yang ditemukan dalam “<>”. Misalnya : (example 1) (example -50)

Contoh 4: (example <<integer>>)

<<integer>> dapat berupa bilangan nol, atau kemunculan lain dari angka yang ditentukan. Misal: (example 1 2 3)

Contoh 5: <<<integer>>> <integer><<integer>>

Page 40: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

Tanda kurung {} menunjukkan bahwa satu atau hanya satu item yang diisikan dalam tanda kurung harus digunakan dalam tempat diskripsi syntax tersebut, item dalam tanda kurung {} terpisahkan dengan tanda koma. Misalnya deskripsi syntax: {all, some, none}. FIELDS Oleh karena CLIPS membaca karakter dari keyboard atau file, maka CLIPS akan mengelompokkannya ke dalam Tokens yang dinamakan dengan FIELDS. Ada 3 type fields, yaitu Word, String dan Numericfield. Word Contoh : Emergency Shut-down-electrical Sprinkle_System

String Contoh: ”Activate the sprinkle system” “fire”

Numericfield berisi 3 bagian yaitu tanda/sign, angka/value dan eksponen. Contoh: 1 1.5 .7 +3 -1 65 3.5e10

FAKTA Untuk memecahkan suatu permasalahan, program CLIPS harus memiliki data atau informasi yang disebut dengan FACT (fakta). Fakta berisi satu atau lebih field yang dilampirkan dalam penggabungan “()”. Contoh Fakta: (single-field) (cost 78 dollars 23 cents) (name “John Doe”)

Kelompok Fakta (Template) Kelompok Fakta yang memiliki relasi yang sama dapat digambarkan untuk tujuan dokumentasi dengan menggunakan ‘Template”. Template untuk fakta menunjukkan relasi yang diikuti dengan satu atau lebih item umum atau item khusus. Misalnya template untuk fakta “emergency” adalah: (emergency <type>)

<type> dapat berupa flood atau fire

Page 41: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

Contoh 1: Fakta: (action active sprinkler-system) (action active fire-alarm) (action notify fire-department) (action shutdown-electrical-power)

Dapat digambarkan dengan template: (action activate <device>) (action notify <group>) (action <specific-action>)

Contoh 2: (komponen-komputer cpu ram harddisk)

Dapat digambarkan dengan template: (komponen-komputer <<daftar-komponen>>)

Contoh 3: (komponen komputer cpu ram harddisk) (komponen mobil engine roda body)

Dapat digambarkan dengan template: (komponen <item> <<daftar-komponen>>)

INTERFACE CLIPS

Page 42: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

Menambah dan Menghapus FAKTA Kelompok fakta yang diketahui CLIPS disimpan dalam (fact-list). Fakta yang menunjukkan informasi dapat ditambahkan dan dihapus dari fact-list. Fakta baru dapat ditambahkan pada fact-list dengan menggunakan perintah ”assert”. Syntax: (assert <<<fact>>>)

Contoh: Ketikkan perintah berikut pada prompt CLIPS> (assert (emergency fire))

Perintah ”facts” dapat digunakan untuk menunjukkan fakta dalam fact-list. Syntax pokok dari perintah ”facts” adalah:

Bentuk ”f-1” adalah ”fact identifier” yang ditentukan pada fakta dengan CLIPS. Setiap fakta yang dimasukkan ke dalam fact-list ditentukan identifier fakta unik dengan dimulai dengan huruf f dan diikuti dengan integer yang disebut dengan ”fact-index”. Syntax facts: (facts [<start> [<end> [<maximum>]]])

Untuk menghapus Fakta dari fact-list digunakan perintah ”retract” dengan syntax: (retract <<<fact-index>>>)

Konstruksi Rule (defrule) Bentuk umum: (defrule <rule name> [<optional comment>] <<patterns>> => <<actions>>)

Page 43: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

Contoh: IF the emergency is a fire THEN the action is to activate the sprinkler system Maka penulisan pada CLIPS: ;rule header (defrule fire-emergency ”Contoh sebuah rule” ;pattern (emergency fire) ;THEN arrow => ;action (assert (action activate-sprinkler-system)))

Untuk menampilkan rule dalam CLIPS digunakan perintah: (rules)

Untuk menampilkan deskripsi rule dalam CLIPS digunakan perintah: (ppdefrule <rule-name>)

Contoh : ;********************************** ; Nama File : Latihan01.CLP ; Contoh sebuah rule ;********************************** ; template yang digunakan ; (emergency <type-of-emergency>) ; (action <action-to-be-performed>) ;********************************** (defrule fire-emergency "Contoh sebuah rule" (emergency fire) => (assert (action activate-the-sprinkler-system)))

Perintah Printout Perintah “printout” digunakan untuk mencetak informasi. Syntax: (printout <logical-name> <<print-items>>)

Contoh: ;**************************************** ; Nama File : Latihan02.CLP ; Contoh penggunaan defrule dan printout ;**************************************** (defrule fire-emergency "Rule jika terjadi Kebakaran" (emergency fire) => (printout t "Activate the sprinkler system" crlf)) (defrule flood-emergency "Rule jika terjadi Banjir" (emergency flood)

Page 44: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

=> (printout t "Shut down electrical equipment" crlf))

Contoh: ;**************************************** ; Nama File : Latihan03.CLP ; Contoh pengembangan defrule dan printout ;**************************************** (defrule class-A-fire-emergency (emergency fire) (fire-class A) => (printout t "Activate the sprinkler system" crlf)) (defrule class-B-fire-emergency (emergency fire) (fire-class B) => (printout t "use carbon dioxide extinguisher" crlf))

Untuk menghapus defrule, dalam CLIPS digunakan perintah: (undefrule <rule-name>)

Konstruksi Fakta (deffacts) Bentuk umum: (deffacts <deffacts name> [<optional comment>] <<facts>>)

Contoh (deffacts status “Beberapa Fakta mengenai emergency” (emergency fire) (fire-class A))

Untuk menampilkan rule dalam CLIPS digunakan perintah: (facts)

Untuk menampilkan deskripsi rule dalam CLIPS digunakan perintah: (ppdeffacts <facts-name>)

Untuk menampilkan daftar nama deffacts dalam CLIPS digunakan perintah: (list-deffacts)

Untuk menghapus deffracts, dalam CLIPS digunakan perintah: (undeffacts <facts-name>)

Page 45: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

LATIHAN Kasus kereta api bawah tanah yang tiba atau meninggalkan stasiun. Masukannya adalah jarak dari stasiun dan kecepatan kereta api. Keluarannya adalah besar daya pengereman yang digunakan. Komposisi aturan untuk contoh menggunakan aturan dasar sebagai berikut:

R1 : IF speed is very slow AND distance very close THEN brakes power is light

R2 : IF speed is slow AND distance very close THEN brakes power is heavy

R3 : IF speed is fast AND distance very close THEN brakes power is heavy

R4 : IF speed is very fast AND distance very close THEN brakes power is very heavy

R5 : IF speed is very slow AND distance close THEN brakes power is light

R6 : IF speed is slow AND distance close THEN brakes power is light

R7 : IF speed is fast AND distance close THEN brakes power is heavy

R8 : IF speed is very fast AND distance close THEN brakes power is very heavy

R9 : IF speed is very slow AND distance very far THEN brakes power is light

R10 : IF speed is slow AND distance very far THEN brakes power is very light

R11 : IF speed is fast AND distance very far THEN brakes power is light

R12 : IF speed is very fast AND distance very far THEN brakes power is heavy

R13 : IF speed is very slow AND distance very far THEN brakes power is very light

R14 : IF speed is slow AND distance very far THEN brakes power is very light

R15 : IF speed is fast AND distance very far THEN brakes power is light

R16 : IF speed is very fast AND distance very far THEN brakes power is light

Buatlah Konstruksi Rule (defrule) dari aturan-aturan diatas.

Page 46: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

Program 1. Expert System Kerusakan Komputer ;====================================================== ; Nama File : Komputer.CLP ; ; “ Expert System Diagnosa Kerusakan Komputer “ ;====================================================== (defglobal ?*prty* = "" ?*counter* = 0 ?*loop* = 0 ) (deftemplate gejala (slot id ) (multislot nama-gejala) (slot asked) ) (deftemplate kerusakan (multislot jenis) (multislot nama-kerusakan) (multislot gejala) ) (deftemplate data-gejala (multislot nama-kerusakan) (slot id) (slot status) ) (deftemplate hasil-ctk (multislot nama-kerusakan) (slot data (type FLOAT) ) ) (deffacts f_gejala (gejala (id 1) (nama-gejala ukuran layar mengecil/membesar) (asked false)) (gejala (id 2) (nama-gejala tidak ada gambar) (asked false)) (gejala (id 3) (nama-gejala monitor kedap kedip) (asked false)) (gejala (id 4) (nama-gejala gambar bergaris) (asked false)) (gejala (id 5) (nama-gejala warna gambar berubah/kacau) (asked false)) (gejala (id 6) (nama-gejala bunyi nada waktu nyalain) (asked false)) (gejala (id 7) (nama-gejala restart sendiri) (asked false)) (gejala (id 8) (nama-gejala dumping memory/layar biru) (asked false)) (gejala (id 9) (nama-gejala ngehang) (asked false)) (gejala (id 10) (nama-gejala muncul kata2 aneh) (asked false)) (gejala (id 11) (nama-gejala lemot) (asked false)) (gejala (id 12) (nama-gejala processor tidak nyala) (asked false)) (gejala (id 13) (nama-gejala kipas tidak nyala) (asked false)) (gejala (id 14) (nama-gejala listrik tidak nyala) (asked false)) (gejala (id 15) (nama-gejala power tidak hidup) (asked false)) (gejala (id 16) (nama-gejala muncul msgbox error) (asked false)) (gejala (id 17) (nama-gejala data hilang) (asked false)) (gejala (id 18) (nama-gejala tdk menemukan ntldr) (asked false)) (gejala (id 19) (nama-gejala tidak bisa akses data) (asked false)) (gejala (id 20) (nama-gejala minta format data) (asked false)) (gejala (id 21) (nama-gejala beberapa huruf rusak) (asked false)) (gejala (id 22) (nama-gejala keyboard tidak nyala) (asked false)) (gejala (id 23) (nama-gejala kata keyboard berubah) (asked false)) ) (deffacts f_kerusakan

(kerusakan (jenis masuk windows) (nama-kerusakan monitor) (gejala 1 2 3)) (kerusakan (jenis masuk windows) (nama-kerusakan virus) (gejala 10 11 9))

Page 47: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

(kerusakan (jenis masuk windows) (nama-kerusakan windows error) (gejala 16 17 18)) (kerusakan (jenis masuk windows) (nama-kerusakan hardisk) (gejala 19 20 11)) (kerusakan (jenis masuk windows) (nama-kerusakan keyboard) (gejala 21 22 23)) (kerusakan (jenis tidak masuk windows) (nama-kerusakan VGA) (gejala 4 2 5)) (kerusakan (jenis tidak masuk windows) (nama-kerusakan motherboard) (gejala 15 9 12)) (kerusakan (jenis tidak masuk windows) (nama-kerusakan monitor) (gejala 1 2 3)) (kerusakan (jenis tidak masuk windows) (nama-kerusakan power supply error) (gejala 13 12 14)) (kerusakan (jenis tidak masuk windows) (nama-kerusakan windows error) (gejala 16 17 18)) (kerusakan (jenis tidak masuk windows) (nama-kerusakan processor) (gejala 7 9 12)) (kerusakan (jenis tidak masuk windows) (nama-kerusakan memory) (gejala 6 9 8))

) (deffacts f_data_gejala (data-gejala (nama-kerusakan monitor) (id 1) (status 0)) (data-gejala (nama-kerusakan monitor) (id 2) (status 0)) (data-gejala (nama-kerusakan monitor) (id 3) (status 0)) (data-gejala (nama-kerusakan virus) (id 10) (status 0)) (data-gejala (nama-kerusakan virus) (id 11) (status 0)) (data-gejala (nama-kerusakan virus) (id 9) (status 0)) (data-gejala (nama-kerusakan windows error) (id 16) (status 0)) (data-gejala (nama-kerusakan windows error) (id 17) (status 0)) (data-gejala (nama-kerusakan windows error) (id 18) (status 0)) (data-gejala (nama-kerusakan hardisk) (id 19) (status 0)) (data-gejala (nama-kerusakan hardisk) (id 20) (status 0)) (data-gejala (nama-kerusakan hardisk) (id 11) (status 0)) (data-gejala (nama-kerusakan keyboard) (id 21) (status 0)) (data-gejala (nama-kerusakan keyboard) (id 22) (status 0)) (data-gejala (nama-kerusakan keyboard) (id 23) (status 0)) (data-gejala (nama-kerusakan VGA) (id 4) (status 0)) (data-gejala (nama-kerusakan VGA) (id 2) (status 0)) (data-gejala (nama-kerusakan VGA) (id 5) (status 0)) (data-gejala (nama-kerusakan motherboard) (id 15) (status 0)) (data-gejala (nama-kerusakan motherboard) (id 9) (status 0)) (data-gejala (nama-kerusakan motherboard) (id 12) (status 0)) (data-gejala (nama-kerusakan power supply error) (id 13) (status 0)) (data-gejala (nama-kerusakan power supply error) (id 12) (status 0)) (data-gejala (nama-kerusakan power supply error) (id 14) (status 0)) (data-gejala (nama-kerusakan processor) (id 7) (status 0)) (data-gejala (nama-kerusakan processor) (id 9) (status 0)) (data-gejala (nama-kerusakan processor) (id 12) (status 0)) (data-gejala (nama-kerusakan memory) (id 6) (status 0)) (data-gejala (nama-kerusakan memory) (id 9) (status 0)) (data-gejala (nama-kerusakan memory) (id 8) (status 0)) ) (defrule MAIN ?j<-(initial-fact) => (retract ?j ) (loop-for-count 50 (printout t " " t)) (printout t "Masukkan Pilihan Anda" t) (printout t "1. Cek Kerusakan" t) (printout t "2. Jenis Kerusakan & Gejala" t) (printout t "3. Gejala Kerusakan yang Dapat di periksa Program" t) (printout t "4. Exit" t) (printout t "Pilih Anda : ") (bind ?pil (read)) (if(not(numberp ?pil))then (printout t "Inputan harus berupa angka" t) (readline)

Page 48: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

(assert(initial-fact)) else (if(or(< ?pil 1) (> ?pil 4))then (printout t "Inputan angka hanya bisa 1 2 3 4" t) (assert(initial-fact)) else (assert(beginMenu ?pil)) ) ) ) (defrule BeginMenu4 ?j<-(beginMenu 4) => (retract ?j) (loop-for-count 50 (printout t t)) (printout t "Terima kasih telah menggunakan program ini !!" ) (readline) ) (defrule menu3awal ?j<-(beginMenu 3) => (retract ?j) (loop-for-count 50 (printout t t)) (printout t "Gejala Kerusakan Yang dapat dideteksi program ini :" t) (printout t "================================================" t) (assert(bgnMenu 3)) ) (defrule beginMenu3 (bgnMenu 3) (gejala(nama-gejala $?gjl)) => (format t "%-5s" "*") (format t "%-40s" (implode$ $?gjl)) (printout t t) ) (defrule Menu3 ?j<-(bgnMenu 3) => (retract ?j) (printout t"Tekan enter untuk kembali ke halaman utama"t) (readline) (assert(initial-fact)) ) (defrule beginMenu2 ?j<-(beginMenu 2) => (retract ?j) (loop-for-count 50 (printout t t)) (printout t "1. gagal Masuk windows" t) (printout t "2. berhasil masuk windows" t) (printout t "Pilih jenis kerusakan komputer : ") (bind ?a (read)) (if(and (neq ?a 1) (neq ?a 2))then (printout t "Harap masukkan hanya 1 dan 2" t) (printout t "tekan enter untuk melanjutkan" ) (readline) (assert(beginMenu 2)) else (if(eq ?a 1)then (loop-for-count 50(printout t t)) (printout t "Kemungkinan kerusakan jika gagal masuk windows :" t) (printout t "===============================================" t) (assert(gagal_msk)) else (loop-for-count 50(printout t t)) (printout t "Kemungkinan kerusakan jika berhasil masuk windows :" t) (printout t "===============================================" t) (assert(brhsl_msk)) ) )

Page 49: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

) (defrule gagalMsk (gagal_msk) (kerusakan(jenis tidak masuk windows)(nama-kerusakan $?krsk)(gejala ?id1 ?id2 ?id3)) (gejala(id ?id1)(nama-gejala $?gjl1)) (gejala(id ?id2)(nama-gejala $?gjl2)) (gejala(id ?id3)(nama-gejala $?gjl3)) => (printout t (implode$ $?krsk) t) (format t "%10s" "= ") (printout t (implode$ $?gjl1) t) (format t "%10s" "= ") (printout t(implode$ $?gjl2) t) (format t "%10s" "= ") (printout t (implode$ $?gjl3) t) ) (defrule gagal ?j<-(gagal_msk) => (retract ?j) (printout t t) (printout t "Tekan enter untuk kembali ke halaman utama" t) (readline) (assert(initial-fact)) ) (defrule brhsMsk (brhsl_msk) (kerusakan(jenis masuk windows)(nama-kerusakan $?krsk)(gejala ?id1 ?id2 ?id3)) (gejala(id ?id1)(nama-gejala $?gjl1)) (gejala(id ?id2)(nama-gejala $?gjl2)) (gejala(id ?id3)(nama-gejala $?gjl3)) => (printout t (implode$ $?krsk) t) (format t "%10s" "= ") (printout t (implode$ $?gjl1) t) (format t "%10s" "= ") (printout t(implode$ $?gjl2) t) (format t "%10s" "= ") (printout t (implode$ $?gjl3) t) ) (defrule berhasil ?j<-(brhsl_msk) => (retract ?j) (printout t t) (printout t "Tekan enter untuk kembali ke halaman utama" t) (readline) (assert(initial-fact)) ) (deffunction pertanyaan1 (?menu ?id ?krsk $?kata) (loop-for-count 50 (printout t " " t)) (printout t "Jawablah pertanyaan dibawah ini sesuai dengan keadaan komputer Anda" t) (printout t "=================================================================" t) (printout t "Apakah komputer anda "(implode$ $?kata)"? [ya/tidak] : " ) (bind ?*prty* (lowcase(read))) (if(numberp ?*prty*)then (printout t "Harap Masukkan Jawaban ya atau tidak" t) (printout t "Tekan Enter untuk melanjutkan" ) (readline)

Page 50: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

(assert-string(str-cat "(" ?menu ?id " " ?krsk")" )) else (if(and( neq ?*prty* ya) (neq ?*prty* tidak))then (printout t "Harap Masukkan Jawaban ya atau tidak" t) (printout t "Tekan Enter untuk melanjutkan" ) (readline) (assert-string(str-cat "(" ?menu ?id " " ?krsk")" )) ) ) ) (defrule menu1 ?j<-(beginMenu 1) => (retract ?j) (bind ?*prty* "") (bind $?krsk "") (pertanyaan1 "beginMenu " "1" $?krsk dapat masuk ke windows) (if(eq ?*prty* ya)then (assert(masuk windows)) else (if(eq ?*prty* tidak)then (assert (tidak masuk windows)) ) ) ) (defrule msk_win1 (masuk windows) (kerusakan (jenis masuk windows)(nama-kerusakan $?krsk)(gejala ?id1 ?id2 ?id3)) (data-gejala(nama-kerusakan monitor)(id 1)(status 0)) (data-gejala(nama-kerusakan $?krsk)(id ?id1)(status 0)) => (bind ?*counter* 0) (assert(part 1 ?id1 $?krsk)) ) (defrule hit_ulang1 (data-gejala(nama-kerusakan monitor)(id 1)(status 1)) (data-gejala(nama-kerusakan virus)(id 10)(status 1)) (data-gejala(nama-kerusakan windows error)(id 16)(status 1)) (data-gejala(nama-kerusakan hardisk)(id 19)(status 1)) (data-gejala(nama-kerusakan keyboard)(id 21)(status 1)) ?j<-(masuk windows) (test(eq ?*loop* 0)) => (retract ?j) (assert(masuk windows)) ) (defrule msk_win2 (masuk windows) (kerusakan (jenis masuk windows)(nama-kerusakan $?krsk)(gejala ?id1 ?id2 ?id3)) (data-gejala(nama-kerusakan monitor)(id 1)(status 1)) (data-gejala(nama-kerusakan virus)(id 10)(status 1)) (data-gejala(nama-kerusakan windows error)(id 16)(status 1)) (data-gejala(nama-kerusakan hardisk)(id 19)(status 1)) (data-gejala(nama-kerusakan keyboard)(id 21)(status 1)) (data-gejala(nama-kerusakan $?krsk)(id ?id2)(status 0)) (test(eq ?*loop* 0)) => (bind ?*counter* 0) (assert(part 1 ?id2 $?krsk)) ) (defrule hit_ulang2 (data-gejala(nama-kerusakan virus)(id 11)(status 1)) (data-gejala(nama-kerusakan windows error)(id 17)(status 1)) (data-gejala(nama-kerusakan hardisk)(id 20)(status 1)) (data-gejala(nama-kerusakan keyboard)(id 22)(status 1))

Page 51: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

(data-gejala(nama-kerusakan monitor)(id 2)(status 1)) (data-gejala(nama-kerusakan monitor)(id 1)(status 1)) (data-gejala(nama-kerusakan virus)(id 10)(status 1)) (data-gejala(nama-kerusakan windows error)(id 16)(status 1)) (data-gejala(nama-kerusakan hardisk)(id 19)(status 1)) (data-gejala(nama-kerusakan keyboard)(id 21)(status 1)) ?j<-(masuk windows) (test(eq ?*loop* 0)) => (retract ?j) (assert(masuk windows)) ) ;Created by Arif ([email protected]) (defrule msk_win3 (masuk windows) (kerusakan (jenis masuk windows)(nama-kerusakan $?krsk)(gejala ?id1 ?id2 ?id3)) (data-gejala(nama-kerusakan virus)(id 11)(status 1)) (data-gejala(nama-kerusakan windows error)(id 17)(status 1)) (data-gejala(nama-kerusakan hardisk)(id 20)(status 1)) (data-gejala(nama-kerusakan keyboard)(id 22)(status 1)) (data-gejala(nama-kerusakan monitor)(id 2)(status 1)) (data-gejala(nama-kerusakan $?krsk)(id ?id3)(status 0)) (test(eq ?*loop* 0)) => (bind ?*counter* 0) (assert(part 1 ?id3 $?krsk)) ) (defrule msk_win4 (data-gejala(nama-kerusakan monitor)(id 3)(status 1)) (data-gejala(nama-kerusakan virus)(id 9)(status 1)) (data-gejala(nama-kerusakan windows error)(id 18)(status 1)) (data-gejala(nama-kerusakan hardisk)(id 11)(status 1)) (data-gejala(nama-kerusakan keyboard)(id 23)(status 1)) (masuk windows) => (assert(selesaih)) ) (defrule tdk_msk_win1 (tidak masuk windows) (kerusakan (jenis tidak masuk windows) (nama-kerusakan $?krsk) (gejala ?id1 ?id2 ?id3)) (data-gejala(nama-kerusakan VGA)(id 4)(status 0)) (data-gejala(nama-kerusakan $?krsk)(id ?id1)(status 0)) => (bind ?*counter* 0) (assert(part 1 ?id1 $?krsk)) ) (defrule tdk_msk_win2 ?j<-(tidak masuk windows) (data-gejala(nama-kerusakan VGA)(id 4)(status 1)) (data-gejala(nama-kerusakan motherboard)(id 15)(status 1)) (data-gejala(nama-kerusakan monitor)(id 1)(status 1)) (data-gejala(nama-kerusakan power supply error)(id 13)(status 1)) (data-gejala(nama-kerusakan windows error)(id 16)(status 1)) (data-gejala(nama-kerusakan processor)(id 7)(status 1)) (data-gejala(nama-kerusakan memory)(id 6)(status 1)) (test(eq ?*loop* 0)) => (retract ?j) (assert(tidak masuk windows)) ) (defrule tdk_msk_win3 (tidak masuk windows)

Page 52: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

(kerusakan (jenis tidak masuk windows) (nama-kerusakan $?krsk) (gejala ?id1 ?id2 ?id3)) (data-gejala(nama-kerusakan VGA)(id 4)(status 1)) (data-gejala(nama-kerusakan motherboard)(id 15)(status 1)) (data-gejala(nama-kerusakan monitor)(id 1)(status 1)) (data-gejala(nama-kerusakan power supply error)(id 13)(status 1)) (data-gejala(nama-kerusakan windows error)(id 16)(status 1)) (data-gejala(nama-kerusakan processor)(id 7)(status 1)) (data-gejala(nama-kerusakan memory)(id 6)(status 1)) (data-gejala(nama-kerusakan $?krsk)(id ?id2)(status 0)) (test(eq ?*loop* 0)) => (bind ?*counter* 0) (assert(part 1 ?id2 $?krsk)) ) (defrule tdk_msk_win4 ?j<-(tidak masuk windows) (data-gejala(nama-kerusakan VGA)(id 2)(status 1)) (data-gejala(nama-kerusakan motherboard)(id 9)(status 1)) (data-gejala(nama-kerusakan monitor)(id 2)(status 1)) (data-gejala(nama-kerusakan power supply error)(id 12)(status 1)) (data-gejala(nama-kerusakan windows error)(id 17)(status 1)) (data-gejala(nama-kerusakan processor)(id 9)(status 1)) (data-gejala(nama-kerusakan memory)(id 9)(status 1)) (test(eq ?*loop* 0)) => (retract ?j) (assert(tidak masuk windows)) ) (defrule tdk_msk_win5 (tidak masuk windows) (kerusakan (jenis tidak masuk windows) (nama-kerusakan $?krsk) (gejala ?id1 ?id2 ?id3)) (data-gejala(nama-kerusakan VGA)(id 2)(status 1)) (data-gejala(nama-kerusakan motherboard)(id 9)(status 1)) (data-gejala(nama-kerusakan monitor)(id 2)(status 1)) (data-gejala(nama-kerusakan power supply error)(id 12)(status 1)) (data-gejala(nama-kerusakan windows error)(id 17)(status 1)) (data-gejala(nama-kerusakan processor)(id 9)(status 1)) (data-gejala(nama-kerusakan memory)(id 9)(status 1)) (data-gejala(nama-kerusakan $?krsk)(id ?id3)(status 0)) (test(eq ?*loop* 0)) => (bind ?*counter* 0) (assert(part 1 ?id3 $?krsk)) ) (defrule tdk_msk_win6 (data-gejala(nama-kerusakan VGA)(id 5)(status 1)) (data-gejala(nama-kerusakan motherboard)(id 12)(status 1)) (data-gejala(nama-kerusakan monitor)(id 3)(status 1)) (data-gejala(nama-kerusakan power supply error)(id 14)(status 1)) (data-gejala(nama-kerusakan windows error)(id 18)(status 1)) (data-gejala(nama-kerusakan processor)(id 12)(status 1)) (data-gejala(nama-kerusakan memory)(id 8)(status 1)) => (assert(selesaih)) ) (deffunction kerusakan ($?krsk) (loop-for-count 50 (printout t t)) (printout t "Kemungkinan komputer anda rusak karena (" (implode$ $?krsk) ")"t) (printout t "Mari kita lihat lebih dalam lagi" t) (printout t t) (printout t "Tekan Enter to continue" t) (readline)

Page 53: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

) (defrule part1 ?j<-(part 1 ?id $?krsk) ?gejala<-(gejala (id ?id) (nama-gejala $?gjl)) ?data<-(data-gejala (nama-kerusakan $?krsk)(id ?id)(status 0)) => (retract ?j) (bind ?*prty* "") (pertanyaan1 "part 1 " ?id (implode$ $?krsk) $?gjl) (if(eq ?*prty* ya)then (modify ?gejala (asked true)) (bind ?*counter* 1) (bind ?*loop* 1) (kerusakan $?krsk) (assert (part 2 $?krsk)) (modify ?data (status 1)) else (if(eq ?*prty* tidak)then (modify ?data (status 1)) (bind ?*loop* 0) ) ) ) (deffunction pertanyaan2 (?kata ?j ?krsk $?gjl) (printout t "Apakah komputer anda "(implode$ $?gjl)"? [ya/tidak] : " ) (bind ?*prty* "") (bind ?*prty* (lowcase(read))) (if(numberp ?*prty*)then (retract ?j) (assert-string(str-cat "(" ?kata " " ?krsk ")" )) else (if(and( neq ?*prty* ya) (neq ?*prty* tidak))then (retract ?j) (assert-string(str-cat "(" ?kata " " ?krsk ")" )) ) ) ) (defrule part2 ?j<-(part 2 $?krsk) ?data<-(data-gejala(nama-kerusakan $?krsk) (id ?id)(status 0)) ?gejala<-(gejala(id ?id)(nama-gejala $?gjl)) => (pertanyaan2 "part 2" ?j (implode$ $?krsk) $?gjl) (if(eq ?*prty* ya)then (modify ?gejala (asked true)) (bind ?*counter* (+ ?*counter* 1)) (modify ?data (status 1)) else (if(eq ?*prty* tidak)then (modify ?data (status 1)) ) ) ) (deffunction hasil (?krsk ?prc ) (loop-for-count 50 (printout t t)) (printout t "Result : " t) (printout t "==========" t) (printout t "Kemungkinan kerusakan akibat " ?krsk " : " ?prc " %" t) ) (defrule Pilihan ?j<-(pilihan) (hasil-ctk(nama-kerusakan $?krsk) (data ?hasil)) => (retract ?j) (hasil $?krsk ?hasil)

Page 54: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

(bind ?*loop* 0) (printout t "Masukan pilihan Anda [selesai/lanjut] : ") (bind ?pilh (lowcase(read))) (if(and(neq ?pilh selesai)(neq ?pilh lanjut))then (assert(pilihan)) else (if(eq ?pilh selesai)then (assert(selesaih)) else (if(eq ?pilh lanjut)then (assert(lanjut $?krsk)) ) ) ) ) (defrule Lanjut ?i<-(lanjut ?krsk) => (retract ?i) (if(eq ?krsk monitor) then (assert(msk)) else (if(eq ?krsk VGA) then (assert(tdk msk)) ) ) ) (defrule TDKMSK ?j<-(tdk msk) ?i<-(tidak masuk windows) => (retract ?j) (retract ?i) (assert(tidak masuk windows)) ) (defrule MSK ?j<-(msk) ?i<-(masuk windows) => (retract ?j) (retract ?i) (assert (masuk windows)) ) (defrule SelesaiH ?j<-(selesaih) => (retract ?j) (loop-for-count 50 (printout t t)) (printout t "Hasil Diagnosa dari jawaban Anda :" t) (printout t "================================" t) (assert(selesai)) ) (defrule Selesai1 (selesai) ?hsl<-(hasil-ctk(nama-kerusakan $?krsk) (data ?hasil)) => (printout t $?krsk "-> hasil diagnosa : " ?hasil " %" t) (retract ?hsl) ) (defrule Selesai2 (selesai) ?i<-(masuk windows) => (retract ?i) (printout t t) (printout t "Tekan enter untuk kembali ke halaman utama" t) (readline)

Page 55: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

) (defrule Selesai4 (selesai) ?i<-(tidak masuk windows) => (retract ?i) (printout t t) (printout t "Tekan enter untuk kembali ke halaman utama" t) (readline) ) (defrule bersihkan3 (selesai) ?gejala<-(gejala(id ?id)) ?data<-(data-gejala (id ?id) (status 1)) => (modify ?gejala (asked false)) (modify ?data (status 0)) ) (defrule selesai5 ?j<-(selesai) => (retract ?j) (assert(initial-fact)) ) (defrule perhitungan ?j<-(perhitungan $?krsk) => (retract ?j) (bind ?hasil(*(/ ?*counter* 3) 100 )) (assert(hasil-ctk(nama-kerusakan $?krsk) (data ?hasil))) (assert (pilihan)) ) (defrule Part3 ?j<-(part 2 $?krsk) => (retract ?j) (assert (perhitungan $?krsk)) )

Page 56: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

Program 2. GIFT SELECTION EXPERT SYSTEM ;====================================================== ; Nama File : Gift_Adv.CLP ; ; “ Gift Selection Expert System “ ; This program choose a suitable gift for a person ;====================================================== (deffunction ask-question (?question $?allowed-values) (printout t ?question) (bind ?answer (read)) (if (lexemep ?answer) then (bind ?answer (lowcase ?answer))) (while (not (member ?answer ?allowed-values)) do (printout t ?question) (bind ?answer (read)) (if (lexemep ?answer) then (bind ?answer (lowcase ?answer)))) ?answer) (deffunction yes-or-no-p (?question) (bind ?response (ask-question ?question yes no y n)) (if (or (eq ?response yes) (eq ?response y)) then TRUE else FALSE)) ;----------------------- (defrule les "ask questions" (initial-fact) => (bind ?music (ask-question "Does he/she likes music (yes/no)? " yes no) ) (assert (music ?music)) (bind ?educated (ask-question "Is he/she educated (yes/no)? " yes no) ) (assert (educated ?educated)) (bind ?expen (ask-question "Do you want an expensive gift (yes/no)? " yes no) ) (if (eq ?expen yes) then (assert (price expensive)) ) (printout t "How many years old is he/she? ") (bind ?age (read)) (assert (age ?age)) ) (defrule cd "cd gift rule" (or (agegroup middle) (agegroup old)) (music yes) => (assert (gift CD))) (defrule toy "toy gift rule" (agegroup child) (price expensive) => (assert (gift toy))) (defrule clothes "clothes gift rule" (agegroup middle) (price expensive) => (assert (gift clothes))) (defrule flowers "flowers gift rule" (agegroup old) (price expensive) =>

Page 57: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

(assert (gift flowers))) (defrule book "book gift rule" (or (agegroup middle) (agegroup child)) (educated yes) => (assert (gift book))) (defrule child "child age rule" (age ?x) => (if (< ?x 15) then (assert (agegroup child)))) (defrule middle "middle age rule" (age ?x) => (if (and (> ?x 14) (< ?x 35)) then (assert (agegroup middle)))) (defrule old "old age rule" (age ?x) => (if (> ?x 34) then (assert (agegroup old)))) (defrule printresult "a rule to print out the results" (gift ?x) => (printout t "A possible gift is " ?x crlf))

Page 58: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

Program 3. AUTOMOTIVE EXPERT SYSTEM ;====================================================== ; Nama File : Automotive.CLP ; ; “ Automotive Expert System “ ; This expert system diagnoses some simple problems with a car. ;====================================================== ;**************** ;* DEFFUNCTIONS * ;**************** (deffunction ask-question (?question $?allowed-values) (printout t ?question) (bind ?answer (read)) (if (lexemep ?answer) then (bind ?answer (lowcase ?answer))) (while (not (member ?answer ?allowed-values)) do (printout t ?question) (bind ?answer (read)) (if (lexemep ?answer) then (bind ?answer (lowcase ?answer)))) ?answer) (deffunction yes-or-no-p (?question) (bind ?response (ask-question ?question yes no y n)) (if (or (eq ?response yes) (eq ?response y)) then TRUE else FALSE)) ;********************** ;* ENGINE STATE RULES * ;********************** (defrule normal-engine-state-conclusions "" (declare (salience 10)) (working-state engine normal) => (assert (repair "No repair needed.")) (assert (spark-state engine normal)) (assert (charge-state battery charged)) (assert (rotation-state engine rotates))) (defrule unsatisfactory-engine-state-conclusions "" (declare (salience 10)) (working-state engine unsatisfactory) => (assert (charge-state battery charged)) (assert (rotation-state engine rotates))) ;*************** ;* QUERY RULES * ;*************** (defrule determine-engine-state "" (not (working-state engine ?)) (not (repair ?)) => (if (yes-or-no-p "Does the engine start (yes/no)? ") then (if (yes-or-no-p "Does the engine run normally (yes/no)? ") then (assert (working-state engine normal)) else (assert (working-state engine unsatisfactory))) else (assert (working-state engine does-not-start)))) (defrule determine-rotation-state ""

Page 59: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

(working-state engine does-not-start) (not (rotation-state engine ?)) (not (repair ?)) => (if (yes-or-no-p "Does the engine rotate (yes/no)? ") then (assert (rotation-state engine rotates)) (assert (spark-state engine irregular-spark)) else (assert (rotation-state engine does-not-rotate)) (assert (spark-state engine does-not-spark)))) (defrule determine-sluggishness "" (working-state engine unsatisfactory) (not (repair ?)) => (if (yes-or-no-p "Is the engine sluggish (yes/no)? ") then (assert (repair "Clean the fuel line.")))) (defrule determine-misfiring "" (working-state engine unsatisfactory) (not (repair ?)) => (if (yes-or-no-p "Does the engine misfire (yes/no)? ") then (assert (repair "Point gap adjustment.")) (assert (spark-state engine irregular-spark)))) (defrule determine-knocking "" (working-state engine unsatisfactory) (not (repair ?)) => (if (yes-or-no-p "Does the engine knock (yes/no)? ") then (assert (repair "Timing adjustment.")))) (defrule determine-low-output "" (working-state engine unsatisfactory) (not (symptom engine low-output | not-low-output)) (not (repair ?)) => (if (yes-or-no-p "Is the output of the engine low (yes/no)? ") then (assert (symptom engine low-output)) else (assert (symptom engine not-low-output)))) (defrule determine-gas-level "" (working-state engine does-not-start) (rotation-state engine rotates) (not (repair ?)) => (if (not (yes-or-no-p "Does the tank have any gas in it (yes/no)? ")) then (assert (repair "Add gas.")))) (defrule determine-battery-state "" (rotation-state engine does-not-rotate) (not (charge-state battery ?)) (not (repair ?)) => (if (yes-or-no-p "Is the battery charged (yes/no)? ") then (assert (charge-state battery charged)) else (assert (repair "Charge the battery.")) (assert (charge-state battery dead)))) (defrule determine-point-surface-state "" (or (and (working-state engine does-not-start)

Page 60: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

(spark-state engine irregular-spark)) (symptom engine low-output)) (not (repair ?)) => (bind ?response (ask-question "What is the surface state of the points (normal/burned/contaminated)? " normal burned contaminated)) (if (eq ?response burned) then (assert (repair "Replace the points.")) else (if (eq ?response contaminated) then (assert (repair "Clean the points."))))) (defrule determine-conductivity-test "" (working-state engine does-not-start) (spark-state engine does-not-spark) (charge-state battery charged) (not (repair ?)) => (if (yes-or-no-p "Is the conductivity test for the ignition coil positive (yes/no)? ") then (assert (repair "Repair the distributor lead wire.")) else (assert (repair "Replace the ignition coil.")))) (defrule no-repairs "" (declare (salience -10)) (not (repair ?)) => (assert (repair "Take your car to a mechanic."))) ;**************************** ;* STARTUP AND REPAIR RULES * ;**************************** (defrule system-banner "" (declare (salience 10)) => (printout t crlf crlf) (printout t "The Engine Diagnosis Expert System") (printout t crlf crlf)) (defrule print-repair "" (declare (salience 10)) (repair ?item) => (printout t crlf crlf) (printout t "Suggested Repair:") (printout t crlf crlf) (format t " %s%n%n%n" ?item))

Page 61: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

Program 4. Wine Expert System ;====================================================== ; Nama File : WINEX.CLP ; ; “ Wine Expert Sample Problem “ ; This example selects an appropriate wine to drink with a meal. ;====================================================== (defmodule MAIN (export ?ALL)) ;**************** ;* DEFFUNCTIONS * ;**************** (deffunction MAIN::ask-question (?question ?allowed-values) (printout t ?question) (bind ?answer (read)) (if (lexemep ?answer) then (bind ?answer (lowcase ?answer))) (while (not (member ?answer ?allowed-values)) do (printout t ?question) (bind ?answer (read)) (if (lexemep ?answer) then (bind ?answer (lowcase ?answer)))) ?answer) ;***************** ;* INITIAL STATE * ;***************** (deftemplate MAIN::attribute (slot name) (slot value) (slot certainty (default 100.0))) (defrule MAIN::start (declare (salience 10000)) => (set-fact-duplication TRUE) (focus QUESTIONS CHOOSE-QUALITIES WINES PRINT-RESULTS)) (defrule MAIN::combine-certainties "" (declare (salience 100) (auto-focus TRUE)) ?rem1 <- (attribute (name ?rel) (value ?val) (certainty ?per1)) ?rem2 <- (attribute (name ?rel) (value ?val) (certainty ?per2)) (test (neq ?rem1 ?rem2)) => (retract ?rem1) (modify ?rem2 (certainty (/ (- (* 100 (+ ?per1 ?per2)) (* ?per1 ?per2)) 100)))) ;****************** ;* QUESTION RULES * ;****************** (defmodule QUESTIONS (import MAIN ?ALL) (export ?ALL)) (deftemplate QUESTIONS::question (slot attribute (default ?NONE)) (slot the-question (default ?NONE)) (multislot valid-answers (default ?NONE)) (slot already-asked (default FALSE)) (multislot precursors (default ?DERIVE))) (defrule QUESTIONS::ask-a-question ?f <- (question (already-asked FALSE) (precursors)

Page 62: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

(the-question ?the-question) (attribute ?the-attribute) (valid-answers $?valid-answers)) => (modify ?f (already-asked TRUE)) (assert (attribute (name ?the-attribute) (value (ask-question ?the-question ?valid-answers))))) (defrule QUESTIONS::precursor-is-satisfied ?f <- (question (already-asked FALSE) (precursors ?name is ?value $?rest)) (attribute (name ?name) (value ?value)) => (if (eq (nth 1 ?rest) and) then (modify ?f (precursors (rest$ ?rest))) else (modify ?f (precursors ?rest)))) (defrule QUESTIONS::precursor-is-not-satisfied ?f <- (question (already-asked FALSE) (precursors ?name is-not ?value $?rest)) (attribute (name ?name) (value ~?value)) => (if (eq (nth 1 ?rest) and) then (modify ?f (precursors (rest$ ?rest))) else (modify ?f (precursors ?rest)))) ;******************* ;* WINEX QUESTIONS * ;******************* (defmodule WINE-QUESTIONS (import QUESTIONS ?ALL)) (deffacts WINE-QUESTIONS::question-attributes (question (attribute main-component) (the-question "Is the main component of the meal meat, fish, or poultry? ") (valid-answers meat fish poultry unknown)) (question (attribute has-turkey) (precursors main-component is turkey) (the-question "Does the meal have turkey in it? ") (valid-answers yes no unknown)) (question (attribute has-sauce) (the-question "Does the meal have a sauce on it? ") (valid-answers yes no unknown)) (question (attribute sauce) (precursors has-sauce is yes) (the-question "Is the sauce for the meal spicy, sweet, cream, or tomato? ") (valid-answers sauce spicy sweet cream tomato unknown)) (question (attribute tastiness) (the-question "Is the flavor of the meal delicate, average, or strong? ") (valid-answers delicate average strong unknown)) (question (attribute preferred-body) (the-question "Do you generally prefer light, medium, or full bodied wines? ") (valid-answers light medium full unknown)) (question (attribute preferred-color) (the-question "Do you generally prefer red or white wines? ") (valid-answers red white unknown)) (question (attribute preferred-sweetness) (the-question "Do you generally prefer dry, medium, or sweet wines? ") (valid-answers dry medium sweet unknown))) ;****************** ; The RULES module ;****************** (defmodule RULES (import MAIN ?ALL) (export ?ALL))

Page 63: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

(deftemplate RULES::rule (slot certainty (default 100.0)) (multislot if) (multislot then)) (defrule RULES::throw-away-ands-in-antecedent ?f <- (rule (if and $?rest)) => (modify ?f (if ?rest))) (defrule RULES::throw-away-ands-in-consequent ?f <- (rule (then and $?rest)) => (modify ?f (then ?rest))) (defrule RULES::remove-is-condition-when-satisfied ?f <- (rule (certainty ?c1) (if ?attribute is ?value $?rest)) (attribute (name ?attribute) (value ?value) (certainty ?c2)) => (modify ?f (certainty (min ?c1 ?c2)) (if ?rest))) (defrule RULES::remove-is-not-condition-when-satisfied ?f <- (rule (certainty ?c1) (if ?attribute is-not ?value $?rest)) (attribute (name ?attribute) (value ~?value) (certainty ?c2)) => (modify ?f (certainty (min ?c1 ?c2)) (if ?rest))) (defrule RULES::perform-rule-consequent-with-certainty ?f <- (rule (certainty ?c1) (if) (then ?attribute is ?value with certainty ?c2 $?rest)) => (modify ?f (then ?rest)) (assert (attribute (name ?attribute) (value ?value) (certainty (/ (* ?c1 ?c2) 100))))) (defrule RULES::perform-rule-consequent-without-certainty ?f <- (rule (certainty ?c1) (if) (then ?attribute is ?value $?rest)) (test (or (eq (length$ ?rest) 0) (neq (nth 1 ?rest) with))) => (modify ?f (then ?rest)) (assert (attribute (name ?attribute) (value ?value) (certainty ?c1)))) ;******************************* ;* CHOOSE WINE QUALITIES RULES * ;******************************* (defmodule CHOOSE-QUALITIES (import RULES ?ALL) (import QUESTIONS ?ALL) (import MAIN ?ALL)) (defrule CHOOSE-QUALITIES::startit => (focus RULES)) (deffacts the-wine-rules ; Rules for picking the best body (rule (if has-sauce is yes and sauce is spicy) (then best-body is full))

Page 64: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

(rule (if tastiness is delicate) (then best-body is light)) (rule (if tastiness is average) (then best-body is light with certainty 30 and best-body is medium with certainty 60 and best-body is full with certainty 30)) (rule (if tastiness is strong) (then best-body is medium with certainty 40 and best-body is full with certainty 80)) (rule (if has-sauce is yes and sauce is cream) (then best-body is medium with certainty 40 and best-body is full with certainty 60)) (rule (if preferred-body is full) (then best-body is full with certainty 40)) (rule (if preferred-body is medium) (then best-body is medium with certainty 40)) (rule (if preferred-body is light) (then best-body is light with certainty 40)) (rule (if preferred-body is light and best-body is full) (then best-body is medium)) (rule (if preferred-body is full and best-body is light) (then best-body is medium)) (rule (if preferred-body is unknown) (then best-body is light with certainty 20 and best-body is medium with certainty 20 and best-body is full with certainty 20)) ; Rules for picking the best color (rule (if main-component is meat) (then best-color is red with certainty 90)) (rule (if main-component is poultry and has-turkey is no) (then best-color is white with certainty 90 and best-color is red with certainty 30)) (rule (if main-component is poultry and has-turkey is yes) (then best-color is red with certainty 80 and best-color is white with certainty 50)) (rule (if main-component is fish) (then best-color is white)) (rule (if main-component is-not fish and has-sauce is yes and sauce is tomato) (then best-color is red)) (rule (if has-sauce is yes and sauce is cream) (then best-color is white with certainty 40)) (rule (if preferred-color is red) (then best-color is red with certainty 40)) (rule (if preferred-color is white)

Page 65: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

(then best-color is white with certainty 40)) (rule (if preferred-color is unknown) (then best-color is red with certainty 20 and best-color is white with certainty 20)) ; Rules for picking the best sweetness (rule (if has-sauce is yes and sauce is sweet) (then best-sweetness is sweet with certainty 90 and best-sweetness is medium with certainty 40)) (rule (if preferred-sweetness is dry) (then best-sweetness is dry with certainty 40)) (rule (if preferred-sweetness is medium) (then best-sweetness is medium with certainty 40)) (rule (if preferred-sweetness is sweet) (then best-sweetness is sweet with certainty 40)) (rule (if best-sweetness is sweet and preferred-sweetness is dry) (then best-sweetness is medium)) (rule (if best-sweetness is dry and preferred-sweetness is sweet) (then best-sweetness is medium)) (rule (if preferred-sweetness is unknown) (then best-sweetness is dry with certainty 20 and best-sweetness is medium with certainty 20 and best-sweetness is sweet with certainty 20)) ) ;************************ ;* WINE SELECTION RULES * ;************************ (defmodule WINES (import MAIN ?ALL)) (deffacts any-attributes (attribute (name best-color) (value any)) (attribute (name best-body) (value any)) (attribute (name best-sweetness) (value any))) (deftemplate WINES::wine (slot name (default ?NONE)) (multislot color (default any)) (multislot body (default any)) (multislot sweetness (default any))) (deffacts WINES::the-wine-list (wine (name Gamay) (color red) (body medium) (sweetness medium sweet)) (wine (name Chablis) (color white) (body light) (sweetness dry)) (wine (name Sauvignon-Blanc) (color white) (body medium) (sweetness dry)) (wine (name Chardonnay) (color white) (body medium full) (sweetness medium dry)) (wine (name Soave) (color white) (body light) (sweetness medium dry)) (wine (name Riesling) (color white) (body light medium) (sweetness medium sweet)) (wine (name Geverztraminer) (color white) (body full)) (wine (name Chenin-Blanc) (color white) (body light) (sweetness medium sweet)) (wine (name Valpolicella) (color red) (body light)) (wine (name Cabernet-Sauvignon) (color red) (sweetness dry medium)) (wine (name Zinfandel) (color red) (sweetness dry medium)) (wine (name Pinot-Noir) (color red) (body medium) (sweetness medium))

Page 66: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

(wine (name Burgundy) (color red) (body full)) (wine (name Zinfandel) (color red) (sweetness dry medium))) (defrule WINES::generate-wines (wine (name ?name) (color $? ?c $?) (body $? ?b $?) (sweetness $? ?s $?)) (attribute (name best-color) (value ?c) (certainty ?certainty-1)) (attribute (name best-body) (value ?b) (certainty ?certainty-2)) (attribute (name best-sweetness) (value ?s) (certainty ?certainty-3)) => (assert (attribute (name wine) (value ?name) (certainty (min ?certainty-1 ?certainty-2 ?certainty-3))))) ;***************************** ;* PRINT SELECTED WINE RULES * ;***************************** (defmodule PRINT-RESULTS (import MAIN ?ALL)) (defrule PRINT-RESULTS::header "" (declare (salience 10)) => (printout t t) (printout t " SELECTED WINES" t t) (printout t " WINE CERTAINTY" t) (printout t " -------------------------------" t) (assert (phase print-wines))) (defrule PRINT-RESULTS::print-wine "" ?rem <- (attribute (name wine) (value ?name) (certainty ?per)) (not (attribute (name wine) (certainty ?per1&:(> ?per1 ?per)))) => (retract ?rem) (format t " %-24s %2d%%%n" ?name ?per)) (defrule PRINT-RESULTS::remove-poor-wine-choices "" ?rem <- (attribute (name wine) (certainty ?per&:(< ?per 20))) => (retract ?rem)) (defrule PRINT-RESULTS::end-spaces "" (not (attribute (name wine))) => (printout t t))

Page 67: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

Program 5. Expert System for deciding whether to have class ;====================================================== ; Nama File : CLASSEX.CLP ; ; Expert system for deciding whether to have class ;====================================================== ; ask user how much snow has fallen in the last 24 hours (defrule input_driveway => ( printout t "Has more than six inches of snow fallen in the last 24 hours? "), ( bind ?answer (read)), ( assert (too much already_fallen ?answer)) ) ; If it has snowed more than 6 inches in the last 24 hours, then ; I can't get down my driveway. (defrule driveway_impassible ?f1 <- (too much already_fallen yes) => (assert(can't get down driveway)). (retract ?f1)) ) ; If I can't get down my driveway then I am stuck at home. (defrule stuck_in_driveway (can't get down driveway) => (assert (stuck at home)) ) ; ask user whether Paoli Pike has been plowed (defrule input_plowed => ( printout t "Has Paoli Pike been plowed? " ), ( bind ?PP_plowed (read)), ( assert (Paoli Pike plowed ?PP_plowed)) ) ; If Paoli Pike has not been plowed, then I am stuck at home. (defrule stuck_on_Paoli_Pike (Paoli Pike plowed no) => (assert (stuck at home)) ) ; If I am stuck at home, then I can't get there. (defrule stuck_at_home (stuck at home) => (assert (can't get there)) ) ; ask user whether SEPTA is running (defrule input_SEPTA => ( printout t "Is SEPTA running the R5 line? " ), ( bind ?SEPTA_running (read)), ( assert (SEPTA ?SEPTA_running)) ) ;If SEPTA is cancelled, then I can't get there. (defrule no_septa (SEPTA no) => (assert (can't get there))

Page 68: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.

) ; If I can't get there, then cancel class. (defrule cannot_get_there (can't get there) => (assert(cancel)) ) ; ask user what KYW says: (defrule input_KYW => ( printout t "Which of the following is KWY reporting? " crlf), ( printout t " a. Predicted to snow > 8 inches by 10PM." crlf), ( printout t " b. Freezing rain is falling." crlf), ( printout t " c. Stay home if you possibly can." crlf), ( printout t " d. It's sleeting." crlf), ( printout t " e. None of the above. " crlf), (bind ?answer (read)), (assert (KYW says ?answer)) ) ; If KYW says "Stay home if you possibly can" then cancel class. (defrule KYW_says_stay_home (KYW says c) => (assert(cancel)) ) ; if it is predicted to snow more than 8 inches before 10PM, ; then I probably won't be able to get home. (defrule snowing_too_hard (KYW says a) => (assert(can't get home)) ) ; if it is sleeting or freezing rain is falling, then I probably ; won't be able to get home. (defrule sleeting_or_freezing_rain (or (KYW says b) (KYW says d)) => (assert(can't get home)) ) ; If I probably won't be able to get home, then cancel class. (defrule cannot_get_home (can't get home) => (assert(cancel)) ) (defrule cancel_class (cancel) ?f1 <- (initial-fact) => ( printout t "Sorry, no class tonight." crlf) (retract ?f1) )

Page 69: Modul Praktikum ES

Modul Praktikum Sistem Pakar STMIK Pontianak

David, S.Kom., M.Cs.