打印
[匠人手记]

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

[复制链接]
楼主: 程序匠人
手机看帖
扫描二维码
随时随地手机跟帖
41
程序匠人|  楼主 | 2008-9-19 21:53 | 只看该作者 回帖奖励 |倒序浏览

6、流程图的人性化


6、流程图的人性化

程序是写给机器看的,因此必须严格遵循编程语言的规范,否则机器就无法解析执行。而流程图则是写给人看的,因此应当尽可能地人性化。

让我们对比一下这两个流程图(参见图 1.11:“没人性”的流程图和图 1.12:人性化的流程图)。它们描述的程序功能是一样的。

前者更简洁,但是却给阅读者带来了思维障碍,“Key_Flag”是什么标志?“P1.0”又是什么功能的IO口?阅读者为了了解这些问题,不得不放下流程图去查阅相关的文档。阅读思路的连贯性被打断了。

很显然,我们更喜欢第二个流程图。这才是无障碍的阅读。
不要吝啬那点打字的功夫,磨刀不误砍柴工。


图 1.11:“没人性”的流程图


图 1.12:人性化的流程图

使用特权

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

额外说说for循环语句


说到循环结构,还要额外说说for循环语句。因为今天在论坛里有fzu_csc网友问怎么只介绍了while循环和do- while循环,却没有介绍for循环。让我们先举个例子,先看看下面这个for循环程序:
 
for(i=1; i<N; i++)
语句1;
 
上例中:先给i赋初值1,然后判断i是否<N,若是则执行语句1(循环体),之后i值加1。再重新判断,直到条件为假(即i>=N)时,结束循环。可以看出,for循环其实就是一个当型循环结构(参见图 1.11:for循环例子)。


图 1.11:for循环例子

 

使用特权

评论回复
43
原野之狼| | 2008-9-19 23:18 | 只看该作者

占个位,慢慢看~

使用特权

评论回复
44
benxiaoyu4| | 2008-9-20 17:19 | 只看该作者

学习

等着学习

使用特权

评论回复
45
datouyuan| | 2008-9-20 18:06 | 只看该作者

学习

谢谢楼主。

使用特权

评论回复
46
newdsd| | 2008-9-20 19:25 | 只看该作者

高人高贴,留脚印~

高人高贴,留脚印~

使用特权

评论回复
47
古道热肠| | 2008-9-21 09:38 | 只看该作者

写得好,顶

用软件工程中提到有一种比流程图更规范的框图表达法,能从根本上整治乱用goto或不按结构化方法搭建软件框架的行为.不过话又说回来,大家还是习惯用流程图来交流.

使用特权

评论回复
48
fenglookme| | 2008-9-21 15:44 | 只看该作者

能看懂!

我虽然是个菜鸟!
但我个人认为   程序  是要经常去熟悉的!   很久不写   容易丢失灵感!

使用特权

评论回复
49
nkguodalu| | 2008-9-21 16:16 | 只看该作者

程序规划

建议多讲讲任务划分,调度,协作等等统筹规划方面的知识。
怎么样把复杂的任务安排得象交响乐团一样井然有序并行不悖。


至于框框是画成四角菱形六角菱形,个人觉得无所谓,公司怎么规范就怎么画。

使用特权

评论回复
50
高勇| | 2008-9-22 09:06 | 只看该作者

好,值得看看。

使用特权

评论回复
51
bin2hex| | 2008-9-22 09:37 | 只看该作者

面向应用

路过,小点教科,多点具体应用,面向实际问题展开,诱题深入,更有启发性

使用特权

评论回复
52
dsoyy| | 2008-9-22 10:41 | 只看该作者

如何组织才不会乱了逻辑?

使用特权

评论回复
53
农民讲习所| | 2008-9-22 10:46 | 只看该作者

流程图只能表达局部,程序结构和流程图没关系

程序结构如果采用流程图,那才叫掉得大。

使用特权

评论回复
54
HWM| | 2008-9-22 11:02 | 只看该作者

传统流程图并不能确保程序的结构化,若无约束更会添乱。

软件设计的关键步骤在于:要求分析,功能抽象和分类,模块划分和细化,最后才是结构化编程。

建议在整个过程中采用面向对象的设计思路,前期可以考虑用UML描述,而关于“处理”部分应尽量考虑使用具有“结构化”约束的描述流程描述方法,只有这样才能确保最终形成“良好”的代码实现。

使用特权

评论回复
55
eleclike| | 2008-9-22 12:11 | 只看该作者

叮叮叮,上课了

使用特权

评论回复
56
talent8791| | 2008-9-22 13:21 | 只看该作者

hao

hao

使用特权

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

7、流程图的简化

7、流程图的简化


一个繁琐的流程图,是画流程图的人的噩梦,同时也是阅读者所不愿意见到的。因此,我们在画流程图时,不必拘泥于规则和形式,一板一眼。在适当的地方进行简化,不但可以节省精力和幅面,而且可以让流程图更易于阅读。
 
让我们对比下面这两个图(参见图 1.14:繁琐的流程图和图 1.15:简洁的流程图)。这是同一个程序的两种流程图表达方法。程序的功能,是用查询法对脉冲输入口上输入的脉冲计数,当计数满100次后进行一些处理并退出。
 

图 1.14:繁琐的流程图
 

图 1.15:简洁的流程图
 
很显然,第一个图占用了更多的幅面,却并不易于理解。而第二个图在经过简化处理后,节省了空间,程序思路反而表达得更加清晰。
 
我们甚至可以进一步抛弃那些细微末节(参见图 1.16:更简洁的流程图)。反正这个流程图是给人看的,只要看得懂程序思路,能简化何乐而不为呢?
 

图 1.16:更简洁的流程图
 
简单的才是有效的。适当的简化,是人性化的体现。
 

使用特权

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

总结一下简化的方法:


总结一下简化的方法:
(1)合并那些相互关联的条件判断。比如:当“条件1”满足,且“条件2”满足执行某个动作。我们可以把这两个条件判断合并后,放入同一个条件判断框中(参见图 1.17:分支结构)。


 
(2)省去一些不必要的流程线。对于不会产生歧义的顺序结构流程,可以把那些箭头省略。节省空间,甚至可以把一些语句合并在一个执行语句框里面。(参见图 1.18:顺序结构的简化)

 

 
(未完、待续……) 

使用特权

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

回47楼古道热肠

古道热肠 发表于 2008-9-21 09:38 匠人手记 ←返回版面    

47楼: 写得好,顶 

用软件工程中提到有一种比流程图更规范的框图表达法,能从根本上整治乱用goto或不按结构化方法搭建软件框架的行为.不过话又说回来,大家还是习惯用流程图来交流.
 
 
——回:你说的大概就是指“三、N-S图(盒图)”吧?稍后也会介绍到。

使用特权

评论回复
60
dsoyy| | 2008-9-22 16:57 | 只看该作者

由53楼产生的疑问

53楼: 流程图只能表达局部,程序结构和流程图没关系 

程序结构如果采用流程图,那才叫掉得大。


我觉得程序结构架设就是流程图主循环部分(功能模块),这样理解和构建合理吗 
 

使用特权

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

本版积分规则