表21TurboPROLOG的标准领域.PPT

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
表21TurboPROLOG的标准领域

  这个程序段中的fail是一个内部谓词, 它的语义是恒失败。 这个程序段与上面的程序段的差别仅在于把原来用计数器(或标记数)循环控制语句变成了恒失败谓词fail, 另外再增加了一个print语句。 增加这个语句的目的是为程序设置一个出口。 因为fail是恒失败, 下面若无出口的话, 将引起print本身的失败。 进而又会导致程序中的连锁失败。    还需说明的是, 用PROLOG的递归机制也可以实现循环, 不过用递归实现循环通常需与表相配合。 另外, 递归的缺点是容易引起内存溢出。 故通常的循环多是用上述方法实现的。 2.2.5 动态数据库   动态数据库就是在内存中实现的动态数据结构。它由事实组成, 程序可以对它操作, 所以在程序运行期间它可以动态变化。 Turbo PROLOG提供了三个动态数据库操作谓词: asserta(〈fact〉). assertz(〈fact〉). retract(〈fact〉). 其中fact表示事实。 这三个谓词的功能是:    asserta(〈fact〉). 把fact插入当前动态数据库中的同名谓词的事实之前;   assertz(〈fact〉). 把fact插入当前动态数据库中的同名谓词的事实之后;    retract(〈fact〉). 把fact从当前动态数据库中删除。  例如语句 asserta(student(20, ″李明″, 90.5)). 将在内存的谓词名为student的事实前插入一个新事实:  student(20, ″李明″, 90.5) 如果内存中还没有这样的事实, 则它就是第一个。 又如语句 retract(student(20,_,_)). 将从内存的动态数据库中的删除事实 student(20,_,_) 它可解释为学号为 20 的一个学生的记录。 注意, 这里用了无名变量_。   可以看出, PROLOG提供的动态数据库机制, 可非常方便地实现堆栈、 队列等动态数据结构, 提供的数据库操作谓词大大简化了编程。    另外, PROLOG还提供了谓词 save(〈filename〉). consult(〈filename〉). 2.2.6 表处理与递归   表是PROLOG中一种非常有用的数据结构。表的表述能力很强, 数字中的序列、 集合, 通常语言中的数组、记录等均可用表来表示。表的最大特点是其长度不固定, 在程序的运行过程中可动态地变化。 具体来讲, 就是在程序运行时, 可对表施行一些操作, 如给表中添加一个元素, 或从中删除一个元素, 或者将两个表合并为一个表等等。 用表还可以方便地构造堆栈、 队列、 链表、 树等动态数据结构。   表还有一个重要特点, 就是它可分为头和尾两部分。表头是表中第一个元素, 而表尾是表中除第一个元素外的其余元素按原来顺序组成的表。 例如下面的表2.2就是一个例子: 表 2.2 表的示 例   领域段 该段说明程序谓词中所有参量项所属的领域。 领域的说明可能会出现多层说明, 直到最终说明到Turbo PROLOG的标准领域为止(如上例所示)。Turbo PROLOG的标准领域即标准数据类型, 包括整数、实数、符号、串和符号等, 其具体说明如表2.1所示。 表 2.1 Turbo PROLOG的标准领域   谓词段 该段说明程序中用到的谓词的名和参量项的名(但Turbo PROLOG 的内部谓词无须说明)。    子句段 该段是Turbo PROLOG程序的核心, 程序中的所有事实和规则就放在这里, 系统在试图满足程序的目标时就对它们进行操作。   目标段 该段是放置程序目标的地方。 目标段可以只有一个目标谓词, 例如上面的例子中就只有一个目标谓词; 也可以含有多个目标谓词, 如 goal readint(X),Y=X+3,write(″Y=″,Y). 就有三个目标谓词。 这种目标称为复合目标。 2.2.2 数据与表达式   1. 领域   1) 标准领域   Turbo PROLOG中不定义变量的类型, 只说明谓词中各个项的取值域。 由上节我们知道, Turbo PROLOG有整数、实数、 字符、 串和符号等五种标准域。另外, 它还有结构、表

文档评论(0)

fengruiling + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档