C语言算法表示及结构化程序设计基本结构
为了表示一个算法,可以用不同的方法。常用的方法有:自然语言、传统流程图、结构化流程图和伪代码等。
1用自然语言表示算法
自然语言就是人们日常使用的语言,可以是汉语、英语或其他语言。用自然语言表示通俗易懂,但文字冗长,容易出现歧义,往往要根据上下文才能判断正确含义。用自然语言来描述包含分支选择和循环算法不方便,花开两朵,各表一枝,同时只表达一个意思,这是自然语言表示的不足。
2用流程图表示算法
流程图就是用一些图框来表示算法,直观形象,易于理解。如:菱形框的作用是对一个给定的条件进行判断,根据给定的条件是否成立来判定如何执行其后的操作。它有一个入口,两个或多个出口。优于自然语言表示。连接点小圆圈用于将画在不同地方的流程线连接起来,实际上表示一个对象,只是画不下オ分开来画或为了清晰表示而单独绘制,用连接点可以避免流程线
出现交叉或过长,不利于阅读。
用流程图表示算法直观形象,比较清楚地显示出各个框之间的逻辑关系。这种流程图占用篇幅较多,一条路走到头,与复杂的实际情况表示有差距有不足,尤其当算法比较复杂时就费时费力。
3.传统流程图的弊端与结构化设计的基本结构
传统的流程图用流程线指出各框的执行顺序,对流程线的使用没有严格限制,不受限制地使流程随意地转来转去,使流程图变得毫无规律,阅读时要花很大精力去追踪流程,使人难以理解算法的逻辑。为了提高算法的质量,使算法的设计和阅读方便,不允许无规律地使流程随意转向,只能顺序地进行下去。但是,算法上难免会包含一些分支和循环,而不可能全部由一个个顺序框组成。
为了解决这个问题,人们规定出几种基本结构,然后由这些基本结构按一定规律组成一个算法结构。
4.用3种基本结构作为表示一个结构化算法的基本单元。
(1)顺序结构。比如 A 和 B 两个框是顺序执行的,在执行完 A 框所指定的操作后,接着执行 B 他所指定操作。
(2)选择结构。又称选取结构或分支结构,此结构中必包含一个判断框。比如:根据给定的条件 p 是否成立来选择执行 A 框,否则执行B框。
(3)循环结构:反复执行某一部分的操作。有两类循环结构。
①当型( while 型)循环结构:当给定的条件 p1成立时,执行 A 框操作,执行完 A 后,再判断条件 p1是否成立,反复执行 A 框,直到某一次 p1条件不成立为止,此时不执行 A 框,而从B框脱离循环结构。c语言程序总是从什么开始执行
②直到型( until 型)循环结构。先执行 A 框,然后判断给定的p2条件是否成立,如果p2条件不成立,则一直执行 A ,直到给定的p2条件成立为止,执行B框脱离本循环结构。
对同一结构既可以用当型循环来处理,也可以用直到型循环来处理。
以上3种基本结构,有以下共同特点:只有一个出口,只有一个入口。结构每一部分都有被执行的可能。结构内不存在“死循环”(无终止的循环)。
由3种基本结构顺序组成的算法结构,可以解决任何复杂的问题。由基本结构所构成的算法属于“结构化”的算法,它不存在无规律的转向,只是限制在基本结构内部才允许存在分支和向前或向后的跳转。
C语言程序三种基本结构
程序化结构设计语言中的三种基本结构是顺序结构、选择结构、循环结构。
1、顺序结构:表示程序中的各操作是按照它们出现的先后顺序执行的,特点是:程序从入口点开始,按顺序执行所有操作,直到出口点。
2、选择结构:表示程序的处理步骤出现了分支,根据某一特定的条件选择其中的一个分支执行。选择结构有单选择、双选择和多选择三种形式。选择:对条件的真假作出判断后再选择执行哪一步。 if(表达式){}。
3、循环结构:表示程序反复执行某些操作,直到某条件为假(或为真)时才可终止循环。循环结构的基本形式有两种:当型循环和直到型循环,什么情况下执行循环则要根据条件判断。循环有:
1.for(表达式1 ;表达式2 ; 表达式3){} 2.while(表示式){}
3.do{}while(表示式);
5.用 N - S 流程图表示算法
既然用基本结构的顺序组合可以表示任何复杂的算法给构,那么,基本结构之向流程线就是多余的了。在这种流程图中,完全去掉了带箭头的流程线。全部算法写在一个矩形框内,在该框内还可以包含从属于它的框,或者说,由一些基本的框组成一个大的框。这种流程图又称N - S 结构化流程图。
N - S 流程图用以下的流程图符号。
(1)顺序结构。A 和 B 两个框组成一个顺序依次执行的结构。(2)选择结构。如 P 条件成立时执行 A 操作, p 不成立则执行 B 操作。选择结构整体作为一个基本结构。(3)循环结构。当型循环结构是当 p1条件成立时反复执行 A 操作,直到 p1条件不成立为止,执行B,当型循环结构整体作为一个基本结构。直到型循环结构表示:当 P2不成立,一直循环执行A,当p2成立,才执行B。
用 N - S 图表示算法的优点:比文字描述直观、形象、易于理解;比传统流程图紧凑易画,尤其是它废除了流程线,整个算法结构是由各个基本结构按顺序组成的, N - S 流程图中的上下顺序就是执行时的顺序,也就是图中位置在前面的先执行,位置在后面后执行。写算法和看算法只须从上到下进行就可以了,十分方便。用N - S 流程图表示的算法都是结构化的算法(它不可能出现流程无规律的跳转,而只能自上而下地顺序执行)。
一个结构化的算法由一些基本给构顺序组成的;在基本结构向后的跳转,流程的转移只存在于一个基本结构范围之内(如循环中流程的跳转只在基本结构内部,整体作为一个基本结构)。
如果一个算法不能分解为若干个基本结构,则必然不是一个结构化的算法。
6.用伪代码表示算法
用传统的流程图和 N - S 图表示算法直观易懂,但画起来比较费事,在设计一个算法时,可能要反复修改,修改流程图和 N - S 图很麻烦,因此,流程图适于表示一个算法,但在使用中不是很理想,尤具是当算法比较复杂、需要反复修改时就事倍功半。为了设计算法时方便,常用一种伪代码的工具。
伪代码码是用介于自然语言和计算机语言之间的文字和符号来描述算法。它自上而下地写下来。每一行(或几行)表示一个基本操作。它不用图形符号,因此书写方便,格式紧凑,修改方便,容易看懂,也便于向计算机语言算法(即程序)过渡。
用伪代码写算法并无固定的、严格的语法规则,可以用英文,也可以中英文混用。只要把意思表达清楚,便于书写和阅读即可,书写的格式要写成清晰易读的形式。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论