納西-施奈德曼圖

納西-施奈德曼圖(英語:Nassi–Shneiderman diagramNSD),簡稱NS圖盒圖,是結構化編程中的一種可視化建模英語Visual modeling[1]。NS圖是在1972年由艾薩克·納西英語Ike Nassi及其學生本·施奈德曼英語Ben Shneiderman提出。[2]。NS圖類似流程圖,但所不同之處是NS圖可以表示程式的結構[3]DIN 66261是NS圖的相關標準。

納西-施奈德曼圖的例子

簡介

從上到下的設計,待處理的問題會分解成一些較小的副程式,最後只有簡單的敘述及控制流程結構,NS圖對應了上述的思維,利用巢狀的方塊來表示副程式。NS圖中沒有對應Goto指令的表示,和結構化編程中不使用GOTO的理念一致。NS圖的抽象層次接近結構化的程式碼,若程式重寫,NS圖就需重新繪製,不過NS圖在簡述程式及高階設計時相當方便。

NS圖幾乎是流程圖的同構,任何的NS圖都可以轉換為流程圖,而大部份的流程圖也可以轉換為NS圖。其中只有像Goto指令或是C語言中針對迴圈的break及continue指令無法用NS圖表示。

圖示

程式方塊

 
程式方塊

程式方塊表示不需再分解的基本步驟,當流程進行到一程式方塊時,會進行程式方塊中的動作,然後移至下一個方塊。

分支方塊

 
真/假的分支方塊

分支方塊可分為二種,第一種是簡單的真/假分支方塊,對應if指令,會有二個對應的路徑,根據條件是否成立,決定後續執行的程式。

 
多重分支的方塊

第二種是多重分支方塊,當使用類似C語言的switch指令,依運算式結果要從三個或三個以上的路徑中選擇一個時使用,此方塊一般會有許多對應的選項和其對應的子程式。

測試迴圈方塊

測試迴圈方塊允許程式執行一個或一組特定程式,一直到一特定條件滿足為止。測試迴圈方塊可分為二部份:左側長條狀部份和方塊上方(或下方的)的測試條件部份相連辺,測試迴圈方塊內部的方塊則是迴圈中可能要執行多次的程式。

 
先測試的迴圈方塊

測試迴圈方塊可分為二種:先測試的迴圈方塊及後測試的迴圈方塊。二者的差異是條件判斷次序的先後。在先測試的迴圈方塊中,在執行迴圈前會先判斷特定條件是否成立,若成立,才執行迴圈內的程式,之後再重新判斷條件是否成立,若成立,再執行迴圈內的程式……,只要特定條件不成立,就結束迴圈內的程式,繼續執行後續的程式。由於在迴圈開始時就判斷條件是否成立,有可能在迴圈內程式完全未執行過的情形下就結束迴圈,繼續執行後續程式。

 
後測試的迴圈方塊

後測試的迴圈方塊會先執行一次迴圈內的程式,之後判斷特定條件是否成立,若成立,才執行迴圈內的程式……。後測試的迴圈方塊中,迴圈內的程式至少會被執行一次。

參見

參考資料

  1. ^ Hans-Georg Fill (2009). Visualisation for Semantic Information Systems. p.32
  2. ^ Ben Shneiderman (2003). A short history of structured flowcharts (Nassi-Shneiderman Diagrams). Webdoc draft: May 27, 2003. (Source頁面存檔備份,存於互聯網檔案館))
  3. ^ Rolf Isermann (1988). Automatic Control: Selected papers from the triennial world congress of the International Federation of Automatic Control : Munich, Federal Republic of Germany, 27–31 July 1987, Volume 10;Volume 14. p.89

外部連結