26
|
LAPORAN PRAKTIKUM
KECERDASAN
BUATAN
Modul 2
DASAR-DASAR
PROLOG
Disusun
Oleh :
HERI PURNAMA
125410101
TI 04
UPT LABORATORIUM
Sekolah Tinggi Manajemen Informatika dan Komputer
AKAKOM
Yogyakarta
2013
DARTAR
ISI
Judul.……………………………………………………………………………………….. 01
Daftar isi..………………………………………………………………………………… 02
Bab 1
: Pendahuluan………………………………………………………………. 03
A.Tujuan………………………………………………………………………… 03
B.Dasar Teori…………………………………………………………………… 03
Bab 2
: Hasil Praktikum…………………………………………………………… 06
Bab 3 : Analisa Hasil Praktikum………………………………………………. 07
A.Listing
Program 1……………………………………………………………………..
07
. B.Listing Program 2……………………………………………………………………… 08
C.Listing
Program 3…………………………………………………………………… 08
D.Listing
Program 4…………………………………………………………………….. 09
E.Listing
Program 5……………………………………………………………………… 10
F.Listing
Program 6……………………………………………………………………… 10
Bab 4
: Kesimpulan………………………………………………………………… 11
Bab 5
: Tugas………………………………………………………………………….. 12
Bab 1
Pendahuluan
A.Tujuan
Mahasiswa mampu :
1.
Mengetahui apa yang dimaksud dengan pemrograman
logika (PROgramming in LOGic).
2.
Dapat mengkonversikan dari bahasa natural
(natural language) ke bahasa PROLOG dan begitu juga sebaliknya.
3.
Mengetahui konsep dasar fakta-fakta (facts),
aturan-aturan (rules), predikat-predikat (predicates) dan variable.
A.
DASAR
TEORI
Pemrograman Logika
Prolog dikenal sebagai bahasa deskriptif (descriptive
language), yang berarti dengan diberikan serangkaian fakta-fakta dan
aturan-aturan, Prolog, dengan menggunakan cara berpikir deduktif (deductive
reasoning), akan dapat menyelesaikan permasalahan suatu program. Ini
dikontraskan dengan bahasa komputer tradisional seperti C, BASIC, Pascal yang
dikenal sebagai bahasa prosedural (procedural language). Dalam bahasa
prosedural, programmer harus memberikan instruksi tahap demi tahap agar
komputer dapat dengan pasti bagaimana menyelesaikan permasalahan yang
diberikan. Dengan kata lain, programmer harus tahu lebih dahulu bagaimana cara
menyelesaikan permasalahan sebelum diinstuksikan ke komputer. Lain jika
dibandingkan dengan programmer Prolog. Programmer Prolog hanya membutuhkan
deskripsi/gambaran permasalahan, lalu menerjemahkannya ke bahasa Prolog. Selanjutnya tinggal sistem Prolog yang
menentukan bagaimana mencari solusinya.
Prolog didasarkan pada klausa-klausa Horn (Horn clauses),
yang merupakan himpunan bagian dari sistem formal yang dinamakan logika
predikat (predicate logic). Logika predikat menyederhanakan cara agar
jelas bagaimana berpikir akan dilakukan. Prolog menggunakan variasi sintak
logika predikat yang telah disederhanakan dengan demikian sintaknya mudah
dimengerti dan sangat mirip dengan bahasa natural.
Prolog mempunyai mesin inferensi (infrence
engine) yang merupakan suatu proses berpikir logis mengenai informasi.
Mesin inferensi mempunyai pencocok pola (pattern matcher) yang akan mengambil informasi yang telah
disimpan (diketahui) dan kemudian mencocokkan jawaban atas pertanyaan. Satu feature
penting dari Prolog adalah bahwa, sehubungan mencari jawaban logis atas
pertanyaan yang diajukan, ia dapat berhubungan dengan banyak alternatif dan
mencari semua kemungkinan dari pada hanya satu solusi
a.
Kalimat : Fakta dan Aturan
Programmer Prolog mendefinisikan object-object dan
relasi-relasi, kemudian mendefinisikan aturan mengenai kapan relasi-relasi ini
dikatakan benar (true). Contoh kalimat :
Wening suka bakso.
Dalam Prolog, relasi antara object-object dinamakan
predikat. Dalam bahasa natural relasi disimbolisasikan oleh suatu
kalimat. Dalam logika predikat yang Prolog gunakan, suatu relasi adalah
kesimpulan dalam suatu frase sederhana.
b.
Query
Kalau kita sudah memberikan Prolog sekumpulan fakta,
selanjutkan dapat diajukan pertanyaan sehubungan dengan fakta-fakta. Ini dikenal
dengan nama memberikan query ke sistem Prolog (querying the Prolog system).
Pertanyaan yang diajukan ke Prolog sama tipenya seperti dalam bahasa natural.
Berdasarkan pada fakta dan aturan yang diberikan sebelumnya, kita dapat
menjawab pertanyaan tentang relasi-relasi ini sebagaimana Prolog juga bisa:
Apakah
Toni menyukai Inung?
dalam sintak Prolog:
suka(toni,
inung).
c. Variabel
Seperti yang telah disebutkan sebelumnya, untuk memberikan
nama variabel dalam Visual Prolog harus diawali dengan huruf besar (capital
letter) atau garis bawah (underscore), berikutnya dapat berupa huruf
(besar atau kecil), angka (“0-9”) dan garis bawah (“_”). Berikut ini merupakan
contoh penamaan variabel yang valid:
Ini_adalah_variabel_yang_valid
Tanggal_Lahir_Anak_Saya_1_12_1999
_Ini_juga_valid
sedangkan berikut ini penamaan variabel yang
tidak valid:
1desember_1999 %diawali dengan angka
ini_tidak_valid %diawali dengan huruf kecil
$Pengganggu %terdapat karakter yang
dilarang (‘$’)
Penamaan variabel selain valid sebaiknya yang
mudah dimengerti. Sebagai contoh daripada memberikan nama variabel X untuk:
suka(X,
tennis).
akan lebih dimengerti jika menggunakan nama
variabel Orang sehingga menjadi:
suka(Orang,
tennis).
d.Komentar
Programmer
yang baik selalu memberikan catatan atau komentar untuk menjelaskan sesuatu
yang mungkin tidak jelas bagi orang lain (atau bahkan bagi programmer sendiri
dalam setahun ke depan misalnya). Komentar akan membuat program menjadi lebih
mudah untuk dimengerti.
Komentar dengan baris jamak harus dimulai dengan
karakter /* (slash, asterik) dan diakhiri dengan karakter */ (asterik,
slash). Untuk memberikan komentar dengan baris tunggal dapat menggunakan
karakter yang sama atau dapat dimulai dengan tanda persen (%). Contoh:
/* Ini
contoh sebuah komentar */
% Ini juga contoh komentar
/* Ini
komentar
dengan
tiga baris */
/* Ini
contoh komentar /* dalam komentar */ di Visual Prolog */
Bab 2
Hasil
Praktikum
Bab 3
Analisa Hasil Praktikum
A.LISTING PROGRAM 1 :
PREDICATES
nondeterm
dapat_membeli(symbol,symbol)
nondeterm orang(symbol)
nondeterm mobil(symbol)
suka(symbol,symbol)
dijual(symbol)
Ø Pada block ini
disebut sebagai section PREDIKAT yang
mana terdapat 5 baris data yakni : dapat_membeli, orang, mobil, suka,dan dijual pada masing-masing baris tersebut bertipe symbol.Dan pada 3 baris yang pertama ada kata
nondeterm yang artinya untuk memberitahu ke compiler Visual Prolog bahwa predikat tersebut
mempunyai lebih dari satu kemungkinan jawaban (non-deterministik).Secara default
Visual Prolog akan menganggap predikat yang ada di section predicates sebagai
deterministik (kecuali pada section facts, merupakan kebalikannya).
CLAUSES
dapat_membeli (X,Y) :-
orang(X),
mobil(Y),
suka(X,Y),
dijual(Y).
orang(nur).
orang(yudi).
orang(dian).
orang(heni).
mobil(atoz).
mobil(kijang).
suka(dian,atoz).
suka(yudi,pecel).
suka(heri,buku).
suka(nur,komputer).
dijual(kijang).
dijual(atoz).
dijual(buku).
Ø Pada block
ini disebut Section clauses merupakan
section yang paling penting pada program Visual Prolog. Pada section inilah
kita meletakkan fakta dan aturan. Ketika mencari jawaban, Visual Prolog akan
mencari dari bagian paling atas dari section clauses, melihat setiap fakta dan
aturan untuk mendapat jawaban benar, hingga ke bagian paling bawah dari section
ini.
Ø Pada paragraf pertama diletakkan aturan yakni : dapat_membeli
(X,Y) :- orang(X),mobil(Y),suka(X,Y),dijual(Y). Yang berarti “Jika
X adalah orang dan Y adalah mobil dan X suka Y dan Y dijual maka X dapat
membeli Y.”
Ø Pada paragraph kedua berisi fakta dengan variabel orang yang mana terdiri
dari 4 data pada variabel ini yakni nur,yudi,dian,dan heni.
Ø Pada paragraph ketiga berisi fakta dengan variabel mobil yang mana terdiri
dari 2 data pada variabel ini yakni atoz dan kijang.
Ø Pada paragraph ketiga berisi fakta dengan variabel suka yang mana terdiri dari 4 data pada
variabel ini yakni suka(dian,atoz).
suka(yudi,pecel).
suka(heri,buku).
suka(nur,komputer).
·
Pada baris pertama dapat dibaca dian suka atoz.
·
Pada baris kedua dapat dibaca yudi suka pecel.
·
Pada baris ketiga dapat dibaca heri suka buku.
·
Pada baris keempat dapat dibaca nur suka komputer.
Ø Pada paragraph keempat
berisi fakta dengan variabel dijual yang mana terdiri dari 3 data pada variabel ini yakni kijang,atoz,dan buku.
GOAL
dapat_membeli (Siapa,Apa).
Ø Pada blokc Ini adalah section goal yang secara
essensial sama dengan body dari sebuah aturan (rule), yaitu
sederetan sub-sub goal. Perbedaan antara section goal dengan suatu
aturan adalah setelah kata kunci goal tidak diikuti tanda :- dan Visual
Prolog secara otomatis mengeksekusi goal ketika program dijalankan.
Ø
Pada section ini ingin dicari GOAL SIAPA dapat
Membeli Apa?
RUNNING PROGRAM 1 :
Ø Dan hasilya adalah Siapa
adalah Dian dan apa adalah atoz.Bisa menemukan goal seperti itu dikarenakan karena
program meksekusi aturan dalam fakta ada program tersebut yang memenuhi
semuanya adalah si dian dengan atoz.Karena dian suka dengan atoz dan atoz pun
dijual jadi bisa mengambil kesimpulan seperti itu.
B.LISTING PROGRAM 2 :
suka(dian,atoz).
suka(yudi,pecel).
suka(heri,buku).
suka(heni,kijang).
suka(nur,komputer).
Ø pada program prolog yang kedua hanya menanbahkan fakta
baru pada bagian clause yaki fakta :
suka(heni,kijang).
B.RUNNING PROGRAM 2:
Ø Dan hasilnya menjadi
terdapat 2 solusi yakni : dian atoz dan heni kijang karena data-data tersebut
yang memenuhi semua dalam aturan yang ada pada section clauses.
C.LISTING PROGRAM 3 :
GOAL
suka (_,Apa).
Ø Pada program prolog yang ketiga cukup menganti goal
dengan suka (_,Apa).yang artinya anonym suka apa ?
RUNNING PROGRAM 3 :
Ø
Dan
hasilnya adalah terdapat 5 solusi yakni masing-masing adalah
atoz,pecel,buku,kijang dan komputer itu dikarenakan goal tersebut ingin mencari
data apa saja yang disukai oleh masing-masing orang?maka munculah data-data
tersebut yang terdapat pada variabel suka pada section clauses.
D.LISTING PROGRAM 4 :
GOAL
suka (Siapa,_).
Ø Pada program prolog yang keempat cukup menganti goal dengan suka (Siapa,_). Artinya adalah siapa suka anonym ?
RUNNING PROGRAM 4:
Ø
Dari
goal tersebut ternyata terdapat 5 solusi yakni dian,yudi,heri,heni,dan nur. itu
dikarenakan goal tersebut ingin mencari data siapa saja yang suka oleh
masing-masing barang?maka munculah data-data tersebut yang terdapat pada
variabel suka pada section clauses.
E.LISTING PROGRAM 5 :
GOAL
dapat_membeli (_,Apa).
Ø Pada program prolog yang kelima
cukup menganti goal dengan dapat_membeli (_,Apa).yang dapat dibaca
anonym dapat membeli apa ?atau semua orang dapat membeli apa?
RUNNING PROGRAM 5 :
Ø
Dan
hasilnya terdapat 2 solusi yakni atos dan kijang,itu dikarenakan pada variabel dapat_membeli
hanya terdapat 2 data/fakta itu saja.
F.LISTING PROGRAM 6 :
GOAL
dapat_membeli (Siapa,_).
Ø
Pada program
prolog yang kelima cukup menganti goal dengan dapat_membeli (Siapa,_).Yang artinya siapa saja dapat membeli?
RUNNING PROGRAM
6:
Ø
Dan hasilnya
adalah terdapat 2 solusi yakni dian dan heni itu dikarenakan pada fakta fakta
yang ada yang memenuhi kesemuanya hanyalah 2 orang tersebut.maka hanya dua
orang tersebut yang tampil pada layar atau goal.
Bab 4
Kesimpulan
Dari Program yang dijalan dalam Visual Prolog diatas saya dapat
menggambil kesimpulan bahwa:
1.
PREDICATES (PREDIKAT)
Deklarasi predikat dimulai dengan
nama predikat diikuti tanda kurung buka, kemudian diikuti nol atau lebih
argumen dari predikat (setiap argumen dipisah dengan tanda koma) kemudian
ditutup dengan tanda kurung tutup,Didalam Predikat terdiri dari Nama,Argumen
predikat.
Nama
predikat harus dimulai dengan huruf
diikuti dengan serangkaian huruf, angka dan atau garis bawah (underscore).
Walaupun bisa dimulai huruf besar, namun sangat direkomendasikan untuk memakai
huruf kecil diawal nama predikat (beberapa versi Prolog yang lain tidak
memperbolehkan nama predikat diawali huruf besar). Panjang nama predikat bisa
sampai 250 karakter
Argumen predikat harus yang sudah dikenal oleh domain Visual Prolog.
Suatu domain bisa merupakan domain standar atau bisa juga domain yang sudah
dideklarasikan pada section domains.
2.
CLAUSES (KLAUSA)
Section clauses merupakan section
yang paling penting pada program Visual Prolog. Pada section inilah kita
meletakkan fakta dan aturan. Ketika mencari jawaban, Visual Prolog akan mencari
dari bagian paling atas dari section clauses, melihat setiap fakta dan aturan
untuk mendapat jawaban benar, hingga ke bagian paling bawah dari section ini
3.
GOAL (AKHIR)
section goal secara essensial
sama dengan body dari sebuah aturan (rule), yaitu sederetan
sub-sub goal. Perbedaan antara section goal dengan suatu aturan adalah
setelah kata kunci goal tidak diikuti tanda :- dan Visual Prolog secara
otomatis mengeksekusi goal ketika program dijalankan
4.
Kata nondeterm yang
artinya untuk
memberitahu ke compiler Visual Prolog bahwa predikat tersebut mempunyai lebih
dari satu kemungkinan jawaban (non-deterministik).
Bab 5
TUGAS
1).Mengubah bahasa prolog
menjadi bahasa natural :
Bahasa
Prolog :
a)
orang (dian).
b)
mobil (atos).
c)
suka (dian,atoz).
d)
Dijual (atoz).
e)
Dapat_membeli
(X,Y) :-
Orang (X),
Mobil (Y),
Suka( X,Y),
Dijual (Y).
f)
suka (_,Apa).
Bahasa Natural :
a.
Dian adalah orang
b.
Atos adalah merk mobil
c.
Dian suka atos
d.
Atos dijual
e.
Jika X adalah
orang dan mobil adalah Y dan X suka dengan Y dan Y dijual maka X dapat membeli
Y .
f.
Setiap orang suka
apa ???
2).Mengubah bahasa natural menjadi bahasa Prolog:
Bahasa Natural :
a.
Ricky mempunyai
hobi bermain catur.
b.
Embang orangnya
pemalas.
c.
Yusida seorang
vegetarian.
d.
Kusdiar pandai
bermain gitar.
e.
Mobil yang
berwarna merah itu milik Sadek, bermerk BMW.
f.
Awan seorang
pemain piano, berasal dari Pontianak bersuku Jawa.
g.
Seseorang
dikatakan baik jika mempunyai sifat penyayang dan dermawan.
h.
Seseorang
dikatakan pintar jika salah satu dari Matematika atau IPA atau IPS mendapat
nilai tinggi.
i.
Setiap orang
pasti mati.
Bahasa Prolog :
a.
hobi(ricky,catur)
b.
malas(embang)
c.
vegetarian(yusida)
d.
pandai(kusidiar,gitar)
e.
merah(mobil,sandek,bmw)
f.
piano(awan,((potianak),(jawa)))
g.
dikatakan(orang,baik)
:- punya_sifat(penyayang),punya_sifat(dermawan).
h.
dikatakan(orang,pintar)
:- nilai_tinggi(Matematika); nilai_tinggi(IPA); nilai_tinggi(IPS).
i.
pasti (_,mati).
3).Membuat program bahasa prolog untuk menguji:
a. cucu
jhon cucu dari siapa ???
PROGRAM PROLOG :
PREDICATES
nondeterm cucu(symbol,symbol)
nondeterm ibu(symbol,symbol)
nondeterm adik(symbol,symbol)
nondeterm kakek(symbol, symbol)
nondeterm anak(symbol,symbol)
istri(symbol,symbol)
pria(symbol)
wanita(symbol)
usia(symbol,byte)
CLAUSES
cucu(A,C):-anak(A,B),anak(B,C).
ibu(C,A):-anak(A,B),istri(C,B).
adik(A,B):-usia(A,10),usia(B,13).
kakek(C,A):-anak(A,B),anak(B,C).
anak (jhon, james).
anak (james, peter).
anak (sue, ann).
istri
(ann, james).
istri
(mary, peter).
pria(jhon).
pria (james).
pria (peter).
wanita
(mary).
wanita(sue).
wanita(ann).
usia(jhon,10).
usia(sue,13).
GOAL
cucu(jhon,A).
JAWABAN PROLOG :
b.Ibu
Mary ibu dari
siapa ???
Cukup dengan menganti pada
GOAL “Program Prolog” dengan :
ibu(mary,A).
JAWABAN PROLOG :
c.adik
jon adik dari
siapa ???
Cukup dengan menganti pada
GOAL “Program Prolog” dengan :
adik(jhon,A).
JAWABAN PROLOG :
d.kakek
peter dari
siapa ???
Cukup dengan menganti pada
GOAL “Program Prolog” dengan :
kakek(peter,A).
JAWABAN PROLOG :
0 komentar:
Post a Comment
Thanks For Your Feedback.