SECTION
- SECTION YANG ADA DI VISUAL PROLOG
1.
Section Dasar Visual Prolog
Secara umum, program Visual Prolog terdiri dari empat section
dasar, yaitu section clauses, section predicates, section domains,
dan terakhir section goal. Berikut akan dijelaskan secara singkat
masing-masing section tersebut.
Section
Clauses
Section clauses merupakan section yang paling penting pada
program Visual Prolog. Pada section inilah kita meletakkan fakta dan aturan.
Ketika mencari jawaban, Visual Prolog akan mencari dari bagian paling atas dari
section clauses, melihat setiap fakta dan aturan untuk mendapat jawaban benar,
hingga ke bagian paling bawah dari section ini.
Section
Predicates
Sebelum mendefinsikan predikat di section clauses, maka
predikat tersebut harus dideklarasikan terlebih dahulu di section predicates.
Kalau tidak, Visual Prolog tidak akan mengenal predikat yang kita tuliskan
tersebut. Ketika mendeklarasikan suatu predikat, kita memberitahu Visual Prolog
domain dari argumen yang dimiliki predikat tersebut.
Visual Prolog mempunyai perpustakaan predikat yang kalau
dipakai tidak perlu dideklarasikan, karena sudah built-in. Untuk melihat
predikat apa saja serta manfaatnya yang ada di perpustakaan Visual Prolog dapat
melihat help dari Visual Prolog (Help | Contents).
Deklarasi Predikat
Deklarasi predikat dimulai dengan nama predikat diikuti tanda
kurung buka, kemudian diikuti nol atau lebih argumen dari predikat (setiap
argumen dipisah dengan tanda koma) kemudian ditutup dengan tanda kurung tutup,
seperti:
PredicatName(tipe_argumen1,
tipe_argumen2,...,tipe_argumenN)
dan
tidak seperti section clauses, deklarasi predikati tidak perlu diakhiri tanda
titik.
Nama
Predikat
Nama predikat harus
dimulai dengan huruf diikuti dengan serangkaian huruf, angka dan atau garis
bawah (underscore). Walaupun bisa dimulai huruf besar, namun sangat
direkomendasikan untuk memakai huruf kecil diawal nama predikat (beberapa versi
Prolog yang lain tidak memperbolehkan nama predikat diawali huruf besar).
Panjang nama predikat bisa sampai 250 karakter. Contoh penamaan predikat :
Nama
predikat yang legal
|
Nama
predikat yang ilegal
|
Fakta
|
[fakta]
|
polaTingkahLaku
|
Pola-Tingkah-Laku
|
pemandangan_indah
|
*pemandangan_indah*
|
pilih_Menu_Utama
|
Pilih
Menu Utama
|
Argumen
predikat
Argumen predikat harus yang sudah dikenal oleh domain Visual
Prolog. Suatu domain bisa merupakan domain standar atau bisa juga domain yang
sudah dideklarasikan pada section domains. Contohnya, jika
dideklarasikan suatu predikat predikat_ku(symbol, integer) pada section predicates
seperti ini:
PREDICATES
predikat_ku(symbol,
integer)
maka tidak perlu lagi mendeklarasikan domain dari argumen
pada section domains, karena symbol dan integer adalah standar domain.
Namun jika ingin mendeklarasikan predikat_ku(nama, nomor) seperti ini:
PREDICATES
predikat_ku(nama,
nomor)
maka
dibutuhkan deklarasi dari domain nama dan nomor, seperti ini:
DOMAINS
nama = symbol
nomor = integer
PREDICATES
predikat_ku(nama, nomor)
Section
Domains
Section domains mempunyai 2 manfaat utama, yaitu pertama,
kita dapat memberikan nama yang berarti untuk domain, walaupun secara internal
domain tersebut sama tipenya dengan domain yang telah ada; yang kedua, kita
dapat mendeklarasi domain khusus yang digunakan untuk mendeklarasikan struktur
data yang tidak didefinisikan oleh standar domain. Dengan mendeklarasikan
domain juga dapat mencegah kesalahan logika pada program. Contoh:
DOMAINS
nama, gender = symbol
umur = integer
PREDICATES
orang(nama, jender,
umur)
Keuntungan utama dari deklarasi di atas adalah Visual Prolog
dapat mendeteksi adanya kesalahan, jika menuliskan aturan seperti ini:
gender_sama(X,Y):-
orang(X, Sex, _),
orang(Sex, Y, _).
Walaupun nama dan jender sama-sama didefinsikan sebagai symbol,
namun keduanya tidak ekivalen. Visual Prolog akan mendeteksi kesalahan
tersebut, karena kita mencoba menukar keduanya.
Section
Goal
Secara esensial, section goal sama dengan body dari
sebuah aturan (rule), yaitu sederetan sub-sub goal. Perbedaan antara
section goal dengan suatu aturan adalah setelah kata kunci goal tidak
diikuti tanda :- dan Visual Prolog secara otomatis mengeksekusi goal ketika
program dijalankan.
Jadi
program Visual Prolog mempunyai struktur dasar sebagai berikut:
2.
Section Program Lainnya.
Ada beberapa section lainnya yang digunakan di Visual Prolog
yaitu section facts, section constants, dan section global.
Kali ini akan dibahas secara singkat ketiga section tersebut sebagai
perkenalan. Section facts akan dibahas lebih mendalam pada modul yang
lain.
Section
Facts
Program Visual Prolog merupakan suatu koleksi dari sekumpulan
fakta dan aturan. Kadang ketika program sedang berjalan, kita ingin meng-update
(merubah, menambah, atau menghapus) beberapa fakta dari program. Pada kasus
ini fakta menjadi suatu database yang dinamis atau database internal, dan fakta
tersebut dapat berubah ketika program sedang berjalan. Visual Prolog
menyediakan section khusus untuk mendeklarasikan fakta di program yang menjadi
bagian dari database dinamis, yaitu section facts.
Kata kunci facts untuk memulai section facts.
Visual Prolog menyediakan sejumlah predikat built-in yang mempermudah
penggunaan section fakta dinamis ini. Kata kunci facts dapat digantikan
dengan kata kunci database, untuk maksud yang sama.
Section
Constants
Konstanta simbolis dapat digunakan di program Visual Prolog.
Untuk itu sebelumnya harus dideklarasikan terlebih dahulu. Deklarasi konstanta
diakukan pada section constants, diikuti dengan deklarasi menggunakan
sintak:
<id> =
<Macro_definition>
<id> adalah nama dari konstanta simbolis dan
<Macro_definition> adalah apa yang akan diisikan (assign) kedalam
konstanta. Setiap <Macro_definition> diakhiri dengan baris baru. Dengan
demikian hanya ada satu deklarasi konstanta pada tiap barisnya. Contoh:
CONSTANT
nol = 0
satu = 1
dua = 2
ratus = (10*(10-1)+10)
pi = 3.121592653
Sistem tidak membedakan antara huruf besar dan huruf kecil
pada deklarasi suatu konstanta. Konsekuensinya, ketika suatu pengenal konstanta
digunakan pada section clauses pada program, huruf pertama harus huruf
kecil untuk mencegah kerancuan antara konstanta dan variabel. Berikut ini
merupakan contoh yang valid:
CONSTANTS
Dua = 2
GOAL
A=dua, write(A).
Deklarasi section constants bisa lebih dari satu kali
dalam program, namun deklarasi suatu konstanta harus dilakukan sebelum
konstanta itu digunakan pada section yang lain. Suatu konstanta hanya boleh
dideklarasikan satu kali, dan jika ada deklarasi lain untuk konstanta yang sama
maka akan terjadi kesalahan.
Section
Global
Visual Prolog memperbolehkan untuk mendeklarasikan beberapa
domain, predikat dan klausa menjadi global (daripada hanya lokal). Caranya
dengan menset secara terpisah section global domains, global
predicates, dan global facts pada bagian paling atas dari program.
Modul ini bukan tempatnya untuk membahas secara detail mengenai section global.
3.
Compiler Drectives
Visual Prolog mendukung compiler directives yang dapat
ditambahkan ke badan program untuk memberitahukan ke komputer bagaimana secara
spesifik memperlakukan kode-kode waktu di-compile. Untuk menset compiler
directives sebagian besar dilakukan melalui menu Options | Project |
Compiler Options. Modul ini tidak akan membahas secara detil mengenai compiler
directives, namun akan memperkenalkan salah satu diantaranya yaitu include
directive.
Kalau sudah terbiasa membuat program menggunakan Visual
Prolog, seringkali kita memakai suatu prosedur tertentu berulang kali, sehingga
setiap kali membuat program baru dan menggunakan prosedur tersebut, prosedur
tersebut harus diketikkan kembali. Untuk menghemat waktu, maka dapat digunakan include
directive. Contohnya:
-
Buatlah file (misalnya MYPROC.PRO) yang
berisikan deklarasi predikat yang sering digunakan (menggunakan section domains
dan section prtedicates ) dan menuliskan prosedur yang didefinisikan
pada predikat di section clauses.
-
Buat program baru dan tuliskan kode:
include “myproc.pro”
di
tempat di mana biasa dituliskan section domains, facts, predicates, clauses atau
goal.
Ketika
program di-compile, Visual Prolog juga akan meng-compile isi dari
file MYPROC.PRO.
4.
Aritas jamak (multiple arity)
Aritas (arity) suatu predikat adalah jumlah argumen
yang ada pada predikat tersebut. Visual Prolog memperbolehkan kita mempunyai 2
atau lebih predikat dengan nama yang sama namun dengan aritas yang berbeda.
Aritas yang berbeda dari nama predikat yang sama harus dikelompokkan bersama
baik pada section predicates maupun pada section clauses.
Perbedaan aritas oleh Visual Prolog akan diperlakukan secara berbeda pula.
Contoh:
DOMAINS
orang = symbol
PREDICATES
ayah(orang) % orang ini adalah seorang ayah
ayah(orang, orang) % orang 1 adalah ayah bagi yg ke-2
CLAUSES
ayah(Seseorang):-
ayah(Seseorang, _).
ayah(erwin, diena).
ayah(erwin, latifah).
5.
Sintak Aturan (Rule
Syntax)
Rule pada Prolog adalah ketika kebenaran sebuah fakta tergantung pada
kesukesan (kebenaran) dari satu atau lebih fakta yang lain. Seperti yang telah
dijelaskan pada modul sebelumnya aturan terdiri dari 2 bagian yaitu head dan
body. Berikut ini merupakan aturan generik penulisan sintak rule pada
Visual Prolog:
HEAD:- <subgoal>, <subgoal>, ..., <subgoal>.
Bagian body dari rule terdiri
dari satu atau lebih subgoal. Setiap subgoal dipisahkan oleh koma,
menspesifikasikan konjungsi, dan subgoal terakhir diakhiri dengan tanda titik.
Untuk membuat suatu Rule dikatakan
sukses (benar), Prolog harus memeriksa kebenaran dari setiap subgoal yang ada
pada aturan tersebut. Jika ada subgoal yang gagal (salah), Prolog akan kembali
ke atas dan mencari alternatif bagi subgoal yang paling awal, kemudian kembali
memproses dengan nilai variabel yang berbeda. Ini dinamakan lacakbalik (backtracking).
Penjelasan yang lebih rinci mengenai lacakbalik akan diberikan pada modul yang
lain.
6.
Konversi Tipe Otomatis
(Automatic Type Conversions)
Ketika Visual Prolog mencocokkan 2
variabel, keduanya tidak selalu berasal dari domain yang sama. Juga kadang
variabel diikat (bound) menjadi konstan dari domain lain. Percampuran
domain ini diperbolehkan karena Visual Prolog melakukan konversi tipe otomatis
dengan syarat konversi bisa terjadi bila:
-
Antara strings dan symbols.
-
Antara semua domain integer
dan juga real. Ketika suatu karakter (char) dikonversikan ke
nilai numeris, angka nilai ASCII dari karakter tersebut yang digunakan.
This comment has been removed by a blog administrator.
ReplyDelete