纳西-施奈德曼图
纳西-施奈德曼图(英语:Nassi–Shneiderman diagram,NSD),简称NS图或盒图,是结构化编程中的一种可视化建模[1]。NS图是在1972年由艾萨克·纳西及其学生本·施奈德曼提出。[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
指令,依运算式结果要从三个或三个以上的路径中选择一个时使用,此方块一般会有许多对应的选项和其对应的子程序。
测试回圈方块
测试回圈方块允许程式执行一个或一组特定程序,一直到一特定条件满足为止。测试回圈方块可分为二部份:左侧长条状部份和方块上方(或下方的)的测试条件部份相连辺,测试回圈方块内部的方块则是回圈中可能要执行多次的程序。
测试回圈方块可分为二种:先测试的回圈方块及后测试的回圈方块。二者的差异是条件判断次序的先后。在先测试的回圈方块中,在执行回圈前会先判断特定条件是否成立,若成立,才执行回圈内的程序,之后再重新判断条件是否成立,若成立,再执行回圈内的程序……,只要特定条件不成立,就结束回圈内的程序,继续执行后续的程序。由于在回圈开始时就判断条件是否成立,有可能在回圈内程序完全未执行过的情形下就结束回圈,继续执行后续程序。
后测试的回圈方块会先执行一次回圈内的程序,之后判断特定条件是否成立,若成立,才执行回圈内的程序……。后测试的回圈方块中,回圈内的程序至少会被执行一次。
参见
参考资料
- ^ Hans-Georg Fill (2009). Visualisation for Semantic Information Systems. p.32
- ^ Ben Shneiderman (2003). A short history of structured flowcharts (Nassi-Shneiderman Diagrams). Webdoc draft: May 27, 2003. (Source (页面存档备份,存于互联网档案馆))
- ^ 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
外部链接
- A short history of structured flowcharts (Nassi–Shneiderman Diagrams)(页面存档备份,存于互联网档案馆), by Ben Shneiderman
- Atego's BlueRiverX32(页面存档备份,存于互联网档案馆) – Nassi–Shneiderman development environment for C and C++
- Structorizer(页面存档备份,存于互联网档案馆) – Nassi–Shneiderman diagram-editor for Linux, Mac OS X & Microsoft Windows, released under the GNU General Public License
- Struktograaf(页面存档备份,存于互联网档案馆) – Nassi–Shneiderman diagram-editor for Microsoft Windows, proprietary application (Dutch website)