内容正文:
Prolog程序实例
在正式介绍Prolog之前,先以最常见的家庭关系为例,阐述如何用Prolog语言来描述这个问题。
家庭关系对大家来说是非常熟悉的,但是一般的程序设计语言表达起来就不太方便了。用Prolog语言能较清楚地对家庭关系进行描述。以小明同学的家庭关系为例,小明家里有五口人,父亲(小王)、母亲
(小张)、祖父(老王)和祖母(老李)。他们家的家庭关系可以用下图表示。
2
1
初识Prolog程序
由小明的家庭关系图所示,很容易看出小明家庭中各成员之间的关系。下面给出用Prolog语言表示的家庭关系程序,目的是使同学们对Prolog程序有个初步的总体的认识。
表示家庭关系的Prolog程序如下:
father(xiaowang,xiaoming). /*小王是小明的父亲*/
father(laowang,xiaowang). /*老王是小王的父亲*/
husband(xiaowang,xiaozhang). /*小王是小张的丈夫*/
husband(laowang,laoli). /*老王是老李的丈夫*/
4
mother(X,Z):-father(Y,Z),husband(Y,X). /*如果Y是Z的父亲、并且Y是X的丈夫,则X是Z的母亲*/
grandfather(X,Z):-father(Y,Z),father(X,Y). /*如果Y是Z的父亲并且X是Y的父亲,则X是Z的祖父*/
grandmother(X,Z):-grandfather(Y,Z),husband(Y,X). /*如果Y是Z的祖父,并且Y是X的丈夫,则X是Z的祖母*/
?-mother(Who1,xiaoming). /*谁是小明的母亲?*/
?-grandfather(Who2,xiaoming) /*谁是小明的祖父?*/
?-grandmother(Who3,xiaoming). /*谁是小明的祖母?*/
5
运行这个程序,计算机便能够回答我们提出的有关小明家庭关系的问题。例如问,小明的母亲是谁?小明的祖母是谁?等等。虽然上面的语句中没有直接说明,但计算机就会根据规则、推理找到答案,小明的母亲是小张,小明的祖母是老李,同学们一定会感到自常惊讶