26
|
KECERDASAN
BUATAN
SECTION FACTS
Disusun
Oleh :
HERI PURNAMA
125410101
TI 04
UPT LABORATORIUM
Sekolah Tinggi Manajemen Informatika dan Komputer
AKAKOM
Yogyakarta
2013
DARTAR ISI
Judul.……………………………………………………………………………………….. 01
Daftar
isi..………………………………………………………………………………… 02
Bab 1 : Pendahuluan…………………………………………………………....... 03
A.Tujuan……………………………………………………………………………. 03
B.Dasar Teori………………………………………………………………………. 03
Bab 2 : Hasil Praktikum………………………………………………….………… 05
Bab 3 : Analisa Hasil Praktikum……………………………………………….. 06
A.Praktikum
1……………………….……………………………………………….……… 06
B.Praktikum
2……………………………..…………………………………………………
08
C.Praktikum 3……………………..……………………………………………………….. 09
Bab 4 : Kesimpulan………………………………………………………………… 12
Bab 5 : Tugas………………………………………………………………………….. 13
Bab 1
Pendahuluan
A.Tujuan
Mahasiswa mampu :
1. Memahami
apa kegunaan section facts pada
Visual Prolog.
2. Dapat
menyusun fakta-fakta pada section facts.
3. Dapat
mengimplementasikan program yang menggunakan section facts.
B.DASAR TEORI
SECTION FACTS
Section
facts terdiri dari fakta-fakta yang mana fakta-fakta tersebut dapat
ditambah dan dihapus secara langsung dari sebuah program pada saat program
sedang berjalan (at run time). Kita dapat mendeklarasikan sebuah
predikat pada section facts dan predikat tersebut dapat digunakan sama
halnya seperti kalau dideklarasikan pada section predicates.
Visual Prolog
menyediakan beberapa predikat built-in untuk menangani hal yang
berkaitan dengan penggunaan section facts, antara lain:
·
assert, asserta dan assertz
untuk menambah fakta baru pada section facts.
·
retract dan retractall
untuk menghapus fakta yang ada.
·
consult untuk membaca fakta dari
sebuah file dan menyertakan fakta tersebut ke dalam fakta internal.
·
save menyimpan isi fakta internal ke
dalam sebuah file.
Deklarasi Section Facts
Kata kunci facts atau bisa juga database menandai permulaan sederetan
deklarasi dari predikat yang ada pada section facts. Kita dapat
menambahkan fakta-fakta (bukan rule) pada suatu section facts
dari keyboard pada saat run time dengan menggunakan asserta dan assertz atau memanggil predikat consult untuk mengambil fakta tambahan dari sebuah file. Contoh deklarasinya
seperti berikut ini.
DOMAINS
nama, alamat =
string
umur =
inteteger
jender =
lakilaki; perempuan
FACTS
orang(nama,
alamat, umur, jender)
PREDICATES
lakilaki(nama, alamat, umur)
perempuan(nama, alamat, umur)
anak(nama, alamat, umur)
CLAUSES
lakilaki(Nama, Alamat, Umur):-
orang(Nama, Alamat, Umur, lakilaki).
Ada 2 syarat
dalam menggunakan predikat yang dideklarasikan pada section facts:
1. Penambahan
predikat pada section facts hanya berlaku sebagai fakta saja, tidak bisa
sebagai rule.
2. Fakta-fakta
yang ada di section facts tidak boleh mempunyai variabel bebas.
Visual Prolog
memungkinkan suatu program untuk memiliki lebih dari satu section facts,
tapi untuk membedakannya harus secara eksplisit diberi nama untuk setiap section
facts. Contoh:
FACTS – db_orang
orang(nama,
alamat,umur, jender)
lakilaki(nama,
alamat, umur)
perempuan(nama,
alamat, umur)
anak(nama,
alamat, umur)
Nama section
facts di atas adalah db_orang. Jika tidak ada maka Visual Prolog
akan memberi nama standar (default) dbasedom.
Menambah fakta pada saat run time
Pada saat run
time, fakta-fakta dapat ditambah ke section facts dengan
menggunakan predikat assert, asserta dan assertz atau
me-load sebuah file yang berisikan fakta menggunakan predikat consult.
Cara penulisannya adalah sebagai berikut:
asserta([,
nama_section_facts])
assertz([,
nama_section_facts])
assert([,
nama_section_facts])
consult(namafile[,
nama_section_facts])
Perbedaan assert,
asserta dan assertz adalah asserta menyertakan
sebuah fakta baru pada section facts sebelum fakta-fakta yang
telah ada untuk predikat tersebut, sedangkan assertz menyertakan
sebuah fakta baru setelahnya, sedangkan assert berfungsi
sama seperti assertz. Sedangkan consult
membaca dari sebuah file dan menyertakan fakta-fakta yang ada di file tersebut sesudah
fakta-fakta yang telah ada.
Sebagai
catatan, consult hanya bisa membaca sebuah file dengan syarat
format file tersebut sama persis dengan format file yang disimpan menggunakan
predikat save, yaitu:
-
tidak ada karakter kapital kecuali dalam tanda
petik dua (penulisan string).
-
tidak spasi kecuali dalam tanda petik dua.
-
tidak ada komentar.
-
tidak ada baris kosong.
-
tidak ada symbol tanpa di dalam tanda petik dua.
Menghapus fakta pada saat run time
Predikat retract
mengunifikasi suatu fakta dan menghapus fakta tersebut dari sectio facts.
Cara penulisannya adalah sebagai berikut:
retract([,
nama_section_facts])
retract akan
menghapus fakta pertama yang cocok dengan argumen yang
diberikan. Karena retract merupakan predikat nondeterministik
maka selama lacakbalik, retract akan menghapus fakta-fakta yang cocok
dengan argumen , kecuali jika fakta yang akan
dihapus, predikatnya dideklarasikan deterministik. Ketika semua fakta yang
cocok sudah terhapus, pemangilan retract berikutnya akan gagal.
Predikat retractall
akan menghapus semua fakta yang cocok dengan argumen
dan penulisannya sebagai berikut:
retractall([,
nama_section_facts])
retractall
berperilaku sama seperti kalau didefinsiskan sebagai berikut:
retractall(X):-
retract(X), fail. %fail untuk memaksa lacak balik
retractall(_).
Menyimpan database fakta-fakta pada saat run time
Predikat save
berfungsi untuk menyimpan fakta-fakta yang ada pada section facts ke
dalam sebuah file. Cara penulisannya sebagai berikut:
save(nama_file[,
nama_section_facts])
Jika memanggil save
hanya dengan satu argumen (tidak ada nama section facts), maka akan
menyimpan fakta-fakta dari section facts default dbasedom ke file
dengan nama yang sesuai dengan argumen. Jika memanggil save dengan
dua argumen (nama file dan nama section facts), maka akan menyimpan
semua fakta yang ada pada section facts yang sesuai ke dalam file dengan
nama yang sesuai pula.
Kata kunci pada section facts
Fakta-fakta pada section facts
dapat dideklarasikan dengan beberapa kata kunci opsional berikut:
nondeterm menentukan bahwa kemungkinan ada
sejumlah fakta dari suatu
predikat
sepanjang program berjalan (default)
determ menentukan bahwa hanya
boleh ada satu fakta dari suatu predikat
sepanjang
program berjalan.
global menentukan
bahwa setion facts adalah global dalam program.
single menentukan hanya satu
fakta dari predikat yang akan selalu ada.
nocopy normalnya pemanggilan
fakta akan mengikat variabel ke sebuah
string atau ke
sebuah object jamak. String atau object jamak
tersebut akan
disalin ke tumpukan dari Visual Prolog Global Stack
(GStack).
Dengan kata kunci ini maka tidak ada proses penyalinan
terserbut.
Bab 3
Analisa Hasil Praktikum
DOMAINS
nama
= symbol
umur
= integer
jender
= lakilaki;perempuan
Ø Domains merupakan bagian yang
mendeklarasikan tipe dari argumen yang ada pada program:
Ø Argument nama mempunyai tipe data
yakni symbol.
Ø Argument umur mempunyai tipe data yakni integer.
Ø Argument
jender untuk mendeklarasikan bahwa
argument tersebut hanya mempunyai dua buah jawaban yakni laki-laki atau
perempuan.
FACTS
orang(nama,
umur, jender)
Ø
Kata
kunci facts atau bisa juga database menandai permulaan sederatan deklarasi
dari predikat yang ada pada section facts yakni dengan nama orang .Fakta yang dituliskan berisi nama, umur dan jender yang telah dideklarasikan pada domains diatas.
PREDICATES
nondeterm
cetak
Ø Pada
Section PREDIKAT digunakan untuk mendeklarasikan
perintah-perintah yang nanti akan digunakan
dalam section Clauses, seperti :
Ø Predikat cetak yang mana mempunyai sifat
yakni nondeterm .nondeterm
disisini digunakan untuk memberitahukan kepada prolog bahwa predikat milik
memiliki lebih dari 1 kemungkinan
CLAUSES
orang(yulianto, 31, lakilaki).
orang(yuliani, 31, perempuan).
cetak:-
orang(Nama, Umur, Jender),
write("Nama : " ,Nama),nl,
write("Umur : " ,Umur),nl,
write("Jender
: " ,Jender),nl,nl,
fail.
cetak.
Ø Pada
Section CLAUSES digunakan untuk
mendeklarasikan aturan dan fakta. Aturan merupakan suatu konklusi diketahui
benar jika satu atau lebih konklusi atau fakta lain ditemukan benar.
Ø Pada
baris pertama dan kedua pada seksion
clauses digunakan untuk mendeklasikan fakta yang ada,yang mana pada
section ini terdapat dua fakta yaitu:
1)
orang(yulianto,
31, lakilaki).
2)
orang(yuliani,
31, perempuan)
Ø pada baris kedua berisikan aturan yang
ada dalam program tersebut untuk : Perintah write adalah untuk mencetak/
menampilkan hasil dari prolog yang terdiri dari nama, umur dan jender. Clauses yang berisiskan project atau dapat disebut kata
sifat yang berurutan dan menampilkan sifat dari pada objek-objek yang telah
ditentukan. Visual prolog akan memulai lacak balik jika ada panggilan yang
gagal. Pada situasi tertentu, ada kebutuhan untuk memaksa lacak balik dalam
rangka mencari alternatif solusi.
Ø
Visual prolog
menyediakan predikat khusus fail untuk memaksa kegagalan sehingga memicu
terjadinya lacak balik.
Ø
Efek fail sama
dengan memberikan perbandingan 2:3 atau subgoal yang tidak mungkin lainnya. nl digunakan untuk next line atau baris
selanjutnya.
GOAL
save("data_org.txt"),
cetak.
Ø
Pada Section GOAL ini diggunakan
untuk memanggil data atau fakta dari predikat yang telah dideklarasikan
dalam program tersebut.
Ø
Predikat
save berfungsi untuk menyimpan fakta-fakta yang ada pada section facts ke
dalam sebuah file. Jika memanggil save hanya dengan satu argumen (tidak ada
nama section facts), maka akan menyimpan fakta-fakta dari section facts
default dbasedom ke file dengan nama
yang sesuai dengan argumen.
Ø Jika memanggil save dengan dua argumen
(nama file dan nama section facts), maka akan menyimpan semua fakta yang ada
pada section facts yang sesuai ke dalam file dengan nama yang sesuai pula. Bagian
goal tersebut digunakan untuk mencetak data yang telah disimpan tersebut pada ("data_org.txt"). Maka visual prolog akan mencari
jawaban dengan melihat fakta – fakta yang ada pada bagian clauses dari yang
paling atas hingga yang paling bawah sampai menemukan jawaban yang benar.
|
v
RUNNING
Ø
Ini adalah hasil dari output dalam bentuk visual
prolog yang mana fakta data yang ditampilkan.
Ø Ini adalah hasil dari output dalam bentuk
notepad terlihat yang ada hanyalah fakta-fakta yang dituliskan dalam clauses.
2.PRAKTIKUM 2
v
LISTING
orang(gilang, 20, lakilaki)
orang(ranti, 19, perempuan)
orang(bayu, 10, lakilaki)
orang(wening, 9, perempuan)
Ø Untuk program ini pembahasannya sama dengan program
diatas yang berbeda hanyalah penulisan clauses yang ditambahkan menjadi 6
fakta.
|
v RUNNING
Ø Ini adalah penginputan fakta dari notepad ke
dalam program yang dijalankan.
Menganti
nama file dengan file baru dengan nama data_herii.txt.
3.PRAKTIKUM 3
v LISTING
DOMAINS
nama = symbol
umur = integer
jender = lakilaki;perempuan
Ø
Domains
merupakan bagian yang mendeklarasikan tipe dari argumen yang ada pada
program:
Ø
Argument
nama mempunyai tipe data yakni symbol.
Ø
Argument
umur mempunyai tipe data yakni
integer.
Ø Argument
jender untuk mendeklarasikan bahwa
argument tersebut hanya mempunyai dua buah jawaban yakni laki-laki atau
perempuan.
FACTS
orang(nama, umur, jender)
Ø Kata kunci facts atau bisa juga database
menandai permulaan sederatan deklarasi dari predikat yang ada pada section
facts yakni dengan nama orang
.Fakta yang dituliskan berisi nama,
umur dan jender yang telah
dideklarasikan pada domains diatas.
PREDICATES
nondeterm cetak
Ø
Pada Section PREDIKAT digunakan
untuk mendeklarasikan perintah-perintah yang nanti akan digunakan dalam section Clauses, seperti :
Ø Predikat cetak yang mana mempunyai sifat
yakni nondeterm .nondeterm disini
digunakan untuk memberitahukan kepada prolog bahwa predikat milik memiliki
lebih dari 1 kemungkinan
CLAUSES
cetak:-
orang(Nama, Umur, Jender),
write("Nama : " ,Nama),nl,
write("Umur : " ,Umur),nl,
write("Jender
: " ,Jender),nl,nl,
fail.
cetak.
Ø
Pada Section CLAUSES digunakan untuk mendeklarasikan aturan dan fakta. Aturan
merupakan suatu konklusi diketahui benar jika satu atau lebih konklusi atau
fakta lain ditemukan benar.
Ø
pada baris pertama berisikan aturan yang ada dalam program tersebut
untuk : Perintah write adalah untuk mencetak/ menampilkan hasil dari prolog yang
terdiri dari nama, umur dan jender. Clauses yang
berisiskan project atau dapat disebut kata sifat yang berurutan dan
menampilkan sifat dari pada objek-objek yang telah ditentukan. Visual prolog
akan memulai lacak balik jika ada panggilan yang gagal. Pada situasi
tertentu, ada kebutuhan untuk memaksa lacak balik dalam rangka mencari
alternatif solusi.
Ø Visual prolog menyediakan predikat khusus fail untuk
memaksa kegagalan sehingga memicu terjadinya lacak balik.
Ø Efek fail sama dengan memberikan perbandingan 2:3 atau
subgoal yang tidak mungkin lainnya. nl
digunakan untuk next line atau baris selanjutnya.
GOAL
consult("data_herii.txt"),
cetak.
Ø Pada
Section GOAL ini diggunakan untuk
memanggil data atau fakta dari predikat yang telah dideklarasikan
dalam program tersebut.
Ø Consult dipanggil hanya dengan satu
argumen (tidak ada nama section facts) maka hanya akan menyertakan
fakta-fakta yang predikatnya telah dideklarasikan di section facts default
yaitu dbasedom.
Ø Jika memanggil consult dengan dua
argumen (nama file dan nama section facts) maka hanya akan menyertakan
fakta-fakta yang predikatnya telah dideklarasikan di section facts dengan nama
yang sesuai.
Ø Jika file tersebut mengandung
fakta-fakta yang bukan milik dari section facts tersebut, akan terjadi error
pada saat membaca bagian tersebut. Perlu diperhatikan bahwa consult membaca
fakta satu demi satu, jika ada file 10 fakta dan pada fakta ke 7 error, maka
consult akan menyertakan 6 fakta pertama pada section facts kemudian
menampilkan pesan kesalahan. Sebagai catatan, consult hanya bisa membaca
sebuah file dengan syarat format file tersebut sama persis dengan format file
yang disimpan menggunakan predikat save, yaitu :
·
Tidak
ada karakter kapital kecuali dalam tanda petik dua (penulisan string).
·
Tidak
ada spasi kecuali dalam tanda petik dua.
·
Tidak
ada komentar.
·
Tidak
ada baris kosong.
·
Tidak
ada symbol tanpa di dalam tanda petik dua.
|
v
RUNNING
Ø Ini adalah
tampilan ketika program di running menggunakan visual prolog.
Bab 4
Kesimpulan
Dari Program yang dijalan dalam Visual Prolog diatas saya
dapat menggambil kesimpulan bahwa:
1)
Section facts terdiri dari fakta-fakta yang mana fakta-fakta
tersebut dapat ditambah dan dihapus secara langsung dari sebuah program pada
saat program sedang berjalan (at run time).
2)
Kita dapat
mendeklarasikan sebuah predikat pada section facts dan predikat tersebut
dapat digunakan sama halnya seperti kalau dideklarasikan pada section
predicates.
3)
Visual Prolog
menyediakan beberapa predikat built-in untuk menangani hal yang
berkaitan dengan penggunaan section facts, antara lain:
·
assert,
asserta dan assertz untuk menambah fakta baru pada section facts.
·
retract dan retractall untuk menghapus
fakta yang ada.
·
consult untuk membaca fakta dari sebuah file dan menyertakan
fakta tersebut ke dalam fakta internal.
·
save menyimpan isi fakta internal ke dalam sebuah file.
Bab 5
TUGAS
LISTING PROGRAM
DOMAINS
nama_mk, nama_mhs = symbol
nilai = string
list = nilai*
FACTS
mata_kuliah(nama_mk,
nama_mhs, nilai)
PREDICATES
nondeterm cetak
nondeterm lulus(nama_mk, nama_mhs)
nondeterm tidak_lulus(nama_mk, nama_mhs)
CLAUSES
cetak:-
mata_kuliah(nama_mk,
nama_mhs, nilai),
write("Nama
MK : " ,nama_MK),nl,
write("Nama
mhs : " ,nama_mhs),nl,
write("Nilai : "
,nilai),nl,nl,
fail.
cetak.
lulus(X,Y):-
mata_kuliah(X,Y,"A");
mata_kuliah(X,Y,"B");
mata_kuliah(X,Y,"C").
tidak_lulus(X,Y):-
mata_kuliah(X,Y,"D");
mata_kuliah(X,Y,"E").
GOAL
consult("akakom.txt"),
write("Nama
Mahasiswa : Supardi"),nl,
mata_kuliah(Nama_MK,
"Supardi" ,Nilai),
cetak.
|
v Fakta-fakta
dimasukan lewat notepad dengan nama file “akakom.txt”.
Mencari GOAL :
1. Nilai-nilai yang dimiliki oleh supardi
beserta mata_kuliahnya
GOAL
consult("akakom.txt"),
write("Nama
Mahasiswa : Supardi"),nl,
mata_kuliah(Nama_MK,
"Supardi" ,Nilai),
cetak.
|
RUNNING PROGRAM
2. Goal untuk
mengecek apakah Suripah mengikuti perkuliahan pada semester tersebut, maka goal
diganti :
GOAL
consult("akakom.txt"),
write("Nama Mahasiswa : Suripah"),nl,
mata_kuliah(_, "Suripah",_),
cetak.
|
RUNNING PROGRAM
3. Goal untuk menampilkan
mahasiswa yang tidak lulus (nilai
GOAL
consult("akakom.txt"),
write("Nama Mahasiswa yang tidak
Lulus :"),nl,nl,
tidak_lulus(Nama_mata_kuliah,
Nama_Mahasiswa),
cetak.
|
RUNNING PROGRAM
0 komentar:
Post a Comment
Thanks For Your Feedback.