Minggu, 27 Desember 2009

Kamis, 12 November 2009

OPERATOR AND ARITHMETIC in Prolog

Operator
Setiap predikat yang ditetapkan pengguna dengan satu argumen (unary predikat) dapat diubah menjadi operator prefiks.
contoh : isa_dog fred
functor ditulis sebelum argumen tanpa tanda kurung
Selain itu predikat unary dapat dikonversi ke postfix operator.
contoh : fred is a_dog
functor harus ditulis setelah argumen
Setiap predikat yang ditetapkan pengguna dengan satu atau dua argumen dapat dikonversikan ke operator dengan memasukkan tujuan menggunakan op predikat pada sistem prompt. Predikat ini butuh 3 argumen misal: ?-op(150,xfy,like)
argumen I : operator didahulukan
argumen II : harus salah satu atau tiga atom tersebut :
- xfy, berarti predikat biner dan akan dikonversikan ke operator infiks
- fy, berarti predikat unary dan akan dikonversikan ke operator prefiks
- xf, berarti predikat unary ke operator postfix
argumen III: menentukan nama predikat yang harus dikonversi ke operator
Beberapa built-in predikat telah ditetapkan sebelumnya sebagai operator ini termasuk relasional operator untuk membandingkan nilai numerik, termasuk <> menunjukkan "lebih besar dari pada".
contoh : >(x,4) bukan x>4

Artithmetic
aritmatik menggunakan built-in predikat adalah /2, dimana argumen pertama adalah terikat variabel.
Argumen kedua dapat berupa nomor atau ekspresi aritmatika misalnya:
X adalah 6*Y+Z-3.2+P-Q/4
Operator aritmatika dapat digunakan tidak hanya sebagai operator infiks biner menunjukkan perbedaan dua nilai numerik, misalnya X-6, tetapi juga sebagai awalan unary operator untuk menunjukkan negatif dari sebuah nilai numerik, misalnya:
?-X adalah 10, Y-X-2
X = 10
Y = -12
Argumen juda dapat menjadi sebuah variabel terikat dengan nilai numerik
contoh : ?-X is 7, X is 6+1
X = 7
?-10 is 7+13-11+9
no

Operator Precedence di Aritmatika
Operator didahulukan relatif tinggi seperti (misalnya + dan -, * dan /) ditetapkan dari kiri ke kanan. efeknya adalah untuk memberikan ekspresi seperti A+B*CD makna bahwa pengguna yang akrab dengan aljabar akan mengharapkan untuk memiliki, yaitu A+(B*C)-D
Relasional Operator
Infiks operator =:==\=>>=<=< adalah tipe khusus yang dikenal sebagi relasional operator dan digunakan untuk membandingkan nilai dari dua aritmatika ekspresi.
Kedua argumen harus angka, terikat variabel atau ekspresi aritmatika.
?- 88+15-3=:=110-5*2.
Yes

?-100=\=99
yes

Kesetaraan Operator
Ada 3 jenis operator relasional untuk pengujian kesetaraan dan ketidaksetaraan, tipe pertama digunakan untuk membandingkan nilai-nilai aritmatika ekspresi, dua lainnya jenis tersebut digunakan untuk membandingkan istilah.
contoh: checkeven (N) : -M is N //2, N=:=2*M.
?-checkeven (12).
yes
?-checkeven (23).
no

Persyaratan Identik
Kedua argumen dari operator == infiks harus istilah. Tujuan Term 1 == Term 2 berhasil jika dan hanya jika Term1 identik dengan Term 2
contoh: ?-likes(X,prolog)==likes(X,prolog).
X=_
?-likes(X,prolog)==likes(Y,prolog).
no
?-X==0
no
Non-Unifikasi antara dua syarat \ = Tujuan Term1 \= Term2 berhasil jika Term1 = Term2 gagal, yaitu dua istilah tidak bisa akan bersatu. selain itu gagal.
?-6+4\=3+7.
yes

Logika operator
Operator yang tidak operator awalan bukan /1 dapat ditempatkan sebelum tujuan untuk memberikan yang pengingkaran. itu tujuan menegasikan berhasil jika tujuan asli gagal dan gagal jika tujuan asli berhasil.
Contoh berikut menggambarkan penggunaan tidak /1:
dog(fido).
?-not dog(fido).
no
?-dog(fred).
no
?-not dog(fred).
yes
?-X=0, X is 0.
X=0

Disjunction Operator
Operator ini memberikan jawaban benar jika salah satu argumen benar.
contoh : ?-6<3;7 is 5+2.
yes
?-6*6=:=36;10=8+3.
yes