Anda di halaman 1dari 16

2

STRUKTUR PROGRAM PROLOG

OBJEKTIF

Umum

Mengetahui struktur-struktur didalam prolog serta fungsi dan


kegunaan dari masing-masing bagian dalam struktur program prolog
tersebut.

Khusus

Praktikan dapat membuat program pakar dengan struktur program


prolog yang benar sesuai dengan aturannya, dan juga mengerti masing-
masing kerja dari struktur tersebut.

PENDAHULUAN

Sebelumnya kita telah mengenal apa itu struktur, struktur adalah


bagian-bagian yang membangun sebuah sistem dimana bagian-bagian ini
bekerja dan memiliki fungsinya masing-masing untuk menjalankan sistem.
Jika kita umpamakan, dalam struktur tubuh manusia terdapat bagian-
bagian didalamnya antara lain: tulang, otot, dan organ tubuh. Didalam
prolog juga terdapat struktur program yang didalamnya terdapat bagian-
bagian yang memiliki fungsi dan tujuan masing-masing dalam berjalannya

7
program prolog tersebut. Pada pertemuan kali ini, materi mengenai
struktur-struktur pada prolog yang akan dibahas antara lain yaitu domain,
predikat, klausa, dan goal beserta fungsi dari masing-masing struktur
tersebut. Untuk itu kita akan membahasnya satu persatu agar lebih
memperjelas struktur yang ada pada prolog. Struktur yang dimiliki prolog
ini lebih detilnya akan kita mulai pada pembahasan dibawah.

URAIAN MATERI

1 Domains (Domain)

Apa yang kalian ketahui tentang domain? Tentunya kalian telah


mengetahuinya, walaupun domain ini biasa kita kenal dengan kata yang
berbeda. Kata apa yang biasa digunakan untuk definisi domain? Pada
bahasa pemrograman lain seperti pascal, dll, biasanya domain ini biasa
disebut dengan tipe data yang berguna untuk menyatakan jenis variabel
ataupun argument, misalkan: alamat, menggunakan tipe data/domain
string, sedangkan nilai memiliki domain/tipe data integer, dll.

Didalam prolog kita mengenal lima buah domain baku didalamnya, yaitu:

a. char : sebuah karakter tunggal yang diapit oleh tanda kutip satu,
contoh: ‘a’, ‘b’, ‘17’

b. integer : bilangan bulat yang memiliki jangkauan antara 32768


sampai dengan 32767.

c. real : suatu bilangan nyata antara 1x10 -307 hingga 1x10 308.

d. string : suatu deretan karakter yang dalam penulisannya diapit


dengan tanda kutip dua, contoh “saya”, “gunadarma”, dll.

e. symbol : suatu rangkaian karakter yang diawali dengan huruf kecil


dan tanpa tanda apapun.

8
Disamping domain baku yang telah didefinisikan diatas prolog juga
memiliki domain tak baku, dimana domain ini memiliki fungsi-fungsi
khusus untuk kemajemukkan domain dalam suatu program prolog.
Domain tak baku yang dimiliki prolog antara lain:

a. domain file : domain yang digunakan untuk memberi nama file


secara simbolik, memiliki bentuk umum (file = ; ;
….).

b. domain list : domain yang berguna untuk mendefinisikan list


(linked list) dimana elemen pertama mempunyai
pointer ke elemen kedua dan seterusnya.
Deklarasi dalam penggunaan list ini adalah: (= *list
symbol = symbol*)

c. domain majemuk : domain yang digunakan untuk menyatakan data


majemuk seperti penulisan alamat
(“Jl.Narogong”,”Bekasi”). Pada contoh ini alamat
adalah sebuah nama dari sebuah objek yang
biasa kita sebut fungtor, dan bagian yang berada
dalam tanda kurung disebut argument.

2 Predicates (Predikat)

Bagian ini untuk menuliskan setiap relasi predikat yang digunakan


dalam program, kecuali predikat baku seperti cursor, makewindow, readln,
readchar, dan sejenisnya tidak perlu didefinisikan. Dalam bahasa
Indonesia kita mengenal predikat/predicates adalah suatu kata bantu yang
akan menunjukkan kata tujuan dari suatu subjek. Didalam prolog
predicates ini berguna untuk membantu penulisan relasi dari subyek-
subyek dalam sebuah program pakar.

Syarat penulisan nama predikat:

9
 Diawali huruf kecil dan dapat diikuti huruf, angka, atau garis bawah
 Panjang nama maksimum 250 karakter
 Tidak diperbolehkan menggunakan spasi, tanda minus, tanda
bintang, dan garis miring.

Predikat dari suatu fakta didalam prolog dapat ditulis dengan bentuk
umum sebagai berikut:

: Nama_relasi(symbol, symbol)

Contoh:

nama dari ayah pranoto dan kristianto adalah hendra, maka didalam
prolog dapat kita tuliskan:

 ayah(hendra,pranoto).
 ayah(hendra,kristianto).

diamana hendra, pranoto dan kristianto dapat juga kita sebut sebagai
argument dalam relasi ayah.

Seperti dalam bahasa Pascal atau C, apabila argument status


predicates tidak dituliskan dalam domains Standard, maka argument
tersebut harus dinyatakan dalam bagian DOMAINS, demikian sebaliknya.
Contoh:

DOMAINS
jalan,kota,kode_pos = string
tanggal,bulan,tahun = integer

PREDICATES
alamat(jalan,kota,kode_pos)
kelahiran(tanggal,bulan,tahun)

10
Contoh di atas lebih baik dibandingkan apabila argument suatu
predicates langsung dituliskan dalam domains standard, seperti:

PREDICATES
alamat(string,string,string)
kelahiran(integer,integer,integer)

Predicates dengan nama yang sama dapat mempunyai aritas yang


berbeda. Kedua predicates ini merupakan predicates yang berbeda tetapi
keduanya harus dituliskan dalam satu kumpulan nama yang sama.
Misalnya:

ayah(nama); ayah(hendra)

ayah(nama,nama); ayah(hendra,pranoto)

Pada contoh pertama, predicates menyatakan bahwa nama


tersebut adalah seorang ayah, sedangkan predicates kedua menyatakan
nama tersebut adalah seorang ayah dari nama yang lain.

3 Clauses (Klausa)

Klausa adalah bagian inti didalam program prolog, dimana semua


fakta dan aturan-aturan diimplementasikan didalamnya. Klausa didalam
prolog mirip dengan prosedur yang ada pada bahasa pemrograman
lainnya. Pada bagian fakta umumnya ditulis sebelum bagian aturan
(rules), untuk fakta dan aturan yang berelasi sama haruslah dituliskan
berkelompok. Penulisan fakta/aturan dimulai dari fakta/aturan yang paling
atas kemudian urut ke bawah, untuk kemungkinan yang lebih besar
ditempatkan lebih awal daripada kemungkinan yang lebih kecil.

11
Contoh:

/*FAKTA*/ /*Aturan*/
ayah(hendra,pranoto). kakek(Kakek,Cucu):-
ayah(hendra,kristianto). ayah(Ayah,Cucu),
ayah(pranoto,bardan). ayah(Kakek,Ayah).
ayah(pranoto,deni).
ayah(kristianto,harahap). /*Nenek adalah nenek Cucu*/
ayah(kristianto,sutarno). nenek(Nenek,Cucu):-
ibu(Ibu,Cucu),
ibu(bella,pranoto). ibu(Nenek,Ibu).
ibu(bella,kristianto).
ibu(suci,bardan). nenek(Nenek,Cucu):-
ibu(suci,deni). ayah(Ayah,Cucu),
ibu(bu_kristianto,harahap). ibu(Nenek,Ayah).
ibu(bu_kristianto,sutarno).

Klausa ini akan mencari relasi untuk kakek, dimana sebelumnya


relasi ini akan menelusuri aturan yang telah diberikan dalam urut-urutan
silsilah keluarga.

4 Goal (Tujuan)

Apakah kamu mengetahui tentang istilah Goal? Istilah goal ini biasa
digunakan dalam persepakbolaan, dimana istilah ini memiliki arti suatu
pemain berhasil memasukkan bola ke gawang lawan yang memang
menjadi tujuan dari pemain tersebut. Sama halnya didalam prolog dimana
goal ini memiliki arti yaitu suatu tujuan yang akan dicapai oleh sebuah
program yang dibuat.

12
Goal berisi pertanyaan yang anda ajukan kepada prolog. Bagian
goal ini hanya dituliskan menggunakan kata tunggal, karena hanya boleh
ada sebuah goal. Goal dapat terdiri dari beberapa sub-goal. Perlu diingat
suatu pernyataan baik fakta, relasi atau goal dikatakan satu apabila
diakhiri dengan tanda titik.

Ada 2 (dua) jenis goal:

 Goal eksternal : goal yang diberikan melalui compiler terpadu turbo


prolog (di luar program) dan dalam jendela dialog.
 Goal internal : goal yang sekaligus dituliskan dalam program
sehingga setiap kali dieksekusi tidak perlu lagi
menuliskan goal yang diinginkan.
Catatan:

 Kalimat yang diapit dengan tanda /* .... */ menyatakan keterangan dan


tidak dibaca oleh compiler, logika and dituliskan dengan tanda koma
“,”, kondisi if dituliskan dengan tanda “:-“.

4.1 Variabel

Didalam goal terdapat nilai yang bersarnya dapat berubah-ubah


sesuai dengan tujuan yang diinginkan. Besaran nilai yang dapat berubah-
ubah ini kita sebut dengan variabel.

Contoh:

GOAL: ayah(hendra,X).

X = pranoto;

Dalam contoh diatas, variable X diisikan dengan (pranoto), maka


contoh diatas akan memiliki tujuan yaitu menunjukkan bahwa hendra
adalah dari pranoto.

13
Untuk menuliskan variable ini, kita dapat menggunakan tata cara
penulisan variable yaitu sebagai berikut:

 Harus diawali huruf besar atau garis bawah (_)


 Dapat terdiri dari huruf, angka atau simbol dan merupakan satu
kesatuan
 Panjang maksimum 250 karakter
 Hendahknya mengandung makna yang berkaitan dengan data
yang dinyatakannya.

Contoh: Tanggal_lahir
Nama_ayah

Nama variabel hanya berlaku untuk satu aturan (lokal). Bila variabel
yang sama digunakan pada aturan yang lain, berarti variabel tersebut
mempunyai arti yang berbeda.

Misalkan dalam bagian CLAUSES terdapat dua aturan yang berbeda:

kakek(Kakek,Cucu):-

ayah(Kakek,Ayah),

ayah(Ayah,Cucu).

nenek(Nenek,Cucu):-

ibu(Nenek,Ayah),

ayah(Ayah,Cucu).

Variabel Ayah digunakan dalam aturan kakek dan nenek, namun


kedua variabel tersebut tidak saling berhubungan. Variabel Ayah dalam

14
aturan kakek hanya digunakan dalam tersebut, begitu pula dalam aturan
nenek.

Didalam prolog terdapat 3 macam variable, yaitu:

1. Variabel bebas (Free variable): variabel yang belum mempunyai


nilai tertentu pada suatu saat.
2. Variabel terikat (Bound variable): variabel yang sudah mempunyai
nilai tertentu pada suatu saat. Contoh: GOAL: ayah(Ayah,deni),
ayah(Ayah,bardan). Yang berarti siapa ayah deni dan juga ayah
bardan?
3. Variabel tak bernama (Anonymous variable): Bila anda ingin
mendapatkan informasi tertentu, anda dapat menggunakan variabel
tak bernama untuk mengabaikan nilai yang tak dikehendaki. Dalam
Prolog variabel tak bernama dituliskan dengan garis bawah (‘_’).
Variabel tak bernama tak pernah terikat pada suatu nilai tertentu
sehingga selalu sepadan dengan nilai apapun. Misal pada contoh
program di atas anda ingin mengetahui nama-nama orang yang
mempunyai anak (menjadi orang tua) tetapi anda tidak ingin
mengetahui anak-anaknya, anda dapat menanyakan:

Goal: ayah(Ayah,_) dan Prolog akan menjawab:


Ayah=hendra

Ayah=hendra

Ayah=pranoto

Ayah=pranoto

Ayah=kristanto

Ayah=kristanto

Variabel tak bernama dapat juga untuk menyatakan fakta “setiap/semua”.

15
Contoh:

Setiap mahasiswa teknik informatika mempunyai computer

Prolog: mempunyai(_,komputer)

4.2 Goal Majemuk

Goal juga dapat terdiri lebih dari satu pertanyaan, atau biasa kita
sebut dengan goal majemuk. goal majemuk ini terdiri dari pernyataan-
pernyataan yang tujuannya tidak hanya terpusat pada satu pertanyaan,
tetapi dalam goal majemuk ini tujuan yang dicapai untuk mendapatkan
hasil diperoleh lebih dari satu pertanyaan.

Bagian majemuk dari goal utama disebut dengan sub-goal, bagian


inilah yang mendefinisikan tujuan yang akan dicapai selain dari tujuan
utama.

Contoh:

/* Contoh program merk mobil,tahun,harga */

DOMAINS

merk,warna = symbol

tahun,harga = integer

PREDICATES

mobil(merk,warna,tahun,harga)

CLAUSES

16
/* Fakta */

mobil(mercedez,biru,1975,20).

mobil(mercedez,coklat,1986,50).

mobil(kijang,merah,1990,65).

mobil(baleno,hijau,1997,85).

mobil(bmw,putih,1997,100).

mobil(peugeot,metalic,1999,95).

mobil(kijang,hijau,1987,55).

mobil(honda,hitam,1999,98).

mobil(mazda,hijau,1986,35).

mobil(corolla,merah,2000,97).

mobil(corona,biru,1986,45).

Misal anda ingin mendapatkan informasi tentang mobil yang


harganya diatas 85, Prolog akan mencari padanan sub-goal.

mobil(Merk,Warna,Tahun,Harga)

dengan fakta yang ada dimulai dari fakta pertama, kemudian dilanjutkan
ke sub-goal berikutnya yaitu apakah harganya >85, jika benar maka
prolog akan memunculkan solusi dan diteruskan ke fakta yang lain, jika
tidak benar maka Prolog akan mencari kemungkinan yang lain, dst.
Sehingga diperoleh informasi diinginkan yang merupakan solusi sbb:

Goal: mobil(Merk,Warna,Tahun,Harga),Harga>85

Merk=bmw, Warna=putih, Tahun=1997, Harga=100

17
Merk=peugeot, Warna=metalic, Tahun=1999, Harga=95

Merk=honda, Warna=hitam, Tahun=1999, Harga=98

Merk=corolla, Warna=merah, Tahun=2000, Harga=97

4 Solutions

Anda dapat juga meminta informasi misalnya mobil yang tahunnya


> 1997 dan warnanya merah.

Goal: mobil(Merk,Warna,Tahun,Harga), Warna=merah, Tahun>1997

Merk=corolla, Warna=merah, Tahun=2000, Harga=97

1 Solution

RANGKUMAN

Prolog memiliki 4 struktur inti programnya, yaitu: domain, predikat,


klausa, dan goal. Domain berguna untuk mendefinisikan tiapa-tiap
variable yang akan digunakan dalam program. Predikat adalah suatu
bentuk kata yang membantu dalam penulisan relasi dari subyek-subyek
didalam sebuah system pakar. Kalusa adalah bagian inti dari program
dimana pada baigan ini adalah tempat dituliskannya aturan-aturan (rules)
yang akan menentukan relasi yang ada didalam sebuah program. Terakhir
adalah Goal diamana struktur ini akan bertindak sebagai pencari tujuan
yang diinginkan didalam sebuah program prolog, didalam goal terdapat
variable dan juga goal majemuk, dimana kedua bagian ini akan
membentuk suatu pernyataan yang berguna untuk pencarian jawaban dari
suatu program prolog.

18
TUNTUNAN LATIHAN

Bukalah notepad terlebih dahulu, kemudian ketiklah seperti pada gambar


di bawah ini:

Gambar di atas merupakan sintax atau aturan yang di buat untuk


program silsilah keluarga.

Setelah selesai buatlah nama dari program tersebut dengan nama


pohonkel.pl, kemudian bukalah program SWIprolog dan pilihlah file pada

19
bagian menu bar, kemudian pilih consult, setelah itu muncul jendela
pilihan file prolog yang sudah di buat, pilihlah program tersebut.

Maka akan muncul tampilan seperti ini setelah tidak terjadi error atau
kesalahan:

Kemudian kita masukkan hubungan ataupun silsilah yang ingin kita cari:

20
Dari contoh yang digunakan maka dapat disimpulkan yuda adalah benar
menikahi nia. Jika silsilah atau hubungan yang dicari tidak ada atau salah
maka program akan menyatakannya dengan false.

Keterangan :

Pada penulisan kode program diatas program menyatakan


hubungan-hubungan yang ada didalam silsilah keluarga, sehingga saat
program dijalankan, program ini seperti memiliki pengetahuan yang telah
diinputkan kedalamnya sehingga program dapat mengetahui dengan detil
apakah goal yang user masukkan itu benar atau salah.

LATIHAN

1. Dari program diatas buatlah sturktur pohon berdasarkan aturan-aturan


yang telah dibuat pada code program diatas, dst!

21
2. Definisikanlah struktur program contoh diatas berdasarkan pembagian
pada domain, predikat, klause, dan goal yang ada!
3. Carilah keterhubungan fakta dari aturan-aturan yang ada!

22

Anda mungkin juga menyukai