簡介 有向程式流程圖是指用於分析程式運行過程或執行功能的有向圖。有向程式流程圖是軟體設計中常用一種圖,它能讓軟體設計人員更好設計軟體功能和修改軟體的不足。有向程式流程圖一般可以用過
UML 語言來實現。
前趨圖 就是一種有向程式流程圖。
程式流程圖 當程式中有較多循環語句和轉移語句時,程式的結構將比較複雜,給程式設計與閱讀造成困難。程式流程圖也叫程式框圖,它用圖的形式畫出程式流向,使人們能夠直觀而且清楚地看到程式結構,流程圖由框和帶箭頭的線組成,箭頭指示程式流向。框又分為兩種,一種為方框(矩形框),框內標明對應程式段應完成的任務,另一種為菱形框或橢圓形框,有兩個以上的出口,稱為分支框,框內記載分支條件。常用的框圖中有四種圖示: 用矩形表示處理框,表示某種運算或處理有一個入口一個出口。用菱形表示判斷框,用以檢查和判斷某些待判定的問題,通常它有一個入口,二個出口。表明有兩種可能選擇,而判斷結果只選擇其中之一。兩端為半圓形而上下兩邊為兩條平行線組成的復形框,稱起止框,用以表示過程的開始或終結。帶箭頭的方向線,稱流程線,表示流程圖的路線和方向。例如,要求編程實現從鍵盤讀入100個數, 並按從小到大的次序把它們存入一個數組中, 程式流程圖見圖。程式如下:
10 DIMA (100)20 FORk = 1 TO10030INPUT A(k)40NEXT k50 FORk=1 TO 9960 FORJ=k+1 TO10070 IF A(k) >A (J) THEN x=A (k):A (k) =A (J): A (J) =x80 NEXT J90 PRINT A (k)100 NEXT K110 PRINT A (x)120 END 程式流程圖能直觀、清楚地表現程式,因而給程式的編寫和閱讀帶來很大的方便。同時流程圖可以看作算法的形象化描述,它獨立於程式語言,有很好的通用性。編程之前應該先畫程式流程圖,養成良好的編程習慣。
前趨圖 前趨圖(Precedence Graph)是一個有向無循環圖,記為 DAG(Directed Acyclic Graph),用於描述進程之間執行的前後關係。圖中的每個結點可用於描述一個程式段或進程,乃至一條語句; 結點間的有向邊則用於表示兩個結點之間存在的偏序(Partial Order, 亦稱偏序關係)或前趨關係(Precedence Relation)“
” 。
{(
)是指步驟
必須在步驟
開始之前完成,如果(
,
)
,可寫成
→
,稱
是
的直接前趨,而稱
是
的直接後繼。在前趨圖中,把沒有前趨的結點稱為初始結點(Initial Node),把沒有後繼的結點稱為終止結點(Final Node)。此外,每個結點還具有一個重量(Weight),用於表示該結點所含有的程式量或結點的執行時間。
有向圖 圖 G 的邊的兩個頂點是無序的,一般稱為無向圖,在實際套用中,將圖和每條邊分配一個方向是很自然的,給圖 G 的每一條邊規定一個方向,則稱其為有向圖。對有向圖
,有向邊 e 用與其關聯的頂點 u , v 的有序對來表示,即
表示 u 為邊e 的起點,v 為邊e的終點。
UML 統一建模語言(UML)是一個通用的可視化建模語言,用於對軟體進行描述、可視化處理、構造和建立軟體系統製品的文檔。它記錄了對必須構造的系統的決定和理解,可用於對系統的理解、設計、瀏覽、配置、維護和信息控制。 UML 適用於各種軟體開發方法、軟體生命周期的各個階段、各種套用領域以及各種開發工具,是一種總結了以往建模技術的經驗並吸收當今優秀成果的標準建模方法。 UML包括概念的語義,表示法和說明,提供了靜態、動態、系統環境及組織結構的模型。它可被互動的可視化建模工具所支持,這些工具提供了代碼生成器和報表生成器。 UML標準並沒有定義一種標準的開發過程,但它適用於疊代式的開發過程。它是為支持大部分現存的面向對象開發過程而設計的。
UML描述了一個系統的靜態結構和動態行為。 UML將系統描述為一些離散的相互作用的對象並最終為外部用戶提供一定功能的模型結構。靜態結構定義了系統中重要對象的屬性和操作以及這些對象之間的相互關係。動態行為定義了對象的時間特性和對象為完成目標而相互進行通信的機制。從不同但相互聯繫的角度對系統建立的模型可用於不同的目的。U M L還包括可將模型分解成包的結構組件,以便於軟體小組將大的系統分解成易於處理的塊結構,並理解和控制各個包之間的依賴關係,在複雜的開發環境中管理模型單元。它還包括用於顯示系統實現和組織運行的組件。
套用 利用有向圖判別磁共振成像射頻線圈的設計流程圖
為了簡化對判別方法的套用,我們把判別過程分為3 步。步驟1,將程式流程圖抽象成有向圖; 步驟 2,觀察有向圖,看它是否符合圖論第一基本定理,如果符合,繼續步驟 3,否則流程圖有邏輯性錯誤;步驟 3,觀察此有向圖,無論從哪個頂點( 不包含結束點)出發,沿箭頭方向是否均可以走到結束點,如不能則存在死循環,即死鎖現象,可判定流程圖錯誤。磁共振成像( MRI)是當前醫學界最先進的診斷技術,廣泛套用於臨床,MRI 在成像過程中,射頻場的均勻性是決定 MRI 性能的重要指標,射頻必須在掃描區內產生均勻的發射磁場,使線圈在共振頻率處的Q 值很高才能獲得清晰的圖像,所以,射頻線圈的最佳化性尤其重要 。圖為磁共振成像鞍型射頻線圈的最佳化設計流程圖,此流程圖是用於計算磁通量關係曲線的框圖,是為試驗提供均勻磁場的條件算法流程圖。
按最佳化步驟對實際問題進行判別,可以看到,此流程圖結構複雜,在沒有進行程式測試之前,很難直觀判別它的邏輯性和最佳化性,按照圖論的方法,根據步驟1,首先把流程圖抽象成有向圖,為了看起來方便 ,我們把抽象成有向圖的黑點用 ①②③…這種序號來表示,如圖所示。
根據步驟2,由圖論第一基本定理,對於圖
,恆有∑
∈
(
)=2| E |,即每個頂點的度數之和=2*總邊數之和。從圖 4可以直觀地看出,頂點①的度數依次為 1,2,4, 2,5,2, 2,3, 2,4,2, 1,總和為30,總邊數為15,該有向圖滿足圖論第一定理,流程圖邏輯性正確。根據步驟 3,可以看到,無論從有向圖的那個頂點出發 ,都可以沿著箭頭的方向到達終點,例如:⑤
⑦
⑧
⑨
⑤
⑥
⑩,說明該設計不存在死循環。