转载自《数据结构》(第三版)- 刘大有、杨博等。
用算法描述语言 ADL 书写算法的格式及规定如下:
算法<算法名>(变量i1,···,变量in.变量j,···,变量jn)
// <算法的概括说明>或者/*<算法的概括说明>*/
<步骤名>.[<本步骤的概括说明>]
<操作1> //<操作1的解释>或者/*<操作1的解释>*/
或者(操作1的解释)或者<无解释>
···
<操作J1> //<操作J1的解释>或者/*<操作J1的解释>*/
或者(操作J1的解释)或者<无解释>
···
<步骤名>.[<本步骤的概括说明>]
<操作1> //<操作1的解释>或者/*<操作1的解释>*/
或者(操作1的解释)或者<无解释>
···
<操作Jk> //<操作Jk的解释>或者/*<操作Jk的解释>*/
或者(操作Jk的解释)或者<无解释>|
下面是对上述书写格式给出具体解释:
关于 “<算法名>(变量 i1,・・・, 变量 in. 变量 j,・・・, 变量 jn)” 的解释
<算法名>是由字母和数字组成的有限字符串,并且字符串中的第一个符号必须是字母。 在变量表中,变量ik为输入变量.1≤k≤m,m≥0,当m=O时.表示无输入变量;变量jk为输出变量,1≤k≤n,n≥1。关于 <算法的概括说明> 的解释
在算法的变量表后对整个算法进行概括说明,说明中应包含算法的主要思想,对算法功能和其变量的解释等。 说明较短时使用//,较长时使用/**/关于算法步骤的解释
算法的每一步骤都要有步骤名,步骤名由<算法名或算法名缩写><数字>组成。 步骤名后面的方括号内是对该步骤所执行操作的高度概括。 方括号后是本步骤的一系列操作,每个操作由ADL语句给出,若某操作难于理解则需在其后对其做出解释。关于符号 “|” 的解释
每个算法都需要用符号“|”表示其被书写完毕,也就是说,符号“|”作为对应算法被书写完毕的结束符。 注意算法不一定在符号“|”处运行结束。可使用的算术运算符
+、-、*、x、/、DIV、MOD、⌊⌋(取地板运算,如⌊x⌋的值是小于等于x的最大整数)、 ⌈⌉(取天棚运算,如⌈x⌉的值是大于等于x的最小整数).....可用的关系、逻辑运算符、逻辑常量、集合运算符
关系运算符(=、≠、<、>、≥、≤ ...) 逻辑运算符(AND、OR、NOT) 逻排常量(true、false) 集合运算符(∩、∪、-(差)...)结束符
通常每条语句(或每个操作)都用".”作为结束符。 但在能判断语句结束的位置可略去“.”。关于注释语句
注释语句有以下3种形式: 1.较短的注释语句(注释内容不超过一行)用符号“//”开头,后面是具体注释的内容。 2.较长的注释语句用符号“/*”开头,中间是具体注释的内容,用符号“*/”结尾。 3.注释语句用左小括号“("开头,中间是具体的注释或说明内容,用右小括号“)”结尾。关于赋值语句
形如a←b,其中a是变量,b是表达式或变量; a↔b表示交换变量a和变量b的内容; a←b←c,表示既将c的值赋给变量a,又将其值赋给变量b。关于条件语句
1.IF(或如果,或若)<逻辑表达式> THEN(或“,则”)(语句...语句m). 2.IF(或如果,或若)<逻辑表达式> THEN(或“,则")(语句...语句m). ELSE(或“;否则”)(语句...语句n). 其中m,n≥1。 3.CASE DO (<逻辑表达式 1>:(语句1...语句n). ··· <逻辑表达式m>:(语句...语句nm )). 其中,n≥1,m≥1,1≤i≤m。关于循环语句
1.WHILE<逻辑表达式>DO(语句1. ..语句n). 其中,n≥1。 2.FOR<变量>=<算术表达式1> T0<算术表达式2>STEP<算术表达式3> DO(语句1. ... 语句n). 其中,n≥1。若<算术表达式3>=1,则“STEP<算术表达式3>"可略去。 3.FOR V<变量>∈<集合> DO (语句...语句n).路 其中,n≥1。关于转移语句
GOTO <步骤名>.关于 EXIT 语句
可用在通常的结束条件满足之前,用来结束WHILE或FOR循环的执行。 EXIT语句使得程序转移到紧接在包含EXIT的(最内层的)WHILE或者FOR循环后面的第一个语句。关于圆括号
当且仅当圆括号中只有1条语句时,圆括号可以省略。关于输入、输出语句
输人语句为 READ(x) 表示读取输人值赋给变量x。 输出语句为 PRINT(<表达式>) 或 PRINT<字符串常量>