用Prolog实现过程

 时间:2024-10-12 01:26:20

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

用Prolog实现过程

工具/原料

电脑

SWI-Prolog

选择结构

1、If…Then…Else结构是最简单的过程式控制结构,我们常常称之为选择结构或条件结构。下图是一个由Python语言编写的一个例子:

用Prolog实现过程

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

用Prolog实现过程

3、下图是Prolog运行后交互和输出的情况。

用Prolog实现过程

循环结构

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

用Prolog实现过程

2、与其相对应的Prolog程序如图所示。显然该程序中第一个while子句是递归循环的过程,在其测试条件失败之前始终进行自身调用。第二个while子句是停止条件。

用Prolog实现过程

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

用Prolog实现过程

优化过程结构

1、在设计过程结构时应使其执行效率最高,下面是前面循环的另一个实现方式。这个程序不如前面的效率高,因为这个程序中第一个子句在每次谓词调用时叵萤茆暴(除了最后一次调用)均失败。递归调用要放在循环子句最后,同时截断应尽可能前放,放在测试条件之后,这样也可以提高执行效率。如果有多层循环,应将循环次数多的作为内层,减少外面大层循环的跳转频率。

用Prolog实现过程
  • c++如何编写猜解密码
  • python如何逐行读文件并把每行数据存进数组?
  • 如何获取从DataPicker控件中选中的日期?
  • SQLyog如何连接本地mysql
  • Linux清屏命令(clear)实操
  • 热门搜索
    诚信手抄报版面设计图 淘气包马小跳手抄报 书的海洋手抄报 感恩节手抄报图片大全 防电手抄报 万圣节手抄报图片 交通安全漫画手抄报 我爱科学手抄报内容 一年级手抄报大全简单 平安手抄报