Anda di halaman 1dari 10

Pert 13 - Transparansi Prolog

MODUL PROLOG
Pengenalan Prolog
Prolog merupakan suatu bahasa pemrograman yang banyak digunakan dalam pengembangan Artificial Intelliegence. programming. Bahasa prolog ini memiliki ciri-ciri :

Prolog dalam perkembangannya

telah dikombinasikan dengan berbagai bahasa pemrograman, terutama functional

Bahasa pemrograman yang non sequential Bahasa pemrograman yang deklaratif Simbolik Berdasarkan first order logic

Kesederhanaan Prolog dibanding bahasa lain adalah :


Sintaksnya sangat sedikit sekali, Secara teoritis tidak ada tipe data, tetapi bilangan bulat terpisah. Semantik sangat jelas dan terdefinisi secara matematis. Karena prolog yang digunakan adalah swi-prolog maka untuk menjalankan

program tersebut adalah dengan mengklik 2 kali pada shortcut swi-prolog. Suatu program prolog tidak memiliki struktur seperti deklarasi, dan lainlainnya. Seluruh atom ditangani secara sama, yang ada hanyalah clause. Untuk memulai penjelasan tersebut akan dijelaskan tentang bagian-bagian dalam program Prolog.

1. Term
Suatu data yang bukan merupakan variabel disebut dengan term. Atomic term

Ada dua jenis, atom dan integer Dimulai dengan huruf kecil atau angka numerik. Contoh made, psg, 123.
1 Dari 10

Pengantar Kecerdasasn Buatan

Pert 13 - Transparansi Prolog

2. Functions
Simbol suatu fungsi disebut functor.

Arity dari suatu fungsi adalah jumglah dari argumennya. Suatu atom adalah fungsi dengan arity sama dengan 0. Argumen dapat berupa term atau variabel,

Bisa berstruktur rekursif Dimulai dengan huruf kecil. Contoh :


makan(nasi).

makan adalah functor, dan nasi adalah argument.

3. Clause
Program prolog dapat dianggap sebagai suatu himpunan fungsi boolean, yang disebut dengan clause. Clause dapat memiliki argumen atau tidak memiliki. Clause dapat memiliki body yang kosong, disebut dengan fact, sedang yang memiliki body disebut rule. Suatu query dapat dinyatakan sebagai suatu predicate, arity dari predicate adalah jumlah argumen yang dipakainya.

Contoh program : 1. Ketikkan dan beri nama prog1_1.pro saya_lapar. Panggil prolog dan jalankan ?- consult(prog1). yes. ?- saya_lapar. yes. ?- kamu_lapar. no

Pengantar Kecerdasasn Buatan

2 Dari 10

Pert 13 - Transparansi Prolog

2. Ketikkan program berikut ini dan beri nama prog1_2.pro bisa_makan_siang :punya_makanan. punya_makanan. Jalankan dan "consult" ?- bisa_makan_siang. Yes Bagian pertama adalah rule dan bagian ke dua adalah fact.

VARIABEL DALAM PROLOG dan LIST


Variabel pada prolog dengan huruf besar atau dimulai dengan garis bawah (_). Variabel dalam klausa selalu tersamakan (unified). telah_belajar(Setiap_orang, paket). dapat_belajar(Siapa_saja, Apa_saja) :telah_belajar(Siapa_saja, persyaratan(Apa_saja). dapat_belajar(Siapa_saja, Apa_saja):boleh_belajar(Siapa_saja, Apa_saja). List merupakan suatu variabel yang sering digunakan dalam pemrograman Prolog. List ditandai dengan

[ elemen1, elemen2, .... ]


List terbagi atas :

[Head|Tail]
Contoh : [ saya, kamu, dia, engkau] sama dengan [saya | kamu, dia, engkau]

Pengantar Kecerdasasn Buatan

3 Dari 10

Pert 13 - Transparansi Prolog

Contoh program : 1. Ketikkan klause simpel ini : dosen(bejo, harvard_graphic). Lalu consult dan beri pertanyaan : ?- dosen(bejo,Mata_Kuliah). ?- dosen(Siapa, harvard_graphic). ?- dosen(Siapa, Apa). 2. Ketikan program di bawah ini : angka([1,2,3,4]). kalimat(kucing,[duduk, di | [atas, meja]]). ?- angka([1,Y|Z]). ?- kalimat(kucing,[Kata_kerja|Sisa]). 3. Ketikkan beberapa operasi list berikut ini : length([],0). length([Head|Tail],Length):length(Tail,Tail_Length), Length is Tail_Length + 1. member(Element,[Element|_]). member(Element,[_|Tail]):member(Element,Tail). append([], List, List). append([Head|Tail], List, [Head|Tail_List]):append(Tail, List, Tail_List). delete(Element, [Element|Tail], Tail). delete(Element, [Element_lain|Tail], [Element_lain], Tail_terhapus):delete (Element, Tail, Tail_terhapus). Pengantar Kecerdasasn Buatan
4 Dari 10

Pert 13 - Transparansi Prolog

insert (Element, List, List_diinsert) :delete(Element, List_diinsert, List).

ARITMATIKA dan SETS


Operator aritmetis yang dapat digunakan adalah :

+, - , *, mod, < , >, >=, =<.


Himpunan dapat direpresentasikan dengan baik dengan menggunakan list, tetapi harus dipastikan tidak ada duplikasi elemen. Contoh program : Program di bawah ini akan mencari faktor pembagi terbesar dari dua bilangan gcd(X, X, X). gcd(X, Y, GCD) :X < Y, Sisa is Y - X, gcd(X, Sisa, GCD). gcd(X, Y, GCD):gcd(Y, X, GCD).

Memasukkan dan menghapus klausa.

asserta(X)

akan memasukkan klausa X ke program sebelum didapatkan klausa dengan awal predikat yang sama

assertz(X) retract(X)

memasukkannya setelah predikat yang sama.

menghapus klausa X dari program.

Pengantar Kecerdasasn Buatan

5 Dari 10

Pert 13 - Transparansi Prolog

Contoh Program : 1. Contoh : pinjam(Buku, Tanggal) :retract(rak(Buku)) assertz(peminjaman(Buku, Tanggal). kembali(Buku, Tanggal, Denda) :retract(peminjaman(Buku, Tanggal_Pinjam)), asserta(rak(Buku), hitung_denda(Tanggal_Pinjam, Tanggal, Denda). hitung_denda(Tanggal_Pinjam, Tanggal_kembali, Denda) :Denda is 100. 2. Contoh untuk menghasilkan bilangan fibonaci fibonaci(1,1). fibonaci(2,1). fibonaci(Angka, Angka_fibo) :Angka > 2, N1 is Angka - 1, fibonaci(N1, F1), N2 is Angka - 2, fibonaci(N2, F2), Angka_fibo is F1 + F2. /* tambahkan baris ini untuk mempercepat */ asserta((fibonaci(Angka, Angka_fibo):- !)).

Pengantar Kecerdasasn Buatan

6 Dari 10

Pert 13 - Transparansi Prolog

Mencari solusi alternatif


Untuk mencari solusi alternatif dapat digunakan beberapa klausa :

bagof(Variable, Query, List_of_solution_for_the_variable).


akan memberikan seluruh kemungkinana jawaban .

setof(Variable, Query, List_of_solution_for_the_variable).


sama dengan bagof hanya duplikasi dihilangkan.

findall(Variable, _solution_for_the_variable).

Querry,

List_of

semua solusi diletakkan dalam list berurutan dengan urutan ditemukannya. Contoh Program : pengajar(dewi, harvard). pengajar(dewi, informix). pengajar(adang, as400). pengajar(adang, access). pengajar(silfi, ncr). pengajar(silfi, as400). pengajar(dewi, harvard). pengajar(tutun,lan). pengajar(adrian,lan). Lakukan query : ?- bagof(Mata_kuliah, pengajar(Nama, Mata_kuliah), List_Mata). ?- setof(Mata_kuliah, pengajar(Nama, Mata_kuliah), List_Mata). ?- findall(Mata_kuliah, pengajar(Nama, Mata_kuliah), List_Mata). Catatan : tidak pada semua prolog terdapat findall. untuk itu dapat dibuat : findall(Variable, Goal, _):Goal, assertz(found(Variable)), Pengantar Kecerdasasn Buatan
7 Dari 10

Pert 13 - Transparansi Prolog

fail. findall(_,_,List):collect_found(List). collect_found([First_found|Rest_found]):retract(found(First_found)), !, collect_found(Rest_found). collect_found([]).

FILE
Untuk operasi file dapat digunakan :

see(<nama_file>). seeing(<nama_file>). seen. tell(<file_name>). telling(<nama_file>). told.

Contoh program : Program menyalin file copy(From, To):see(From), tell(T), repeat, read(X), write(X), X== end_of_file, seen, told

Pengantar Kecerdasasn Buatan

8 Dari 10

Pert 13 - Transparansi Prolog

Operator dan manipulasi term.


Untuk mendefinisikan postfix, infix, atau prefix digunakan

op(<precedence_class>,<type and associativity>,<name>).


presedence classs menyatakan urutan yang harus didahulukan. type dan assosiatif :

xfx non associative infix xfy right associative infix yfx left associative infix fx non-associative prefix fy righ associative prefix xf non-associative postfix yf left associaive postfix

functor(Term, Functor, Arity).


Dapat digunakan untuk menguji functor dan arity dari suatu term.

arg(Position, Term, Argument)


Dapat digunakan untuk menguji posisi dari argumen pada term.

Term = .. List
Akan memberikan hasil berupa suatu list berisi functor dan arity. Contoh program : ?-op200,xfx,was). ?-op(180,xfx,of). ?-op(160,fx,the). asserta(helen was the secretary of the department) Pengantar Kecerdasasn Buatan
9 Dari 10

Pert 13 - Transparansi Prolog

. ini sama dengan bila kita memasukkan fact dengan mengetik : was(helen,of(the(secretary),the(department))) 2. copy(Old_term, New_term):functor(Old_term, Functor, Arity), functor(New_term, Functor, Arity)

Pengantar Kecerdasasn Buatan

10 Dari 10

Anda mungkin juga menyukai