Python算法从菜鸟到达人
上QQ阅读APP看书,第一时间看更新

1.2 伪代码的约定

在描述算法时,为了突出算法的核心思想,经常会使用与高级编程语言相似的伪代码。如果熟悉常用的高级编程语言(如C、C++、Java、Python、Go等),阅读书中的伪代码应该没有障碍。伪代码与真实代码的不同之处在于,在伪代码中,具体的工程问题没有被考虑在内,即数据抽象、模块化与出错处理等问题往往都被忽略掉了,重点放在表达核心思想上,因此,有时候会看到在伪代码中嵌入了一些英语短语或句子。

下面将介绍使用伪代码的一些约定:

1)书写上的“缩进”表示程序中的分程序(程序块)结构。

2)while、for、repeat等循环结构和if、then、else等条件结构与高级语言稍有不同,具体来说,在伪代码中,while与for关键字之后的判定条件不用括号括起来,“~”用来表示某个变量的取值范围,判定条件有时候会用高级语言与数学形式表达。循环与分支语句块(while、for或if语句块)都有显式的结束标志,以end while、end for或end if结束。

3)“//”或“#”后面的部分表示注释。/**/表示多行注释。

4)变量是局部定义给定过程的,在没有明确说明的情况下,不使用全局变量。

5)数组元素是通过“数组名[下标]”的形式来访问的。例如A[i]表示数组A的第i个元素。符号“…”表示数组中的一个取值范围,例如A[ij]表示A的子数组,包含了j-i+1个元素,分别是A[i], A[i+1],…, A[j]。

6)复合数据一般组织成对象,它们是由属性或域所组成的。域的访问是域名后由方括号括住的对象名形式来表示。例如,数组可以被看作是一个对象,其属性为length,表示数组中元素的个数,如length [A]就表示数组A中的元素个数。一般来说,这些数据通过上下文就可以看出其含义。

7)参数采用值传递方式,被调用的过程会收到参数的一份副本。

8)布尔运算符“and”和“or”都具有执行短路计算的能力。

9)&表示传入的参数在函数内的改动对外是可见的。

10)为了便于理解,伪代码中都给出了变量的数据类型和函数的返回类型。