SWI-Prolog的算术运算

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

SWI-Prolog的算术运算

工具/原料

  • 电脑
  • SWI-Prolog

算术运算

  1. 1

    Prolog给用户提供了一些预先定义的运算符,这些运算符可用于完成基本的算术运算,它们是:

    + 加 - 减 * 乘 / 除

    div 整除

    mod 整数的余数

    is 令表达式求值

    SWI-Prolog的算术运算
  2. 2

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

    SWI-Prolog的算术运算
  3. 2
    相关内容未经许可获取自百度经验
  4. 3

    运算符is的目标的一般形式是:对象 is 表达式

    其中对象是一个简单的Prolog目标,表达式是任意一个有效的算术表达式。当Prolog遇到这样一个目标时,算术表达式会被求值,左边的对象例示为计算结果,Prolog以下述法则对算术表达式求值:

    1.乘、除法的运算优先于加减法,即先完成乘除法的运算;

    2.优先度相当的运算从左到右求值;

    3.圆括号可用来改变求值次序,圆括号内的表达式优先求值。

    下图是运算优先度是一个例子。

    SWI-Prolog的算术运算
    END

比较运算

  1. 1

    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

    SWI-Prolog的算术运算
  2. 2

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

    SWI-Prolog的算术运算
  3. 3

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

    SWI-Prolog的算术运算
    END

总结

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

    SWI-Prolog的算术运算
    END

注意事项

  • 在SWI-Prolog中,赋值运算符为“is”,而不是其他编程语言常见的“=”。
  • 在SWI-Prolog中,小于或等于运算符为“=
  • 在SWI-Prolog中,不等号为“\=”,而不是其他编程语言常见的“!=”。
  • Prolog还有很多运算符,要借助互联网和书本了解更多。
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。
作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。
展开阅读全部