伪代码的使用 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;
}
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 + 10
2. y ← sin(x)
3. call CalValue(x,y)
参数用按值传递方式传给一个过程:被调用过程接受参数的一份副本,若他对某个参数赋值,则这种变化对发出调用的过程是不可见的。当传递一个对象时,只是拷贝指向该对象的指针,而不拷贝其各个域。
a)伪代码表示的算法
用传统的流程图和N-S图表示算法直观易懂,但画起来比较费事,在设计一个算法时,可能要反复修改,而修改流程图是比较麻烦的。因此,流程图适宜于表示一个算法,但在设计算法过程中使用不是很理想的(尤其是当算法比较复杂、需要反复修改时)。为了设计算法时方便,常用一种称为伪代码的工具。伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法。它如同一篇文章一样,自上而下地写下来。每一行(或几行)表示一个基本操作。它不用图形符号,因此书写方便、格式紧凑,易懂也便于向计算机语言算法(即程序)过渡。
可以用英文、汉字、中英文混合表示算法,以便于书写和阅读为原则。用伪代码写算法并无固定的、严格的语法规则,只要把意思表达清楚,并且书写的格式要写成清晰易读的形式。
源文档 <http://blog.pfan.cn/xiangyu/2092.html>
分享到:
相关推荐
伪代码是一种非正式的语言,没有语法规则,也不应执行。 使用伪代码的重点是着眼于程序的整体设计。 例如,假设有人问您如何洗衣服。 您可以将此任务分解为一系列基本步骤,如下所示: 打开洗衣机的盖子。 将衣服...
支持C系列(基于libclang),JAVA,PHP,等开发语言以及伪代码检测,并支持数十种类型文件。 支持的多个漏洞(支持多个漏洞类型) 临时开放几条突破规则匹配,用户可以自定义,后续将继续更新。 CLI / API模式...
GNU汇编gas权威手册 using as 是GNU官方的as使用手册,包括详尽的GNU汇编编写语法规则,和使用的伪指令。如果你需要看linux的汇编代码,那么这是最好的参考资料之一。
2、能够完全正确识别后缀名为ASP的伪ASP文件。 3、不论多么复杂的语法结构,都能正确加密并解析。 4、完美处理多种特殊ASP语法在DLL中异常情况... 系统要求 WindowsNT4.0 + IIS Windows2000 + IIS ...
手册提供了完整的CSS2.0的属性(Properties)、规则(At-Rules)、伪类(Pseudo-Classes)、...手册中为几乎所有的已被支持的属性、伪类、单位等,除了基本的语法示范外,都度身制作了可以对照源代码即时察看运行演示的实例。
汇编语言教程可以按照以下步骤进行: 一、了解汇编语言基础 汇编语言是二进制指令(操作...通过实践,我们可以加深对汇编语言特性和语法规则的理解。 五、阅读优质教材或教程 阅读优质的教材或教程对于学习汇编语言
l.5.3 结构图、伪代码及IPO框图 l.6 好的程序设计的五点要素 1.7 规则意味着可以打破 1.7.1 安塞尔亚当斯(Ansel Adams)或毕加索(Picasso) 1.7.2 注释块 1.7.3 标识符:identifiers、IDENTIFIERS和...
本手册针对的是已有一定网页设计制作经验的读者。其目的是提供完整清晰的样式表内容... 手册中为几乎所有的已被支持的属性、伪类、单位等,除了基本的语法示范外,都度身制作了可以对照源代码即时察看运行演示的实例。
本手册针对的是已有一定网页设计制作经验的读者。其目的是提供完整清晰的样式表内容... 手册中为几乎所有的已被支持的属性、伪类、单位等,除了基本的语法示范外,都度身制作了可以对照源代码即时察看运行演示的实例。
本手册针对的是已有一定网页设计制作经验的读者。其目的是提供完整清晰的样式表内容... 手册中为几乎所有的已被支持的属性、伪类、单位等,除了基本的语法示范外,都度身制作了可以对照源代码即时察看运行演示的实例。
本文实例讲述了JavaScript词法作用域与作用域链。分享给大家供大家参考,具体如下: ...在C、Java、C#等编程语言中,下面的语法报错(伪代码) { var num = 123; { console.log( num ); // num => 123
提交代码的前提是弄懂代码的逻辑,知道语法意义,能手撕伪代码 (手撕代码更佳)。 members content LeetCode题库代码(Java&&Python) 关于题目发布,每天发布题目的人负责题目的描述,注明难度,输入输出,参考官网 ...
本手册针对的是已有一定网页设计制作经验的读者。其目的是提供完整清晰的样式表内容的... 手册中为几乎所有的已被支持的属性、伪类、单位等,除了基本的语法示范外,都度身制作了可以对照源代码即时察看运行演示的实例
本手册是 Rainer's DHTML Library 产品的一部分。 本手册针对的是已有一定网页... 手册中为几乎所有的已被支持的属性、伪类、单位等,除了基本的语法示范外,都度身制作了可以对照源代码即时察看运行演示的实例。
本手册是 Rainer's DHTML Library 产品的一部分。 本手册针对的是已有一定网页... 手册中为几乎所有的已被支持的属性、伪类、单位等,除了基本的语法示范外,都度身制作了可以对照源代码即时察看运行演示的实例。
这是作者苏沈小雨2002年制作的CSS2.0手册,对学习CSS和查询CSS属性非常有帮助。... 手册中为几乎所有的已被支持的属性、伪类、单位等,除了基本的语法示范外,都度身制作了可以对照源代码即时察看运行演示的实例。
1. **游戏规则**:系统生成一个随机数,玩家有限定次数的机会来猜测这个数字。 2. **程序设计思路**:利用rand函数生成伪随机数,利用时间戳产生某种意义上的真正的随机数。 3. **代码实现**:利用时间一直在变化的...
该资料是《Oracle SQL高级编程》的源代码 对应的书籍资料见: Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐) 基本信息 原书名: Pro Oracle SQL 原出版社: Apress 作者: (美)Karen Morton Kerry ...
手册中为几乎所有的已被支持的属性、伪类、单位等,除了基本的语法示范外,都度身制作了可以对照源代码即时察看运行演示的实例。 本手册的升级信息与版权声明请参阅关于本书页面。 限于篇幅,对于一些过于...
手册提供了完整的 CSS2.0 的属性规则(伪类,伪元素,声明单位,选择符(Selectors)的...手册中为几乎所有的已被支持的属性、伪类、单位等,除了基本的语法示范外,都度身制作了可以对照源代码即时察看运行演示的实例。