实验一 PROLOG语言编程一、实验目的 1.加深学生对逻辑程序运行机理的理解。 2.掌握PROLOG语言的特点、熟悉其编程环境。 二、预习要求 1.复习PROLOG语言的语法。 2.熟悉PROLOG的语言环境。 3.阅读一些PROLOG的程序。 三、实验内容 1、编写一个描述亲属关系的PROLOG程序,然后再给予出一些事实数据,建立一个小型演绎数据库。 提示:可以以父亲和母亲为基本关系(作为基本谓词),再由此来描述祖父、祖母、兄弟、姐妹以及其他所属关系。 2、编写一个路径查询程序,使其能输出图中所有路径。 提示:程序中的事实描述了下面的有向图,规则是图中两节点间通路的定义。
3、一个雇主在发出招聘广告之后,收到了大量的应聘申请。为了从中筛选出不量的候选人,该雇主采用下列判据:申请者必须会打字、开车,并且住在伦敦。 (a)用Prolog规则表述这个雇主的选择准则。 (b)用Prolog事实描述下列申请者的情况: 史密斯住在剑桥,会开车但不会打字。 布朗住在伦敦,会开车也会打字。 简住在格拉斯哥,不会开车但会打字。 埃文斯住在伦敦,会开车也会打字。 格林住在卢顿,会开车也会打字。 (c)要求Prolog提供一个候选人名单。
四、代码 1、编写一个描述亲属关系的PROLOG程序,然后再给予出一些事实数据,建立一个小型演绎数据库。 提示:可以以父亲和母亲为基本关系(作为基本谓词),再由此来描述祖父、祖母、兄弟、姐妹以及其他所属关系。 domains name=symbol. predicates mother(name,name). father(name,name). grandfather(name,name). grandmother(name,name). sister(name,name). aunt(name,name). goal grandmother(a,X),write("X=",X),nl, father(b,Y),write("Y=",Y),nl, sister(d,Z),write("Z=",Z),nl, aunt(d,T),write("T=",T). clauses mother(a,c). mother(a,d). mother(c,g). mother(c,f). father(b,c). father(b,d). father(e,g). father(e,f). grandfather(X,Z):-father(X,Z),father(Y,Z). grandmother(X,Z):-mother(X,Y),mother(Y,Z). sister(X,Y):-mother(Z,X),mother(Z,Y). aunt(X,Y):-mother(Z,Y),sister(Z,X). 2、编写一个路径查询程序,使其能输出图中所有路径。 domains point=symbol predicates road(point,point). path(point,point). goal path(X,Y),write(X,"-->",Y),nl,fail. clauses road(a,b). road(a,c). road(b,e). road(b,d). road(c,d). road(d,e). path(X,Y):-road(X,Y). path(X,Y):-road(X,Z),road(Z,Y),not(road(X,Y)). 3、一个雇主在发出招聘广告之后,收到了大量的应聘申请。为了从中筛选出不量的候选人,该雇主采用下列判据:申请者必须会打字、开车,并且住在伦敦。 (a)用Prolog规则表述这个雇主的选择准则。 (b)用Prolog事实描述下列申请者的情况: 史密斯住在剑桥,会开车但不会打字。 布朗住在伦敦,会开车也会打字。 简住在格拉斯哥,不会开车但会打字。 埃文斯住在伦敦,会开车也会打字。 格林住在卢顿,会开车也会打字。 (c)要求Prolog提供一个候选人名单。 domains people=symbol.skill=symbol. predicates ziliao(people,skill,skill,skill). goal ziliao(X,london,car,type),write("X=",X),nl,fail. clauses ziliao(smith,jianqiao,car,nottype). ziliao(brown,london,car,type). ziliao(jane,glasg,nocar,type). ziliao(elven,london,car,type). ziliao(green,ludun,car,type).
Visual_Prolog实验.doc
(458.5 KB, 下载次数: 0)
|