实验一 Prolog语言编程练习
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一Prolog语言编程练习
一、实验目的
加深对Prolog语言执行机理的认识,掌握Prolog语言的特点,熟悉其编程环境,为以后的人工智能程序设计做好准备。
1、熟悉Turbo Prolog运行环境;
2、掌握PROLOG语言的三种基本语句,以及匹配、回溯等基本机理;
3、掌握用PROLOG程序编写、编译和运行的方法。
4、编写一个小型程序并运行。
二、相关知识
1、Prolog简介
Prolog语言于20世纪70年代诞生于法国Marseille大学,此后其应用日益广泛,尤其在日本宣布Prolog为五代机的核心语言以后,更引起世界的普遍关注。
Prolog即PROgramming in LOGic,即用逻辑进行程序设计,它是由逻辑学家开发的一种描述式语言。它以谓词逻辑为基础,故也称为逻辑型语言。
本门课程实验程序将在Turbo Prolog上实现。
2、Turbo Prolog的使用
1) 在硬盘上(假设为d盘。最好不要用c盘)建立目录d:\Turbo Prolog,将Prolog所有文件拷贝到该目录下。在D:\Turbo Prolog下建立存放Prolog程序的文件夹d:\Turbo Prolog\test,用来保存Prolog程序文件。
2)执行文件为D:\Turbo Prologd\ Prolog.exe,启动Prolog的运行环境。
3)在Turbo Prolog集成环境中新建一个Prolog程序(file→new file),输入程序,保存到d:\Turbo Prolog\test文件夹中。
4) 编译程序(compile)。
5)运行程序(run)。在右侧的窗口中输入“?-”提示符后输入要查询的问题。
6)如需先前输入的修改程序,应先打开文件(file→load),修改完程序并保存后,再执行4)步进入。
三、实验内容及步骤
新建一文件:like.pro,保存至d:\Turbo Prolog\test文件夹中。在该文件中建立如下事实数据库:
注:谓词名(如:like)和常量(如:mark)用小写字母,每条语句以点‘.’结束。
查询1:
?- like(mark,tennis). {查询的目标(goal)}
yes. {有某个事实与目标匹配,查询成功,回显' yes.'}
查询2:
?- like(mark,football).
no. {没有与目标匹配的事实,查询失败,回显'no.' }
查询3:
?- like(X, tennis ). { X为变量(大写),匹配中X与ellen被绑定}
X = ellen {按回车键}
yes. {表示还有答案}
如果用户输入分号(;),Prolog就开始寻找其他的答案。首先它必须释放(unbinds)变量X。然后从上一次成功的位置的下一条子句开始继续搜索。这个过程叫做回溯(backtracking)。
?- like(X, tennis ).
X = ellen ;
X = mark ;
X = tom ;
no {表示没有答案了}
查询4:
?- like(X, tennis ),!.
X = ellen ;
no
截断谓词cut,prolog内部谓词,使用符号!来表示。cut能够有效地抑制其左边的子目标与其父目标的回溯,而它右边的目标则不受影响,如下面查询:
?- like(X, tennis ),! like(tom,Y ),
四、思考题
1、Prolog语言与命令式语言的执行机理有什么不同?
2、试分析Prolog推理时,目标与子句的匹配顺序。