预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共42页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第2章逻辑程序设计语言PROLOG 2.1基本PROLOG 2.2TurboPROLOG程序设计  2.1基本PROLOG 2.1.1PROLOG的语句 1.事实(fact) 格式〈谓词名〉(〈项表〉). student(john). like(mary,music). abc. repeat. 功能一般表示对象的性质或关系。2.规则(rule) 格式〈谓词名〉(〈项表〉):-〈谓词名〉(〈项表〉){,〈谓词名〉(〈项表〉)}.  bird(X):-animal(X),has(X,feather). grandfather(X,Y):- father(X,Z),father(Z,Y). run:-start,step1(X),step2(X),end. 功能一般表示对象间的因果关系、蕴含关系或对应关系。3.问题(question) 格式?-〈谓词名〉(〈项表〉){,〈谓词名〉(〈项表〉)}.  ?-student(john). ?-like(mary,X). 功能问题表示用户的询问,它就是程序运行的目标。2.1.2PROLOG的程序 PROLOG程序一般由一组事实、规则和问题组成。问题是程序执行的起点,称为程序的目标。 likes(bell,sports). likes(mary,music). likes(mary,sports). likes(jane,smith). friend(john,X):-likes(X,reading),likes(X,music). friend(john,X):-likes(X,sports),likes(X,music). ?-friend(john,Y). ?-likes(mary,X). 或 ?-likes(mary,music). 或 ?-friend(X,Y). 或 ?-likes(bell,sports), likes(mary,music), friend(john,X).2.1.3PROLOG程序的运行机理 1.自由变量与约束变量 2.匹配合一 两个谓词可匹配合一,是指两个谓词的名相同,参量项的个数相同,参量类型对应相同,并且对应参量项还满足下列条件之一: (1)如果两个都是常量,则必须完全相同。 (2)如果两个都是约束变量,则两个约束值必须相同。 (3)如果其中一个是常量,一个是约束变量,则约束值与常量必须相同。 (4)至少有一个是自由变量。考虑下面的各组谓词是否可匹配合一? pre1(″ob1″,″ob2″,Z) pre1(″ob1″,″ob3″,Y) pre1(″ob1″,″ob2″,Z) pre1(″ob1″,X,″ob3″) pre1(″ob1″,″ob2″,Z) pre1(″ob1″,X,Y) 3.回溯 所谓回溯,就是在程序运行期间,当某一个子目标不能满足(即谓词匹配失败)时,控制就返回到前一个已经满足的子目标(如果存在的话),并撤消其有关变量的约束值,然后再使其重新满足。成功后,再继续满足原子目标。如果失败的子目标前再无子目标,则控制就返回到该子目标的上一级目标(即该子目标谓词所在规则的头部)使它重新匹配。回溯也是PROLOG的一个重要机制。likes(bell,sports). likes(mary,music). likes(mary,sports). likes(jane,smith). friend(john,X):-likes(X,reading),likes(X,music). friend(john,X):-likes(X,sports),likes(X,music). ?-friend(john,Y). 则求解目标为 friend(john,Y). 新目标 likes(X,reading),likes(X,music).2.2TurboPROLOG程序设计 2.2.1程序结构 /*〈注释〉*/ 〈编译指令〉 constants 〈常量说明〉 domains 〈域说明〉 database 〈数据库说明〉 predicates 〈谓词说明〉 goal 〈目标语句〉 clauses 〈子句集〉例如果把上节的例子程序作为TurboPROLOG程序,则应改写为: DOMAINS name=symbol PREDICATES likes(name,name). friend(name,name) GOAL friend(john,Y),write(″Y=″,Y). CLAUSES likes(bell,sports). likes(mary,music). likes(mary,sports). likes(jan