用Prolog实现过程
我们说Prolog是陈述式(声明式)语言,实际上它是半陈述式的。如果存在真正的陈述式语言的话,那么程序员只需要描述信息和问题就好了,计算机在求解时会自动地产生相应算法,并力图使算法尽可能地有效。然而Prolog具有某些过程式语言的特点,例如,同一谓词的子句(规则)顺序对程序的执行是十分重要的。又如人们常常利用谓词fail或截断来干预过程。本篇经验将介绍Prolog实现选择、循环等过程式结构。

2、用Prolog表达上述过程的程序如图所示。程序中的write和read是Prolog内置的谓词,分别用于输出和输入。nl表示换行。子句writetest(注意其变元)可保证Prolog做出正确的路线选择,其中截断用于保证得到唯一确定的解。空变量记作“_”,表示对其变量的值并不关心。

循环结构
1、循环结构也是过程式程序设计中常见的一种程序结构。下图是一段简短的Python代码,执行后会打出8×5大小的由“*”组成的矩形。

3、Prolog程序运行后交互和输出情况如图所示。读者还可以设计出其它埂黉餐嚣循环结构,设计具有循环结构的程序的基本过程可归纳成下桢郓羼抱述规则:❶把过程转换成标准的While循环;❷整个过程分为三步:初始化,循环,给出结果所需的后续计算过程;❸用递归子句的尾表示循环,在循环开始处进行条件测试;❹用循环谓词的第二个子句进行徃完成后所需的计算;❺建立递归子句的前端谓词,该谓词用于为循环提供所需的变量值和从循环中获取变量值;❻设计调用前端谓词的程序。
