SECTION - SECTION YANG ADA DI VISUAL PROLOG

Posted by TUTORIAL PEMROGRAMAN on Friday, 4 December 2015

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.


Blog, Updated at: 02:45

1 comments:

Search This Blog

Popular Posts