Anda di halaman 1dari 10

BAB 1 LINGKUNGAN VISUAL PROLOG (VISUAL PROLOG ENVIRONMENT, VPE)

A. PEMBAHASAN Visual Prolog Environment (VPE) merupakan sistem pemrograman dimana bahasa logika digunakan sebagai bahasa pemrograman. Program ini dirancang untuk membantu seorang programmer agar mudah, nyaman, dan cepat dalam membangun, menguji, dan memodifikasi suatu aplikasi atau program yang ditulis dalam Visual Prolog. Pada dasarnya, sistem kerja prolog adalah user menginputkan deskripsi masalah yang dituliskan dalam bentuk bahasa prolog. Kemudian prolog menterjemahkan dan melakukan penelusuran secara logika untuk menemukan jawaban dari masalah tersebut. Untuk membuka jendela editor yang baru yaitu dengan menggunakan perintah File | New. Setelah itu akan muncul jendela editor baru dengan nama NONAME. Pengujian program yang telah dibuat pada editor tersebut adalah pada baris kode GOAL. Apabila baris tersebut telah cukup syarat untuk menjadi program yang bisa dieksekusi, aktifkan item menu Project | Test Goal atau cukup dengan menekan tombol akselerator Ctrl+G. Hasil eksekusi akan ditmapilkan pada jendela yang berbeda yang harus ditutup jika akan menguji GOAL lainnya. Apabila programmer membuat kesalahan dalam menuliskan kode Visual Prolog, maka VPE akan menampilkan jendela kesalahan dimana pada jendela tersebut akan ditampilkan daftar kesalahan yang dibuat. Untuk mengetahui kesalahan tersebut dengan cepat, programmer dapat men-double klik kesalahan tersebut agar kursor beralih ke posisi dimana kesalahan tersebut dibuat. Dalam praktek, program dibagi menjadi 3 section yaitu PREDICATES, CLAUSES, dan GOAL. a. PREDICATES merupakan section dalam program yang berfungsi untuk

mendeklarasikan tipe suatu data, misal String, integer, dll. b. CLAUSES adalah section program yang merupakan tempat dimana semua data yang berupa fakta yang ada kita deklarasikan, misal : putra(Ikhsan,Bentang). Tanda petik dua pada nama menandakan bahwa data tersebut bertipe String. Jika data tersebut bertipe symbol maka data nama yang ada tidak perlu menggunakan tanda petik dua. c. GOAL merupakan section yang digunakan untuk mencetak hasil output yang dicari. Keywoard nondeterm pada PREDICATES yang mendahului predikat ipar_perempuan berfungsi untuk memberitahu ke compiler VPE bahwa predikat tersebut memiliki lebih dari satu kemungkinan jawaban (non0deterministik). Sehingga secara default VPE 1

akan mengaggap predikat yang ada di section facts ( berupa fakta ), merupakan kebalikannya.

Dalam pemrogaman VPE, cara membaca suatu fakta adalah dengan cara membaca object kiri kemudian predikat kemudian baru membaca object kanan. Misal data : putra(Ikhsan,Bentang). cara membacanya adalah Ikhsan putra Bentang. Pada CLAUSES terdapat data ayah(A,B):- putra(B,A). cara membacanya adalah A ayah B jika B putra A. Ini merupakan data yang digunakan untuk mendeklarasikan / memperupamakan keterkaitan antara data (orang) yang satu dengan yang lainnya sehingga data tersebut mengarahkan kita kepada rule yang sesuai dengan GOAL yang kita cari.

B. TUGAS 1. Menyisipkan kode putra("Bentang","Genta"). dibawah kata CLAUSES dan memberikan GOAL kakek("Genta",cucu).
PREDICATES putra(STRING,STRING) saudara_perempuan(STRING,STRING) saudara_laki(STRING,STRING) menikah(STRING,STRING) ayah(STRING ayah, STRING putra) kakek(STRING kakek, STRING cucu) nondeterm ipar_perempuan(STRING,STRING) CLAUSES putra("Bentang","Genta"). putra("Ikhsan","Bentang"). saudara_perempuan("Dini","Dina"). saudara_laki("Adi","Lintang"). menikah("Ikhsan","Dini"). menikah("Lintang","Surga"). ayah(A,B):-putra(B,A). kakek(A,B):-ayah(A,C), ayah(C,B). ipar_perempuan(A,B):-menikah(A,C), saudara_perempuan(C,B). ipar_perempuan(A,B):-saudara_laki(A,C), menikah(C,B).

GOAL kakek("Genta",cucu).

UJI GOAL :

2. Tombol-tombol akselerator untuk perintah-perintah : a. Copy b. Cut c. Paste d. Delete e. Redo f. Undo Ctrl + C Ctrl + X Ctrl + V Alt + Del Alt + Shift + Backspace Alt + Backspace F7 F8 F2 Alt + X

g. New h. Open i. j. Save Exit

k. Test goal Ctrl + G 3. Menghilangkan kata nondeterm pada baris predicate ipar_perempuan UJI GOAL :

SEBAB : Keywoard nondeterm pada PREDICATES yang mendahului ipar_perempuan berfungsi untuk memberitahu compiler Visual Prolog bahwa predikat tersebut memiliki lebih dari satu kemungkinan jawaban (non-deterministik). Sehingga secara default Visual Prolog akan menganggap predikat yang ada di section PREDICATES sebagai deterministik, kecuali section facts (berupa fakta), merupakan kebalikannya.

C. LISTING

BAB 2 DASAR-DASAR PROLOG

A. PEMBAHASAN Pemrograman Logika / Prolog dikenal sebagai bahasa deskriptif, yang berarti dengan diberikan serangkaian fakta-fakta dan aturan-aturan. Dengan menggunakan cara berpikir dedukatif, Prolog dapat menyelesaikan permasalahan suatu program. Logika predikat dibangun agar mudah menerjemahkan ide-ide berbasis logika menjadi bentuk tertulis. Dalam logika predikat, pertama kali harus membuang semua kata-kata yang tidak dibutuhkan dari suatu kalimat. Kemudia mentransformasi kalimat tersebut dengan mencari relasi terlebih dahulu, lalu melakukan pengelompokan object. Object kemudian menjadi argumen dari relasi atas object tersebut. Contohnya : Bahasa Natural Mawar berwarna merah Yudi menyukai mobil Angel suka soto jika soto rasanya enak Logika Predikat merah(mawar) suka(yudi,mobil) Suka(angel,soto) if enak(soto)

Dalam prolog, relasi antara object-object dinamakan predikat. Suatu fakta memiliki nama relasi diikuti object atau object-object didalam tanda kurung. Sebagaimana kalimat, fakta juga diakhiri dengan tanda titik (.). fakta juga bisa mengekspresikan sifat dari suatu object sebagaimana suatu relasi. Sedangkan aturan adalah suatu konklusi diketahui benar jika satu atau lebih konklusi atau fakta lain ditemukan benar. Simbol :- diucapkan dengan jika dan memisahkan dua bagian dari aturan yanitu head dan body.

Pada

program,

sintak

dapat_membeli(symbol,symbol),

orang(symbol),

mobil(symbol) merupakan sintak data yang memiliki jawaban lebih dari 1. Tipe data yang digunakan merupakan tipe data symbol. Tipe data ini dalam penulisan objectnya tidak perlu menggunakan tanda petik dua () seperti jika kita menggunakan tipe data string. Pada clauses, sintak dapat_membeli(X,Y):- merupakan sintak yang digunakan untuk mendeklarasikan GOAL supaya hasilnya sesuai dengan yang kita inginkan. Sedangkan sintak orang(X), mobil(Y), suka(X,Y), dijual(Y) merupakan sintak lain yang bertujuan untuk memudahkan visual prolog mencari GOAL. Sintak orang(nur) merupakan sintak yang mendeklarasikan object nur dan predikat orang. Sesuai dengan tipe datanya, object nur ditulis tanpa menggunakan tanda petik dua, begitu juga object-object lain selain nur. Jika sintka ditambah dengan suka(heni,kijang) maka GOAL yang dihasilkan menjadi 2 goal. Hal ini karena dalam

clauses, sintak dapat_membeli(X,Y) dan sintak pendeklarasiannya menunjukkan adanya data yang bisa diolah selain hasil goal seperti yang pertama. Jika GOAL diganti : a. suka(_,Apa). Sintak ini akan mengarahkan soal kepada semua object yang disukai oleh object sebelah kiri. Contoh : object kiri adalah dian, maka proses secara otomatis akan menjawab atoz.

b. suka(Siapa,_). Sintak ini akan mengarahkan goal kepada semua object yang menyukai object sebelah kanan. Contoh : object kanan : pecel, maka prolog secara otomatis menjawab yudi. Hal ini karena prolog tahu bahwa yudi-lah yang suka pecel. c. dapat_membeli(_,Apa). Sintak ini mengarahkan goal kepada object kanan yang dapat membeli object kiri dimana object kiri memenuhi syarat. Contoh : object kiri : dian, maka jawabannya adalah atoz.

Buku tidak ditampilkan meskipun buku dijual karena syarat tidak memenuhi, yaitu dalam fakta buku tidak tersedia. d. dapat_membeli(Siapa,_). Sintak ini mengarahkan goal kepada object kiri yang dapat membeli object kanan. Contoh : object kanan : kijang, maka jawabannya adalah heni. Hal ini karena prolog tahu bahwa kijang dapat dibeli oleh heni.

Maka dari itu, jika kita menginginkan GOAL hanya mendeklarasikan object yang kiri atau kanan maka kita hanya perlu memberi tanda underscot (_). Dengan begitu object yang diberi underscot tidak akan ditampilkan oleh prolog.

B. TUGAS 1. Mengubah bahasa prolog menjadi bahasa manual : a. orang(dian). b. mobil(atoz). c. suka(dian, atoz). d. dijual(atoz).
e. dapat_membeli(X,Y):orang (X), mobil (Y), suka (X,Y), dijual (Y).

Dian adalah nama orang. Atoz adalah nama mobil. Dian menyukai atoz. Atoz dijual.

X dapat membeli Y jika X adalah orang dan Y adalah mobil dan X menyukai Y dan Y dijual. f.
suka(_,Apa).

Setiap orang menyukai apa?

2. Mengubah bahasa natural menjadi bahasa prolog : a. Ricky mempunyai hobi bermain catur. hobi(ricky,renang). b. Embang orangnya pemalas. orang(embang,pemalas). c. Yusida seorang vegetarian. seorang(yusida,vegetarian). d. Kusdiar pandai bermain gitar. pandai(kusdiar,gitar). e. Mobil yang berwarna merah itu milikk Sadek, bermerk BMW. milik(mobil,sadek):- merah(mobil), BMW(mobil). f. Awan seorang pemain piano, berasal dari Pontianak bersuku Jawa. pemain(awan,piano), asal(awan,pontianak), suku(awan,jawa). g. Seseorang dikatakan baik jika mempunyai sifat penyayang dan dermawan. orang(_,baik) :- sifat(orang,penyayang), sifat(orang,dermawan). h. Seseorang dikatakan pintar jika salah satu dari Matematika atau IPA atau IPS mendapat nilai tinggi. i. Setiap orang pasti mati. mati(_).

3. Mengubah bahasa prolog menjadi bahasa manual : a. Program untuk mencari cucu.
PREDICATES nondeterm anak(symbol,symbol) istri(symbol,symbol) pria(symbol) nondeterm wanita(symbol) usia(symbol,integer) nondeterm cucu(symbol,symbol) CLAUSES cucu(X,Y) :anak(X,Z), anak(Z,Y). cucu(X,Y):anak(X,W), istri(W,Z), anak(Z,Y). anak(jhon,james). anak(james,peter). anak(sue,ann). istri(mary,peter). istri(ann,james). pria(jhon). pria(james). pria(peter). wanita(mary). wanita(sue). wanita(ann). usia(john,10). usia(sue,13). GOAL cucu(X,Y).

UJI GOAL :

b. Program untuk mencari ibu.


PREDICATES nondeterm anak(symbol,symbol) istri(symbol,symbol) pria(symbol) nondeterm wanita(symbol) usia(symbol,integer) nondeterm ibu(symbol,symbol) CLAUSES ibu(X,Y):anak(Y,Z), wanita(X),

pria(Z), istri(X,Z). ibu(X,Y):anak(Y,X), wanita(X). anak(jhon,james). anak(james,peter). anak(sue,ann). istri(mary,peter). istri(ann,james). pria(jhon). pria(james). pria(peter). wanita(mary). wanita(sue). wanita(ann). usia(john,10). usia(sue,13). GOAL ibu(Siapa,Ibunya).

UJI GOAL :

c. Program untuk mencari adik.


PREDICATES nondeterm anak(symbol,symbol) istri(symbol,symbol) pria(symbol) nondeterm wanita(symbol) usia(symbol,integer) nondeterm adik(symbol,symbol) CLAUSES adik(X,Y) :usia(X,10), usia(Y,13). anak(jhon,james). anak(james,peter). anak(sue,ann).

istri(mary,peter). istri(ann,james). pria(jhon). pria(james). pria(peter). wanita(mary). wanita(sue). wanita(ann). usia(john,10). usia(sue,13). GOAL adik(X,Y).

UJI GOAL :

d. Program untuk mencari kakek.


PREDICATES nondeterm anak(symbol,symbol) istri(symbol,symbol) pria(symbol) nondeterm wanita(symbol) usia(symbol,integer) nondeterm kakek(symbol,symbol) CLAUSES kakek(X,Y) :anak(Z,X), anak(Y,Z). kakek(X,Y):anak(Y,W), istri(W,Z), anak(Z,X). anak(jhon,james). anak(james,peter). anak(sue,ann). istri(mary,peter). istri(ann,james). pria(jhon). pria(james). pria(peter). wanita(mary). wanita(sue). wanita(ann).

usia(john,10). usia(sue,13). GOAL kakek(X,Y).

UJI GOAL :

C. LISTING

Anda mungkin juga menyukai