算法中伪代码的使用 伪代码的使用 Usage of Pseudocode 伪代码(Pseudocode)是一种算法描述语言。使用为代码的目的是为了使被描述的算法可以容易地以任何一种编程语言(Pascal, C, Java, etc)实现。因此,伪代码必须结构清晰,代码简单,可读性好,并且类似自然语言。 下面介绍一种类Pascal语言的伪代码的语法规则。 伪代码的语法规则 在伪代码中,每一条指令占一行(else if 例外,),指令后不跟任何符号(Pascal和C中语句要以分号结尾); 书写上的“缩进”表示程序中的分支程序结构。这种缩进风格也适用于if-then-else语句。用缩进取代传统Pascal中的begin和end语句来表示程序的块结构可以大大提高代码的清晰性;同一模块的语句有相同的缩进量,次一级模块的语句相对与其父级模块的语句缩进; 例如: line 1 line 2 sub line 1 sub line 2 sub sub line 1 * sub sub line 2 sub line 3 line 3 而在Pascal中这种关系用begin和end的嵌套来表示, line 1 line 2 begin sub line 1 sub line 2 begin sub sub line 1 sub sub line 2** end; sub line 3 end; line 3 在C中这种关系用{ 和 } 的嵌套来表示, line 1 line 2 { sub line 1 * sub line 2 * { * sub sub line 1 **sub sub line 2 * } * sub line 3 } line 3 在伪代码中,通常用连续的数字或字母来标示同一即模块中的连续语句,有时也可省略标号。 例如: 1. line 1 2. line 2 a. sub line 1 b. sub line 2 1. sub sub line 1 2. sub sub line 2 c. sub line 3 3. line 3 符号△后的内容表示注释; 在伪代码中,变量名和保留字不区分大小写,这一点和Pascal相同,与C或C++不同; 在伪代码中,变量不需声明,但变量局部于特定过程,不能不加显示的说明就使用全局变量; 赋值语句用符号←表示,x←exp表示将exp的值赋给x,其中x是一个变量,exp是一个与x同类型的变量或表达式(该表达式的结果与x同类型);多重赋值i←j←e是将表达式e的值赋给变量i和j,这种表示与j←e和i←e等价。 例如: x←y x←20*(y+1) x←y←30 以上语句用Pascal分别表示为: x := y; x := 20*(y+1); x := 30; y := 30; 以上语句用C分别表示为: x = y; x = 20*(y+1); x = y = 30; 选择语句用if-then-else来表示,并且这种if-then-else可以嵌套,与Pascal中的if-then-else没有什么区别。 例如: if (Condition1) then [ Block 1 ] else if (Condition2) then [ Block 2 ] else [ Block 3 ] 循环语句有三种:while循环、repeat-until循环和for循环,其语法均与Pascal类似,只是用缩进代替begin - end; 例如: 1. x ← 0 2. y ← 0 3. z ← 0 4. while x < N 1. do x ← x + 1 2. y ← x + y 3. for t ← 0 to 10 1. do z ← ( z + x * y ) / 100 2. repeat 1. y ← y + 1 2. z ← z - y 3. until z < 0 4. z ← x * y 5. y ← y / 2 上述语句用Pascal来描述是: x := 0; y := 0; z := 0; while x < N do begin x := x + 1; y := x + y; for t := 0 to 10 do begin z := ( z + x * y ) / 100; repeat y := y + 1; z := z - y; until z < 0; end; z := x * y; end; y := y / 2; 上述语句用C或C++来描述是: x = y = z = 0; while( z < N ) { x ++; y += x; for( t = 0; t < 10; t++ ) { z = ( z + x * y ) / 100; do { y ++; z -= y; } while( z >= 0 ); } z = x * y;** } |
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) | Powered by Discuz! X2.5 |