购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.5 算法的描述方法

算法常用的描述方法有4 种:自然语言描述算法、流程图描述算法、伪代码描述算法、计算机语言描述算法。

我们来看怎样使用这4 种不同的描述方法去描述解决问题的过程。

【例1.4】描述sum=1+2+3+4+5+…+(n-1)+n的计算机算法。

1.自然语言描述

从1 开始的连续n个自然数求和的算法。

(1)确定一个n的值;

(2)假设循环控制变量i的初始值为1;

(3)假设sum的初始值为0;

(4)如果i小于等于n时,执行步骤(5),否则转出执行步骤(8);

(5)计算sum加上i的值后,重新赋值给sum;

(6)计算i加1,然后将值重新赋值给i;

(7)转去执行步骤(4);

(8)输出sum 的值,算法结束。

从上面的这个描述的求解过程中,不难发现,使用自然语言描述算法虽然比较容易掌握,但是存在着很大的缺陷。例如,当算法中含有多分支或循环操作时,很难表述清楚。另外,使用自然语言描述算法还很容易造成歧义(称之为二义性),譬如有这样一句话——“武松打死老虎”,既可以理解为“武松/打死老虎”,又可以理解为“武松/打/死老虎”。自然语言中的语气和停顿不同,就可能使他人对相同的一句话产生不同的理解。又如“你输他赢”这句话,使用不同的语气说,可以产生三种截然不同的意思,同学们不妨试试看。为了解决自然语言描述算法中存在的可能的二义性,我们提出了第二种描述算法的方法——流程图。

2.流程图描述

算法的流程描述清晰简洁,容易表达选择结构;它不依赖于任何具体的计算机和计算机程序设计语言,从而有利于不同环境的程序设计。其基本图形及功能如图1.6所示。

图1.6 流程图基本图形及功能

从1 开始的连续n个自然数求和的算法流程图如图1.7所示。

图1.7 1 到n自然数求和流程图

从上面的这个算法流程图中,可以比较清晰地看出求解问题的执行过程。但流程图的缺点是在使用标准中没有规定流程线的用法,因为流程线能够转移、指出流程控制方向,即算法中操作步骤的执行次序。在早期的程序设计中,曾经由于滥用流程线的转移而导致了可怕的“软件危机”,震动了整个软件业,并展开了关于“转移”用法的大讨论,从而产生了计算机科学的一个新的分支学科——程序设计方法。

无论是使用自然语言还是使用流程图描述算法,仅仅是表述了编程者解决问题的一种思路,都无法被计算机直接接受并进行操作。由此我们引进了第三种非常接近于计算机编程语言的算法描述方法——伪代码。

3.伪代码描述

从1 开始的连续n个自然数求和的算法。

(1)算法开始;

(2)输入 n 的值;

(3)i ←1;

(4)sum ←0;

(5)do while i<=n;

(6){ sum ← sum+i;

(7)i ← i+1;};

(8)输出sum的值;

(9)算法结束。

伪代码是一种用来书写程序或描述算法时使用的非正式、透明的表述方法。它并非是一种编程语言,这种方法针对的是一台虚拟计算机。

伪代码通常采用自然语言、数学公式和符号来描述算法的操作步骤,同时采用计算机高级语言(如C、Pascal、VB、C++、Java等)的控制结构来描述算法步骤的执行顺序。

4.计算机语言描述

对于给定一个n,从1 开始的连续n个自然数求和的C语言算法如下: DrvVm9iX13PG+ttK8pTp4MZVFUmrIbs++E41KU5Qo3ilsYPuGPSyllEJZz6ZkJWS

点击中间区域
呼出菜单
上一章
目录
下一章
×