第1章 程序设计概论 1
1.1 问题求解 1
1.1.1 思维与语言 1
1.1.2 算法 3
1.1.3 数据结构 5
1.1.4 程序 7
1.1.5 程序设计的一般过程 7
1.2 程序设计语言 8
1.2.1 发展历史 8
1.2.2 程序设计语言的实现 12
1.2.3 高级语言程序基本结构 14
1.2.4 高级语言的语法规则 17
1.2.5 程序的编辑、编译和运行 23
1.3 程序设计范式的演化 25
1.3.1 结构化程序设计 25
1.3.2 函数式程序设计 26
1.3.3 面向对象程序设计 27
1.3.4 事件驱动的程序设计 28
1.3.5 逻辑式程序设计 28
习题1 30
第2章 算法设计基础 34
2.1 算法的描述 34
2.1.1 自然语言方式 34
2.1.2 伪代码方式 35
2.1.3 程序流程图方式 37
2.1.4 PAD图方式 39
2.2 结构化算法设计初步 40
2.2.1 算法描述 40
2.2.2 算法设计 42
2.3 算法的计算复杂性 47
2.4 常用算法设计策略 48
2.4.1 分治法 48
2.4.2 递归技术 49
2.4.3 贪心法 50
2.4.4 回溯法 51
习题2 52
第3章 基本数据类型 54
3.1 数据对象 54
3.1.1 数据的存储 55
3.1.2 生存期与值 55
3.2 基本数据类型 56
3.2.1 整型与浮点型 57
3.2.2 字符类型 58
3.2.3 逻辑型 58
3.2.4 空值型 58
3.3 变量与常量 59
3.3.1 常量 59
3.3.2 变量 61
3.4 指针类型 62
3.4.1 指针定义 62
3.4.2 指针的初始化 63
3.4.3 指针运算 64
3.4.4 指针与常量 65
3.5 引用类型 66
3.6 类型的意义 67
习题3 67
第4章 操作及其控制 70
4.1 基本操作与运算符 70
4.1.1 赋值操作 70
4.1.2 算术操作 70
4.1.3 增1(减1)操作 71
4.1.4 关系、逻辑操作 71
4.1.5 条件运算符 71
4.2 表达式 72
4.2.1 隐含类型转换 72
4.2.2 强制类型转换 73
4.2.3 表达式内的顺序控制 73
4.2.4 运算符的优先级 74
4.2.5 运算符的结合性 74
4.3 语句 75
4.3.1 表达式语句 75
4.3.2 语句间顺序控制 76
4.3.3 复合语句 76
4.3.4 选择语句 76
4.3.5 循环语句 80
4.3.6 直接顺序控制 85
4.4 预处理指令 87
4.4.1 文件包含指令 88
4.4.2 宏定义指令 88
4.4.3 条件编译指令 91
习题4 94
第5章 函数与数据控制 103
5.1 函数定义与说明 103
5.1.1 函数定义 103
5.1.2 函数说明 104
5.1.3 函数的简单调用 106
5.1.4 函数的重载 106
5.2 数据控制 108
5.2.1 参数传递机制 108
5.2.2 数据对象的引用 112
5.2.3 作用域 114
5.3 函数的顺序控制 119
5.3.1 函数执行模型 119
5.3.2 基于栈的实现 122
5.3.3 函数的自嵌套调用 122
5.4 相关的其他语法 123
5.4.1 数组作函数参数 123
5.4.2 函数指针 126
5.5 常用系统函数 129
5.5.1 数学函数 129
5.5.2 字符串处理函数 129
习题5 130
第6章 构造类型 138
6.1 数组类型 138
6.1.1 数组定义 138
6.1.2 数组的赋值与使用 139
6.1.3 数组的存储 139
6.1.4 数组的初始化 140
6.1.5 字符数组 140
6.1.6 指针与数组 141
6.2 枚举类型 143
6.2.1 枚举类型定义 143
6.2.2 枚举变量定义 143
6.2.3 类型转换 144
6.3 结构类型 145
6.3.1 结构的定义 145
6.3.2 结构的使用 145
6.3.3 结构的实现 147
6.4 结构化数据 148
6.4.1 单链表 148
6.4.2 栈 150
6.4.3 存储的动态分配 153
6.5 抽象数据类型 157
6.5.1 结构的扩展 157
6.5.2 C++的抽象数据类型 158
6.5.3 C++数据类型的层次 159
6.6 自定义类型 160
习题6 160
第7章 结构化算法的实现 167
7.1 基本控制结构的C++实现 167
7.1.1 顺序结构的C++实现 167
7.1.2 分支结构的C++实现 168
7.1.3 循环结构的C++实现 170
7.1.4 复杂结构C++实现示例 171
7.2 子算法设计与C++实现 172
7.2.1 参数为普通类型的子算法 173
7.2.2 参数为指针的子算法 174
7.2.3 参数为引用的子算法 177
7.2.4 子算法设计与C++实现示例 178
7.3 递归与迭代 182
7.3.1 递归 182
7.3.2 迭代 184
7.3.3 应用示例 186
习题7 189
第8章 程序开发过程 192
8.1 软件开发方法概述 193
8.1.1 软件生存周期 193
8.1.2 软件开发方法 193
8.2 软件设计 194
8.2.1 概要设计 195
8.2.2 详细设计 196
8.3 软件编码 196
8.3.1 程序设计方法 196
8.3.2 程序设计语言 197
8.3.3 编码风格 197
8.4 软件测试与调试 198
8.4.1 调试工具及使用 199
8.4.2 调试过程 200
8.4.3 错误类型 200
8.4.4 异常处理 203
8.4.5 软件测试 207
8.5 程序运行效率 209
8.5.1 适当的算法 209
8.5.2 选择快速运算 210
8.5.3 函数 213
习题8 213
第9章 面向对象程序设计 218
9.1 面向对象方法学 218
9.1.1 人类认知规律 218
9.1.2 面向对象基本原理 220
9.1.3 认知规律与面向对象 220
9.1.4 面向对象软件开发 221
9.2 基本概念 221
9.2.1 对象 222
9.2.2 类 226
9.2.3 结构与关系 228
9.3 面向对象分析 233
9.3.1 主要原则 233
9.3.2 静态结构分析与对象模型 235
9.3.3 动态行为分析 238
9.4 面向对象设计 241
习题9 241
第10章 类与对象的实现 243
10.1 C++中的类 243
10.1.1 类的说明 243
10.1.2 类的定义 245
10.2 对象及其成员的使用 247
10.2.1 对象实例 247
10.2.2 对象成员的引用 248
10.2.3 生命周期 250
10.2.4 类型转换 255
10.2.5 其他应用 259
10.3 类的特殊成员 268
10.3.1 静态成员 268
10.3.2 const成员 271
10.3.3 内联函数 273
10.3.4 友元 273
习题10 275
第11章 类间关系的实现 284
11.1 一般-特殊关系的实现 284
11.1.1 类的继承与派生 284
11.1.2 赋值兼容规则 293
11.1.3 二义性与作用域分辨 294
11.2 多态性与虚函数 300
11.2.1 编译时刻的多态性 300
11.2.2 运行时刻的多态性 301
11.2.3 虚函数 303
11.2.4 纯虚函数与抽象类 310
11.3 整体-部分关系的实现 314
11.4 关联关系的实现 317
11.5 关于类层次的总结 318
11.5.1 认知规律与类层次 318
11.5.2 构造函数的一般形式 319
11.5.3 成员函数的特征 319
习题11 320
第12章 面向对象程序设计的其他技术 325
12.1 运算符重载 325
12.1.1 友元运算符 326
12.1.2 类运算符 328
12.1.3 友元及类运算符的应用 329
12.1.4 ++和--运算符的重载 330
12.2 流类库 333
12.2.1 格式化输入输出 334
12.2.2 运算符《和》的重载 335
12.2.3 流式文件 336
12.2.4 流错误 347
12.3 模板 348
12.3.1 函数模板 348
12.3.2 类模板 351
习题12 354
附录A Microsoft C++的保留字 358
附录B C++中的基本数据类型 359
附录C 扩展ASCII字符集 360
附录D C++的运算符 362
参考文献 364