程序设计中,有几种不同的算法表示方法:自然语言、传统流程图、N-S结构流程图、伪代码、PAD图等。下面简单介绍前三种。
1.自然语言
使用人们日常生活中比较习惯的语言表示,这种表示比较通俗易懂,容易理解。但也存在表述烦琐、容易出现歧义、表达不清晰等问题。这种算法表示一般不能在算法流程中使用,但可以作为算法流程中的文字表述的补充。
【例1-1】瓶子A中装酒,瓶子B中装醋,将酒和醋交换瓶子。
分析:瓶子A中的酒和瓶子B中的醋不能直接交换,需要第三个瓶子C。交换前应该考虑C瓶是不是空的。
使用自然语言的算法表示如下。
步骤1:查看C瓶是不是空的。
步骤2:如果C瓶是空的,转步骤4。
步骤3:C瓶不是空的,把C瓶清空。
步骤4:将瓶子A中的酒倒入瓶子C:A→C。
步骤5:将瓶子B中的醋倒入瓶子A:B→A。
步骤6:将瓶子C中的酒倒回瓶子B:C→B。
完成交换。
2.传统流程图
传统流程图使用框图来表示算法流程。用框图表示算法,比较直观形象,易于理解,表示也比较简单清晰。图1-2所示是美国国家标准化协会(ANSI)规定的常用的流程图符号。
图1-2 几种常用的传统流程图符号
a)起止框 b)处理框 c)输入输出框 d)判断框 e)流程线 f)连接点
程序基本的流程结构有三种,用以下传统流程图来表示。
(1)顺序结构
顺序结构按算法的步骤先后顺序逐行执行,其间没有条件判定和循环重复过程。顺序结构是程序中最简单的结构。顺序结构见图1-3a。
图1-3 顺序结构与条件结构图
a)顺序结构 b)条件结构
(2)条件结构(www.daowen.com)
条件结构又称为分支结构或选择结构。这种结构中至少有一个条件判断,根据条件的是否成立(通常表示为结果为“真(true)”或者“假(false)”),来确定程序执行不同的操作。图1-3b是两种不同的条件结构。图1-4a是一个简单的条件结构的实例,例子中根据条件“成绩≥60”是否成立,确定程序的分支走向。
(3)循环结构
程序流程中,往往有大量重复性的操作,如计算学生的平均成绩,其计算方法对于每个学生都是相同的,每个学生都要重复一样的计算。这种重复计算就需要使用循环结构来进行。循环结构中的循环次数应该是有限的,否则就称为无限循环或死循环。因此循环都有一个对循环次数进行限定的条件判断。循环结构如图1-5所示,图中是两种不同类型的循环。
循环分为“当”型结构和“直到”型结构。图1-5a为“当”型结构,也就是当条件满足时,执行循环操作,如果条件不满足则结束循环操作。当型循环是先判断条件,然后执行循环。图1-5b为“直到”型结构,直到型循环先进入循环,然后判断条件,直到条件不满足时结束循环操作。直到型循环是先执行循环,然后判断条件。“直到”型结构至少完成一次循环。
图1-4b是一个循环结构的例子。该循环程序对整数1~100进行累加。
图1-4 条件结构与循环结构示例
a)条件结构例子 b)循环结构例子
图1-5 程序的循环结构图
a)“当”型循环结构 b)“直到”型循环结构
传统的流程图绘制简单,阅读起来比较直观,但由于使用了流程线,并且对流程线没有严格的要求,因此如果流程线使用得不合理,流程图会变得很杂乱,流程图的可读性会降低。流程图越大,可读性就越差。
3.N-S结构流程图
N-S结构流程图本质上和传统的结构流程图是相同的。但这种结构流程图取消了流程线,全部算法集中在矩形框内。N-S结构流程图功能明确,流程的入口和出口清晰,并且可以嵌套,特别适用于面向结构的程序流程描述。与传统的流程图相比,N-S结构流程图可读性要好一些。与前面传统的结构图(图1-3~图1-5)相对应,以下结构图(图1-6~图1-8)分别是三种不同的N-S结构流程图和示例结构图。
图1-6 N-S结构流程图—顺序结构与条件结构
图1-7 N-S结构流程图—条件结构与循环结构示例
a)条件结构例子 b)循环结构例子
图1-8 N-S结构流程图—循环结构
a)“当”型循环结构 b)“直到”型循环结构
顺序、条件、循环三种算法结构,是程序设计最基本的结构,也是学习程序设计必须掌握的最基本的内容。
有关流程图的具体应用,将以后面相关的程序中体现。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。