第一章 绪论 1
第一节 程序设计的发展 1
一、软件危机 1
二、程序设计技术的发展 1
第二节 程序设计的一般途径 5
一、程序设计的概念 5
二、程序设计的一般过程 8
第三节 结构程序设计的一般概念 8
一、什么是结构程序设计 8
二、自顶向下逐步求精 9
第四节 程序结构 11
一、程序的数据结构 11
二、程序的控制结构 12
习题一 15
第二章 结构程序设计语言PASCAL 17
第一节 PASCAL语言概述 17
第二节 PASCAL程序结构 18
一、引例 18
二、程序结构 19
第三节 PASCAL语言的词汇集 21
第四节 说明与数据类型 23
一、说明 23
二、数据类型 24
第五节 语句 36
一、简单语句 36
二、结构语句 40
第六节 子程序 45
一、过程 46
二、函数 50
习题二 52
第三章 数据结构概览 53
第一节 概述 53
一、数据结构 53
二、数据结构的发展与地位 55
第二节 线性表与链表 56
一、线性表及其操作 56
二、线性表的向量存储结构 58
三、线性表的链式存储 61
第三节 堆栈与队列 64
一、堆栈及其存储结构 64
二、队列 67
第四节 树 72
一、树的定义 72
二、树的基本术语 73
三、树的基本运算 75
第五节 二叉树 76
一、二叉树的定义 76
二、二叉树的性质 76
三、树转换成二叉树的方法 79
第六节 遍历二叉树 80
一、二叉树的存储结构 80
二、二叉树的遍历 82
第七节 图 85
一、图的基本概念 85
二、图的表示 87
三、图的运算 91
习题三 100
一、抽象 101
第一节 程序设计的基本原理 101
第四章 结构程序设计技术 101
二、子目标 105
三、模块化 105
第二节 程序系统的生命周期 106
一、系统分析阶段 106
二、系统设计阶段 107
三、系统编码阶段 108
四、测试阶段 108
五、运行和维护阶段 109
第三节 结构化的控制结构 110
一、过程 110
二、函数 112
三、一些新的控制结构 113
一、自顶向下与自底向上 114
第四节 自顶向下程序开发技术 114
二、程序模块 115
三、模块结构图 116
四、模块开发的顺序 119
第五节 逐步求精法 120
一、逐步求精算法设计的基本思想 120
二、精细化技术 121
三、逐步求精方法设计举例 123
四、讨论 130
习题四 131
第五章 递归技术 132
第一节 递归的概念 132
一、概念 132
二、例举 133
三、讨论 135
一、递归与迭代的关系 136
第二节 递归与迭代 136
二、递归程序的执行过程 139
第三节 递归程序设计 142
一、递归程序的模型 143
二、例举 144
第四节 递归算法的模拟 156
一、采用叠代算法 157
二、“末尾递归”的消除 158
三、利用堆栈消除递归 159
第五节 递归化 164
一、递推的递归化 164
二、数据结构的递归化 169
习题五 173
一、程序测试的一般概念 175
第六章 程序的正确性 175
第一节 程序的测试 175
二、白盒测试法 178
三、黑盒测试法 181
第二节 夫劳艾得-霍尔规则公理方法 185
一、基本概念 185
二、夫劳艾得不变式断言法 188
三、霍尔公理化方法 191
第三节 戴杰克斯特拉最弱前置条件方法 195
一、谓词转换器的基本概念 195
二、关于程序证明的一个演绎系统 198
三、程序的形式推导开发技术 204
习题六 207
参考文献 209