第1章 引论 1
1.1什么是程序设计方法学 1
1.2一个例子:求最大公约数 7
1.3程序设计语言 13
第2章 程序的基本控制结构 16
第3章 程序的基本数据结构 21
3.1类型的概念 21
3.2简单类型 23
3.3结构类型 26
3.4指引元类型 34
练习一 37
第4章 程序正确性的证明法则 40
4.1如何证明程序的正确性 40
4.2简单语句的证明法则 43
4.3语句序列和条件语句 45
4.4循环语句 48
4.5基本证明法则小结 53
4.6应用举例 55
练习二 64
第5章 限制GOTO 70
5.1 关于GOTO问题的争论 70
5.2 GOTO的证明法则 75
5.3结论 77
第6章 程序的逐步求精 81
6.1逐步求精的设计方法 81
6.2排序 86
6.3积木游戏 95
6.4筛法求素数和Goldbach猜想 99
6.5最小支撑树问题 105
练习三 112
第7章 函数和过程 116
7.1函数和过程的引入 116
7.2局部量和过程参数 118
7.3函数和过程的正确性证明 119
7.4自然归并算法 122
7.5数组划分和快速查找算法 127
练习四 131
第8章 数据抽象和模块 133
8.1模块化的一般目标 133
8.2模块的设计准则 134
8.3八皇后问题 142
8.4同步原语 152
8.5数据抽象的形式规定技术 160
练习五 164
第9章 递归 166
9.1递归的概念 166
9.2递归过程的设计和正确性 169
9.3递归数据结构 176
9.4 Hilbert图案问题 190
9.5试验和回溯,骑士游历问题 199
练习六 205
第10章 程序的形式推导技术 208
10.1程序的形式语义 208
10.2面向目标的程序推导 219
10.3不变式推导技术 225
10.4进一步的例子 235
第11章 程序变换 246
11.1程序变换的基本思想 246
11.2程序变换的基本法则 249
11.3程序规定和规定级变换 252
11.4函数级变换 258
11.5函数级向过程级变换 270
11.6过程级变换 278
11.7程序变换系统 279
练习七 280
第12章 程序工具和环境 283
附录 程序设计语言T报告 287
参考文献 303