欢迎来到天天文库
浏览记录
ID:20661138
大小:1.14 MB
页数:149页
时间:2018-10-14
《visual_prolog编程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第7章VisualProlog编程本章介绍基于VisualProlog编程方面的知识,主要内容包括VisualProlog基础、VisualProlog的GUI编程、VisualProlog的逻辑层、VisualProlog的数据层。第7章VisualProlog编程7.1VisualProlog基础7.2VisualProlog的GUI编程7.3VisualProlog的逻辑层7.4VisualProlog的数据层本章小结与习题7.1VisualProlog基础传统的Prolog与VisualProlog6之间的差别主要体现在如下几
2、个方面:1)程序结构很明显,传统Prolog中所使用的结构与VisualProlog6中使用的结构,在理解的难易程度方面不同。主要包括如何规划来自定义(definitions)的声明(declarations),以及如何简要地说明程序必须使用指定关键字(keywords)进行查找的主目标Goal。2)文件考虑VisualProlog6提供了各种工具,以便将程序结构组织成不同类型的文件。3)作用域访问VisualProlog6可以挑选在其他模块中通过使用称为作用域标识(Scopeidentification)的概念而开发出来的功能。4)
3、面向对象VisualProlog6程序可以编写成面向对象的程序,使用标准的面向对象特性。7.1VisualProlog基础7.1.1程序结构7.1.2目标Goal7.1.3文件考虑7.1.4作用域访问7.1.5面向对象7.1.6一个完整的例子:family1.prj67.1.7程序的取舍7.1.8小结7.1.1程序结构VisualProlog的程序,从结构上讲,主要包括若干个段,即论域段、谓词段、子句段、目标段等。VisualProlog作为强类型的编译型语言,通常用论域段和谓词段来给出有关的声明或定义。7.1.1.1声明与定义声明(
4、Declaration)与定义(Definition)有着不同的含义。在Prolog中,当需要使用一个谓词的时候,就可以直接使用,无需事先向Prolog推理机做任何的通告。例如,在前面的例子中,grandFather谓词的子句就是利用传统的Prolog的谓词头和谓词体结构直接写下来的。我们不用在代码中再告知推理机这个谓词结构是后面需要使用的。类似地,当在传统的Prolog中使用一个复合论域时,无须首先告诫Prolog推理机关于使用该论域有何意图。只要感到需要,就可以直接使用一个论域。然而,在VisualProlog6中,在编写一个谓词
5、的子句体代码之前,我们必须首先对编译器声明这样一个谓词的存在。类似地,在使用任何论域之前,也必须先进行声明,以便将这些论域的存在告知编译器。7.1.1.1声明与定义在VisualProlog6中需要这种预先告知功能的原因本质上是为了保证将运行时间异常(runningexceptions)尽可能地转变为编译时间错误(compiletimeerrors)。对于“运行时间异常”,我们指的是只在运行所编译的程序期间出现的问题。例如,如果我们想使用一个整数作为一个函数的参数,但是却错误地使用了实数,这就会成为一个运行错误(这大都出现在使用其他编
6、译器的程序中,但不是在VisualProlog6中),程序就会因此而失败。当声明已定义的谓词和论域时,这类位置语法,即哪一个参变量属于哪一个论域,就会对编译器起作用。因此,当VisualProlog6执行编译时,它将比较彻底的检查程序,以发现诸如此类的语法错误及其它错误。7.1.1.1声明与定义由于VisualProlog6的这些特性,整个程序的效率因此提高了。程序员不必等到程序实际执行时才发现错误。事实上,对于实际编写程序的人,将体会到这大大地节约了时间。通常,运行时导致发生运行时间异常的条件如此难以捉摸,以致于错误可能会在很多年后
7、才被发现,或者会在许多特别重要的情况或令人尴尬的场合表现出来。所有这些表明,编码中存在的论域和谓词要在定义前给出合适的声明,以给编译器详尽的指示。7.1.1.2关键字一个VisualProlog6的程序包括一组被标点分为不同部分的代码,由特定的关键字告诉编译程序所要生成的类型。例如,关键字可以将谓词和论域的定义和声明区分开。通常,每一部分由一关键字开始,在每一部分结束时,一般没有关键字指示。新的关键字的出现表明前一部分的结束和下一部分的开始。对这一规则的例外是关键字“implement”和“endimplement”,在这两个关键字中
8、间的代码表示它们属于一个特殊的类。若有人不懂类的概念,可以把它看作程序的一个模块或一个部分。在本节中,我们将只介绍下述关键字。同样我们给出了这些关键字的用途,具体的句法可以从文档资料中学到。VisualProlog6中还
此文档下载收益归作者所有