Anda di halaman 1dari 8

1.

Sejarah dan Pengertian PROLOG

Sejarah dan Pengertian Prolog Pernahkan anda melihat atau mendengar perkataan Prolog? Prolog
adalah singkatan daripada PROgramming in LOGic. Prolog merupakan satu ide yang dicetuskan pada
awal 1970an untuk menggunakan logika sebagai bahasa pemprograman. Mereka yang
bertanggungjawab dalam pengembangan ide ini ialah Robert Kowalski dari Edinburgh dalam aspek teori
dan Colmerauer dari Marseilles dalam aspek implementasi.’

Kapankah bahasa Prolog sesuai untuk digunakan? Prolog biasanya dikaitkan dengan berlogika dan
merupakan bahasa pemprograman untuk perhitungan simbolik dan tak-berangka. Prolog paling sesuai
untuk menyelesaikan masalah yang berkaitan dengan objek dan hubungan antara objek, masalah
persamaan corak, masalah penjejakan ke belakang dan masalah yang informasinya tidak lengkap.

Algoritma dalam Prolog terdiri dari logika dan kontrol. Logika merupakan fakta dan peraturan yang
menerangkan apa yang seharusnya dilakukan oleh algoritma. Sedangkan kontrol merupakan cara
algoritma bisadiimplementasikan dengan menggunakan peraturan. Sintaks yang dibentuk dalam Prolog
adalah dalam bentuk klausa atau formula First Order Predicate Logic

2. Perbedaan Prolog dengan Pemrograman Konvensional

Pemrograman Prolog Pemrograman Konvensional


Pemrogram menafsirkan APA masalah yang Pemrogram mengarahkan BAGAIMANA
hendak diselesaikan menggunakan logika. komputer dapat menyelesaikan masalah.
Komputer menghasilkan urutan arahan Sistem mengaplikasikan peraturan logika,
mengikuti aturan yang ditentukan oleh deduksi dan persamaan dalam menyelesaikan
pemrogram. suatu masalah.

3. Instalasi SWI Prolog

SWI – Prolog merupakan salah satu IDE yang terkenal bahasa Prolog. Sebelum memulai instalasi SWI
– Prolog harus memiliki installer terlebih dahulu. https://www.swi-prolog.org/download/stable,
Download, kemudian install sesuai petunjuk

4. Dasar-Dasar PROLOG
A. Fakta dan Relasi
Fakta Adalah suatu unit yang selalu bernilai benar,fakta ini merupakan kumpulan data-data
objek. Suatu fakta dibedakan dalam 2 jenis, yaitu fakta yang menunjukan relasi dan fakta yang
menunjukan milik/sifat, penulisan suatu fakta selalu di akhir dengan (.)

FAKTA PROLOG
Slamet adalah ayah Amin ayah (slamet, amin).
Anita adalah seorang wanita wanita (anita).
Angga suka renang dan tenis suka(angga,renang).dan suka(angga,tenis).
Jeruk berwarna jingga jingga(jeruk).
B. Aturan (“Rules”)
Aturan adalah suatu pernyataan yang menunjukan bagaimana fakta-fakta berinteraksi satu
dengan yang lain untuk membentuk suatu kesimpulan. Sebuah aturan dinyatakan sebagai suatu
kalimat bersyarat. Kata “if” adalah kata yang dikenal Prolog untuk menyatakan kalimat bersyarat
atau disimbolkan dengan “:-“.

Fakta dan Aturan Prolog


F : Tino suka apel suka(tino, apel).
A : Yuli suka sesuatu yang disukai Tino suka(yuli,Sesuatu) :-  suka(tino,Sesuatu).

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

Fakta dan Aturan PROLOG


F : Slamet adalah ayah dari Amin ayah(slamet,amin).
F : Amin adalah ayah dari Badu ayah(amin,badu).
F : Slamet adalah kakek dari Badu kakek(slamet,badu).
A: Slamet adalah benar kakek Badu jika
Slamet adalah benar ayah Amin dan Amin kakek(slamet,amin) :-
adalah benar ayah Badu. ayah(slamet,amin) and
ayah(amin,badu).
F : Amin adalah saudara kandung Anang saudara_kandung(amin,anang).
F : Amin mempunyai ayah Slamet ayah(slamet,amin).
F: Anang mempunyai ayah Slamet. ayah(slamet,anang).
A:
Amin adalah benar saudara kandung Anang, saudara_kandung(amin,anang) :-
jika Amin mempunyai ayah Slamet dan ayah(slamet,amin) and
Anang juga mempunyai ayah Slamet. ayah(slamet,anang).
C. 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 “.”.
Contoh :

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).

5. STRUKTUR PROGRAM PROLOG


Dalam struktur program prolog terdapat 4 macam di antara nya adalah Domain,Predicate,Variable,
dan goal.

Domain
Domain berfungsi untuk menyatakan jenis suatu variabel seperti hal nya tipe data dalam bahasa
prosedural (Pascal,C) . beberapa domain standar dalam prolog diantara nya
char,integer,real,string,symbol. Contoh :
namaBunga = symbol
mataKuliah = string
nilai = integer

- Domains char dipakai pada predikat yang argumennya memiliki nilai berupa karakter tunggal,
yaitu abjad, angka, pungtuasi (?.!,<,...), dan operasi (+,‐,...). Penulisan argumen bertipe char
dalam prolog diapit tanda ’...’. contoh : nilai (dita, ’A’).

- Domains string dipakai pada predikat yang argumennya memiliki nilai berupa karakter jamak
yang dapat berupa kata maupun suatu tulisan (kumpulan kata‐kata termasuk di dalamnya
pungtuasi dan tanda operasi yang dapat dipisahkan spasi). Penulisan argumen bertipe string
dalam prolog diapit tanda ”...”. contoh: hobi(rina,”Memasak”).

- Domains integer dipakai pada predikat yang argumennya memiliki nilai berupa bilangan bulat.
Contoh : nilai(tini,”Kalkulus”,75).

- Domains real dipakai pada predikat yang argumennya memiliki nilai berupa bilangan pecahan.
Penulisan argumen bertipe real dalam prolog untuk nilai pecahan ditulis di belakang tanda titik
(.). contoh: nilai(ivan, 8.75).

- Domains symbol dipakai pada predikat yang argumennya memiliki nilai berupa kumpulan
karakter yang hanya terdiri dari huruf atau kata tanpa dipisahkan oleh spasi. Suatu kata dapat
disambungkan dengan kata lain dengan tanda _ (underscore). contoh : lelaki(toni_setiawan).

Predicate
Dalam bahasa prolog kita perlu mendeklarasikan predikat yang ada pada bagian Predicates dan
mendefinisikannya dalam bagian Clauses. Jika tidak, Prolog tidak akan mengenalnya. Namun untuk
predikat standar seperti cursor, makewindow, readln, readchar dsb tidak perlu dideklarasikan.
Misalkan untuk domains seperti di atas dapat dibuat predicates
Predicates
menu(integer)
data(NamaOrang, Alamat, Umur)
Deklarasi predicates dalam bagian predicates, harus disertai argumen jika memang berargumen.
Nama predikat harus diawali dengan huruf, boleh besar atau kecil, selebihnya bisa huruf, angka,
garis bawah, namun dianjurkan untuk dimulai dengan huruf kecil. Nama predikat tidak boleh
mengandung spasi, tanda minus, asteris atau garis miring.

Variable
Variabel merupakan sebuah interpretasi yang digunakan untuk menemukan
nilai dari sebuah klausa. Variabel harus diawali dengan huruf besar. Contoh :

- suka(andi,X) .
X = eskrim
- anakperempuan(lila, X).
X = agus

Variabel yang memiliki beberapa value kamu dapat memunculkan nilai lain dengan
menekan tombol (;)

Deskripsi Rekrusif dari Sebuah Hubungan


Nah ini yang gak kalah penting, Rekursif ini digunakan untuk mencari seluruh dari
child dari sebuah tree. Intinya, misalkan terdapat sebuah keluarga terdapat kakek,
ayah, dan anak. Maka untuk mendapatkan seluruh keturunan dari kakek, yaitu kakek,
ayah, anak, anaknya anak dan seterusnya kita membutuhkan rekursif.
Representasinya seperti berkut
turunan(X,Y) :- antiturunan(Y,X).
turunan(X,Y) :- antiturunan(Y,Z), turunan(X,Z).

Goal

Goal dalam turbo Prolog ada 2 macam yakni :


a. Goal eksternal
b. Goal internal

Goal eksternal diketikkan langsung pada bagian ‘goal’ : di jendela dialog pada kompiler
terpadu Turbo Prolog. dengan cara ini kita hanya bisa menjalankan program dari lingkungan
kompiler Turbo Prolog. Untuk dapat dijalankan di lingkungan DOS kita harus menggunakan goal
internal yang di simpan pada bagian Goal. Sebenarnya goal inilah yang dicari dan dipanggil pada saat
program dijalankan. Jika goal tercapai, program berhenti dengan berhasil, tapi jika sebaliknya,
program berhenti dalam keadaan gagal.
Contoh :
Predicates
tulis(string)
Goal
tulis(X),
write(X).
Clauses
tulis(“Bandung”).
tulis(“Yogya”).
tulis(“Jakarta”).
Program ini pertama akan memanggil goalnya, yang terdiri dari sub goal tulis dan write. Ini artinya,
goal akan memanggil klausa tulis. Di bagian clauses, terdapat tulis yang berupa fakta. Prolog akan
mencarinya dari paling atas, diperoleh tulis(“Bandung”). Ini berarti sub-goal tulis(X) berhasil dengan
X terikat dengan nilai “Bandung”. Selanjutnya Prolog membuktikan sub-goal kedua yakni write(X). Ini
pasti berhasil dan program berhenti. Jika goal diajukan dari luar (dari jendela Goal, goal internalnya
dibuang), kemudian kita tuliskan : tulis(X) [enter], akan tertulis pada layar :
X = Bandung
X = Yogya
X = Jakarta

6. Latihan
Mengenal Tampilan SWI Prolog
1. Buka aplikasi SWI Prolog yang telah terinstal di komputer.
2. CONTOH PROGRAM
laki(jonson).
laki(jaka).
laki(sam).
laki(makaroni).
laki(joko).
laki(soni).
perempuan(anya).
perempuan(susi).
perempuan(nina).
perempuan(nana).
perempuan(seli).
perempuan(dita).
menikah(roni,susi).
menikah(rendi,nina).
menikah(sam,nana).
anak(anya,sam).
anak(roni,sam).
anak(soni,roni).
anak(jaka,roni).
anak(seli,roni).
anak(dita,roni).
anak(makaroni,roni).
anak(joko,rendi).
%aturan
keponakan(A,I):-anak(A,B),anak(B,D),anak(I,D),A\==I.
ortu(A,B,C):-anak(A,B),menikah(B,C).
cucu(A,D,E):-anak(A,B),anak(B,D),menikah(D,E).
saudara(A,F):-anak(A,B),anak(F,B),A\==B.
saudaralaki(A,G):-anak(A,B),anak(G,B),anak(A,C),anak(G,C),not(perempuan(G)),A\==G.
saudaraperempuan(A,H):-anak(A,B),anak(H,B),anak(A,C),anak(H,C),not(laki(H)),A\==H.

PENJELASAN
1. Laki(jonson) = artinya adalah "Jonson adalah seorang laki-laki".
2. perempuan(anya) = artinya adalah"anya adalah seorang perempuan"
3. menikah(roni,susi) = artinya adalah "roni menikah dengan susi".
4. anak(anya,sam) = artinya adalah"anya adalah anak dari sam".
5. keponakan(A,I):-anak(A,B),anak(B,D),anak(I,D),A\==I. = aturan ini digunakan untuk mencari
keponakan. A adalah anak dari B,dan B adalah anak dari D,lalu I juga adalah anak dari D,dan
A tidak sama dengan I.Jadi artinya A adalah keponakan dari I karena B anak dari D dan I anak
dari D.
6. Ortu = A anak dari B, dan B menikah dengan C otomatis A anak dari C juga.
7. cucu = A anak dari B dan B anak dari D setelah itu D menikah dengan E artinya D dan E
adalah akek-nenek dari A.
8. SaudaraLaki = A anak dari B, dan G anak dari B juga, selanjutnya G itu bukan perempuan lalu
A tidak sama dengan G
9. SaudaraPerempuan = A anak dari B dan juga H anak dari B lalu H bukanlah laki-laki dan A
tidak sama dengan H.

TUGAS PRAKTIKUM
Diketahui silsilah suatu keluarga sebagai berikut :
1. Buatlah fakta – fakta dari silsilah keluarga tersebut dengan pemrograman prolog.
2. Buatlah predikat – predikat berdasarkan silsilah keluarga tersebut :
a) Predikat yang menunjukkan saudara kandung
b) Predikat yang menunjukkan saudara tiri
c) Predikat yang menunjukkan hubungan paman dan keponakan
d) Predikat yang menunjukkan hubungan bibi dan keponakan
e) Predikat yang menunjukkan kakek
f) Predikat yang menunjukkan cucu

Anda mungkin juga menyukai