c伪代码怎么写( 二 )


例如: 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←yx←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 dobegin 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[j]指示数组A的第j个元素 。
符号“ …”用来指示数组中值的范围 。例如:A[1…j]表示含元素A[1], A[2] ,  …  ,  A[j]的子数组;复合数据用对象(Object)来表示 , 对象由属性(attribute)和域(field)构成 。
域的存取是由域名后接由方括号括住的对象名表示 。例如:数组可被看作是一个对象 , 其属性有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 。
函数和过程语法与Pascal类似 。函数值利用 “return (函数返回值)” 语句来返回 , 调用方法与Pascal类似;过程用 “call 过程名”语句来调用;例如:1. x ← t + 102. y ← sin(x)3. call CalValue(x,y)参数用按值传递方式传给一个过程:被调用过程接受参数的一份副本 , 若他对某个参数赋值 , 则这种变化对发出调用的过程是不可见的 。
当传递一个对象时 , 只是拷贝指向该对象的指针 , 而不拷贝其各个域 。a) 伪代码表示的算法用传统的流程图和N-S图表示算法直观易懂 , 但画起来比较费事 , 在设计一个算法时 , 可能要反复修改 , 而修改流程图是比较麻烦的 。