算法的表示方法
算法的表示方法 算法的常用表示方法有如下三种: 1、使用自然语言描述算法 2、使用流程图描述算法 3、使用伪代码描述算法 我们来看怎样使用这 3 种不同的表示方法去描述解决问题的过程,以求解 +4+5+(n-1 ) +n 为例。 第1种:使用自然语言描述从1 开始的连续 n 个自然数求和的算法 ① 确定一个 n 的值; ② 假设等号右边的算式项中的初始值i 为 1; ③ 假设 sum 的初始值为 0; ④ 如果 iwn寸,执行⑤,否则转出执行⑧; ⑤ 计算 sum 加上 i 的值后,重新赋值给 sum ; ⑥ 计算 i 加 1,然后将值重新赋值给 i; ⑦ 转去执行④; sum=1+2+3 ⑧输出 sum 的值,算法结束。 从上面的这个描述的求解过程中,我们不难发现,使用自然语言描述算法的方法虽然比 较容易掌握,但是存在着很大的缺陷。例如,当算法中含有多分支或循环操作时很难表述清 楚。另 外,使用自然语言描述算法还很容易造成歧义(称之为二义性),譬如有这样一句话 ――武松打死 老虎”,我们既可以理解为 武松/打死老虎”,又可以理解为 武松/打/死老虎”。 自然语言中的语气 和停顿不同,就可能使他人对相同的一句话产生不同的理解。又如 他赢”这句话,使用不同的语气说,可以产生 你输 3 种截然不同的意思,同学们不妨试试看。为 2 种描述算法的方法 一一了解决自然语言描述算法中存在着可能的二义性,我们提出了第 流程图。 第 2 种:使用流程图描述从 1 开始的连续 n 个自然数求和的算法 C C 开始 J J //输入 I I 的値/2 i 1 i =1i =1 t tsunt =0sunt =0 ■ KoKo /输岀 gumgum YesYes 的值/sun =sun 4- i I i = i + 1 C C 结東) 从上面的这个算法流程图中,可以比较清晰的看出求解问题的执行过程。 使用流程图描述算法之前,有必要对流程图中的一些常用符号做一个解释。 在进一步学习 ■符号名称 开贻、结束符 祚用 表示賞法的开始和结束符号 n n 表不算法过程中,从外部枝取的信息【输入然 后将外 理过的信息输岀. 表不算法过程中,需要坯理的内容,只有一个入口 和 一亍出口 a a 表示算法过程中的分支结构養形框的 4 4 个頂点中‘ 逋 / / 输入、输出框 处理框 V 二 ------- ------- 判断框 常用上面的顶点表示入口』根据需要用苴余的顶 点恚 示出口。 瀟程线算法过程中的指向硫程的方向 流程图的缺点是在使用标准中没有规定流程线的用法, 控制方向,即算法中操作步骤的执行次序。 因为流程线能够转移、 指出流程 在早期的程序设计中,曾经由于滥用流程线的转 转移”用法的大讨论,从移而导致了可怕的 软件危机”,震动了整个软件业,并展开了关于 而产生了计算机科学的一个新的分支学科一一程序设计方法。 无论是使用自然语言还是使用流程图描述算法, 仅仅是表述了编程者解决问题的一种思 路,都 无法被计算机直接接受并进行操作。 由此我们引进了第三种非常接近于计算机编程语 言的算法描述 方法一一伪代码。 第 3 种:使用伪代码描述从 1 开始的连续 n 个自然数求和的算法 1) 算法开始; 2) 输入 n 的值; 3) i - 1;/*为变量 i 赋初值*/ 4) sum — 0;/*为变量 sum 赋初值*/ 5) do while i=n /*当变量 i =n 时,执行下面的循环体语句*/ 6) { sum J sum + i; 7)iJi + 1;} 8) 输出 sum 的值; 9) 算法结束; 伪代码是一种用来书写程序或描述算法时使用的非正式、 种编程语言,这种方法针对的是一台虚拟的计算机。 透明的表述方法。它并非是- 伪代码通常采用自然语言、数学公式和符号来描述算法的操作步骤,同时采用计算机高 级语言(如 C、Pascal、VB、C++、Java 等)的控制结构来描述算法步骤的执行