LAPORAN PRAKTIKUM KECERDASAN BUATAN PERT

LAPORAN PRAKTIKUM KECERDASAN BUATAN
PERTEMUAN KE-5
DATA OBJECT SEDERHANA DAN JAMAK
(SIMPLE AND COMPOUND DATA OBJECT)

Disusun Oleh :
Nama : MHD Syaiful Adnan
NIM : 125410115

SEKOLAH TINGGI MANAJEMEN DAN
INFORMATIKA
AKAKOM YOGYAKARTA
2013

INHAL
PEMBAHASAN PRAKTIKUM
Program1
Input
DOMAINS
nama=orang(symbol,symbol)
hari_lahir=tanggal_lahir(integer,symbol,integer)

telepon=symbol
PREDICATES
nondeterm daftar_telepon(nama,symbol,hari_lahir)
yang_ulang_tahun_bulan_ini
konversi_bulan(symbol,integer)
cek_bulan_ulang_tahun(integer,hari_lahir)
cetak_orang(nama)
CLAUSES
yang_ulang_tahun_bulan_ini:write("**** Daftar Orang Yang Ulang Tahun Bulan Ini ****"),nl,
write(" Nama Pertama\t\t Nama Kedua\n"),
write("*******************************************************"),nl,
date(_,Bulan_ini,_),
daftar_telepon(Orang,_,Tanggal),
cek_bulan_ulang_tahun(Bulan_ini,Tanggal),
cetak_orang(Orang),
fail.
yang_ulang_tahun_bulan_ini:write("\n\n Tekan sembarang tombol..."),nl,
readchar(_).
cetak_orang(orang(Pertama,Kedua)):write(" ",Pertama,"\t\t\t ",Kedua),nl.
cek_bulan_ulang_tahun(Bul,tanggal_lahir(_,Bulan,_)):konversi_bulan(Bulan,Bulan1),

Bul=Bulan1.
daftar_telepon(orang(erwin,effendy),"767-8463",tanggal_lahir(3,jan,1955)).
daftar_telepon(orang(pramudya,kurniawan),"438-8400",tanggal_lahir(5,feb,1985)).
daftar_telepon(orang(kusdiar,prihatin),"555-5653",tanggal_lahir(3,mar,1935)).
daftar_telepon(orang(ui,yansen),"767-2223",tanggal_lahir(29,apr,1951)).
daftar_telepon(orang(foland,hutagalung),"555-1212",tanggal_lahir(12,may,1962)).
daftar_telepon(orang(andi,nuruddin),"438-8400",tanggal_lahir(17,jun,1980)).
daftar_telepon(orang(syarif,musadek),"767-8463",tanggal_lahir(20,jun,1986)).
daftar_telepon(orang(lidya,widyawati),"555-5653",tanggal_lahir(16,jul,1981)).
daftar_telepon(orang(yusida,andriani),"767-2223",tanggal_lahir(10,aug,1981)).
daftar_telepon(orang(slamet,riyadi),"438-8400",tanggal_lahir(25,sep,1981)).
daftar_telepon(orang(nur,harjanto),"438-8400",tanggal_lahir(20,oct,1952)).
daftar_telepon(orang(dian,marlini),"555-1212",tanggal_lahir(9,nov,1984)).
daftar_telepon(orang(teguh,heni),"767-2223",tanggal_lahir(15,nov,1987)).
daftar_telepon(orang(eka,ardiyanti),"438-8400",tanggal_lahir(31,dec,1981)).
konversi_bulan(jan,
konversi_bulan(feb,
konversi_bulan(mar,
konversi_bulan(apr,
konversi_bulan(may,

konversi_bulan(jun,
konversi_bulan(jul,
konversi_bulan(aug,
konversi_bulan(sep,
konversi_bulan(oct,
konversi_bulan(nov,

1).
2).
3).
4).
5).
6).
7).
8).
9).
10).
11).

M.Syaiful Adnan/125410115/STMIK AKAKOM Yogyakarta


Page 2

INHAL
konversi_bulan(dec, 12).
GOAL
yang_ulang_tahun_bulan_ini.

Output

1.) Visual Prolog memanggil goal yang_ulang_tahun_bulan_ini., lalu dibaca
subgoal pertama dari predikat yang_ulang_tahun_bulan_ini yaitu date.
Subgoal yang dibaca pertama adalah date karena ketiga subgoal diatas
date tidak membutuhkan proses pencarian, karena perintahnya adalah
mencetak.
2.) Date mengambil Bulan pada sistem komputer, dalam hal ini adalah Bulan
Desember. Sehingga Desember diikatkan pada variabel Bulan_ini. Proses
berhasil lalu lanjut subgoal berikutnya.
3.) Subgoal berikutnya yaitu daftar_telepon(Orang, _, Tanggal) didalam sub
goal ini terdiri dari 1 data. Dilakukan pengecekkan unifkasi pada data

yang telah ada.
4.) Data pertama pada daftar_telepon adalah daftar_telepon(orang(eka,
ardiyanti), _, tanggal_lahir(31, dec, 1981)), maka orang(eka, ardiyanti)
diikatkan ke variabel Orang, dan tanggal_lahir diikatkan ke variabel
Tanggal. Proses sukses dilaksanakan. Lalu lanjut ke subgoal berikutnya.
5.) Subgoal berikutnya yaitu cek_bulan_ulang_tahun(Bulan_ini, Tanggal).
Bulan_ini telah diisi oleh Februari, dan Tanggal telah diisi oleh
tanggal_lahir(31, dec, 1981), maka dilakukan pencocokan apakah
cek_bulan_ulang_tahun(December, tanggal_lahir(31, dec, 1981)) hasil
tidak cocok lalu dilakukan pencocokkan kembali data menggunakan
lacakbalik dimulai dari subgoal berikutnya yaitu daftar_telepon(Orang, _,
Tanggal) dengan unifkasi maka data teratas berikutnya akan dibaca.
6.) Terdapat predikat fail pada subgoal yang terakhir untuk memaksa lacak
balik meski pun telah didapat solusi.
7.) Karena tidak ditemukan solusi lain, maka hasil yang didapat hanya satu
yang berulang tahun bulan ini yaitu eka ardiyanti.

M.Syaiful Adnan/125410115/STMIK AKAKOM Yogyakarta

Page 3


INHAL

PEMBAHASAN PRAKTIKUM
Program2
Input
DOMAINS
nama=orang(symbol,symbol)
hari_lahir=tanggal_lahir(integer,symbol,integer)
telepon=symbol
PREDICATES
nondeterm daftar_telepon(nama,symbol,hari_lahir)
yang_ulang_tahun_bulan_ini
konversi_bulan(symbol,integer)
cek_bulan_ulang_tahun(integer,hari_lahir)
cetak_orang(nama)
CLAUSES
yang_ulang_tahun_bulan_ini:write("**** Daftar Orang Yang Ulang Tahun Bulan Ini ****"),nl,
write(" Nama Pertama\t\t Nama Kedua\n"),
write("*******************************************************"),nl,

date(_,Bulan_ini,_),
daftar_telepon(Orang,_,Tanggal),
cek_bulan_ulang_tahun(Bulan_ini,Tanggal),
cetak_orang(Orang),
fail.
yang_ulang_tahun_bulan_ini:write("\n\n Tekan sembarang tombol..."),nl,
readchar(_).
cetak_orang(orang(Pertama,Kedua)):write(" ",Pertama,"\t\t\t ",Kedua),nl.
cek_bulan_ulang_tahun(Bul,tanggal_lahir(_,Bulan,_)):konversi_bulan(Bulan,Bulan1),
Bul=Bulan1.
daftar_telepon(orang(erwin,effendy),"767-8463",tanggal_lahir(3,jan,1955)).
daftar_telepon(orang(pramudya,kurniawan),"438-8400",tanggal_lahir(5,feb,1985)).
daftar_telepon(orang(kusdiar,prihatin),"555-5653",tanggal_lahir(3,mar,1935)).
daftar_telepon(orang(ui,yansen),"767-2223",tanggal_lahir(29,apr,1951)).
daftar_telepon(orang(foland,hutagalung),"555-1212",tanggal_lahir(12,may,1962)).
daftar_telepon(orang(andi,nuruddin),"438-8400",tanggal_lahir(17,jun,1980)).
daftar_telepon(orang(syarif,musadek),"767-8463",tanggal_lahir(20,jun,1986)).
daftar_telepon(orang(lidya,widyawati),"555-5653",tanggal_lahir(16,jul,1981)).
daftar_telepon(orang(yusida,andriani),"767-2223",tanggal_lahir(10,aug,1981)).
daftar_telepon(orang(slamet,riyadi),"438-8400",tanggal_lahir(25,sep,1981)).

daftar_telepon(orang(nur,harjanto),"438-8400",tanggal_lahir(20,oct,1952)).
daftar_telepon(orang(dian,marlini),"555-1212",tanggal_lahir(9,nov,1984)).
daftar_telepon(orang(teguh,heni),"767-2223",tanggal_lahir(15,nov,1987)).
daftar_telepon(orang(eka,ardiyanti),"438-8400",tanggal_lahir(31,dec,1981)).
daftar_telepon(orang(sri,sugiarti),"438-8459",tanggal_lahir(2,dec,1952)).
daftar_telepon(orang(aldi,badwin),"555-1818",tanggal_lahir(19,dec,1984)).
daftar_telepon(orang(gigi,gilang),"911-1234",tanggal_lahir(17,dec,1987)).
daftar_telepon(orang(titi,coklat),"439-7409",tanggal_lahir(30,dec,1981)).
konversi_bulan(jan, 1).

M.Syaiful Adnan/125410115/STMIK AKAKOM Yogyakarta

Page 4

INHAL
konversi_bulan(feb,
konversi_bulan(mar,
konversi_bulan(apr,
konversi_bulan(may,
konversi_bulan(jun,

konversi_bulan(jul,
konversi_bulan(aug,
konversi_bulan(sep,
konversi_bulan(oct,
konversi_bulan(nov,
konversi_bulan(dec,

2).
3).
4).
5).
6).
7).
8).
9).
10).
11).
12).

GOAL

yang_ulang_tahun_bulan_ini.

Output

Disini saya menemukan 5 solution daftar orang yang ulang tahun bulan
ini. Yaitu eka ardiyanti,sri sugiarti,aldi badwin, gigi gilang, dan titi coklat.
Mengapa bisa 5 orang yang ditemukan karena dalam data fakta di Claukses
orang yang berulang tahun untuk bulan December ada 5.
daftar_telepon(orang(eka,ardiyanti),"438-8400",tanggal_lahir(31,dec,1981)).
daftar_telepon(orang(sri,sugiarti),"438-8459",tanggal_lahir(2,dec,1952)).
daftar_telepon(orang(aldi,badwin),"555-1818",tanggal_lahir(19,dec,1984)).
daftar_telepon(orang(gigi,gilang),"911-1234",tanggal_lahir(17,dec,1987)).
daftar_telepon(orang(titi,coklat),"439-7409",tanggal_lahir(30,dec,1981)).

TUGAS

1.) Apa perbedaan data object sederhana dan jamak?
Jawab:
Data Object Sederhana terbagi menjadi dua bagian yaitu Variabel (setiap
penulisan variable harus dengan huruf capital atau dengan sebuah underscore)

dan Constanta (apapun yang diidentifkasikan sebaagai sebuah object yang
nilainya bisa bervariasi), sedangkan
Data Object Jamak memperlakukan beberapa informasi sebagai sebuah item
tunggal, data object dimulai dengan sebuah nama yang biasa disebut functor
yang diikuti oleh tiga argumen. Functor tidak melakukan apa-apa, hanya sebuah
nama yang mengidentifkasi sebuah jenis data objek jamak yang didalamnya
terdapat argument.
2.) Buatlah program dengan narasi berikut ini (gunakan data object jamak):
M.Syaiful Adnan/125410115/STMIK AKAKOM Yogyakarta

Page 5

INHAL
Jawab:
Input
DOMAINS
alamat_asal = alamat(symbol,symbol,symbol)
nama_mahasiswa,jenis_kelamin,nim = symbol
nama_matkul,nama_dosen,program_studi,ruang = symbol
PREDICATES
nondeterm mahasiswa(nama_matkul,nama_mahasiswa,jenis_kelamin,nim,alamat_asal)
mahasiswa_yang_mengikuti_matakuliah_intelegensi_buatan
cetak_mahasiswa(nama_mahasiswa,nama_dosen,ruang,alamat_asal)
nondeterm matakuliah(nama_matkul,nama_dosen,program_studi,ruang)
matakuliah_yang_diajarkan_pada_semester_tersebut(nama_matkul,nama_mahasiswa,ruang,n
ama_dosen)
CLAUSES
mahasiswa_yang_mengikuti_matakuliah_intelegensi_buatan:write("\t************* MAHASIAWA YANG MENGIKUTI MATAKULIAH INTELEGENSI BUATAN
*************"),nl,
write("****************************************************************************
*************************************************"),nl,
write("\n"),
write("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"),nl,
write("NIM\t\t Nama Mahasiswa\t\t Nama Dosen\tRuang\t\t Alamat\n"),
mahasiswa("Intelegensi Buatan",_,_,_,_),
matakuliah(_,_,_,"1"),
write("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"),nl,
cetak_mahasiswa(nama_mahasiswa,nama_dosen,ruang,alamat(symbol,symbol,symbol)).
mahasiswa_yang_mengikuti_matakuliah_intelegensi_buatan:write("\n\n Tekan sembarang tombol..."),nl, readchar(_).
cetak_mahasiswa(nama_mahasiswa,nama_dosen,ruang,alamat(symbol,symbol,symbol)):write("2002001","\t\t ","Sugeng Riyadi","\t\t ","Abdul Kadir","\t ","1","\t ","Jl.
Sudirman No. 2","Pontianak","Kalimantan Barat"),nl,
write("2002002","\t\t ","Yulia Sugondo","\t\t "," Abdul Kadir","\t ","1","\t ","Jl.
A. Yani No. 10","Klaten","Jawa Tengah"),nl,
write("2002003","\t\t ","Budiman Sejati","\t\t "," Abdul Kadir","\t ","1","\t
","Jl. Slamet Riyadi No. 45","Solo","Jawa Tengah"),nl.
matakuliah_yang_diajarkan_pada_semester_tersebut("Intelegensi Buatan","Sugeng
Riyadi","1","Abdul Kadir").
matakuliah_yang_diajarkan_pada_semester_tersebut("Intelegensi Buatan","Yulia
Sugondo","1","Abdul Kadir").
matakuliah_yang_diajarkan_pada_semester_tersebut("Intelegensi Buatan","Budiman
Sejati","1","Abdul Kadir").
matakuliah_yang_diajarkan_pada_semester_tersebut("PDE","Laksamana
Sukardi","2","Indra Yatini").
matakuliah_yang_diajarkan_pada_semester_tersebut("PDE","Rini Suwandi","2","Indra
Yatini").
matakuliah_yang_diajarkan_pada_semester_tersebut("PDE","Kwik Kian Gie","2","Indra
Yatini").
matakuliah_yang_diajarkan_pada_semester_tersebut("Teknik Antar Muka","Riri
Reza","3","Sigit Anggoro").
matakuliah_yang_diajarkan_pada_semester_tersebut("Teknik Antar Muka","Rachel
Maryam","3","Sigit Anggoro").
matakuliah_yang_diajarkan_pada_semester_tersebut("Teknik Antar Muka","Garin
Nugroho","3","Sigit Anggoro").
mahasiswa("Intelegensi Buatan","Sugeng Riyadi",lakilaki,"2002001",alamat("Jl.
Sudirman No. 2","Pontianak","Kalimantan Barat")).

M.Syaiful Adnan/125410115/STMIK AKAKOM Yogyakarta

Page 6

INHAL
mahasiswa("Intelegensi Buatan","Yulia Sugondo",perempuan,"2002002",alamat("Jl. A.
Yani No. 10","Klaten","Jawa Tengah")).
mahasiswa("Intelegensi Buatan","Budiman Sejati",lakilaki,"2002003",alamat("Jl.
Slamet Riyadi No. 45","Solo","Jawa Tengah")).
mahasiswa("PDE","Laksamana Sukardi",lakilaki,"2002004",alamat("Jl. MT. Haryono No.
10","Palembang","Sumatera Selatan")).
mahasiswa("PDE","Rini Suwandi",perempuan,"2002005",alamat("Jl. Letjen Suprapto No.
12","Surabaya","Jawa Timur")).
mahasiswa("PDE","Kwik Kian Gie",lakilaki,"2002006",alamat("Jl. WR Supratman No.
100","Makasar","Sulawesi Selatan")).
mahasiswa("Teknik Antar Muka","Riri Reza",lakilaki,"2002007",alamat("Jl. RW
Monginsidi No. 30","Purwokerto","Jawa Tengah")).
mahasiswa("Teknik Antar Muka","Rachel Maryam",perempuan,"2002008",alamat("Jl.
Otista No. 112","Bandung","Jawa Barat")).
mahasiswa("Teknik Antar Muka","Garin Nugroho",lakilaki,"2002009",alamat("Jl.
Tanjung Pura No. 101","Jaya Pura","Papua")).
matakuliah("Intelegensi Buatan","Abdul Kadir","Manajemen Informatika","1").
matakuliah("PDE","Indra Yatini","Teknik Informatika","2").
matakuliah("Teknik Antar Muka","Sigit Anggoro","Teknik Komputer","3").

 Goal untuk pertanyaan ke-1
GOAL
mahasiswa_yang_mengikuti_matakuliah_intelegensi_buatan.

Output

Penjelasan :
 Pada Section GOAL ini digunakan untuk memenggil data atau fakta dari
mahasiswa yang mengikuti matakuliah Intelegensi Buatan, dimana
sudah diseklarasikan dengan perintah diatas.
 Goal ini untunk menampilkan domain tersebut dari perintah  “CLAUSES
mahasiswa_yang_mengikuti_matakuliah_intelegensi_buatan:- .......write("N
im\t\t Nama Mahasiswa\t\t Nama Dosen\t Ruang\t\t Alamat\n"),

M.Syaiful Adnan/125410115/STMIK AKAKOM Yogyakarta

Page 7

INHAL

 Goal untuk pertanyaan ke-2
GOAL
matakuliah_yang_diajarkan_pada_semester_tersebut(A,B,C,D).

Output

Penjelasan
 Pada Section GOAL ini digunakan untuk memanggil
data atau fakta
matakuliah yang diajarkan pada semester ini.
 Yang ditampilkan pada output ini adalah nama mahasiswa, diikut
sertakan nama matakuliahnya, ruang yang digunakan, dan nama
dosen yang mengajar. Semua data itu didapatkan dari pendeklarasian
section CLAUSE
KESIMPULAN
Dari praktikum diatas dapat saya simpulkan bahwa data object sederhana terdiri
dari 2 yaitu variabel dan konstanta, konstanta meliputi karakter, angka, atom.
 Variabel harus dimulai dengan sebuah huruf kapital (A ..Z) atau sebuah
underscore ( _ ).
 Konstanta meliputi karakter, angka, dan atom. Suatu nilai konstanta juga
merupakan nama dari konstanta tersebut. Konstanta 2 mempresentasikan
angka 2 dan konstanta halo mempresentasikan simbol halo.
Data objek jamak merupakan sebuah informaisi yang memiliki objek yang tidak
hanya 1(jamak/banyak).

M.Syaiful Adnan/125410115/STMIK AKAKOM Yogyakarta

Page 8