· Pemrograman logic/ deklaratif
· Ciri pemrograman logic
· Awal pemrograman logic
· Konstruktor program logic
o Fakta
o Query
o Aturan (rules)
Pemrograman logik/ deklaratif
· Adalah pemrograman yang berdasarkan kepada deklarasi fakta dan aturan
· Berdasarkan fakta dan aturan yang disimpan dalam program, pemakai dapat melakukan query untuk jawaban yang merupakan komputasi dari program logik tersebut
Ciri pemrograman logik
· Tidak berfikir dalam urut-urutan operasi komputer seperti pada pemrograman prosedural, tapi menyatakan program dalam bentuk “deklarasi”
· Knowladge dan asumsi sudah cukup untuk menyelesaikan persoalan jika dinyatakan secara eksplisitsebagai aksioma logik
· Program logik dieksekusi dengan memberikan padanya sebuah prblem yang dinyatakan dalam pernyataan logik yang di sebut goal statement
· Eksekusi program adalah usaha untuk membuktikan goal benar, dengan asumsi (berupa fakta, aturan) yang ada pada program
Awal pemrograman logik
· Kowalski dan Colmerauer mencanangkan interpretasi prosedural dari Klausa Horn:
Aksioma: A if B1 and B2 and … and Bn
Dapat ditulis sebagai prosedur:
o A adalah prosedure head
o Bi adalah Body
o A benar, jika B benar
· Jadi pada pemrograman logik
o Program adalah sebuah himpunan aksioma/aturan yang mendefinisikan hubungan antar objek
o Komputasi program adalah pembuktian dari goal yang diberikan pada program
o Sebuah program mendefinisikan konsekuensi yang merupakan arti dari program itu
Konstruksi program logik
· Fakta
· Rules (aturan)
· Query
Aturan, fakta dan query adalah Klausa Horn
Fakta
· Adalah kalimat sederhana untuk menyatakan relasi antar objek
· Fakta dalam pemrograman logik dituliskan sebagai predikat
· Hanya fakta yang benar yang dimasukan ke dalam basis data dalam suatu program deklaratif
· Faktra yang benar tersebut dienumerasi satu per satu dan harus sesuai dengan dunia nyata yang diprogram
· Contoh:
1. {Ayah (X,Y): X adalah ayah dari Y}
Ayah (philips, charles)
Ayah (charles, harry)
2. {Ibu (X,Y) adalah benar, jika X adalah ibu dari Y}
Ibu (elisabeth, charles)
Ibu (diana, william)
3. {Pria (X)L jika X adalah pria}
Pria (philips)
Pria (charles)
4. {Perempuan (X): X adalah perempuan}
Perempuan (elisaneth)
Perempuan (diana)
5. {Suka (X,Y) benar, jika S suka Y}
Suka (sinta, kacang)
Suka (sinta, kripik)
Suka (ali, kripik)
Suka (ali, sinta)
6. {plus (N,M,S) benar, jika N ditambah M adalah S}
Plus (2,3,5)
Plus (3,4,7)
7. {jadwal (K,D,T,J1,J2) benar, jika kereta api bernomor K bernagkat dari kota D menuju ke T pada jam J1 dan akan tiba di kota T pada J2}
Jadwal (P101, Bandung, Jakarta, 05:00, 7:40)
Jadwal (P102, Bandung, Jakarta, 06:00, 7:40)
Jadwal (M101, Bandung, Surabaya, 17:45, 6:00)
Jadwal (P201, Jakarta, Bandung 05:30, 8:10)
Jadwal (P202, Jakarta, Bandung 06:30, 9:10)
Jadwal (P101, Surabaya, Bandung 06:00, 6:00)
8. {tanggal (d,m,y benar, jika adalah sebuah “tanggal” dengan tanggal d, bulan m, dan tahun y}
Tanggal (1,1,1995)
Tanggal (31,1,1995)
Tanggal (28,2,1994)
Tanggal (31,12,1993)
· Setiap nilai parameter dari FAKTA mempunyai domain tertentum berupa:
Numerik (integer, real)
Konstanta simbolik (nama)]list (bentuk spesifik yang terdiri dari sebuah elemen yang disebut head dan sisanya adlaah list yang disebut sebagai tail. List dituliskan dengan [X|Xs].
Query
· Adalah cara untuk memperoleh informasi dari sebuah program deklaratif
· Menanyakan apakah suatu relasi tertentu dipenuhi anatar objek
· Ditulis dengan tanda tanya
· Contoh : Ayah (philips, charles)?
(jawaban : YES)
Simple Query
· Terdiri dari 1 goal P
Fakta P
= Query P? menyanyakan apakah P benar
· Contoh
Fakta
- Ayah (philip, charles)
- Ibu (elisabeth, charles)
Query
- Ayah (philips, charles)?
- Ibu (elisabeth, charles)?
Logical variables
· Logical variabel adalah indibidu yang belum di tentukan secara spesifik
· Contoh:
= suka (sinta, X)?
X = kacang, X = kripik
= plus (X,Y,4)?
(X=0, Y=4)
(X=1, Y=3)
· Variabel sangat berguna untuk menyatakan fakta yang banyak
· Contoh:
Suka (alin, nasi) {ali suka nasi}
Suka (X, nasi) {semua orang suka nasi}
Suka (X,X) {semua orang suka pada dirinya sendiri}
Kali (O,X,O) {bilangan berapapun dikalikan nol, hasilnya nol}