伪代码循环怎么写( 二 )

< 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图表示算法直观易懂,但画起来比较费事,在设计一个算法时,可能要反复修改,而修改流程图是比较麻烦的 。
因此,流程图适宜于表示一个算法,但在设计算法过程中使用不是很理想的(尤其是当算法比较复杂、需要反复修改时) 。为了设计算法时方便,常用一种称为伪代码的工具 。
伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法 。它如同一篇文章一样,自上而下地写下来 。
每一行(或几行)表示一个基本操作 。它不用图形符号,因此书写方便、格式紧凑,易懂也便于向计算机语言算法(即程序)过渡 。
可以用英文、汉字、中英文混合表示算法,以便于书写和阅读为原则 。用伪代码写算法并无固定的、严格的语法规则,只要把意思表达清楚,并且书写的格式要写成清晰易读的形式 。
3.请使用伪代码编写算法: 要求分别用循环结构和递归结构求解n!循环结构:
tar_func(int n ){
if n == 0
res = 1
else
res = 1
for i = 1:n
res = res * i;
return res;
}
递归结构:
tar_func(int n){
if(n == 0) return 1;
else return n * tar_func(n - 1);
}
4.伪代码的写法类Pascal语言的伪代码的语法规则是: 在伪代码中,每一条指令占一行(else if,例外) 。指令后不跟任何符号(Pascal和C中语句要以分号结尾) 。
伪代码实例如下:
IF 九点以前 THEN
do 私人事务;
ELSE 9点到18点 THEN
工作;
ELSE
下班;
END IF
这样不但可以达到文档的效果,同时可以节约时间 。更重要的是,使结构比较清晰,表达方式更加直观 。
伪代码(Pseudocode)是一种算法描述语言 。使用伪代码的目的是为了使被描述的算法可以容易地以任何一种编程语言(Pascal,C,Java,etc)实现 。因此,伪代码必须结构清晰、代码简单、可读性好,并且类似自然语言 。介于自然语言与编程语言之间 。