多语言展示
当前在线:283今日阅读:83今日分享:25

SWI-Prolog的算术运算

Prolog主要不是用于完成数值计算的,因此不应该用它开发包括复杂计算的程序。然而算术运算也是Prolog语言的一个方面,而这又随所用的Prolog版本而异。本经验中采用的是SWI-Prolog,支持实数运算,如果读者采用不同的Prolog版本,可能在算术方面会存在差异,特别是对于除法运算。比如,对于具有实数运算的版本,5除以2结果为2.5,而对于只有整数运算的版本结果为2。
工具/原料
1

电脑

2

SWI-Prolog

算术运算
1

Prolog给用户提供了一些预先定义的运算符,这些运算符可用于完成基本的算术运算,它们是:+ 加 - 减 * 乘 / 除div 整除mod 整数的余数is 令表达式求值

2

下面会话实例用于表明Prolog中算术表达式的求解方式 ,仔细研究询问和Prolog对询问的答复后,可使我们进一步了解上述运算符的含义。

3

运算符is的目标的一般形式是:对象 is 表达式其中对象是一个简单的Prolog目标,表达式是任意一个有效的算术表达式。当Prolog遇到这样一个目标时,算术表达式会被求值,左边的对象例示为计算结果,Prolog以下述法则对算术表达式求值:1.乘、除法的运算优先于加减法,即先完成乘除法的运算;2.优先度相当的运算从左到右求值;3.圆括号可用来改变求值次序,圆括号内的表达式优先求值。下图是运算优先度是一个例子。

比较运算
1

Prolog还为用户提供了一些用于比较算术运算值的运算符,它们是:X > Y X大于YX < Y X小于YX >= Y X大于或等于YX =< Y X小于或等于YX = Y X等于YX \= Y X不等于Y

2

下图是一小段示例代码,用于判断年龄大小。

3

下图是分别执行询问后的运行结果。

总结

在本经验中,提到的运算中,mod优先级最高,然后是乘除法,其次是加减法和正负号,接下来是比较大小的运算。除此之外,SWI-Prolog还提供了许多数学函数,比如sin(x)、cos(x)等三角函数、log(x)等对数函数、绝对值函数abs(x)、平方根函数sqrt(x)等,因而可以开发包含较多数学运算的软件。可以前往SWI-Prolog网站的quintus.pl页面了解更多。END

注意事项
1

在SWI-Prolog中,赋值运算符为“is”,而不是其他编程语言常见的“=”。

2

在SWI-Prolog中,小于或等于运算符为“=

3

在SWI-Prolog中,不等号为“\=”,而不是其他编程语言常见的“!=”。

4

Prolog还有很多运算符,要借助互联网和书本了解更多。

推荐信息