程序框图也叫流程图(Flowchart),如果你上过高中,那么你或许会在课本中简单的学习他们
流程图是用来表示逻辑关系的,今天我们就来简单的谈一下流程图的读法和画法
表达逻辑
1、自然语言
当我们希望表达一些逻辑时,可以采用很多方法
例如用自然语言(即人类日常生活使用的语言)去描述判断57是否是一个素数的算法,可以这样做
步骤一:令foo等于2
步骤二:将57除以foo,如果余数为0,跳到步骤五,否则执行下一步
步骤三:计算foo+1的值,并赋值给foo
步骤四:重复步骤二
步骤五:判断foo的值,若小于57,执行下一步,等于57则跳到第七步
步骤六:输出“57不是素数”
步骤七:输出“57是一个素数”
显然使用自然语言是繁琐而又冗长的
更常见的做法是使用伪代码
伪代码
伪代码,顾名思义,它不是“真”代码,它是一种介于自然语言和计算机语言的一种“语言”
而伪代码这种东西是没有一个标准的,这就是说:“怎么方便怎么写”,只要它能准确清晰的表达
同样是上面的算法,使用伪代码可以表示为
i ←2 while 57/i!=0 i←i+1 if i < 57 print "57不是素数" else print "57是素数"
程序框图
终于到了正式内容了。使用伪代码表示算法不太清晰,而使用流程图就一目了然了
例如,还是那个算法,使用流程图可以表示为
是不是感觉比上面清晰很多呢?
下面我们就来一个一个框来认识
首先是起止框,它是一个圆角矩形,表示流程的开始或结束
第二个是流程框,它是一个矩形,框中描述的就是需要进行的操作(一个步骤使用一个流程框)
两个框之间的连线被称作“流线”(flow line),它是一个有箭头的线,箭头则表示了方向
第三个是判断框,由一个菱形构成,它是用来判断的,通常判断出的两个分支分别从左边和右边伸出
框中填写的则是判断条件。同时,判断的两个分支需要指出条件,通常使用“是”“否”,或Y,N等,如上图
第四个是输入输出框,由平行四边形构成。在需要输入,或者输出时,就需要使用这个框,框中应描述输入输出操作的对象
当然,流程图还有一些不太常用的框,我不准备做过多介绍,如果你希望了解,请自行百度/谷歌
我们可以看出,使用流程图可以很好的表示算法等复杂的逻辑
另外它也不是没有缺陷,清晰带来的最致命的缺陷便是复杂
如果你使用它表示一个复杂的算法逻辑,或许你需要一张房子那么大的纸才能将其画出来!因此在编程中,使用程序框图描述算法并不多
其实,流程图并不只使用与编程中,在生活的很多地方都可以看到流程图
那么我们如何绘制流程图呢?
网上有很多人教大家用Microsoft Word去绘制流程图,但是这确实不是它的用途,因此用Word画起来异常麻烦
其实,Microsoft office家族中,有一个叫做Visio的软件。这是一个专门用于对复杂信息、系统和流程进行可视化处理、分析和交流的软件,但是对我们来说并没有必要
因此最好的方法就是web大法了。
一个叫processon的网站便是一个提供在线流程图绘制的网站,只要你的浏览器支持html5(只要你的浏览器不是太老的IE等,一般都会支持),便可以随时随地在线的创建,下载,分享,甚至是团队协助处理
你所需要的只是免费注册一个账号。这篇文章中的流程图就绘于此网站
如果你使用下面的链接注册,我将会获得储存文件限制三个文件的奖励
当然,也给出不带推广的链接