VisualProlog实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VisualProlog实验
————————————————————————————————作者:————————————————————————————————日期:
实验一Visual Prolog运行环境实验(1学时)
一、实验目的
1、了解PROLOG解释器;
2、掌握PROLOG语言中常量、变量的表示方法;
3、掌握利用PROLOG进行事实库、规则库的编写方法。
二、实验要求
1、熟悉Visual Prolog运行环境,包括硬件与软件环境;
2、学习示例程序,分析其功能;
3、写出Example 1、Example 2、Example 3示例程序的功能;
4、利用PROLOG进行事实库、规则库的编写,并在此基础上进行简单的询问。
三、实验设备
计算机,Visual prolog教学软件。
四、实验内容及步骤
(一)实验内容:
1、熟悉Visual prolog的运行环境,包括所用的机器的硬件与软件环境;
2、学习使用Visual prolog,包括进入Prolog主程序、编辑源程序、修改环境目录、退出等基本操作;
3、学习Visual prolog的简单程序结构,掌握分析问题、询问解释技巧;
4、了解PROLOG语言中常量、变量的表示方法;
5、利用PROLOG进行事实库、规则库的编写,并在此基础上进行简单的询问。
(二)实验步骤:
1、启动Windows 2000操作环境;
2、安装Visual Prolog集成开发环境;
3、双击桌面图标或者找到Visual Prolog可执行文件所在目录双击图标,启动Visual prolog集成开发环境;
4、打开Project菜单,选择New Project菜单项,将工作目录修改为你要保存到的文
件夹,例如,c:\11,给出工程文件名;
5、打开Option菜单,选择Project菜单项打开下拉菜单,选择Compiler Options项,按下图中显示进行设置;
6、从工程界面中选择“new”按钮或者从file菜单中选择“new”菜单项,弹出一个界面,将所有的复选框都去掉,进入Visual Prolog的程序编辑界面;
7、将下面的Example 1编辑到编辑界面里面,Project菜单里面的Test goal菜单项或者直接点击菜单栏中的Test Goal按钮执行程序。查看执行结果显示窗口中结果是否与理论分析的结果一致;
8、仿前例,运行Example 2、Example 3,分析程序功能;
9、保存每个.Pro文件,保存工程。退出Visual Prolog系统,返回到Windows2000环境。
五、源程序
Example 1:
domains
person, activity = symbol
predicates
likes(person,activity)
clauses
likes(ellen,tennis).
likes(john,football).
likes(tom,baseball).
likes(eric,swimming).
likes(mark,tennis).
likes(bill,X):-likes(tom,X).
goal
likes(bill, What).
Example 2:
domains
element=c(char);i(integer);r(real);s(symbol)
mixlist=element*
predicates
length(mixlist, integer)
clauses
length([],0).
length([_|T],L):-length(T,L1),L=L+1.
goal
length([10,9,8,7,6,5,4,3,2,1],X).
Example 3:
predicates
fac(integer,real)
clauses
fac(1,1):-!.
fac(X,FactX):- Y=X-1, fac(Y,FactY), FactX=X *FactY.
goal
fac(3,X).
实验二知识表示、推理、搜索实验(10学时)正确完成给15分
一、实验目的
1、掌握利用PROLOG进行推理、问题求解的方法。
2、掌握PROLOG编程技巧。
二、实验要求
对同学进行分组,每组完成一题:
1.野人与传教士过河问题:有传教士和野人各三人需要过河,他们都会划船。现只有
一条船,一次只能载两人。假设野人多于传教士时传教士就会被吃掉。试编程求出
所有能确保全部安全的过河的计划,并给出Visual Prolog程序。
2.农夫和小米问题:农夫、狐狸、鸡和米都在一条河的左岸,现在要把它们全部送到
右岸去,农夫有一条船,过河时,除农夫外,船上至多能载狐狸、鸡和米中的一样。
狐狸要吃鸡,鸡要吃米,除非农夫在那里。试编程求出所有能确保全部安全的过河
的计划,并给出Visual Prolog程序。
3.八皇后问题模拟:在8 8格的国际象棋盘上摆放八个皇后,使其不能互相攻击,即
任意两个皇后都不能处于同一行、同一列或同一斜线上。试编程求出所有能满足要
求的摆法,并给出Visual Prolog程序。
4.谁是盗窃犯问题:某人被盗,公安局派出所派出5个侦察员去调查。研究案情时:
侦察员A说:“赵与钱中至少有一人作案”;
侦察员B说:“钱与孙中至少有一人作案”;
侦察员C说:“孙与李中至少有一人作案”;
侦察员D说:“赵与孙中至少有一人与此案无关”;
侦察员E说:“钱与李中至少有一人与此案无关”。
如果这5个侦察员的话都是可信的,试编程求出谁是盗窃犯,并给出Visual Prolog程序。
5.理发师问题:一个理发店接待室有n张椅子,工作室有1张椅子;没有顾客时,理
发师睡觉;第一个顾客来到时,必须将理发师唤醒;顾客来时如果还有空座的话,他就坐在一个座位上等待;如果顾客来时没有空座位了,他就离开,不理发了;当
理发师处理完所有顾客,而又没有新顾客来时,他又开始睡觉。试编程求出谁是盗