logo资料库

PROLOG语言实验一.doc

第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
资料共6页,全文预览结束
实验一 PROLOG语言编程
实验一 PROLOG 语言编程 一、实验目的 1.加深学生对逻辑程序运行机理的理解。 2.掌握 PROLOG 语言的特点、熟悉其编程环境。 3.为今后人工智能程序设计做好准备。 二、预习要求 1.复习 PROLOG 语言的语法。 2.熟悉 PROLOG 的语言环境。 3.阅读一些 PROLOG 的程序。 三、实验要求 1.用 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,Y),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、编写一个路径查询程序,使其能输出图中所有路径。 提示:程序中的事实描述了下面的有向图,规则是图中两节点间通路的定义。 b d e a c 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). 4、实现递归谓词 remove(X,Y,Z),它用于从表 Y 中除去所有整型数 X 的倍数值后得到新 表 Z。例如,对于询问 ?- remove(2,[3,4,5,6,7,8,9,10],Z). 的回答为: Z=[3,5,7,9] DOMAINS num=integer lists=num* PREDICATES remove(num,lists,lists). CLAUSES remove(X,[H|T],Z):- H mod X =0, remove(X,T,Z).
remove(X,[H|T],Z):- H mod X <>0,remove(X,T,Z1),Z=[H|Z1]. remove(X,[],[]). 五、实验总结 加深了对逻辑程序运行机理的理解,掌握了 PROLOG 语言的特点、熟悉了编程环境。
分享到:
收藏