[匠人手记] 都过了好久才看到,好**啊

[复制链接]
古道热肠 发表于 2008-9-22 17:06 | 显示全部楼层

嗯,是盒图

贴一个以前画了,现在很少画图了.
腾腾 发表于 2008-9-22 17:25 | 显示全部楼层

RE;

持续关注!<br />不错!
avocationA 发表于 2008-9-22 18:57 | 显示全部楼层

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

  
 楼主| 程序匠人 发表于 2008-9-22 22:20 | 显示全部楼层

三、N-S图(盒图)

<H3>三、N-S图(盒图)</H3><H4>1、N-S图简介</H4><H4></H4><br />前面讲到流程图的简化时,匠人已经说过:可以把一些不会产生歧义的流程线(箭头)省略。持这种想法的显然不止是匠人一个,据说有两个美国佬走得更远。这两位名叫I.Nassi和B.Shneiderman的“国际友人”经过潜心研究发现了个规律:既然任何算法都是由前面介绍的三种基本结构组成,那么各基本结构之间的流程线就是多余的。<br /><br />于是他们设计了一种新的算法表示法。用若干个大大小小的框图,通过堆砌或嵌套,来表示程序的流程。这种流程图被以两个美国天才的名字命名为“N-S图”。(匠人发现天才也得赶早,否则好事都会被别人抢了去!)<br /><br />那一个个框,就像一个个封闭的盒子。所以,N-S图又被形象地称为“盒图”。<br /><br />N-S图(盒图)的特性就像盒子一样,结构性很强。由于取消了流程线,象“goto”这样乱跳的语句,也就没有了表达的形式。所以,N-S图又被人称为是“结构化流程图”。也就是说,对于传统的流程图,结构化编程依赖于程序员的自觉自律;而对于N-S图,结构化编程则是由绘图规则来强制保证的。你想不结构化都不行,呵呵。N-S图除了表示几种标准结构的符号之处,不再提供其他如“流程线”这样的描述符号,这就有效地保证程序的质量。<br /><br />NS图的另一个优点是形象直观。例如循环的范围、条件语句的范围都是一目了然的,所以容易理解设计意图,为编程、排错、调试、维护都带来了便利。<br /><br />(未完待续)&nbsp;
 楼主| 程序匠人 发表于 2008-9-22 22:27 | 显示全部楼层

2、N-S图的画法

2、N-S图的画法<br />在N-S图中,一个算法就是一个大矩形框,框内又包含若干小框。其实只要掌握N-S图的3个基本结构画法,即可掌握N-S图。匠人在这里简单介绍如下:<br /><br />(1)顺序结构<br /><br />顺序结构(参见图&nbsp;1.19:顺序结构N-S图),语句1、语句2、语句3&nbsp;依次执行。<br />&nbsp;<br />(2)选择(分支)结构<br /><br />选择结构(参见图&nbsp;1.20:选择(分支)结构N-S图),条件为真时执行语句1,条件为假时执行语句2。如果条件为假时不需执行任何语句,则对应的执行语句框中留空。<br />&nbsp;<br />散转(Switch)结构作为选择(分支)结构的一个特例,在N-S图方法中较少被人提及。其实可以用下面这种方法来画(参见图&nbsp;1.7:散转(switch)结构)。当表达式结算结果等于某个对应的值时,执行该值下面的语句。<br />&nbsp;<br />(3)循环结构<br /><br />循环结构的两种常见形态,包括当型结构(参见图&nbsp;1.22:当型(while)循环结构N-S图)和直到型结构(参见图&nbsp;1.23:直到型(do-while)循环结构N-S图)。<br />
 楼主| 程序匠人 发表于 2008-9-22 22:29 | 显示全部楼层

3、N-S图的实例

3、N-S图的实例<br /><br />我们把前面介绍过的一个“按键处理子程序”的流程图(参见图&nbsp;1.13:人性化的流程图),用N-S图形式再来画一次,如下图(参见图&nbsp;1.24:按键处理子程序N-S图):<br />
 楼主| 程序匠人 发表于 2008-9-22 22:30 | 显示全部楼层

4、N-S图的软肋

4、N-S图的软肋<br /><br />说了半天N-S图的花好稻好,那为什么在设计中,还是有许多人却放弃使用N-S图,仍旧选择了落后的带箭头的流程图呢?这得说说N-S图的软肋。<br /><br />要说这N-S图最大的缺点,就是手工画图时,修改起来没有流程图方便。尤其是在分支嵌套层次较多时,就比较难画了。<br /><br />手工画图不便,计算机画图也不便。目前,匠人也没有找到比较适合画N-S图的计算机绘图软件。<br /><br />这些,可能是阻碍N-S图进一步推广应用的原因。<br /><br />(未完待续)
腾腾 发表于 2008-9-22 23:04 | 显示全部楼层

RE:

我的整理实时更新,谢谢匠人姐姐!
呆板书生 发表于 2008-9-23 08:34 | 显示全部楼层

流程图

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

哈哈,楼上牛

  
HWM 发表于 2008-9-23 08:56 | 显示全部楼层

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

  
fvd 发表于 2008-9-23 12:09 | 显示全部楼层

不错,学习了

  
hollly 发表于 2008-9-23 12:32 | 显示全部楼层

恩 顶个先

恩&nbsp;顶个先&nbsp;&nbsp;占个位子,一会再来仔细看看哈
豪枭 发表于 2008-9-23 13:04 | 显示全部楼层

顶顶

好东西&nbsp;分享了
andrew.xu 发表于 2008-9-23 13:19 | 显示全部楼层

赶紧,等着更新呢

  
dsoyy 发表于 2008-9-23 13:26 | 显示全部楼层

~

我上次画&nbsp;了流程图,但是程序写到一半就没有按照流程图一步步严格执行,而是跟着模糊的思维前行,最后流程图完全不用了,结果流程图没有起到什么作用(除了前期规划思路),程序思维混乱,调试时间非常长,在最后仅仅实现了要求功能,勉强过关。<br /><br />看来必须要认认真真,一步一脚印。<br /><br />主流程代表程序的总体框架,那么模块内部的子程序要不要很详细呢?
sunke9 发表于 2008-9-23 14:51 | 显示全部楼层

长知识!

  
hsmile 发表于 2008-9-23 15:20 | 显示全部楼层

受益匪浅

如题
colorwu 发表于 2008-9-23 19:47 | 显示全部楼层

说的不错,关注中

  
yuki774 发表于 2008-9-23 22:59 | 显示全部楼层

学习了

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部