预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共18页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第1章:配置开发环境 NOV15TH,2011 这道习题几乎没有代码内容,它的主要目的是让你在计算机上安装好Prolog。你应该尽量照着说明进行操作。 安装SWI-Prolog MacOS 找一个你最喜欢的文本编辑器。在Mac系统下,TextMate也许是最好的选择,但是它是需要花钱购买的,如果你不想买的话,可以使用一些免费的文本编辑器比如Kod。需要注意的是,这写编辑器本身都是不支持Prolog代码高亮的,如果你想要这个功能,你需要下载针对这些文本编辑器的插件,其中TextMate的插件可以在这里下载到TextMateBundle 下载SWI-Prolog,请选择适合你系统版本的链接。下载解压之后双击安装包,等待一段时间以后,你的Prolog就安装好了。SWI-Prolog是Prolog的一个实现,作者是来自阿姆斯特丹大学的Jan,之所以选择这个Prolog实现作为开发的环境,一个原因是因为它很稳定,运行速度也算是可以,更重要的原因是它的开发文档写的很详细。这个Prolog的实现不是功能最多的,但是我个人认为是最好用的,也是最适合Prolog的初学者使用。 当你安装好Prolog以后,进入命令终端,输入: swipl 你应当看见下图: Windows 第一步同样是找一个自己喜欢的文本编辑器,个人推荐Notepad++,你可以轻易的在Google上搜寻到下载地址。 下载SWI-Prolog,选择Windows的安装包,下载解压之后双击安装包,等待一段时间以后,你的Prolog就安装好了。 与MacOS不同的是,在Windows下,你可以不必去命令行下面输入”swipl”,你可以直接双击桌面上的快捷方式就可以打开SWI-Prolog了。打开以后的界面应该和MacOS下的界面类似。 Linux 我相信使用Linux系统的朋友应该都懂得如何安装一个小小的软件吧?所以在这里就不赘述了~ HelloWorld! 好像在大部分的程序语言的时候,第一个要编写的程序都是“HelloWorld!”。虽然“HelloWorld”程序不能显示出Prolog的特性,我在这里也姑且做一个“HelloWorld!”的程序吧,目的是让大家试一下你们刚才下载的SWI-Prolog是否工作。 按照之前的方法进入SWI-Prolog,在命令行下输入: writeln('HelloWorld!'). 需要注意的是,这行代码一定要以英文中的句号”.”来结尾,Prolog中的“.”和C语言中的“;”一样,都是代表一段代码的结尾。再者,HelloWorld!字符串一定要以单引号来包裹。如果输入正确的话,你将看到如下输出: HelloWorld! true. 这里的“HelloWorld!”很好理解,这是我们要求程序输出的,那么那个奇怪的“true”是哪里来的呢?请注意,在Prolog终端输入的时候,没一个语句都是以“?-”这样两个字符开头的,它代表我们输入的程序代码其实是对Prolog系统的一个查询(问询),一旦用户输入了查询,Prolog系统会运用它的知识库来判定这个查询是真(true)是假(false).writeln是Prolog系统自己定义的一个语句,它的作用是向当前的显示设备输出一个字符串并且换行,所以很显然,这个语句是真的,因为Prolog知道有这个语句.这就是为什么程序的最后有一个”true”.有意思的是,因为整个过程中Prolog都是在试图证明这个语句是真是假,向屏幕输出”HelloWorld!”这件事实际上是执行这个语句的”副作用”(sideeffect)!在Prolog中,很多任务都是靠副作用来实现的,包括输入输出,甚至是参数的传递. 最后,如果想要退出SWI-Prolog,输入: halt. 同样,不要忘记最后的“.”~ 好了,到这里,这一章就算是结束,因为这一章讲的内容很基本,我就不提供习题了.下一章我们将正式开始学习有关Prolog语言的知识!敬请期待! 第2章:谁是谁的爸爸 NOV16TH,2011 家谱 假设我们有这样一个家谱图: 我们现在的任务是将这个家谱图写成程序代码的形式。请打开你最喜欢的文本编辑器,输入以下代码。 male(di). male(jianbo). female(xin). female(yuan). female(yuqing). father(jianbo,di). father(di,yuqing). mother(xin,di). mother(yuan,yuqing). grandfather(X,Y):-father(X,Z),father(Z,Y). grandmother(X,Y):-mother(X,Z),father(Z,Y). daughter(X,Y):-father(X,Y),female(Y