350 likes | 614 Views
PENGANTAR BAHASA PROLOG. M. Haviz Irfani , S.Si , M.T.I. Bahasa PROLOG.
E N D
PENGANTAR BAHASA PROLOG M. HavizIrfani, S.Si, M.T.I
Bahasa PROLOG Merupakanbahasapemrogramanberjenis “Programming in Logic”. DikembangkanolehAlain ColmerauerdanP.RousseldiUniversitas Marseilles Perancis, tahun1972. Prolog populerdiEropauntukaplikasiartificial intelligence, sedangkandiAmerikapenelitimengembangkanaplikasi yang sama, yaituLISP (John McCarthy-1956).
Kegunaan Prolog • Prolog digunakansecarakhususdalambidangkecerdasanbuatan yang meliputi: sistempakar (expert system), pengolahanbahasaalami(natural language processing), robotika, logikadanketidakpastian, pengenalanpoladangambar, belajar, dan simulasipengolahansimbol.
Prolog danBahasaPemrogramanlainnya (1) Bahasapemrogramanseperti: Basic, Pascal, C, Fortran, Java, dlldisebutsebagai procedural Language. Diperlukanalgoritmaatauprosedur-prosedurdalammemecahkanpermasalahan. Pemrogramharusmemberitahukomputerbgmkomputer hrs memecahkanmasalah.
Prolog danBahasaPemrogramanlainnya (2) Prolog disebutsebagai Object-Oriented Language atau Declarative Language. Tidakmempunyaiprosedur, tetapimempunyaikumpulan data-data object (fakta) yang diolahdandirelasikanantarobjek yang membentukaturan (heuristik).
Prolog danBahasaPemrogramanlainnya (3) Prolog menentukan Goal (tujuan) dan prolog menentukanbgmcaramencapainya. Cara dengan Formal Reasoning (membuktikancocoktidaknyatujuan dg data-data ygadadanrelasinya). Prolog bahasapemrograman yang tidakterstrukturdantidakmempunyaialgoritma (prosedur) pemecahan, sertamemecahkanpermasalahan Non-Numerik.
JendelaUtama Prolog (1) Editor:Tempatmenuliskan program Dialog: tempatkeluaranhasileksekusi program, dantanyajawabantara prolog danpemrogram. Message:tempattampilanpesan-pesantentangaktivitasygsedangdilakukan prolog seperti load program, save program, kompilasisertatampilanpesankesalahan. Trace: digunakanwaktuproses trace (eksekusilangkahdemilangkah)
Menu Utama Prolog (2) Files : Penanganan File (load, save dll) Edit : Menulis program denganfasilitas editor Run : Mengkompilasidanmengeksekusi program Compile : Hanyamengkompilasi program Option : mengeditbagian program ygditulisterpisah, Compiler Directive dan Option Linker Setup : memilihwarna editor, ukuranjendela, directory., dll
MengubahJendela • Menggunakan F5 untuk zoom jendela yang aktif. Untukkembalisemulatekan F5 lagi. • Menggunakan F6 akanmengubahukuranjendeladenganarahpanah (shift –panah). Tekan Esc untukkembalike menu utama.
Menu Compile Memory: mengkompilasi program danhasilnyadiletakkandimemori (sukses/gagal program ygtelahdibuat). Obj File: mengkompilasidanmenciptakan file. Exe File: mengkompilasi program danmenciptakan file .OBJ dan .EXE Project: mengkompilasipotongan program menjadi file .EXE Link Only: membuat file .EXE dari file .OBJ ygtelahdibuatsebelumnya.
Menu Option Map file off: menentukanpadasaatkompilasi prolog menghasilkan .MAP atautidak Libraries: mengikutsertakan library Edit PRJ: mengedit file (modul) ygtergabungdalamsatu project Compiler directives: menentukanalokasimemori (code, stack, trail, heap), cek run-time dll.
Menu SetUp Colors: mengubahwarnajendela Edit, Dialog, Message, Trace, Aux edit dan Pop up menu. Window size: mengubahukuranjendela Directories: mengubahdirektoriygaktive. Miscellaneous: mengubah adapter CGA, modus layar, konfigurasi keyboard dan help Load SYS file: memuat file .SYS ygberisi setting compiler terpadu (warna, direktori ,dll)
FaktadanRelasi Prolog terdiridarikumpulan data-data objek yang merupakansuatufakta. Faktamenunjukkansuatukeadaanatausituasinyatamakafaktaselalubenar. Contohfakta: Slametadalah ayah amin Dalambahasa prolog: ayah(slamet, amin). Ayah menunjukkanrelasi. Contoh lain: Anita adalahseorangmahasiswa. Dalambahasa prolog: wanita(anita). • Faktadibedakan 2 macam : • Menunjukkanrelasi. • Menunjukkanmilik/sifat. • Penulisannyadiakhiridengantandatitik “.”
Aturan/Rules • Aturanadalahsuatupernyataanygmenunjukkanfakta-faktaberinteraksisatu dg yg lain untukmembentuksebuahkesimpulan. Sebuahaturandinyakatakansebagaisuatukalimatbersyarat. Kata“if”adalahkata yang dikenal Prolog untukmenyatakankalimatbersyaratataudisimbolkandengan “:-“ . Contoh: Tinosukajeruk Aturan: Jojonsukasesuatu yang disukaiolehTino Kesimpulan: Jojonsukajeruk. Dalam prolog: Fakta: suka(tino,jeruk). Aturan: suka(jojon,Sesuatu) if suka(tino,Sesuatu). Atau: suka(jojon,Sesuatu) :- suka(tino,Sesuatu).
Aturan/Rules • Setiapaturanterdiridarikesimpulan(kepala) dantubuh. • Tubuhdapatterdiridari 1 ataulebihpernyataanatauaturan yang lain, disebutsubgoaldandihubungkandenganlogika “and”. • Aturanmemilikisifatthen/if conditional • “Kepala(head) benarjikatubuh (body) benar”.
Pertanyaan/Query Setelahfaktadanaturandirangkaidalamsebuah program non prosedural, maka data-data dapatdiberikanmeluipertanyaan-pertanyaan. Penulisannyadiawalisimbol “?-“ dandiakhiritanda “.”.
StrukturBahasa Prolog Bagian 1: DOMAINS Bagian 2: PREDICATES Bagian 3: GOAL Bagian 4: CLAUSES
DOMAINS Berisideklarasi (pernyataan) jenis data ygdigunakandalamfaktadanaturan. Integer(bilanganbulat -32.768 s/d 32.767), Real(E-307 s/d E+308),Char(ex:‘a’,’I’, etc), String(“sayamahasiswa”, etc), Symbol(saya,tini,contoh_1), danFile.
PREDICATES • Namasimbolikuntukrelasi. • Syarat-syaratpenulisannamapredikat : • Harusdiawalidenganhurufkecildandapatdiikutidenganhuruf, bilanganataugarisbawah. • Panjangnamapredikatmaksimum 250 karakter. • Tidakdiperbolehkanmenggunakanspasi, tanda minus, tandabintangdangaris miring. Contohfakta: ayah(slamet,amin) Ayah adalahpredikatsedangkanslametdanaminadalah symbol, dandiakhiritanpatandatitik.
PREDICATES Variabel Varibeladalahbesaran yang nilainyadapatberubah-ubah. Tata carapenulisanvariabel : • Namavaribelharusdiawalihurufbesarataugarisbawah(_) • Namavariabeldapatterdiridarihuruf, bilangan, atausimboldanmerupakankesatuandenganpanjangmaksimum 250 karakter. • Namavariabelhendaknyamengandungmakna yang berkaitandengan data yang dinyatakannya.
PREDICATES Contoh : ?- ayah(slamet,Anak). Anak=budi ; Anak=badu No • Dari query diatasakandicarisiapakahanakdari ayah yang bernamaSlamet. Karenamempunyairelasi yang sama (yaitu ayah), variabelAnakakanmencarinilaidarikonstantasuatufakta/aturan yang sepadan. • Tanda “;” digunakanbilaterdapatkemungkinanadalebihdarisatujawaban. • “No” berartitidakadalagikemungkinanjawaban.
CLAUSES(Klausa) Berisifaktadanaturan yang membentukkeseluruhan program. Bagianinimiripsebuahprosedurdalambahasapemrogramanprosedural. Padawaktumencarijawabanataspertanyaanygdiberikan, maka prolog akanmemeriksaklausamulaidarifaktayg paling atassampaikebawah. Kemungkinanyglebihbesarditempatkan paling awaldaripadakemungkinanyglebihkecil.
Contoh CLAUSES CLAUSES ayah(mahmud, jamal). ayah(mahmud,wawan). ayah(jamal,tukul). kakek(mahmud,tukul).
GOAL Berisipertanyaanygakandiajukanke prolog. Goal dapatterdiridaribeberapabagianygdisebutsubgoal. Note: pernyataan, baikfakta, relasiatau goal dikatkansatuapabiladiakhiritandatitik.
Contoh1: DOMAINS x,y = symbol PREDICATES suka(x,y) CLAUSES SUKA(tono,jeruk). SUKA(tina,Sesuatu) if suka(tono,Sesuatu).
Contoh2: DOMAINS nama = symbol PREDICATES ayah(nama,nama) kakek(nama,nama) cucu(nama,nama) saudara_kandung(nama,nama) CLAUSES /* Fakta */ ayah(slamet,jamal). ayah(slamet,wawan). ayah(jamal,badu). ayah(jamal,tukul). ayah(wawan,jojon). ayah(wawan,tina). /* aturan */ kakek(Kakek,Cucu) if ayah(Ayah,Cucu) and ayah(Kakek,Ayah). cucu(Cucu,Kakek) if ayah(Ayah,Cucu) and ayah(Kakek,Ayah). saudara_kandung(X,Y) if ayah(Ayah,X) and ayah(Ayah,Y).
Contoh 3: DOMAINS nama = symbol PREDICATES ayah(nama,nama) kakek(nama,nama) sepupu(nama,nama) cucu(nama,nama) CLAUSES /* Fakta */ ayah(slamet,jamal). ayah(slamet,wawan). ayah(jamal,badu). ayah(jamal,tukul). ayah(wawan,jojon). ayah(wawan,wani). /* aturan */ kakek(Kakek,Cucu) if ayah(Ayah,Cucu) and ayah(Kakek,Ayah). cucu(Cucu,Kakek) if ayah(Ayah,Cucu) and ayah(Kakek,Ayah). sepupu(Sepupu,Nama) if kakek(Kakek,Cucu) and ayah(Kakek,Ayah).
Contoh 4: DOMAINS nama = symbol PREDICATES ayah(nama,nama) kakek(nama,nama) sepupu(nama,nama) cucu(nama,nama) saudara_kandung(nama,nama) CLAUSES /* Fakta */ ayah(slamet,jamal). ayah(slamet,wawan). ayah(jamal,badu). ayah(jamal,tukul). ayah(wawan,jojon). ayah(wawan,tina). saudara_kandung(jamal,wawan). saudara_kandung(badu,tukul). saudara_kandung(jojon,tina). /* aturan */ kakek(Kakek,Cucu) if ayah(Ayah,Cucu) and ayah(Kakek,Ayah). cucu(Cucu,Kakek) if ayah(Ayah,Cucu) and ayah(Kakek,Ayah). /* saudara_kandung(jamal,wawan) if ayah(slamet,jamal) and ayah(slamet,wawan).*/ sepupu(X,Y) if saudara_kandung(S1,S2) and ayah(S1,X) and ayah(S2,Y).
Persoalan: FAKTA */ orangtua */ ayah(slamet,amin). ayah(slamet,anang). ayah(amin,budi). ayah(amin,badu). ayah(anang,didi). ayah(anang,dadi). ayah(santoso,bu_amin). ayah(supardi,bu_anang). ibu(bu_slamet,amin). ibu(bu_slamet,anang). ibu(bu_amin,budi). ibu(bu_amin,badu). ibu(bu_anang,didi). ibu(bu_anang,dadi). ibu(bu_santoso,bu_amin). ibu(bu_santoso,bu_anang).
ATURAN */ KakekadalahkakekCucu */ kakek(Kakek,Cucu) :- ayah(Ayah,Cucu),ayah(Kakek,Ayah). kakek(Kakek,Cucu) :- ibu(Ibu,Cucu),ayah(Kakek,Ibu). NenekadalahnenekCucu */ nenek(Nenek,Cucu) :-ayah(Ayah,Cucu), ibu(Nenek,Ayah). nenek(Nenek,Cucu) :-ibu(Ibu,Cucu), ibu(Nenek,Ibu).
Nama1 adalahsaudarakandung Nama2 saudara_kandung(Nama,Name) :- ayah(Ayah,Nama),ayah(Ayah,Name),ibu(Ibu,Nama), ibu(Ibu,Name), Nama \= Name. Sdr1 adalahsaudarasepupu Sdr2 saudara_sepupu(Sdr1,Sdr2) :- ayah(Ayah1,Sdr1),ayah(Ayah2,Sdr2), saudara_kandung(Ayah1,Ayah2).
saudara_sepupu(Sdr1,Sdr2) :- ayah(Ayah,Sdr1), ibu(Ibu,Sdr2), saudara_kandung(Ayah,Ibu). saudara_sepupu(Sdr1,Sdr2) :- ibu(Ibu,Sdr1), ayah(Ayah,Sdr2), saudara_kandung(Ibu,Ayah). saudara_sepupu(Sdr1,Sdr2) :- ibu(Ibu1,Sdr1), ibu(Ibu2,Sdr2), saudara_kandung(Ibu1,Ibu2).