switch语句的ns图怎么画_NS图绘制软件
【问题描述】
N-S图,也被称为盒图或NS图(Nassi Shneiderman图)。是结构化编程中的⼀种可视化建模。1972年,美国学者I.Nassi 和
B.Shneiderman提出了⼀种在流程图中完全去掉流程线,全部算法写在⼀个矩形阵内,在框内还可以包含其他框的流程图形式,即由⼀些基本的框组成⼀个⼤的框,这种流程图⼜称为N-S结构流程图。
依从上到下的设计,待处理的问题会分解成⼀些较⼩的副程序,最后只有简单的叙述及控制流程结构,NS图对应了上述的思维,利⽤嵌套的⽅块来表⽰副程序。NS图中没有对应Goto指令的表⽰,和结构化编程中不使⽤GOTO的理念⼀致。NS图的抽象层次接近结构化的代码,若程序重写,NS图就需重新绘制,不过NS图在简述程序及⾼级设计时相当⽅便。
NS图⼏乎是流程图的同构,任何的NS图都可以转换为流程图,⽽⼤部分的流程图也可以转换为NS图。其中只有像Goto指令或是C语⾔中针对循环的break及continue指令⽆法⽤NS图表⽰。
NS图的特点:
1. 功能域(即⼀个特定控制结构的作⽤域)明确,可以从盒图上⼀眼就看出来;
2. 不可能任意转移控制;
3. 很容易明确局部和全局数据的作⽤域;
4. 很容易表现嵌套关系,也可以表⽰模块的层次结构。
由于NS图没有箭头,因此不允许随意转移控制。坚持使⽤NS图作为详细设计的⼯具,可以使程序员逐步养成⽤结构化的⽅式思考问题和解决问题的习惯。
N-S图包括顺序、选择(CASE型是多分钟选择)和循环(⼀种是while⼀种是until)三种基本结构。
以C语⾔描述的程序为例:
A、Ai(i∈[1,n])、B和S分别是C语句段(由1-N条C语⾔语句组成);
P是逻辑表达式,T表⽰true,F表⽰false,即当逻辑表达式P的结果为true时,后继程序执⾏A,否则B;
↓表⽰没有语句;
flex软件WHILE重复型表⽰先对逻辑表达式P求值,为true时,执⾏S,否则跳出;
UNTIL重复型表⽰先执⾏S,然后在对逻辑表达式P求值,为true时,继续运⾏S,否则跳出;
CASE型对应C语⾔中的Switch-Case情况,先计算逻辑表达式P,结果为1时执⾏A1,为2时执⾏A2,依次类推。
现需要⼀个能够利⽤NS图进⾏建模的⼯具,将某算法(如采⽤C语⾔描述)表⽰为NS图。
【基本要求】
通过⼈机界⾯,能够⼿⼯绘制包含顺序型、选择型的NS图,为每个类型的NS图可以输⼊C语⾔源代码⽂本,各类型的图可以相互嵌套组合,并能够将绘制好的NS图转换为C语⾔代码描述的程序。
【扩展要求】
1. ⽀持WHILE型、UNTIL型和CASE型的绘制
2. 能够保存绘制好的NS图,并可以再次打开和重新编辑该NS图
3. 能够将C语⾔代码描述的程序⽂本⾃动转换为NS图(对于学有余⼒的同学,需要查阅⼀些编译⽅⾯的知识)
【实现提⽰】
各个类型的图之间是相互嵌套组合的,因此它们之间的嵌套关系需要进⾏存储,不能丢失
实现将C语⾔转换为NS图时,可以利⽤开源的C语⾔的解析器(lexer和parser)将C语⾔程序⽂本转换为⽂法树,在⽂法树的基础上识别⾥⾯各个表达式或语句来进⾏NS图的⽣成。也可以⾃⼰编写解析器(可以借助flex+bison,ANTLR开源⼯具编写),只要求⽀持必要的⽂法即可,⽆需⽀持C语⾔全集。
【检查计划】
第⼀次检查:问题需求理解分析,系统的功能设计,包括:
数据结构设计;
程序结构原型;
第⼆次检查:使⽤⾃带的数据,演⽰系统的初步功能实现(代码,测试数据);
第三次检查:系统最终的全⾯检查,包括:
⽂档齐全;
根据测试数据,运⾏程序;演⽰时适当地讲解,并且回答问题;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论