【论文写作】伪代码
伪代码(Pseudocode)是一种非正式的,类似于英语结构的,用于描述模块结构图的语言。人们在用不同的编程语言实现同一个算法时意识到,他们的实现(注意:这里是实现,不是功能)很不同。尤其是对于那些熟练于不同编程语言的程序员要理解一个(用其他编程语言编写的程序的)功能时可能很难,因为程序语言的形式限制了程序员对程序关键部分的理解。而这种着重于代码逻辑的 “伪代码”,则是一种不错的表达方式。这里 v
引言
在与他人交流代码时,逐句分析代码会花费极高的时间和精力成本,从 “初步了解” 这一目的来看显然是没必要的。而这种着重于代码逻辑的 “伪代码”,则是一种不错的表达方式。
伪代码(Pseudocode)是一种非正式的,类似于英语结构的,用于描述模块结构图的语言。人们在用不同的编程语言实现同一个算法时意识到,他们的实现(注意:这里是实现,不是功能)很不同。尤其是对于那些熟练于不同编程语言的程序员要理解一个(用其他编程语言编写的程序的)功能时可能很难,因为程序语言的形式限制了程序员对程序关键部分的理解。这样伪代码就应运而生了。伪代码提供了更多的设计信息,每一个模块的描述都必须与设计结构图一起出现。
——百度百科
伪代码为我们提供了一条绕过语言规范,直接了解代码逻辑的途径,常用于算法分析中。但是为了使得伪代码简明易读,我们依旧有一些约定俗成的规范,现介绍如下。
一、基本语法
1、基本规则
- 算法用 Begin 开始,以 End 结束(如果只表示算法的中间部分可以不要)。
- 每一条指令,占一行(else if 例外)。指令结束不使用任何符号。
- “缩进” 表示程序中的分支程序结构(同一模块的语句有相同的缩进量,次一级模块的语句相对与其父级模块的语句缩进);
- 通常每个算法开始时都要描述它的输入和输出,而且算法中的每一行都给编上行号,在解释算法的过程中会经常使用算法步骤中的行号来指代算法的步骤;
- 每一行可以加上编号(也可不加)。
- 注释用 // 表示。多行的注释则被括在/* */之中。诸如read和output之类的各种输入或者输出也在需要时被用到。
2、变量的声明
- 算法中出现的数组、变量可以是以下类型:整数、实数、字符、位串或指针。
- 定义变量的语句不用写出来,但必须在注释中给出
3、指令的表示
- 在算法中的某些指令或子任务可以用文字来叙述,例如,”设x是A中的最大项”,这里A是一个数组;或者”将x插入L中”,这里L是一个链表。
- 这样做的目的是为了避免因那些与主要问题无关的细节使算法本身杂乱无章。
4、表达式
- 算术表达式可以使用通常的算术运算符(+,-,*,/,以及表示幂的^)。
- 逻辑表达式可以使用关系运算符 = 、≠、<、>、≤ 和 ≥,以及逻辑运算符与(and)、或(or)、非(not)。
5、赋值语句
赋值语句是如下形式的语句:
这里a是变量、数组项,b是算术表达式、逻辑表达式或指针表达式。语句的含义是将b的值赋给a。
变量交换:若a和b都是变量、数组项,那么记号
表示a和b的内容进行交换。
6、goto语句
goto语句具有形式:
goto label(goto标号)
它将导致转向具有指定标号的语句。
7、分支结构
条件语句:
if i=10
then xxxx
else xxxx //else 和 then 要对齐
//或者
if i=10
then xxxx //if 后面必定跟上then,else后面不用跟then
elseif i=9 //elseif 要连在一起写
then xxxx
yyyy
else xxxx //else 跟在 elseif 的 then 对齐
8、循环结构
有两种循环指令:while 和 for。
while 语句的形式是:
while time<10
do xxxxx //while后面必定要紧跟缩进的do
xxxxx
end
for 语句的形式是:
for var init to limit by incr
do s
end
这里 var 是变量,init、limit 和 incr 都是算术表达式,而 s 是由一个或多个语句组成的语句串。
初始时,var被赋予init的值。假若incr≥0,则只要var≤limit,就执行s并且将incr加到var上。(假若incr<0,则只要var≥limit,就执行s并且将incr加到var上)。incr的符号不能由s来该改变。
9、程序的结束
- exit语句可以在通常的结束条件满足之前,被用来结束while循环或者for循环的执行。
- exit导致转向到紧接在包含exit的(最内层)while或者for循环后面的一个语句。
- return用来指出一个算法执行的终点;
- 如果算法在最后一条指令之后结束,它通常是被省略的;它被用得最多的场合是检测到不合需要的条件时。return的后面可以紧接被括在引号的信息。
9、函数的编写
函数的伪代码格式例子为:search(A,name), 参数类型可以不给出,但必须在注释中说明。
二、伪代码实例
伪代码:
x ← 0
y ← 0
z ← 0
while x < N
do x ← x + 1
y ← x + y
for t ← 0 to 10
do z ← ( z + x * y ) / 100
repeat
y ← y + 1
z ← z - y
until z < 0
z ← x * y
y ← y / 2
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;
参考文章:
以上整理可能不全面,后续补充
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)