OPERATORS AND ARITMETICS (Summary of Chapter 4)

4. Operator dan Aritmatika.

4.1. Operator

Sering ditemui kesulitan untuk membaca penulisan standar prolog.  Oleh karena itu, ada cara lain untuk menuliskan predikat.Seperti pada binary predicate, yang dapat diubah menjadi infix operator.

Contoh penulisan standar ada pada,

likes(oppy,yellow).


Selain itu bisa juga ditulis menurut binary predicate ,

oppy likes yellow.

Untuk predikate yang hanya mempunyai satu argumen atau yang disebut unary predicate dapat diubah menjadi postfix operator. Predikat dapat dituliskan sebelum argumen tanpa tanda kurung.

notasi operator juga dapat digunakan untuk mempermudah membaca sebuah statement.

likes(sasa,X):- is_male(X), owns(X,Y), is_taft(Y).


akan lebih mudah untuk dibaca jika penulisannya sebagai berikut,

sasa likes X:-X is male, X owns Y, Y is taft.

Standar tanda kurung ‘functor dan argumen’ notasi, misalnya likes (sasa,X) dapat
masih dapat digunakan dengan operator jika lebih disukai. ‘Mixed’ notasi juga diperbolehkan

Setiap predikat yang ditetapkan pengguna dengan satu atau dua argumen dapat dikonversi ke
operator dengan memasukkan tujuan menggunakan op predikat pada sistem prompt. Ini
membutuhkan 3 argumen, misalnya
?-op(150,xfy,likes).
Argumen pertama adalah ‘operator didahulukan’, yang merupakan integer dari 0 ke atas.
Nilai didahulukan operator digunakan untuk menentukan urutan dari operator akan diterapkan bila lebih dari satu digunakan dalam istilah.
Argumen kedua biasanya harus salah satu dari tiga bentuk berikut:
xfy berarti bahwa binary predicates dan akan dikonversikan ke operator infiks
fy berarti bahwa unary predicates dan akan dikonversikan ke operator prefix
xf berarti bahwa predikat adalah unary dan akan dikonversi ke postfix operator
Argumen ketiga menentukan nama predikat yang harus dikonversi ke
operator.
Sebuah predikat juga dapat dikonversi ke operator dengan menempatkan sebuah baris seperti
?-op (150, xfy, likes).
4.2. Arithmetics.
Tidak hanya dapat digunakan pada non numerik, prolog juga bisa melakukan hitungan aritmatik.
Hal ini dicapai dengan menggunakan built-in predikat adalah / 2, yang telah ditetapkan sebagai infiks
operator dan dengan demikian ditulis antara dua argumen.
Cara yang paling umum adalah menggunakan / 2 adalah dimana argumen pertama adalah terikat
variabel. Mengevaluasi tujuan X -6,5 akan menyebabkan X untuk terikat dengan jumlah -6,5
dan tujuan untuk sukses.
Argumen kedua dapat berupa nomor atau ekspresi aritmatika misalnya
X adalah 6 * Y + Z-3.2 + P-Q / 4 (* menandakan perkalian).
Setiap variabel yang muncul dalam sebuah ekspresi aritmatika sudah harus terikat (sebagai
mengevaluasi hasil dari tujuan sebelumnya) dan nilai-nilai mereka harus numerik.
tujuan akan selalu berhasil dan variabel yang membentuk pertama
argumen akan terikat dengan nilai ekspresi aritmetik. Jika tidak, kesalahan
pesan akan muncul.
? – X 10,5 4,7 * 2.
X = 19,9
? – Y adalah 10, Z adalah Y 1.
Y = 10,
Z = 11
Simbol seperti + – * / dalam ekspresi aritmatika adalah jenis khusus infiks
operator yang dikenal sebagai operator aritmetika. Tidak seperti operator digunakan di tempat lain di Prolog
mereka tidak predikat tetapi fungsi yang mengembalikan nilai numerik.
Seperti halnya angka-angka, variabel dan operator, ekspresi aritmatika dapat mencakup
fungsi aritmatika, ditulis dengan argumen mereka dalam tanda kurung (yaitu bukan sebagai
operator). Seperti operator aritmetika ini kembali nilai-nilai numerik, misalnya menemukan
akar kuadrat dari 36:
? – X adalah sqrt (36).
X = 6
Operator aritmetik – 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
Tabel di bawah menunjukkan beberapa operator dan aritmatika aritmetika
fungsi yang tersedia dalam Prolog.
X + Y       jumlah X dan Y
X-Y          selisih dari X dan Y
X * Y       hasil kali X dan Y
X / Y       hasil bagi X dan Y
X / / Y    ‘integer hasil bagi’ dari X dan Y (hasilnya adalah dipotong ke terdekat integer antara itu dan nol)
X ^ Y       pangkat
-X              negatif X
abs (X)     nilai absolut X
sin (X)      sinus X (untuk X diukur dalam derajat)
cos (X)     kosinus X (untuk X diukur dalam derajat)
max (X, Y) yang lebih besar dari X dan Y
sqrt (X)    akar kuadrat X
4.3.Equality Operator
Kesetaraan Operator
Ada tiga jenis operator relasional untuk pengujian kesetaraan dan ketidaksetaraan tersedia dalam Prolog.
Satu untuk mengecek membandingkan nilai ekspresi aritmatika, dan dua lainnya digunakan untuk membandingkan istilah.
Arithmetic Expression Equality =:=
E1 =: = E2 berhasil jika ekspresi aritmetika mengevaluasi E1 dan E2 yang sama
nilai.
? – 6 +4 =: = 6 * 3-8.
yes
? – Sqrt (36) +4 =: = 5 * 11-45.
yes
Untuk memeriksa apakah suatu bilangan bulat ganjil atau bahkan kita dapat menggunakan checkeven / 1 predikat
didefinisikan di bawah ini.
checkeven (N):-M adalah N / / 2, N =: = 2 * M.
? – Checkeven (12).
yes
? – Checkeven (23).
no
? – Checkeven (-11).
no
? – Checkeven (-30).
yes
Integer hasil bagi para operator / / membagi argumen pertama dengan kedua dan
memotong hasilnya ke integer terdekat antara itu dan nol. Jadi 12 / / 2 adalah 6, 23 / / 2 adalah
11, -11 / / 2 adalah -5 dan -30 / / 2 adalah -15. Membagi sebuah integer dengan 2 menggunakan / / dan mengalikan
itu dengan 2 lagi akan memberikan bilangan asli jika bahkan, tetapi tidak sebaliknya.
Ekspresi aritmatika Ketidaksetaraan = \ =
E1 = \ = E2 berhasil jika ekspresi aritmetika E1 dan E2 tidak mengevaluasi ke
nilai sama
? – 10 = \ = 8 3.
yes
Terms Identical ==
Kedua argumen dari operator == infiks harus istilah. Tujuan Term1 == Term2
berhasil jika dan hanya jika Term1 identik dengan Term2. Setiap variabel yang digunakan dalam istilah mungkin atau mungkin tidak sudah terikat, tetapi tidak ada variabel terikat sebagai akibat dari mengevaluasi tujuan.
? – likes (X, Prolog) == likes(X, Prolog).
X = _
? – likes (X, Prolog) == likes (Y, Prolog).
no
(X dan Y adalah variabel yang berbeda)
? – X adalah 10, pred1 (X) == pred1 (10).
X = 10
? – X == 0.
tidak
? – 6 4 == 3 +7.
no

4.4 Logical Operator
Bagian ini memberikan gambaran singkat dari dua operator yang mengambil argumen yang panggilan istilah, yaitu istilah yang dapat dianggap sebagai tujuan.
Prefix operator 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. Diasumsikan bahwa
database berisi satu klausul
dog (fido).
? – not dog (fido).
no
? – dog (fred).
yes
? -not dog (fred).
yes
? – X = 0, X adalah 0.
X = 0
? – X = 0, bukan X adalah 0.
no
The pemisahan Operator
The pemisahan operator; / 2 (ditulis sebagai karakter titik koma) digunakan untuk mewakili
‘atau’. Ini adalah infiks operator yang membutuhkan dua argumen, yang keduanya adalah tujuan.
Tujuan1; Tujuan2 berhasil jika salah Tujuan1 atau Tujuan2 berhasil.
? – 6 <3; 7 adalah 5 +2.
yes

? – 6 * 6 =: = 36; 10 = 8 3.
yes






Leave a comment