Anda di halaman 1dari 9

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-


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

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
orang(Nama,Alamat,Umur,lakilaki).

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-


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-


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-


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-


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-


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-


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 = symbol
Predicates
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-


cari(H):-
ib([H|T]),
H = supardi,
nilai1([H|T]),
write(H),
cari(H).
Goal
consult("d:\\data.txt"),cari(H).

Hasil program :
a. Mengecek mata kuliah supardi

b. Mengecek mata kuliah suripah

Galih adika putra / 085410225 -9-

Anda mungkin juga menyukai