modul viii kecerdasan buatan

12
MODUL VIII SECTION FACTS I. Dasar Teori Pengertian Facts Facts pada prolog berupa fakta – fakta yang mana fakta – fakta tersebut dapat ditambah dan dihapus secara langsung dari sebuah program pada saat program sedang berjalan. Kita dapat mendeklarasikan sebuah predikat pada section facts seperti pada section predicates. Yang perlu dicatat bahwa perbedaan pendeklarasian fakta – fakta yang ada pada section facts dengan yang ada pada section predicates yaitu : - Bahwa penambahan predikat pada section facts hanya berlaku sebagai fakta saja, tidak bisa sebagai rule - Fakta – fakta yang ada di section facts tidak boleh mempunyai variabel bebas Beberapa predikat built in dalam penggunaan section facts antara lain : assert , asserta dn assertz : digunakan untuk menambahkan faktu baru pada section facts retract dan retractall : digunakan untuk menghapus fakta yang ada consult : digunakan untuk membaca fakta dari sebuah file dan menyertakan fakta tersebut ke dalam fakta internal Galih adika putra / 085410225 - 1 -

Upload: adikaxshot

Post on 25-Jun-2015

351 views

Category:

Documents


10 download

TRANSCRIPT

Page 1: MODUL VIII Kecerdasan Buatan

MODUL VIII

SECTION FACTS

I. Dasar Teori

Pengertian Facts

Facts pada prolog berupa fakta – fakta yang mana fakta – fakta tersebut

dapat ditambah dan dihapus secara langsung dari sebuah program pada saat

program sedang berjalan. Kita dapat mendeklarasikan sebuah predikat pada

section facts seperti pada section predicates.

Yang perlu dicatat bahwa perbedaan pendeklarasian fakta – fakta yang ada pada

section facts dengan yang ada pada section predicates yaitu :

- Bahwa penambahan predikat pada section facts hanya berlaku sebagai fakta

saja, tidak bisa sebagai rule

- Fakta – fakta yang ada di section facts tidak boleh mempunyai variabel

bebas

Beberapa predikat built in dalam penggunaan section facts antara lain :

assert , asserta dn assertz : digunakan untuk menambahkan faktu baru pada

section facts

retract dan retractall : digunakan untuk menghapus fakta yang ada

consult : digunakan untuk membaca fakta dari sebuah file dan menyertakan

fakta tersebut ke dalam fakta internal

save : digunakan isi fakta internal ke dalam sebuah file

II. Pembahasan

a. Mendeklarasi section facts

Pada pertemuan modul 8 mahasiswa diperkenalkan dengan apa yang disebut

section facts. Section facts pada prolog itu dikategorikan seperti sebuah

kumpulan dari predikat – predikat ataupun fakta – fakta yang akan digunakan

dalam program. Berbeda pada section predicates, facts hanya menampung fakta-

fakta dan bukan rule. Jadi kita mendeklarasikan sebuah fakta pada section facts,

maka untuk predikat dari fakta tersebut tidak boleh berupa rule yang berisi

syarat tertentu. Tetapi jika fakta terdapat pada section predicates maka tentu saja

Galih adika putra / 085410225 - 1 -

Page 2: MODUL VIII Kecerdasan Buatan

fakta tersebut dapat berupa rule. Untuk bisa membedakannya, Lihat program

dibawah ini :

Lihat tanda panahnya diatas, bahwa deklarasi fakta pada section facts tidak

diperkenankan menjadi sebuah rule. Sedangkan fakta yang dideklarasikan pada

section predicates dapat dijadikan rule pada program.

Galih adika putra / 085410225 - 2 -

Domainsnama, alamat = stringumur = integerlakilaki = string

Factsorang(nama, alamat, umur, lakilaki)

Predicateslakilaki(nama, alamat, umur)

Clauseslakilaki(Nama, Alamat, Umur):-

orang(Nama, Alamat, Umur, lakilaki).

orang("Galih","Jl.manggis",19,lakilaki).Goal

orang(Nama,Alamat,Umur,lakilaki).

Page 3: MODUL VIII Kecerdasan Buatan

b. Menggunakan assert, asserta dan assertz

Perlu diketahui juga bahwa kita juga dapat menambahkan fakta pada section

facts dari keyboard pada saat runtime dengan menggunakan asserta ataupun

assertz. Atau bisa juga memanggil predikat dengan consult yaitu mengambil

fakta tambahan dari sebuah file. Berikut akan kita coba memasukan fakta pada

saat runtime program .

Domains

nama, alamat = string

umur = integer

lakilaki = string

Facts

orang(nama, alamat, umur, lakilaki)

Predicates

lakilaki(nama, alamat, umur)

Clauses

lakilaki(Nama, Alamat, Umur):-

orang(Nama, Alamat, Umur, lakilaki).

orang("Galih","Jl.manggis",19,lakilaki).

Goal

asserta(orang("Jelita","mlati",14,lakilaki)),

orang(Nama,Alamat,Umur,lakilaki).

Dengan perintah asserta pada section goal maka akan menambahkan sebuah

solusi berdasarkan fakta yang telah kita tambahkan bersama deklarasi asserta

tersebut. Sehingga jika kita run program maka akan ada hasil seperti berikut :

Untuk diperhatikan bahwa perbedaan perintah assert, asserta maupun assertz

adalah pada asserta menyertakan sebuah fakta baru pada section facts sebelum

fakta – fakta yang telah ada untuk predikat tersebut, sedangkan assertz ataupun

Galih adika putra / 085410225 - 3 -

Page 4: MODUL VIII Kecerdasan Buatan

assert fungsinya sama yaitu menyertakan sebuah fakta baru setelah fakta yang

ada. Sehingga jika pada section goal kita ganti dengan perintah assert ataupun

assertz maka hasil program akan seperti ini :

Dapat kita lihat perbedaannya, jika asserta nama jelita lebih dahulu maka

dengan assert / assertz adalah nama andre terlebih dahulu

c. Menggunakan save dan consult

Perintah save maupun consult digunakan oleh prolog untuk berhubungan

dengan file external misal sebuah file teks. File teks ini nantinya akan ditulisi

atau berisi mengenai perintah maupun fakta – fakta yang berhubungan dengan

program yang menjalankannya. Jika save digunakan untuk menyimpan sebuah

keluaran program, maka consult berfungsi untuk menyuruh prolog untuk

melakukan pemerikasaan kepada sebuah file yang ditunjuk oleh program. Kedua

perintah ini dapat kita setting path alamat tempat data akan disimpan atau

diambil. Jika kita tidak memberi path pada bagian program, maka default tempat

larinya alamat file ini akan ke c:\\windows\temp. Untuk lebih jelasnya langsung

ke contoh program saja.

Contoh perintah save.

Domains

nama = symbol

umur = integer

jender = lakilaki; perempuan

Facts

orang(nama, umur, jender)

Predicates

Cetak

Galih adika putra / 085410225 - 4 -

Page 5: MODUL VIII Kecerdasan Buatan

Clauses

orang("Sumanto",30,lakilaki).

orang("Galihadika",19,lakilaki).

orang("fitriani",22,perempuan).

cetak:-

orang(Nama, Umur, Jender),

write("Nama : ", Nama),nl,

write("Umur : ", Umur),nl,

write("Jender : ", Jender),nl,nl,

fail.

cetak.

Goal

save("d:\\data_org.txt"),

cetak.

Hasil program akan tampil :

Dan juga akan terbentuk sebuah file baru bernama data_org.txt di drive D:

dengan isi seperti berikut :

Galih adika putra / 085410225 - 5 -

Page 6: MODUL VIII Kecerdasan Buatan

Bisa kita lihat bahwa isian predikat yang kita tulis tersimpan di file isian

data_org.txt

Kemudian setelah memahami perintah save, selanjutnya kita akan mencoba

perintah consult. Perhatikan contoh program berikut :

Domains

nama = symbol

umur = integer

jender = lakilaki; perempuan

Facts

orang(nama, umur, jender)

Predicates

cetak

Clauses

orang("ahmadrosit",50,lakilaki).

cetak:-

orang(Nama, Umur, Jender),

write("Nama : ", Nama),nl,

write("Umur : ", Umur),nl,

write("Jender : ", Jender),nl,nl,

fail.

cetak.

Goal

consult("d:\\data_org.txt"),cetak.

Hasil dari program diatas jika dijalankan :

Galih adika putra / 085410225 - 6 -

Page 7: MODUL VIII Kecerdasan Buatan

Nama sumanto,galih dan fitriani yang tersimpan sebelumnya di file data_org.txt

akan ikut ditambahkan sebagai fakta – fakta dalam program yang sedang

dijalankan dengan perintah consult. Kemudian prolog akan mencetaknya setelah

fakta – fakta yang ada pada program.

Untuk diperhatikan, jika kita akan langsung mengedit data file yang akan kita

tambahkan ke program secara manual, maka kita harus mengikuti aturan

penulisan seperti yang ditentukan oleh prolog. Misal fakta yang ada pada file

teks tidak mempunyai titik tapi pada program harus ada titiknya. Jika kita

kurang teliti mengenai hal ini maka biasanya akan terjadi error program.

Menambah script pada section GOAL

Goal

assert(orang(hakim,50,lakilaki)),

asserta(orang(alim,18,lakilaki)),

assertz(orang(rahmat,40,lakilaki)),

save("data_org.txt"),

cetak.

Maka hasil eksekusinya seperti berikut:

Galih adika putra / 085410225 - 7 -

Page 8: MODUL VIII Kecerdasan Buatan

III. Kesimpulan

a. Section facts pada prolog difungsikan seperti database yaitu sebuah kumpulan

dari fakta – fakta yang akan digunakan pada program. Facts berupa database

yang dinamis sehingga fakta baru dapat ditambahkan seiring dengan

dijalankannya program dengan fakta baru tersebut dituliskan pada section goal

b. Perintah facts dapat berupa assert, asserta dan assertz. Maupun save dan

consult. Masing – masing perintah mempunyai karakterisitik sendiri – sendiri

c. Path atau alamat tempat penyimpan atau pengambil data dapat diset sesai

dengan keinginan kita namun prolog akan akan menempatkan secara default di

alamat c:\\windows\temp

IV. Tugas

Buatlah dulu file txt dengan isian seperti dibawah dan simpan dengan nama file

akakom.txt

Kemudian buatlah program berikut :

Domains list = nama* nama = symbolPredicates

ib(list)pde(list)so(list)nilai1(list)nilai2(list)nilai3(list)matkul(symbol,symbol,symbol)cari(symbol)

Clauses

matkul(ib,pde,so).

nilai1([a,b,c,d,c]).nilai2([b,c,c,b,d]).nilai3([b,a,a,b,c]).

Galih adika putra / 085410225 - 8 -

Page 9: MODUL VIII Kecerdasan Buatan

cari(H):-ib([H|T]),H = supardi,nilai1([H|T]),write(H),cari(H).

Goalconsult("d:\\data.txt"),cari(H).

Hasil program :

a. Mengecek mata kuliah supardi

b. Mengecek mata kuliah suripah

Galih adika putra / 085410225 - 9 -