Anda di halaman 1dari 35

M. Haviz Irfani, S.Si, M.T.

PENGANTAR BAHASA PROLOG


Bahasa PROLOG

Merupakan bahasa pemrograman berjenis “Programming in


Logic”. Dikembangkan oleh Alain Colmerauer 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 (John
McCarthy-1956).
Kegunaan Prolog
Prolog digunakan secara khusus dalam bidang kecerdasan
buatan yang meliputi:
sistem pakar (expert system),
pengolahan bahasa alami(natural language processing),
robotika,
logika dan ketidakpastian,
pengenalan pola dan gambar,
belajar, dan
simulasi pengolahan simbol.
Prolog dan Bahasa Pemrograman lainnya
(1)

Bahasa pemrograman seperti: Basic, Pascal, C, Fortran, Java,


dll disebut sebagai procedural Language.
Diperlukan algoritma atau prosedur-prosedur dalam
memecahkan permasalahan.
Pemrogram harus memberitahu komputer bgm komputer hrs
memecahkan masalah.
Prolog dan Bahasa Pemrograman lainnya
(2)

Prolog disebut sebagai Object-Oriented Language atau


Declarative Language.
Tidak mempunyai prosedur, tetapi mempunyai kumpulan data-
data object (fakta) yang diolah dan direlasikan antar objek
yang membentuk aturan (heuristik).
Prolog dan Bahasa Pemrograman lainnya
(3)
Prolog menentukan Goal (tujuan) dan prolog
menentukan bgm cara mencapainya. Cara dengan
Formal Reasoning (membuktikan cocok tidaknya
tujuan dg data-data yg ada dan relasinya).
Prolog bahasa pemrograman yang tidak terstruktur dan
tidak mempunyai algoritma (prosedur) pemecahan,
serta memecahkan permasalahan Non-Numerik.
Jendela Utama Prolog
Jendela Utama Prolog (1)
Editor: Tempat menuliskan program
Dialog: tempat keluaran hasil eksekusi program, dan
tanyajawab antara prolog dan pemrogram.
Message:tempat tampilan pesan-pesan tentang aktivitas yg
sedang dilakukan prolog seperti load program, save
program, kompilasi serta tampilan pesan kesalahan.
Trace: digunakan waktu proses trace (eksekusi langkah
demi langkah)
Menu Utama Prolog (2)
Files : Penanganan File (load, save dll)
Edit : Menulis program dengan fasilitas editor
Run : Mengkompilasi dan mengeksekusi program
Compile : Hanya mengkompilasi program
Option : mengedit bagian program yg ditulis terpisah,
Compiler Directive dan Option Linker
Setup : memilih warna editor, ukuran jendela, directory.,
dll
Mengubah Jendela
Menggunakan F5 untuk zoom jendela yang aktif.
Untuk kembali semula tekan F5 lagi.

Menggunakan F6 akan mengubah ukuran jendela


dengan arah panah (shift –panah). Tekan Esc
untuk kembali ke menu utama.
Menu Compile
Memory: mengkompilasi program dan hasilnya diletakkan
di memori (sukses/gagal program yg telah dibuat).
Obj File: mengkompilasi dan menciptakan file.
Exe File: mengkompilasi program dan menciptakan file
.OBJ dan .EXE
Project: mengkompilasi potongan program menjadi file
.EXE
Link Only: membuat file .EXE dari file .OBJ yg telah
dibuat sebelumnya.
Menu Option
Map file off: menentukan pada saat kompilasi prolog
menghasilkan .MAP atau tidak
Libraries: mengikutsertakan library
Edit PRJ: mengedit file (modul) yg tergabung dalam
satu project
Compiler directives: menentukan alokasi memori
(code, stack, trail, heap), cek run-time dll.
Menu SetUp
Colors: mengubah warna jendela Edit, Dialog, Message,
Trace, Aux edit dan Pop up menu.
Window size: mengubah ukuran jendela
Directories: mengubah direktori yg aktive.
Miscellaneous: mengubah adapter CGA, modus layar,
konfigurasi keyboard dan help
Load SYS file: memuat file .SYS yg berisi setting
compiler terpadu (warna, direktori ,dll)
Fakta dan Relasi
Prolog terdiri dari kumpulan data-data objek yang merupakan
suatu fakta. Fakta menunjukkan suatu keadaan atau situasi
nyata maka fakta selalu benar.
Contoh fakta: Slamet adalah ayah amin
Dalam bahasa prolog: ayah(slamet, amin).
Ayah menunjukkan relasi.
Contoh lain: Anita adalah seorang mahasiswa.
Dalam bahasa prolog: wanita(anita).
Fakta dibedakan 2 macam :
Menunjukkan relasi.
Menunjukkan milik/sifat.
Penulisannya diakhiri dengan tanda titik “.”
Aturan/Rules
Aturan adalah suatu pernyataan yg menunjukkan fakta-fakta
berinteraksi satu dg yg lain untuk membentuk sebuah
kesimpulan. Sebuah aturan dinyakatakan sebagai suatu kalimat
bersyarat. Kata “if” adalah kata yang dikenal Prolog untuk
menyatakan kalimat bersyarat atau disimbolkan dengan “:-“ .
Contoh: Tino suka jeruk
Aturan: Jojon suka sesuatu yang disukai oleh Tino
Kesimpulan: Jojon suka jeruk.
Dalam prolog:
Fakta: suka(tino,jeruk).
Aturan: suka(jojon,Sesuatu) if suka(tino,Sesuatu).
Atau: suka(jojon,Sesuatu) :- suka(tino,Sesuatu).
Aturan/Rules
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”.
Pertanyaan/Query
Setelah fakta dan aturan di rangkai dalam sebuah
program non prosedural, maka data-data dapat
diberikan melui pertanyaan-pertanyaan.
Penulisannya diawali simbol “?-“ dan diakhiri
tanda “.”.
Contoh Query:
Pertanyaan Prolog dan Jawaban Program
Apakah Tini suka boneka ? ?- suka(tini,boneka).
Yes ……. (jika faktanya Tini suka boneka)
No……..…(jika tidak sesuai fakta).
Apakah yang disukai Tini ? ?- suka(tini,Apa).
Apa=boneka
Siapakah yang suka boneka ? ?- suka(Siapa,boneka).
Siapa=tini
Dari contoh silsilah keluarga
di atas : ?- kakek(Siapa,budi).
Siapakah kakek Budi ? Siapa=slamet
Siapakah cucu Slamet ? ?- kakek(slamet,Cucu).
Cucu=budi ;
Cucu=badu
(jika kemungkinan ada lebih dari satu
jawaban gunakan tanda “;” pada akhir
setiap jawaban).
Struktur Bahasa Prolog

Bagian 1: DOMAINS
Bagian 2: PREDICATES
Bagian 3: GOAL
Bagian 4: CLAUSES
DOMAINS
Berisi deklarasi (pernyataan) jenis data yg digunakan
dalam fakta dan aturan.
Integer(bilangan bulat -32.768 s/d 32.767), Real(E-307
s/d E+308),Char(ex:‘a’,’I’, etc), String(“saya
mahasiswa”, etc), Symbol(saya,tini,contoh_1), dan
File.
PREDICATES
Nama simbolik untuk relasi.
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.
Contoh fakta: ayah(slamet,amin)
Ayah adalah predikat sedangkan slamet dan amin adalah
symbol, dan diakhiri tanpa tanda titik.
PREDICATES
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.
PREDICATES
Contoh :
?- 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.
CLAUSES(Klausa)
Berisi fakta dan aturan yang membentuk keseluruhan
program. Bagian ini mirip sebuah prosedur dalam
bahasa pemrograman prosedural. Pada waktu mencari
jawaban atas pertanyaan yg diberikan, maka prolog
akan memeriksa klausa mulai dari fakta yg paling atas
sampai ke bawah. Kemungkinan yg lebih besar
ditempatkan paling awal daripada kemungkinan yg
lebih kecil.
Contoh CLAUSES
CLAUSES
ayah(mahmud, jamal).
ayah(mahmud,wawan).
ayah(jamal,tukul).
kakek(mahmud,tukul).
GOAL

Berisi pertanyaan yg akan diajukan ke prolog.


Goal dapat terdiri dari beberapa bagian yg
disebut subgoal.
Note: pernyataan, baik fakta, relasi atau goal
dikatkan satu apabila diakhiri tanda titik.
Contoh1:
DOMAINS
x,y = symbol
PREDICATES
suka(x,y)
CLAUSES
SUKA(tono,jeruk).
SUKA(tina,Sesuatu) if suka(tono,Sesuatu).
Contoh2:
DOMAINS
nama = symbol
PREDICATES
ayah(nama,nama)
kakek(nama,nama)
cucu(nama,nama)
saudara_kandung(nama,nama)
CLAUSES
/* Fakta */
ayah(slamet,jamal).
ayah(slamet,wawan).
ayah(jamal,badu).
ayah(jamal,tukul).
ayah(wawan,jojon).
ayah(wawan,tina).
/* aturan */
kakek(Kakek,Cucu) if ayah(Ayah,Cucu) and
ayah(Kakek,Ayah).
cucu(Cucu,Kakek) if ayah(Ayah,Cucu) and ayah(Kakek,Ayah).
saudara_kandung(X,Y) if ayah(Ayah,X) and ayah(Ayah,Y).
Contoh 3:

DOMAINS
nama = symbol
PREDICATES
ayah(nama,nama)
kakek(nama,nama)
sepupu(nama,nama)
cucu(nama,nama)
CLAUSES
/* Fakta */
ayah(slamet,jamal).
ayah(slamet,wawan).
ayah(jamal,badu).
ayah(jamal,tukul).
ayah(wawan,jojon).
ayah(wawan,wani).
/* aturan */
kakek(Kakek,Cucu) if ayah(Ayah,Cucu) and
ayah(Kakek,Ayah).
cucu(Cucu,Kakek) if ayah(Ayah,Cucu) and ayah(Kakek,Ayah).
sepupu(Sepupu,Nama) if kakek(Kakek,Cucu) and ayah(Kakek,Ayah).
Contoh 4:
DOMAINS
nama = symbol
PREDICATES
ayah(nama,nama) kakek(nama,nama)
sepupu(nama,nama) cucu(nama,nama)
saudara_kandung(nama,nama)
CLAUSES
/* Fakta */
ayah(slamet,jamal). ayah(slamet,wawan).
ayah(jamal,badu). ayah(jamal,tukul).
ayah(wawan,jojon). ayah(wawan,tina).
saudara_kandung(jamal,wawan). saudara_kandung(badu,tukul).
saudara_kandung(jojon,tina).
/* aturan */
kakek(Kakek,Cucu) if ayah(Ayah,Cucu) and ayah(Kakek,Ayah).
cucu(Cucu,Kakek) if ayah(Ayah,Cucu) and ayah(Kakek,Ayah).
/* saudara_kandung(jamal,wawan) if ayah(slamet,jamal) and ayah(slamet,wawan).*/
sepupu(X,Y) if saudara_kandung(S1,S2) and ayah(S1,X) and ayah(S2,Y).
Persoalan:
FAKTA */
orang tua */
ayah(slamet,amin). ayah(slamet,anang).
ayah(amin,budi). ayah(amin,badu).
ayah(anang,didi). ayah(anang,dadi).
ayah(santoso,bu_amin). ayah(supardi,bu_anang).
ibu(bu_slamet,amin). ibu(bu_slamet,anang).
ibu(bu_amin,budi). ibu(bu_amin,badu).
ibu(bu_anang,didi). ibu(bu_anang,dadi).
ibu(bu_santoso,bu_amin).
ibu(bu_santoso,bu_anang).
ATURAN */
Kakek adalah kakek Cucu */

kakek(Kakek,Cucu) :-
ayah(Ayah,Cucu),ayah(Kakek,Ayah).
kakek(Kakek,Cucu) :- ibu(Ibu,Cucu),ayah(Kakek,Ibu).
Nenek adalah nenek Cucu */
nenek(Nenek,Cucu) :-ayah(Ayah,Cucu),
ibu(Nenek,Ayah).
nenek(Nenek,Cucu) :-ibu(Ibu,Cucu),
ibu(Nenek,Ibu).
Nama1 adalah saudara kandung Nama2

saudara_kandung(Nama,Name) :-
ayah(Ayah,Nama),ayah(Ayah,Name),ibu(Ibu,Nama),
ibu(Ibu,Name),
Nama \= Name.
 
Sdr1 adalah saudara sepupu Sdr2

saudara_sepupu(Sdr1,Sdr2) :-
ayah(Ayah1,Sdr1),ayah(Ayah2,Sdr2),
saudara_kandung(Ayah1,Ayah2).
saudara_sepupu(Sdr1,Sdr2) :- ayah(Ayah,Sdr1), ibu(Ibu,Sdr2),
saudara_kandung(Ayah,Ibu).
 
saudara_sepupu(Sdr1,Sdr2) :- ibu(Ibu,Sdr1), ayah(Ayah,Sdr2),
saudara_kandung(Ibu,Ayah).
 
saudara_sepupu(Sdr1,Sdr2) :-ibu(Ibu1,Sdr1), ibu(Ibu2,Sdr2),
saudara_kandung(Ibu1,Ibu2).
SELESAI

Anda mungkin juga menyukai