打印
[匠人手记]

都过了好久才看到,好**啊

[复制链接]
楼主: 程序匠人
手机看帖
扫描二维码
随时随地手机跟帖
61
古道热肠| | 2008-9-22 17:06 | 只看该作者 回帖奖励 |倒序浏览

嗯,是盒图

贴一个以前画了,现在很少画图了.

使用特权

评论回复
62
腾腾| | 2008-9-22 17:25 | 只看该作者

RE;

持续关注!
不错!

使用特权

评论回复
63
avocationA| | 2008-9-22 18:57 | 只看该作者

学习中 !!!俺不喜欢NS图

使用特权

评论回复
64
程序匠人|  楼主 | 2008-9-22 22:20 | 只看该作者

三、N-S图(盒图)

三、N-S图(盒图)

1、N-S图简介


前面讲到流程图的简化时,匠人已经说过:可以把一些不会产生歧义的流程线(箭头)省略。持这种想法的显然不止是匠人一个,据说有两个美国佬走得更远。这两位名叫I.Nassi和B.Shneiderman的“国际友人”经过潜心研究发现了个规律:既然任何算法都是由前面介绍的三种基本结构组成,那么各基本结构之间的流程线就是多余的。

于是他们设计了一种新的算法表示法。用若干个大大小小的框图,通过堆砌或嵌套,来表示程序的流程。这种流程图被以两个美国天才的名字命名为“N-S图”。(匠人发现天才也得赶早,否则好事都会被别人抢了去!)

那一个个框,就像一个个封闭的盒子。所以,N-S图又被形象地称为“盒图”。

N-S图(盒图)的特性就像盒子一样,结构性很强。由于取消了流程线,象“goto”这样乱跳的语句,也就没有了表达的形式。所以,N-S图又被人称为是“结构化流程图”。也就是说,对于传统的流程图,结构化编程依赖于程序员的自觉自律;而对于N-S图,结构化编程则是由绘图规则来强制保证的。你想不结构化都不行,呵呵。N-S图除了表示几种标准结构的符号之处,不再提供其他如“流程线”这样的描述符号,这就有效地保证程序的质量。

NS图的另一个优点是形象直观。例如循环的范围、条件语句的范围都是一目了然的,所以容易理解设计意图,为编程、排错、调试、维护都带来了便利。

(未完待续) 

使用特权

评论回复
65
程序匠人|  楼主 | 2008-9-22 22:27 | 只看该作者

2、N-S图的画法

2、N-S图的画法
在N-S图中,一个算法就是一个大矩形框,框内又包含若干小框。其实只要掌握N-S图的3个基本结构画法,即可掌握N-S图。匠人在这里简单介绍如下:

(1)顺序结构

顺序结构(参见图 1.19:顺序结构N-S图),语句1、语句2、语句3 依次执行。
 
(2)选择(分支)结构

选择结构(参见图 1.20:选择(分支)结构N-S图),条件为真时执行语句1,条件为假时执行语句2。如果条件为假时不需执行任何语句,则对应的执行语句框中留空。
 
散转(Switch)结构作为选择(分支)结构的一个特例,在N-S图方法中较少被人提及。其实可以用下面这种方法来画(参见图 1.7:散转(switch)结构)。当表达式结算结果等于某个对应的值时,执行该值下面的语句。
 
(3)循环结构

循环结构的两种常见形态,包括当型结构(参见图 1.22:当型(while)循环结构N-S图)和直到型结构(参见图 1.23:直到型(do-while)循环结构N-S图)。

使用特权

评论回复
66
程序匠人|  楼主 | 2008-9-22 22:29 | 只看该作者

3、N-S图的实例

3、N-S图的实例

我们把前面介绍过的一个“按键处理子程序”的流程图(参见图 1.13:人性化的流程图),用N-S图形式再来画一次,如下图(参见图 1.24:按键处理子程序N-S图):

使用特权

评论回复
67
程序匠人|  楼主 | 2008-9-22 22:30 | 只看该作者

4、N-S图的软肋

4、N-S图的软肋

说了半天N-S图的花好稻好,那为什么在设计中,还是有许多人却放弃使用N-S图,仍旧选择了落后的带箭头的流程图呢?这得说说N-S图的软肋。

要说这N-S图最大的缺点,就是手工画图时,修改起来没有流程图方便。尤其是在分支嵌套层次较多时,就比较难画了。

手工画图不便,计算机画图也不便。目前,匠人也没有找到比较适合画N-S图的计算机绘图软件。

这些,可能是阻碍N-S图进一步推广应用的原因。

(未完待续)

使用特权

评论回复
68
腾腾| | 2008-9-22 23:04 | 只看该作者

RE:

我的整理实时更新,谢谢匠人姐姐!

使用特权

评论回复
69
呆板书生| | 2008-9-23 08:34 | 只看该作者

流程图

真正程序员(搞笑版)   
  --------------------------------------------------------------------------------   
    
  作者:佚名       
        
          真正的程序员从来不写注释,难写的程序必定也难读。   
    
          真正的程序员不写应用程序,他们直接从最底层的裸机开始编程。他们认为应用程序编程是那些不会系统编程的人干的活。   
    
          真正的程序员不画流程图,流程图是没文化的人的文档,居住在山洞里的人才在岩壁上画流程图。   
    
          真正的程序员不读手册,依赖手册是无知和懦弱的表现。   
    
          真正的程序员从不一次做对,他们可以连续30个小时坐在机器前面给程序打补丁。   
    
          真正的程序员从不按早9晚5的生活过日子,如果你在早上9点看见一个程序员,那一定是他一夜未眠。   
    
          真正的程序员比用户还清楚用户需要什么。   
    
          真正的程序员喜欢兼卖爆米花,他们利用CPU散发出的热量做爆米花,可以根据米花裂的速度听出正在运行什么程序。   
    
          真正的程序员不到万不得已不谈恋爱,在老婆和程序之间,他们会毫不犹豫的选择程序。   
    
          :P 

使用特权

评论回复
70
程序匠人|  楼主 | 2008-9-23 08:40 | 只看该作者

哈哈,楼上牛

使用特权

评论回复
71
HWM| | 2008-9-23 08:56 | 只看该作者

呵呵,真正的程序员(coder)还真没画“流程图”的资格。

使用特权

评论回复
72
fvd| | 2008-9-23 12:09 | 只看该作者

不错,学习了

使用特权

评论回复
73
hollly| | 2008-9-23 12:32 | 只看该作者

恩 顶个先

恩 顶个先  占个位子,一会再来仔细看看哈

使用特权

评论回复
74
豪枭| | 2008-9-23 13:04 | 只看该作者

顶顶

好东西 分享了

使用特权

评论回复
75
andrew.xu| | 2008-9-23 13:19 | 只看该作者

赶紧,等着更新呢

使用特权

评论回复
76
dsoyy| | 2008-9-23 13:26 | 只看该作者

~

我上次画 了流程图,但是程序写到一半就没有按照流程图一步步严格执行,而是跟着模糊的思维前行,最后流程图完全不用了,结果流程图没有起到什么作用(除了前期规划思路),程序思维混乱,调试时间非常长,在最后仅仅实现了要求功能,勉强过关。

看来必须要认认真真,一步一脚印。

主流程代表程序的总体框架,那么模块内部的子程序要不要很详细呢?

使用特权

评论回复
77
sunke9| | 2008-9-23 14:51 | 只看该作者

长知识!

使用特权

评论回复
78
hsmile| | 2008-9-23 15:20 | 只看该作者

受益匪浅

如题

使用特权

评论回复
79
colorwu| | 2008-9-23 19:47 | 只看该作者

说的不错,关注中

使用特权

评论回复
80
yuki774| | 2008-9-23 22:59 | 只看该作者

学习了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则