1 / 73

第 4 章 Visual Prolog 概述

第 4 章 Visual Prolog 概述. 在这一章,将首先给出 Visual Prolog 6 基本特性的一个简要介绍。然后通过实例,较为详细地介绍 Visual Prolog 6 的可视化开发环境 VDE ,包括创建项目、建立项目、浏览项目、开发项目、调试项目等。. 第 4 章 Visual Prolog 概述. 4.1 Visual Prolog 6 概述 4.2 Visual Prolog 6 基本特性 4.3 创建项目 4.4 建立项目 4.5 浏览项目 4.6 开发项目 4.7 调试项目 本章小结

toyah
Download Presentation

第 4 章 Visual Prolog 概述

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第4章 Visual Prolog概述 • 在这一章,将首先给出Visual Prolog 6基本特性的一个简要介绍。然后通过实例,较为详细地介绍Visual Prolog 6的可视化开发环境VDE,包括创建项目、建立项目、浏览项目、开发项目、调试项目等。

  2. 第4章 Visual Prolog概述 4.1 Visual Prolog 6概述 4.2 Visual Prolog 6基本特性 4.3 创建项目 4.4 建立项目 4.5 浏览项目 4.6 开发项目 4.7 调试项目 本章小结 习 题 四

  3. 4.1 Visual Prolog 6概述 • Visual Prolog 6是最新一代的Visual Prolog逻辑程序设计语言,是Visual Prolog的PDC和Turbo Prolog的后继产品。Visual Prolog 6的目标是支持企业级的强调问题求解的复杂知识的程序设计。Visual Prolog 6的发布是PDC历时3年开发的结果。

  4. 4.1 Visual Prolog 6概述 • 经过持续不断的努力和对用户需求的深入考察,Visual Prolog已经增加了如下功能: • 一个独特的对象系统 • 多线程机制 • Unicode支持 • 改进的DLL支持 • 改进的函数支持 • 改进的异常处理 • 其他更多功能等

  5. 4.1 Visual Prolog 6概述 • 今天,Visual Prolog 6是一个功能非常强大的、非常安全的程序设计语言,它以一致和一流的方式将许多编程范例结合在一起。Visual Prolog是一个完备的程序设计环境,它提供如下设施: • 图形开发环境 • 编译器 • 连接器 • 调试器

  6. 4.1 Visual Prolog 6概述 • 开发环境已经得到极大的改善,从而使编写程序更加简单,对高级任务可提供更好的帮助。它支持先进的客户/服务器和多级解决方案。使用Visual Prolog,我们就能在Microsoft Windows平台建立企业级的应用程序。Visual Prolog特别适应于处理复杂的知识问题。PDC已经通过实例证明了这一点,它提供的一些成功的应用系统案例有: • 职员计划 • 医院预约登记 • 机场决策支持 • 航班决策支持 • 商店室内调度

  7. 4.1 Visual Prolog 6概述 • 上述所有这些系统全部是用Visual Prolog写成的。 • 通过使用功能强大的对象系统,我们能够非常迅速地构筑一个应用,同时受益于非常宽松的耦合环境。这将使我们能够缩短开发周期,减少维护费用。 • PDC提供免费的非商业的个人版本,从而为学习使用这个卓越的系统提供了良机。

  8. 4.2 Visual Prolog 6基本特性 • Visual Prolog 6是最新一代的Visual Prolog逻辑程序设计语言,它可以创建Win 32平台的企业级应用程序。 • Visual Prolog 6是基于Prolog的强类型的面向对象程序设计语言。下面从语言特性、图形化开发环境、编译器、链接器、调试器等方面简要予以介绍。

  9. 4.2 Visual Prolog 6基本特性 4.2.1 语言特性 Visual Prolog 6语言的主要特性: • 基于Horn子句的逻辑程序设计语言 • 完全面向对象 • 对象谓词值(委派) • 强类型 • 代数数据类型 • 模式匹配与合一 • 受控的不确定性机制 • 完全集成的事实数据库 • 自动的内存管理 • 支持与C/C++的直接联接 • 支持对Win32 API函数的直接访问

  10. 4.2 Visual Prolog 6基本特性 • 对象机制实现了系统和用户之间的松散耦合。对象只能通过接口来访问,接口与实现之间不过是松散耦合。类可以通过继承(或不继承)其它类来实现接口。 • 强大的类型检测、无需指针算法和自动内存管理的结合真正地避免了非法访问。 • 无非法访问一直是Visual Prolog的一个优势。正如PDC的一位用户所说:“对于Visual Prolog,那种错误不存在。” Visual Prolog 6毫无例外地继续保持这个优势。PDC的目标是:避免在必须调用外部代码或建立指针算法时引起的非法访问。

  11. 4.2 Visual Prolog 6基本特性 • 用非决定性搜索将符号数据类型、事实数据库和模式匹配结合起来,这样使得Visual Prolog非常适合于处理复杂的结构化知识。 • 除了谓词值和对象,所有的Visual Prolog数据都有一个人性化的可读文本表示,它可以被写入并返回到程序。

  12. 4.2 Visual Prolog 6基本特性 4.2.2 图形化开发环境 Visual Prolog集成开发环境可以更方便快捷地建立、测试和修改Visual Prolog应用程序。它在开发大型项目时非常有用。 • 项目窗口中的模块、包括文件和资源的树型结构,有助于将项目打包,从而给出了一个额外级别的抽象。 • 文本编辑器可以方便地进行文本编辑,浏览那些声明和实现。 • 对话框编辑器为设计对话框提供了标准控件。 • 菜单编辑器允许创建下拉式菜单和弹出式菜单。 • 工具栏编辑器允许创建各种工具栏。 • 图形编辑器可以方便地创建、查看和编辑图标、指针和小位图。 • 建造工具支持插入所需的程序包和包含指令。 • 浏览工具支持查找特定的实体,“go to definition”和“go to declaration”。

  13. 4.2 Visual Prolog 6基本特性 4.2.3 编译器 Visual Prolog编译器是二十世纪八十年代的Turbo Prolog 编译器的后继产品,Turbo Prolog是第一个Prolog编译器。自那时开始,PDC就一直开发并改进这个编译器,所以现在的Visual Prolog编译器是一个功能强大且高效的编译器,它可以用来: • 为产生可单独执行的程序或DLL而创建目标文件 • 解决声明间的交叉引用 • 验证谓词模式 • 执行强类型检查 • 在构造器中验证事实初始化 • 进行谓词分解

  14. 4.2 Visual Prolog 6基本特性 4.2.4 链接器 Visual Prolog拥有一个功能强大的链接器: • 产生EXE可执行文件和DLL文件 • 使用由最新的Microsoft Visual C编译器产生的LIB文件

  15. 4.2 Visual Prolog 6基本特性 4.2.5 调试器 Visual Prolog集成开发环境包含一个内建图形化调试器: • 显示常见的调试器视图:内存,堆栈,变量 • 显示类和对象事实的值 • 进行单步跟进(Trace Into),单步越进(Step Over),等等 • 包括额外的调试步骤:单步跳出,运行到Prolog代码 • Fail和Exit可视化等

  16. 4.3 创建项目 从这一节开始,我们将给出一个可视化开发环境VDE的综述。这个VDE是用来创建、开发和维护Visual Prolog项目的。简言之,在一个项目文件中,我们将使用这个VDE来完成如下任务: • 创建(Creation)项目:即用VDE来创建一个项目。在项目创建期间,可以选择该项目的一些重要特性,如该项目是产生一个可执行文件还是产生一个DLL,是使用GUI还是只使用文本方式等。 • 建立(Building)项目:即建立一个项目,在VDE中进行编译和连接等。 • 浏览(Browsing)项目:VDE和编译器收集关于该项目的信息,这些信息以各种方式被用来进行实体的快速定位等。

  17. 4.3 创建项目 • 开发(Development)项目:在项目的开发和维护期间,VDE被用来给项目添加源文件和GUI实体、删除源文件和GUI实体,以及编辑源文件和GUI实体。 • 调试(Debugging)项目:VDE还被用来调试项目。在程序运行期间,调试器可用来跟踪程序的执行,探索程序的状态。 本章最后,我们将较为详细地回顾一下上述这些事件。值得注意的是:我们将首先创建一个项目,并将这个项目贯穿于全章。

  18. 4.3 创建项目 首先,我们创建一个项目。在菜单中选择Project -> New...,VDE将对此做出响应,出现一个包含项目各种特性的对话框,如图4.1所示。 图4.1 项目设置选项对话框

  19. 4.3 创建项目 • 我们选择项目名为tut01。项目名亦作为将要产生的目标文件名。在此例中,目标文件是一个exe文件,故目标文件名将是tut01.exe。选择UI策略为GUI,即该程序是一个GUI程序,带有图形用户界面。 • 基本目录(Base Directory)是一切项目的“基地”。为此,我们可以选择一个方便的目录位置。新项目将在基本目录的一个子目录中进行创建,按照缺省,这个子目录名与项目名同名。

  20. 4.3 创建项目 • 在系统中创建项目时,常使用包前缀(Package Prefix)。关于包的概念,后面的章节还将详细解释。在此例中,源程序文件将与其他人共享前缀,如果这个前缀不与其他前缀相冲突,这是一个好的做法。此时,暂不需要考虑其余的选项。 • 现在,按下创建(Create)按钮,创建该项目。VDE将显示出如图4.2所示的情形。

  21. 4.3 创建项目 图4.2 项目创建过程

  22. 4.3 创建项目 • 左面的窗口是项目窗口(Project Window),它包含项目中有关实体的各种信息。这个窗口现在尚不包含大量的信息,但当我们编译该项目时,各种信息就会被添加进来。我们将会较详细地分析在编译该项目时这个窗口所包含的各种信息。 • 左面或底部是消息窗口(Messages Window),它将包含各种状态信息和进展信息。

  23. 4.4 建立项目 • 在我们做任何修改之前,我们将建立该项目,即编译和连接该项目。在建立(Build)菜单中,可以找到建立、编译和执行项目的菜单命令。 • 如果选择执行(Execute)命令,则该项目首先将会执行建立操作,这取决于执行程序的版本日期。因此,可以直接选择执行命令(或直接按下F9键)。 • 如果你还没有对Visual Prolog进行注册,将会出现一个专门的屏幕信息进行提醒。建议对Visual Prolog进行注册,也可以选择“继续”。

  24. 4.4 建立项目 • 在消息窗口(Messages Window),VDE显示哪些文件被编译,等等。 • 如果建立进程成功,就像此例一样,所创建的程序被执行。本例现在的结果是只可以看见一个小的什么也不做的GUI程序。值得注意的是,这个程序看起来有点像VDE本身。因为VDE实际上就是一个Visual Prolog程序,所以这一点并不是巧合。 • 在本章后面,我们还将看到,如果在程序建立过程中编译器或连接器检测到错误,将会发生什么样的情形。

  25. 4.5 浏览项目 • 现在,我们将把目光转到项目窗口(Project Window)中的项目树(Project Tree),并对其稍加解释。项目树本身是以标准的窗口树控件进行显示的,读者对此用法已经比较熟悉。在这里,我们将集中精力在该树的内容上。项目树的结构和内容如图4.3所示。

  26. 4.5 浏览项目 图4.3 项目窗口中的项目树

  27. 4.5 浏览项目 • 图中顶部节点代表项目,其余节点是项目目录。 • 紧下面是逻辑节点$(ProDir),它表示Visual Prolog的安装目录。这个目录包含来自Visual Prolog系统的库和库代码。 • 接下来的目录是任务窗口TaskWindow,它是该项目目录的一个子目录。这个目录包含产生任务窗口、菜单、工具栏及关于(about)对话框等所需要的全部代码。

  28. 4.5 浏览项目 最后,我们可以看到若干文件。Visual Prolog使用以下约定: • *.ph文件是程序包的头文件(package headers)。一个程序包是类和接口的一个集合,程序包常被当作一个积木块使用。 • *.pack文件是程序包。它们包含相应的.ph文件的实现或定义。 • *.i文件包含一种接口(interface)。 • *.cl文件包含一个类声明(class declaration)。 • *.pro文件包含一个类实现(class implementation)。 • 如果我们完全展开tut01.cl节点,其情形如图4.4所示。

  29. 4.5 浏览项目 图4.4 项目树展开的内容

  30. 4.5 浏览项目 • 这个子目录表明,文件tut01.cl包含一个叫做tut01的类,这个类又包含两个分别叫做classinfo和run的谓词。所谓“谓词”就是子例程,但是在本章中我们将不对它们做深层次的探究。 • 如果折叠起这个节点,重新展开任务窗口(TaskWindow)节点,可以看到如图4.5所示的这样一个目录树。

  31. 4.5 浏览项目 图4.5 任务窗口项目树的内容

  32. 4.5 浏览项目 新出现的几个类型的节点的含义如下: • *.dlg 文件包含一个对话框(dialog); • *.win文件包含一个窗口(window); • *.mnu文件包含一个菜单(menu); • *.cur文件包含一个光标(cursor); • *.ico文件包含一个图标(icon)。 继续考察后还可以发现: • *.tb文件包含工具栏(toolbars); • *.bmp文件包含位图(bitmaps); • *.lib文件包含库(libraries)。

  33. 4.5 浏览项目 • 如果右击一个节点,一个关联菜单将出现,菜单中包含有对这个特定节点进行适当操作的有关命令。 • 如果双击一个节点,则相应的实体将调出对应的编辑器。所有源代码文件都将在文本编辑器中进行编辑,而窗口资源,如对话框和菜单等将在图形编辑器中进行编辑。后面我们将进一步考察图形编辑器和文本编辑器。 • 某些实体在项目树中出现两次,这是因为它们既有一个声明,又有一个定义或实现。例如,tut01类中的谓词run,如图4.6所示。

  34. 4.5 浏览项目 图4.6 项目树展开后的内容

  35. 4.5 浏览项目 • 试着双击每一个run节点,可以看到,显示run谓词的声明和定义的两个编辑器分别被打开。 • VDE还有其他的工具,以浏览指定的实体,但这些工具在此将不进行讨论。

  36. 4.6 开发项目 • 现在试着对该项目做一修改。因为我们仍然未考虑如何用Visual Prolog进行编程,所以我们将使这些改变尽量简单一些。 • 我们开始故意引入一个错误,因而就可以看到错误窗口。首先,我们在文件tut01.pro中查找run谓词子句。如果在项目树中双击这两个run节点的后面的那个节点,文本编辑器将被打开,一个插字符号正好位于该节点处,如图4.7所示。

  37. 4.6 开发项目 图4.7 文本编辑器窗口

  38. 4.6 开发项目 • 试着插入一个fail,如下面的代码所示(注意show后面的逗号)。 clauses run():- TaskWindow = taskWindow_class::new(), TaskWindow:show(), fail. • 我们试图再次建立该项目,即直接按下F9键。系统将保存和编译该文件,但由于我们引入了一个错误,所以错误窗口被打开,如图4.8所示。

  39. 4.6 开发项目 图4.8 错误窗口

  40. 4.6 开发项目 • 我们将考虑错误信息的实际含义。一旦双击错误消息,就会发现,编辑器再次获得焦点,插字符号准确地指向我们刚刚插入的fail谓词。 • 去掉fail谓词,复原该代码,再次建立该项目。 • 接着,我们将试图在关于(about)对话框中进行修改。这并不是一个很明智的改变,但它却能说明一些问题。 • 首先,我们将用对话框编辑器(Dialog Editor)打开About对话框。为此,在项目树中双击该对话框。我们必须双击的节点如图4.9所示。

  41. 4.6 开发项目 图4.9 双击项目树中About对话框

  42. 4.6 开发项目 • 一旦双击了这个节点,就会在对话框编辑器中看到该对话框和两个工具栏,如图4.10所示。

  43. 4.6 开发项目 图4.10 对话框编辑器

  44. 4.6 开发项目 • 现在我们给这个对话框添加一个按钮。首先点击控件工具栏上的“按钮”,然后在AboutDialog对话框窗口中邻近项目图标的旁边点击一下该对话框。结果,一个窗口弹出来,如图4.11所示。

  45. 4.6 开发项目 图4.11 按钮属性标志对话框

  46. 4.6 开发项目 • 我们改变这里的文本(Text)为“Press Me”,这个文本将出现在按钮上。我们还标记常量(Constant)字段,但这时VDE已经选择该常量为idc_press_me。该常量将在各种上下文中标识这个特定的控件。 • 当我们按下Ok时,该按钮将被插入到这个对话框之中,结果情形如图4.12所示。

  47. 4.6 开发项目 图4.12 将按钮插入About对话框

  48. 4.6 开发项目 • 现在,我们就可以做一些按钮被按下后要完成的事。为此,我们将打开代码专家(Code Expert):右击该对话框,且选择代码专家(Code Expert)。代码专家被打开后,我们可以看到光标正好位于该按钮处(参见图4.13)。

  49. 4.6 开发项目 图4.13 对话框与窗口专家

  50. 4.6 开发项目 • 在图4.13所示的代码专家对话框中,蓝色圆点表示这个控件未被处理。对于处理谓词,VDE建议使用名字onControlPressMe。右击该项,选择添加(Add)按钮,以便将这个谓词添加到我们的代码中,并且将它与这个控件进行绑定。 • 在我们选择添加(Add)按钮之后,代码专家将发生变化,如图4.14所示。

More Related