gravatar

Bahasa Prolog



A. Sejarah Prolog

·Prolog singkatan dari Programming in Logic.
·Dikembangkan oleh  Alain Colmenraurer dan P.Roussel di Universitas Marseilles Perancis, tahun1972.
·Prolog populer di Eropa untuk aplikasi artificial intelligence, sedangkan di Amerika peneliti mengembangkan aplikasi yang sama, yaitu LISP.

B. Perbedaan Prolog dengan Bahasa Lainnya
Bahasa Pemrograman yang Umum (Basic, Pascal, C, Fortran):
1.Diperlukan algoritma/prosedur untuk memecahkan masalah (procedural languange)
2.program menjalankan prosedur yang sama berulang-ulang dengan data masukan yang berbeda-beda.
3.Prosedur dan pengendalian program ditentukan oleh programmer dan perhitungan dilakukan sesuai dengan prosedur yang telah dibuat.
Bahasa Pemrograman Prolog :
1.Object oriented languange atau declarative languange.
2.Tidak terdapat prosedur, tetapi  hanya kumpulan data-data objek (fakta) yang akan diolah, dan relasi antar objek tersebut membentuk aturan yang diperlukan untuk mencari suatu jawaban
3.Programmer menentukan tujuan (goal), dan komputer menentukan bagaimana cara mencapai tujuan tersebut serta mencari jawabannya.
4.Dilakukan pembuktian terhadap cocok-tidaknya tujuan dengan data-data yang telah ada dan relasinya.
5.Prolog ideal untuk memecahkan masalah yang tidak terstruktur, dan prosedur pemecahannya tidak diketahui, khususnya untuk memecahkan masalah non numerik.
6.Prolog bekerja seperti pikiran manusia, proses pemecahan masalah bergerak di dalam ruang masalah menuju suatu tujuan (jawaban tertentu). Contoh : Pembuatan program catur denganProlog.

Dalam buku petunjuk praktikum  ini digunakan program Turbo Prolog untuk melengkapi pembahasan pemrograman logika dengan Prolog. Turbo prolog mirip dengan Turbo Pascal, Turbo C, dan sejenisnya. Tampilannya terbagi menjadi empat jendela yaitu editor, dialog, message, dan trace. Jendela editor sebagai tempat untuk menyunting program, sedangkan dialog tempat menuliskan goal dan menampilkan hasil query. Pesan-pesan error, compiler, running, dan lain-lain ditampilkan di dalam jendela message, sedangkan trace sebagai tempat untuk menelusuri jalannya program. Secara umum, suatu program Prolog terdiri dari beberapa kelompok, yaitu domains, predicates, clauses, goal. Masing-masing bagian akan diuraikan pada bagian berikut.

A. DOMAINS
Domain dalam Prolog seperti type dalam Pascal, yaitu untuk menyatakan jenis variable atau argumen, misalnya:
domains
kota = symbol
alamat = string
list = symbol*
Ada lima domain baku di dalam Prolog, yaitu:
1. char, karakter tunggal yang diapit oleh tanda kutip tunggal: ‘a’, ‘b’, ‘\13’.
2. integer, bilangan bulat antara –32768 hingga 32767. Notasi $ digunakan untuk menunjukkan bilangan heksa.
3. real, bilangan nyata antara 1x10 –307 hingga 1 x 10 308.
4. string, deretan karakter yang diapit oleh tanda kutip dobel, misalnya “ipb”.
5. symbol, rangkaian karakter yang diawali dengan huruf kecil da tanpa tanda apa pun.

Disamping itu terdapat domain lainnya yang tidak baku, di antaranya adalah:
1. domain file, yang digunakan untuk memberi nama file secara simbolik seperti contoh berikut:
file = <nama file simbolik 1> ; <nama file simbolik 2> ; …..
2. Domain list, digunakan untuk menyatakan list (linked list) dimana elemen pertama mempunyai pointer ke elemen kedua dan seterusnya. Deklarasi list ini dapat dituliskan dengan bentuk:
<nama list> = <domain>*
list_simbol = symbol*

B.  Fakta dan Relasi
Prolog terdiri dari kumpulan data-data objek yang merupakan suatu fakta. Fakta dibedakan 2 macam :
o    Menunjukkan relasi.
o    Menunjukkan milik/sifat.
-    Penulisannya diakhiri dengan tanda titik “.”
-    Contoh :
Tabel. 1.1 Contoh Fakta dalam Prolog


C. Aturan
 Aturan adalah suatu pernyataan yang menunjukkan bagaimana fakta-fakta berinteraksi satu dengan yang lain untuk membentuk suatu kesimpulan. Sebuah aturan dinyakatakan sebagai suatu kalimat bersyarat. Kata “if” adalah kata yang dikenal Prolog untuk menyatakan kalimat bersyarat atau disimbolkan dengan “:-“.
Contoh :
Tabel 1.2 Contoh Aturan dalam Prolog
Setiap aturan terdiri dari kesimpulan(kepala) dan tubuh. Tubuh dapat terdiri dari 1 atau lebih pernyataan atau aturan yang lain, Disebut subgoal dan dihubungkan dengan logika “and”. Aturan memiliki sifat then/if conditional “Kepala(head) benar jika tubuh (body) benar”.
 Contoh : Silsilah keluarga :
Gambar 1.1 Contoh Aturan yang memiliki sifat kondisonal


D. Pertanyaan (“Query”)
Setelah memberikan data-data berupa fakta dan aturan, selanjutnya kita dapat mengajukan pertanyaan berdasarkan fakta dan aturan yang ada. Penulisannya diawali simbol “?-“ dan diakhiri tanda “.”.

E.  Predikat (“Predicate”)

Predikat adalah nama simbolik untuk relasi. Contoh :   ayah(slamet,amin).  Predikat dari fakta tersebut ditulis :  ayah(simbol,simbol). Dimana ayah adalah nama predikat, sedangkan slamet dan amin adalah menujukkan argumen.
Sebuah predikat dapat tidak memiliki atau memiliki argumen dengan jumlah bebas. Jumlah argumen suatu predikat disebut aritas (arity). ayah(nama)   …… aritas-nya 1 ayah(nama1,nama2) ….. aritasnya 2.  Syarat-syarat penulisan nama predikat :
·         Harus diawali dengan huruf kecil dan dapat diikuti dengan huruf, bilangan atau garis bawah.
·         Panjang nama predikat maksimum 250 karakter.
·         Tidak diperbolehkan menggunakan spasi, tanda minus, tanda bintang dan garis miring.

F. Variabel
Varibel adalah besaran yang nilainya dapat berubah-ubah. Tata cara penulisan variabel :
·         Nama varibel harus diawali huruf besar atau garis bawah(_)
·         Nama variabel dapat terdiri dari huruf, bilangan, atau simbol dan merupakan kesatuan dengan panjang maksimum 250 karakter.
·         Nama variabel hendaknya mengandung makna yang berkaitan dengan data yang dinyatakannya.
Contoh : dari silsilah di atas :
?-ayah(slamet,Anak).
Anak=budi;
Anak=badu
No
Dari query di atas akan dicari siapakah anak dari ayah yang bernama Slamet. Karena mempunyai relasi yang sama (yaitu ayah), variabel Anak akan mencari nilai dari konstanta suatu fakta/aturan yang sepadan. Tanda “;” digunakan bila terdapat kemungkinan ada lebih dari satu jawaban. “No” berarti tidak ada lagi kemungkinan jawaban.
Contoh : dari silsilah di atas :
?-ayah(slamet,X),ayah(X,Y).
     
X=amin   
Y=budi;          
X=amin          
Y=badu;          
X=anang          
Y=didi;          
X=anang       
Y=didi
          
No

Contoh Program : Kasus Silsilah Keluarga

Listing 1.1. Contoh Program silsilah Keluarga



Tugas Praktikum :
a.       Coba ketik program di atas dengan bahasa prolog. Caranya :
1.      Run Program Prolog
2.      Akan muncul menu editor Prolog
3.      Untuk menulis sintaks Program tulis pada window editor
4.      Ketik semua program di atas (listing 1.1)
5.      Run Program dengan menekan tombol Alt + R
6.      Perhatikan kursor akan muncul pada window Run. Contoh : goal>
7.      Ketik : ayah(X,slamet) atau ayah(amin,X). Tekan tombol Enter .
8.      Perhatikan apa yang terjadi…?
Tugas : Cobalah beberapa query(minimal 3 query). Catatlah hasilnya. (nilai 20).

b.         Berdasarkan listing 1.1 cobalah kembangkan programnya, bila ditambahkan faktaya kakek,anak atau istri. (nilai 30)
c.          Cobalah coding pada listing 1.2  dan listing 1.3 berikut ini, jalankan program tersebut dengan memberikan goal sebagai berikut :
1.      Query 1 : ukuran(Z,besar).
2.      Query 2 ; warna(Z,coklat).

Setelah Anda mencoba query – query tersebut, cobalah untuk menambahkan fakta baru pada program terebut. Pada predicates tambahkan jenis(symbol,symbol) dan pada clauses  tambahkan jenis(beruang,karnivora)dan pada goal tambahkan jenis(Z,karnivora).(nilai 30).
predicates
ukuran(symbol, symbol)
warna(symbol,symbol)
gelap(symbol)
clauses
ukuran(beruang,besar).
ukuran(gajah,besar).
ukuran(kucing,kecil).
warna(beruang,coklat).
warna(kucing,hitam).
warna(gajah,kelabu).
gelap(Z):-warna(Z, hitam).
gelap(Z):-warna(Z,coklat).
goal
clearwindow,
gelap(Z), ukuran(Z,besar), write(Z).

Listing 1.3 Contoh Program struktur prolog

d.      Cobalah coding pada listing 1.3 berikut ini. (nilai 20):

Listing 1.3 Contoh Program Faktorial dalam Prolog





Setelah selesai coba jalankan dengan memberikan query sebagai berikut :

1)       Query 1 :  factorial(5,fac2).

         Fac2=120 à 1 Solution

2)      Query 2 :  factorial(3,fac4).

         Fac4=6 à 1 Solution

3)       Query 3 : factorial(3,6). 

         true à 1 Solution



4)       Query 4 : factorial(5,2). 

         false à 1 Solution

Artikel Terkait by Categories



Oleh Mustafa
Bagikan
gravatar

sangat bermampaat
www.uma.ac.id

.

.

MustafaRizaldi

IsLam

Tentang Islam