分类:
2008-08-20 16:02:39
伪代码(Pseudocode)是一种算法描述语言。使用为代码的目的是为了使被描述的算法可以容易地以任何一种编程语言(Pascal, C, Java, etc)实现。因此,伪代码必须结构清晰,代码简单,可读性好,并且类似自然语言。
下面介绍一种类Pascal语言的伪代码的语法规则。
例如:
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
例如:
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 (Condition1) then [ Block 1 ] else if (Condition2) then [ Block 2 ] else [ Block 3 ]
例如:
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; } y /= 2;
例如:
A[1…j]表示含元素A[1], A[2], … , A[j]的子数组;
例如:
数组可被看作是一个对象,其属性有length,表示其中元素的个数,则length[A]就表示数组A中的元素的个数。在表示数组元素和对象属性时都要用方括号,一般来说从上下文可以看出其含义。
用于表示一个数组或对象的变量被看作是指向表示数组或对象的数据的一个指针。对于某个对象x的所有域f,赋值y←x就使f[y]=f[x],更进一步,若有f[x]←3,则不仅有f[x]=3,同时有f[y]=3,换言之,在赋值y←x后,x和y指向同一个对象。
有时,一个指针不指向任何对象,这时我们赋给他nil。
函数值利用 “return (函数返回值)” 语句来返回,调用方法与Pascal类似;过程用 “call 过程名”语句来调用;
例如:
1. x ← t + 10 2. y ← sin(x) 3. call CalValue(x,y)
参数用按值传递方式传给一个过程:被调用过程接受参数的一份副本,若他对某个参数赋值,则这种变化对发出调用的过程是不可见的。当传递一个对象时,只是拷贝指向该对象的指针,而不拷贝其各个域。