计算机语言只是一种工具。光学习语言的规则还不够,最重要的是学会针对各种类型的问题,拟定出有效的解决方法和步骤即算法。有了正确而有效的算法,可以利用任何一种计算机高级语言编写程式,使计算机进行工作。因此,设计算法是程式设计的核心。这其中以特定的图形符号加上说明,表示算法逻辑的图,称为算法逻辑图(Algorithm Logic diagram )。
基本介绍
- 中文名:算法逻辑图
- 外文名:Algorithm Logic diagram
- 涉及学科:信息科学
- 套用:编程设计
- 通过:以特定的图形符号加上说明
- 表示:算法逻辑
符号
美国国家标準化协会ANSI曾规定了一些常用的逻辑图符号,为世界各国程式工作者普遍採用。最常用的逻辑图符号见图。
处理框(矩形框),表示一般的处理功能。

判断框(菱形框),表示对一个给定的条件进行判断,根据给定的条件是否成立决定如何执行其后的操作。它有一个入口,二个出口。输入输出框(平行四边形框)。
起止框(圆弧形框),表示流程开始或结束。
连线点(圆圈),用于将画在不同地方的流程线连线起来。用连线点,可以避免流程
线的交叉或过长,使逻辑图清晰。
流程线(指向线),表示流程的路径和方向。
注释框,是为了对逻辑图中某些框的操作做必要的补充说明,以帮助阅读逻辑图的人更好地理解逻辑图的作用。它不是逻辑图中必要的部分,不反映流程和操作。
程式框图表示程式内各步骤的内容以及它们的关係和执行的顺序。它说明了程式的逻辑结构。框图应该足够详细,以便可以按照它顺利地写出程式,而不必在编写时临时构思,甚至出现逻辑错误。逻辑图不仅可以指导编写程式,而且可以在调试程式中用来检查程式的正确性。如果框图是正确的而结果不对,则按照框图逐步检查程式是很容易发现其错误的。逻辑图还能作为程式说明书的一部分提供给别人,以便帮助别人理解你编写程式的思路和结构。
基本结构
传统的逻辑图用流程线指出各框的执行顺序,对流程线的使用没有严格限制。因此,使用者可以毫不受限制地使流程随意地转来转去,使逻辑图变得毫无规律,阅读者要花很大精力去追蹤流程,使人难以理解算法的逻辑。如果我们写出的算法能限制流程的无规律任意转向,而像一本书那样,由各章各节顺序组成,那样,阅读起来就很方便,不会有任何困难,只需从头到尾顺序地看下去即可。
为了提高算法的质量,使算法的设计和阅读方便,必须限制箭头的滥用,即不允许无规律地使流程乱转向,只能按顺序地进行下去。但是,算法上难免会包含一些分支和循环,而不可能全部由一个一个框顺序组成。如上例不是由各框顺序进行的,包含一些流程的向前或向后的非顺序转移。为了解决这个问题,人们构想,如果规定出几种基本结构,然后由这些基本结构按一定规律组成一个算法结构,整个算法的结构是由上而下地将各个基本结构顺序排列起来的。1966年,Bohra和Jacoplni提出了以下三种基本结构,用这三种基本结构作为表示一个良好算法的基本单元。
顺序结构
顺序结构:如图所示的虚线框内,A和B两个框是顺序执行的。顺序结构是最简单的一种基本结构。

选择结构
选择结构:如图所示的虚线框中包含一个判断框。
根据给定的条件p是否成立而选择执行A和B。p条件可以是“x>0”或“x>y”等。注意,无论p条件是否成立,只能执行A或B之一,不可能既执行A又执行B。无论走哪一条路径,在执行完A或B之后将脱离选择结构。A或B两个框中可以有一个是空的,即不执行任何操作。

循环结构
循环结构:又称重複结构,即反覆执行某一部分的操作。有两类循环结构:
当型(While):当给定的条件p成立时,执行A框操作,然后再判断p条件是否成立。如果仍然成立,再执行A框,如此反覆直到p条件不成立为止。此时不执行A框而脱离循环结构。
直到型(Until):先执行A框,然后判断给定的p条件是否成立。如果p条件不成立,则再执行A,然后再对p条件作判断。如此反覆直到给定的p条件成立为止。此时脱离本循环结构。

注意两种循环结构的异同:两种循环结构都能处理需要重複执行的操作;当型循环是“先判断(条件是否成立),后执行(A框)”。而直到型循环则是“先执行(A框),后判断(条件)”;当型循环是当给定条件成立满足时执行A框,而直到型循环则是在给定条件不成立时执行A框。

同一个问题既可以用当型循环来处理,也可以用直到型循环来处理。对同一个问题,如分别用当型循环结构和直到型循环结构来处理的话,则两者结构中的判断框内的判断条件恰为互逆条件。
结构逻辑图
1973年美国学者提出了一种新的逻辑图形式。在这种逻辑图中,完全去掉了带箭头的流程线。全部算法写在一个矩形框内。在该框内还可以包含其它的从属于它的框,即可由一些基本的框组成一个大的框。这种适于结构化程式设计的逻辑图称N-S结构化逻辑图,它用以下的逻辑图符号:

1、顺序结构:A和B两个框组成一个顺序结构。

2、选择结构:当p条件成立时执行A操作,p不成立则执行B操作结构。

3、循环结构:当型循环结构下,图符表示先判断后执行,当p条件成立时反覆执行A操作,直到p条件不成立为止。
用以上三种N-S逻辑图中的基本框.可以组成複杂的N-S逻辑图,以表示算法。

例:将判别素数的算法用N-S逻辑图表示。
上面的非结构化逻辑图不是由三种基本结构组成的:图中间的循环部分有两个出口,不符合基本结构的特点。由于不能直接分解为三种基本结构,应当先作必要的变换再用N-S逻辑图的三种基本结构的符号来表示。即将第一个菱形框的两个出口汇合在一点。其方法是设一个标誌值K,它的初始状态为0(表示N为素数),当K≠0时为非素数。注意当型和直到型的判断条件。
N-S图表示算法的优点是:比传统逻辑图紧凑易画,尤其是它废除了流程线。整个算法结构是由各个基本结构按顺序组成的,其上下顺序就是执行时的顺序。写算法和看算法只需从上到下进行就可以了,十分方便。归纳起来,一个结构化的算法是由一些基本结构顺序组成的;在基本结构之间不存在向前或向后的跳转,流程的转移只存在于一个基本结构範围之内(如循环中流程的跳转);一个非结构化的算法可以用一个等价的结构化算法代替,其功能不变。如果一个算法不能分解为若干个基本结构,则它必然不是一个结构化的算法。
转换
逻辑图到类c语言的实时转换过程如下:
逻辑图结构由封装为Icon形式的功能模组和表示不同分支属性的连线组成,每个功能模组表示一条语句,而直线和折线表示逻辑关係。不同的语句以功能模组名称加以区别,而连线则以颜色和方向加以区别.定义主逻辑採用垂直方向的连线表示,而分支逻辑(循环、条件判断等)採用水平方向的连线表示.通过这种表示,逻辑图按垂直和水平方向展开成树型结构。功能模组是树的节点,逻辑关係是这一树型结构的连线。对不同执行模组的函式封装,定义一套库函式,对不同流程控制模组封装类c语言代码,这些语句可以控制各个执行模组的执行流程,执行模组参照封装的库函式,而流程控制模组参照封装的语句翻译为不同的类c语言代码。
具体的转换方法:在功能模组中定义模组的类别、属性参数等;由某个模组或多个模组组成的逻辑图程式是存储在一个模组集合或称为一个模组树中,当用户添加、删除、移动或修改功能模组时会实时根据各个模组间的父子关係遍历模组树,并参照功能模组封装的库函式或语句转换为对应的类C语言代码,体现转换的实时性;生成的类c语言代码自动添加注释,方便用户对类c语言代码的理解。