第6章 PROLOG语言.ppt

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

第6章 PROLOG语言 6.1 PROLOG语言概述 6.2 PROLOG语言的结构 6.3 PROLOG语言的内部谓词 6.4 PROLOG语言的搜索策略 6.5 谓词!的讨论 6.6 PROLOG程序设计 6.7 PROLOG语言与C语言的连接 6.1 PROLOG语言概述 6.2 PROLOG语言的结构 6.3 PROLOG语言的内部谓词 6.4 PROLOG语言的搜索策略 6.5 谓词!的讨论 6.6 PROLOG程序设计 这是一个文字的冒险游戏,你所扮演的角色是一个三岁的小女孩,你想睡觉了,可是没有毛毯(nani)你就不能安心的睡觉。所以你必须在那个大房子中找到你的毛毯,这就是你的任务。下面我们正式开始“寻找Nani”游戏的编写。我们从定义基本的事实开始,这些事实是本游戏的基本的数据库。它们包括: 房间和它们的联系 物体和它们的位置 物体的属性 玩家在游戏开始时的位置 6.7 PROLOG语言与C语言的连接 6.3.4文件操作类 1.see(X) :打开目标文件X并以文件X为当前输入流;如果X为变量或者以X为名的文件不存在,则出错。 2.seeing(X):如X为变量,则X被例化为当前输入流;如X已例化,则X与当前输入流匹配时,目标成功。 3.Seen:关闭当前输入流;置当前输入流为键盘。 4.tell(X):把X定义为当前输出流,打开文件X。如X未例化,则出错 5.telling(X):如X为变量,则X被例化为当前输出流;如X已例化,则X与当前输出流匹配时,目标成功。 6.told 关闭当前输出流,并在文件尾加上结束标志;置当前输出流为显示器。 6.3.5控制谓词类 (1)? true该目标永远成功 (2)? fail柏目标永远失败 (3) repeat提供了通过回溯来得到多个解的一种方法,用PROLOG语言定义如下: repeat. repeat:-repeat. 它和fail连用可以产生循环 例如: goal:-repeat,write(‘a’),fail. ?: -goal 结果是输出aaaaa 因为遇到repeat时,目标成功,向下执行write(‘a’)遇到fail,失败引起回溯。回溯到repeat时又使目标成功,产生无限循环的结果。 (4). 截断谓词! 他是控制搜索过程中的一个非常重要的内部谓词。含义是:作为一个目标,它直接成功,但当回溯到它的时候,不能重新被满足,并使其双亲目标立即失败,即:穿过!的回溯是不可能的。 6.3.6 复杂目标类 1.call(X) X被例化为一个定义为目标的项,如果X成功,则call(X)成功;如果X失败,则call(X)失败。 使用call可以在编制程序时,调用还未知的目标函子。 2.not(X) 将X看作为一个目标,当X成功,not(X)失败。 谓词not(X)可用!和fail来定义: not(X):-call(X),!,fail. not(X). 3.X,Y 谓词中“,”是“并且”的意义。设X,Y均为目标,当X和Y都成功,则谓词X,Y才成功;如X成功,Y失败,则回溯,试图重新满足X,若X又失败,则整个目标谓词X,Y失败。 4.X;Y 谓词中“;”是“或”的意义。设X,Y均为目标,当X或Y成功,则谓词X;Y成功;当X和Y均失败时,谓词X;Y才失败。 6.3.7 项类 1.var(X):当X为一未例化的变量,var(X)为True。 2.nonvar(X):当X不是未例化变量时,nonvar(X)为False。 3.atom(X):当X为原子时,目标atom(X)成功。 4.integer(X):X代表一个整数,则目标成功。 5.atomic(X):当X为一个原子或一个整数时,则目标成功。 6.3.8 结构分量类 1.functor(T,F,N) 该谓词表示T是一个以F为函子,有N个分量的结构。 例:①?-functor([ a,b,c ],F,N). f = ·,n = 2 注:· 表示表运算。 2.arg(N,T,A) 如果T的第N个分量是A,则目标成功。使用时,N和T必须为已例化变量。 例:①?-arg(2,likes(mary,mother(jane)),X). X = mother(jane) 3.X = · · L 该谓词表示L是由结构X的函子及分量构成的表. 例:①?-[ a,b,c,d ] = · · L. L = [‘·’,a,[ b,c,d ] ] 4.name(A,L) 该谓词表示L由组成A的字符(ASCII码表示)所构成。 例如,?-name(abc,X). X = [ 97,98,99 ] 6.3.9

文档评论(0)

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

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

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档