Prolog - 运算符


在下面的部分中,我们将了解 Prolog 中有哪些不同类型的运算符。比较运算符和算术运算符的类型。

我们还将看到它们与任何其他高级语言运算符有何不同,它们在语法上有何不同,以及它们在工作中有何不同。我们还将看到一些实际演示来了解不同运算符的用法。

比较运算符

比较运算符用于比较两个方程或状态。以下是不同的比较运算符 -

操作员 意义
X > Y X 大于 Y
X < Y X 小于 Y
X >= Y X 大于或等于 Y
X =< Y X 小于或等于 Y
X =:= Y X 和 Y 值相等
X =\= Y X 和 Y 值不相等

您可以看到“=<”运算符、“=:=”运算符和“=\=”运算符在语法上与其他语言不同。让我们看一些实际的演示。

例子

| ?- 1+2=:=2+1.

yes
| ?- 1+2=2+1.

no
| ?- 1+A=B+2.

A = 2
B = 1

yes
| ?- 5<10.

yes
| ?- 5>10.

no
| ?- 10=\=100.

yes

这里我们可以看到 1+2=:=2+1 返回 true,但 1+2=2+1 返回 false。这是因为,第一种情况是检查 1 + 2 的值是否与 2 + 1 相同,另一种情况是检查两个模式 '1+2' 和 '2+1' 是否相同或不是。由于它们不相同,因此返回 no (false)。在 1+A=B+2 的情况下,A 和 B 是两个变量,它们会被自动分配给一些与模式匹配的值。

Prolog 中的算术运算符

算术运算符用于执行算术运算。有几种不同类型的算术运算符,如下所示 -

操作员 意义
+ 添加
- 减法
* 乘法
/ 分配
** 力量
// 整数除法
模组 模数

让我们看一段实用的代码来了解这些运算符的用法。

程序

calc :- X is 100 + 200,write('100 + 200 is '),write(X),nl,
        Y is 400 - 150,write('400 - 150 is '),write(Y),nl,
        Z is 10 * 300,write('10 * 300 is '),write(Z),nl,
        A is 100 / 30,write('100 / 30 is '),write(A),nl,
        B is 100 // 30,write('100 // 30 is '),write(B),nl,
        C is 100 ** 2,write('100 ** 2 is '),write(C),nl,
        D is 100 mod 30,write('100 mod 30 is '),write(D),nl.

注意- nl 用于创建新行。

输出

| ?- change_directory('D:/TP Prolog/Sample_Codes').

yes
| ?- [op_arith].
compiling D:/TP Prolog/Sample_Codes/op_arith.pl for byte code...
D:/TP Prolog/Sample_Codes/op_arith.pl compiled, 6 lines read - 2390 bytes written, 11 ms

yes
| ?- calc.
100 + 200 is 300
400 - 150 is 250
10 * 300 is 3000
100 / 30 is 3.3333333333333335
100 // 30 is 3
100 ** 2 is 10000.0
100 mod 30 is 10

yes
| ?-