算法的表示
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二、算法的表示
描述算法的工具,可以是自然语言,也可以是非自然语言。一般可以使用下面几种类型的工具描述算法。
1. 自然语言
自然语言即人们日常生活中使用的语言,如汉语、英语等。例如:求三个数中(a,b,c)最大数的问题,可以描述为:
①比较前两个数;
②将①中较大的数与第三个数进行比较;
③步骤②中较大的数即为所求的数。
用自然语言描述算法通俗易懂,但它存在着难以克服的缺陷:
易产生歧义性。自然语言的语义往往根据上下文的不同容易产生对不同的理解,会产生歧义,不够严格,无法准确表示为计算机语言。
语句比较繁琐冗长。自然语言的描述难于清楚地表达算法的逻辑流程。如果算法中包括判断、循环等结构时,自然语言描述其流程就很难表达清楚且不够直观。
2. 程序设计语言
可直接用程序设计语言来表示算法,例如:求三个数中的最大数的算法用VB语言表示为:
a = InputBox("请输入第一个数:")
b = InputBox("请输入第二个数:")
c = InputBox("请输入第三个数:")
If a > b Then Max = a Else Max = b
If Max > c Then
Print "最大数为"; Max
Else
Print "最大数为"; c
End If
使用程序设计语言表示算法,有以下的缺点:
难于简练地描述算法。由于,在具体的语言环境中,有许多程序语法的要求,为了保证程序语句的正确无误,在描述算法过程中就会显得繁琐,不便于理解和抓住算法的本质。
难于广泛地传播算法。应用某种特定语言描述的算法被限制掌握这种程序语言人员之间,难以广泛传播,不利于算法的研究及改进。
难于掌握。一种程序设计语言的规则,通常需要用较长时间去学习,否则难以用它描述算法。
因此,应使用独立于任何特定的计算机或任何特定的程序设计语言的方法或工具来表示。
3. 专用工具
1)PDL(Procedure Design Language):有些文献称作“伪代码”,因为它们表面上很像高级语言的代码,但又不像高级语言那样要接受严格的语法约束。PDL规定了结构描述的关键字,结构中的语句可以是自然语言的功能描述,也可以是形同赋值、读、写、调用等不十分严格形式化的语句。伪代码不需要考虑程序实现所要求的细节描述。
PDL具有如下一些优点:
⏹可以作为注释直接插在源程序中间,这样做能促使维护人员在修改程序代码的同时
也相应修改PDL注释,因此有助于保持文档和程序的一致性,提高了文档的质量;
⏹可以使用普通的正文编辑程序或文字处理系统,很方便地完成PDL的书写和编辑
工作;
⏹已经有自动处理程序存在,而且可以自动由PDL生成程序代码;
⏹用PDL描述的算法跟程序非常接近,但又能反映算法的本质。
缺点:不够形象直观,描述复杂的条件组合时不够清晰简单。
例如:用伪代码表示的求三个数中的最大数的算法:
Find the bigger
Begin
Input two number: a,b,c
If (a>b) then max=a Else max=b
If (max>c) then output max else output c
End
2)流程图
流程图(flowchart)是一种比较直观易用的、用图形来描述算法的方法。
如图所示为,求三个数中最大数的流程图:
程序流程图是人们对解决问题的方法、思路或算法的一种描述。
流程图的优点:
(a )采用简单规范的符号,画法简单;
(b )结构清晰,逻辑性强;
(c )便于描述,容易理解。
3)N-S 图
由于各种控制结构均用方框表示,所以也称为盒图(Block diagram )。N-S 图的优点是只能描述结构化程序所允许的控制结构,从而迫使用户遵守结构化程序设计的原则。盒图可以嵌套也可以并列,能清楚地显示出程序的结构。缺点是:如果嵌套层数太多,将影响图形的清晰程度。
下图为N-S 图表示的,求三个数最大数的算法: