当前位置:文档之家› 实验一 PROLOG语言编程练习

实验一 PROLOG语言编程练习

实验一  PROLOG语言编程练习
实验一  PROLOG语言编程练习

实验一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(ellen,tennis).

like(john,football).

like(tom,baseball).

like(eric,swimming).

like(mark,tennis).

like(tom,tennis).

注:谓词名(如: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推理时,目标与子句的匹配顺序。

相关主题
文本预览
相关文档 最新文档