1 / 43

第四章 Visual Prolog 概述

第四章 Visual Prolog 概述. 1094410058 陳善濟. 內容大鋼. Visual Prolog 6 概述 Visual Prolog 6 基本特性 創建項目 建立項目 瀏覽項目 開發項目 調試項目. 4.1 Visual Prolog 6 概述. Visual Prolog 6 是最新一代的 Visual Prolog 邏輯程式設計語言,是 Visual Prolog 的 PDC 和 Turbo Prolog 的後繼產品。 Visual Prolog 6 的目標是支援企業級的強調問題求解的複雜知識的程式設計。

kassia
Download Presentation

第四章 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. 第四章 Visual Prolog概述 1094410058 陳善濟

  2. 內容大鋼 • Visual Prolog 6概述 • Visual Prolog 6基本特性 • 創建項目 • 建立項目 • 瀏覽項目 • 開發項目 • 調試項目

  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. 4.1 Visual Prolog 6 概述 Visual Prolog特別適應於處理複雜的知識問題。PDC已經透過實例證明了這一點,它提供的一些成功的應用系統案例有︰ • 職員計畫 • 醫院預約登記 • 機場決策支援 • 航機決策支援 • 商店室內調度

  7. 4.2 Visual Prolog 6基本特性 • Visual Prolog 6是基於Prolog的強類型的面向對象程式設計語言。下面從語言特性、圖形化開發環境、編譯器、鏈接器、調試器等方面簡要予以介紹。

  8. 4.2.1 語言特性 Visual Prolog 6語言的主要特性︰ • 基於Horn子句的邏輯程式設計語言 • 完全面向對象 • 對象謂詞值(委派) • 強類型 • 代數數據類型 • 模式匹配與合一 • 受控的不確定性機製 • 完全集成的事實數據庫 • 自動的內存管理 • 支援與C/C++的直接聯接 • 支援對Win32 API函數的直接訪問

  9. 4.2.2 圖形化開發介面 Visual Prolog集成開發環境可以更方便快捷地建立、測試和修改Visual Prolog應用程式。它在開發大型項目時非常有用。 • 項目視窗中的模塊、包括檔案和資源的樹型架構,有助於將項目打包,從而給出了一個額外級別的抽象 • 文本編輯器可以方便地進行文本編輯,瀏覽那些聲明和實現。 • 對話框編輯器為設計對話框提供了標準控件 • 選單編輯器允許創建下拉式選單和彈出式選單 • 工具欄編輯器允許創建各種工具欄 • 圖形編輯器可以方便地創建、檢視和編輯圖示、指標和小位圖。 • 建造工具支援插入所需的程式包和包含指令 • 瀏覽工具支援查找特定的實體,go to definition和go to declaration

  10. 4.2.3 編譯器 Visual Prolog編譯器是一個功能強大且高效的編譯器,它可以用來︰ • 為產生可單獨執行的程式或DLL而創建目標檔案 • 解決聲明間的交叉引用 • 驗証謂詞模式 • 執行強類型檢查 • 在構造器中驗証事實初始化 • 進行謂詞分解

  11. 4.2.4 鏈接器 Visual Prolog擁有一個功能強大的鏈接器︰ • 產生EXE可執行檔案和DLL檔案 • 使用由最新的Microsoft Visual C編譯器產生的LIB檔案

  12. 4.2.5 調試器 Visual Prolog集成開發環境包含一個內建圖形化調試器︰ • 顯示常見的調試器視圖︰內存,堆棧,變量 • 顯示類和對象事實的值 • 進行單步跟進(Trace Into),單步越進(Step Over),等等 • 包括額外的調試步驟︰單步跳出,營運到Prolog代碼 • Fail和Exit可視化等

  13. 4.3 創建項目 在一個項目檔案中,我們將使用這個VDE來完成如下任務︰ • 創建項目︰即用VDE來創建一個項目。在項目創建期間,可以選擇該項目的一些重要特性,如該項目是產生一個可執行檔案還是產生一個DLL,是使用GUI還是只使用文本模式等。 • 建立項目︰即建立一個項目,在VDE中進行編譯和連接等。 • 瀏覽項目︰VDE和編譯器收集關於該項目的訊息,這些訊息以各種模式被用來進行實體的快速定位等。

  14. 4.3 創建項目 • 開發項目︰在項目的開發和維護期間,VDE被用來給項目添加源檔案和GUI實體、刪除源檔案和GUI實體,以及編輯源檔案和GUI實體。 • 調試項目︰VDE還被用來調試項目。在程式營運期間,調試器可用來跟蹤程式的執行,探索程式的狀態。 • 本章最後,我們將較為詳細地回顧一下上述這些事件。值得注意的是︰我們將首先創建一個項目,並將這個項目貫穿於全章。

  15. 4.3 創建項目 • 首先,我們創建一個項目。在選單中選擇Project -> New...,VDE將對此做出附應,出現一個包含項目各種特性的對話框,如圖所示。

  16. 4.3 創建項目 • 我們選擇項目名為tut01。項目名亦作為將要產生的目標檔案名。在此例中,目標檔案是一個exe檔案,故目標檔案名將是tut01.exe。選擇UI策略為GUI,即該程式是一個GUI程式,帶有圖形用戶界面。 • 基本目錄是一切項目的“基地”。為此,我們可以選擇一個方便的目錄位置。新項目將在基本目錄的一個次目錄中進行創建,按照缺省,這個次目錄名與項目名同名。

  17. 4.3 創建項目 • 按下OK按鈕,創建該項目。VDE將顯示出如下圖所示的情形。

  18. 4.3 創建項目 • 左面的視窗是項目視窗,它包含項目中有關實體的各種訊息。這個視窗現下尚不包含大量的訊息,但當我們編譯該項目時,各種訊息就會被添加進來。我們將會較詳細地分析在編譯該項目時這個視窗所包含的各種訊息。 • 底部是消息視窗,它將包含各種狀態訊息和進展訊息。

  19. 4.4 建立項目 • 在我們做任何修改之前,我們將建立該項目,即編譯和連接該項目。在建立(Build)選單中,可以找到建立、編譯和執行項目的選單命令。 • 如果選擇執行(Execute)命令,則該項目首先將會執行建立操作,這取決於執行程式的版本日期。因此,可以直接選擇執行命令(或直接按下F9鍵)。

  20. 4.4 建立項目 • 在消息視窗,VDE顯示哪些檔案被編譯,等等。 • 如果建立進程成功,就像此例一樣,所創建的程式被執行。本例現下的結果是只可以看見一個小的什麼也不做的GUI程式。值得注意的是,這個程式看起來有點像VDE本身。因為VDE實際上就是一個Visual Prolog程式,所以這一點並不是巧合。 • 在本章後面,我們還將看到,如果在程式建立過程中編譯器或連接器檢測到錯誤,將會發生什麼樣的情形。

  21. 4.5 瀏覽項目 • 我們將把目光轉到項目視窗中的項目樹,並對其稍加解釋。項目樹本身是以標準的視窗樹控件進行顯示的,讀者對此用法已經比較熟悉。在這裡,我們將集中精力在該樹的內容上。 • 項目樹的架構和內容如右圖所示。

  22. 4.5 瀏覽項目 • 圖中頂部節點代表項目,其餘節點是項目目錄。 • 緊下面是邏輯節點$(ProDir),它表示Visual Prolog的安裝目錄。這個目錄包含來自Visual Prolog系統的庫和庫代碼。 • 接下來的目錄是任務視窗TaskWindow,它是該項目目錄的一個次目錄。這個目錄包含產生任務視窗、選單、工具欄及關於(about)對話框等所需要的全部代碼。

  23. 4.5 瀏覽項目 最後,我們可以看到若干檔案。Visual Prolog使用以下約定︰ • *.ph檔案是程式包的頭檔案(package headers)。一個程式包是類和界面的一個集合,程式包常被當作一個積木塊使用。 • *.pack檔案是程式包。它們包含相應的.ph檔案的實現或定義。 • *.i檔案包含一種界面(interface)。 • *.cl檔案包含一個類聲明(class declaration)。 • *.pro檔案包含一個類實現(class implementation)。

  24. 4.5 瀏覽項目 • 如果摺疊起這個節點,重新展開任務視窗節點,可以看到如右圖所示的這樣一個目錄樹。

  25. 4.5 瀏覽項目 新出現的幾個類型的節點的含義如下︰ • *.dlg 檔案包含一個對話框(dialog); • *.win檔案包含一個視窗(window); • *.mnu檔案包含一個選單(menu); • *.cur檔案包含一個游標(cursor); • *.ico檔案包含一個圖示(icon)。 繼續考察後還可以發現︰ • *.tb檔案包含工具欄(toolbars); • *.bmp檔案包含位圖(bitmaps); • *.lib檔案包含庫(libraries)。

  26. 4.5 瀏覽項目 • 如果右擊一個節點,一個關聯選單將出現,選單中包含有對這個特定節點進行適當操作的有關命令。 • 如果雙擊一個節點,則相應的實體將調出對應的編輯器。所有源代碼檔案都將在文本編輯器中進行編輯,而視窗資源,如對話框和選單等將在圖形編輯器中進行編輯。後面我們將進一步考察圖形編輯器和文本編輯器。 • 某些實體在項目樹中出現兩次,這是因為它們既有一個聲明,又有一個定義或實現。

  27. 4.5 瀏覽項目 • 試著雙擊每一個run節點,可以看到,顯示run謂詞的聲明和定義的兩個編輯器分別被打開。 • VDE還有其他的工具,以瀏覽指定的實體,但這些工具在此將不進行討論。

  28. 4.6 開發項目 • 現在試著對該項目做一修改。因為我們仍然未考慮如何用Visual Prolog進行編程,所以我們將使這些改變盡量簡單一些。 • 我們開始故意引入一個錯誤,因而就可以看到錯誤視窗。 • 首先,我們在檔案tut01.pro中查找run謂詞子句。如果在項目樹中雙擊這兩個run節點的後面的那個節點,文本編輯器將被打開,一個插字符號正好位於該節點處,如下頁圖所示。

  29. 4.6 開發項目

  30. 4.6 開發項目 • 試著插入一個fail,如下面的代碼所示(注意show後面的逗號)。 clauses run():- TaskWindow = taskWindow_class::new(), TaskWindow:show(), fail.

  31. 4.6 開發項目 • 我們試圖再次建立該項目,即直接按下F9鍵。系統將儲存和編譯該檔案,但由於我們引入了一個錯誤,所以錯誤視窗被打開,如下圖所示。

  32. 4.6 開發項目 • 我們將考慮錯誤訊息的實際含義。一旦雙擊錯誤消息,就會發現,編輯器再次獲得焦點,插字符號準確地指向我們剛剛插入的fail謂詞。 • 去掉fail謂詞,復原該代碼,再次建立該項目。 • 接著,我們將試圖在關於對話框中進行修改。這並不是一個很明智的改變,但它卻能說明一些問題。

  33. 4.6 開發項目 • 首先,我們將用對話框編輯器打開About對話框。為此,在項目樹中雙擊該對話框。我們必須雙擊的節點如右圖所示。

  34. 4.6 開發項目 • 一旦雙擊了這個節點,就會在對話框編輯器中看到該對話框和兩個工具欄,如右圖所示。

  35. 4.6 開發項目 • 現在我們給這個對話框添加一個按鈕。首先點擊控件工具欄上的“按鈕”,然後在AboutDialog對話框視窗中鄰近項目圖示的旁邊點擊一下該對話框。結果,一個視窗彈出來,如右圖所示。

  36. 4.6 開發項目 (後面步驟因實作與講義不一致,故跳過) 原因:可能是因為版本不同…

  37. 3.7 調試項目 • 開發環境包含一個調試器。有了調試器,我們就可以跟蹤程式的執行過程,檢查程式的狀態。 • 為了啟動調試器,在選單中選擇Debug->Run,或者按下F6鍵。如果該項目不是最新的,它將首先被建立,然後才開始調試任務。 • 注意,透過選擇選單Debug -> Stop Debugging (或者按下Shift-F6鍵),我們就可以在任何時間停止調試。

  38. 3.7 調試項目 • 調試開始時,VDE將首先裝入調試訊息,然後進入被調試的程式。程式的執行過程在目標goal執行之前一直處於停止狀態。為了表示這種情形,目標goal在一個編輯器視窗中被打開,藍色的箭頭指向該目標goal,如下頁圖所示。

  39. 3.7 調試項目

  40. 3.7 調試項目 • 我們可以使用調試(Debug)選單命令來單步執行程式,如右圖所示。 • 選單命令Step Into︰將打開另一個編輯器和代碼mainExe::run,箭頭將指向這個代碼的入口。

  41. 3.7 調試項目 • 在視圖(View)選單中,我們可以打開各種調試器視窗,對此簡要作以下解釋。 • 營運堆棧(Run Stack)視窗,包含一個營運堆棧的描述。

  42. 3.7 調試項目 • 從原理上講,營運堆棧包含若干行,與已經進行了的調用相一致。然而,優化(即所謂的尾部調用優化)的結果導致可能已經去掉了一些條目。 • 營運堆棧不僅可以顯示調用關係,還可以顯示陷入點和回溯點的情況,這些情況將在後續章節裡進行更為詳細的敘述。

  43. 3.7 調試項目 • 局部變量(Local Variables)視窗︰包含局部變量,與營運堆棧視窗中的選擇相對應。 • 事實(Facts)視窗︰包含程式的全局狀態訊息,這個狀態存放在事實數據庫中。 • 斷點(Breakpoints)視窗︰顯示程式中當前的斷點。 • 其餘的調試視窗屬於低級調試,此處將不進行討論。

More Related