[套装书]C++程序设计:原理与实践(基础篇)(原书第2版)+C++程序设计:原理与实践(进阶篇)(原书第2版)(2册)

作者
(美)本贾尼·斯特劳斯特鲁普(Bjarne Stroustrup)
丛书名
计算机科学丛书
出版社
机械工业出版社
ISBN
9781912091013
简要
简介
内容简介书籍计算机书籍 ---------------------------C++程序设计:原理与实践(基础篇)(原书第2版)--------------------------- C++之父Bjarne Stroustrup的经典著作《C++程序设计:原理与实践(原书第2版)》基于最新的C++11和C++14,广泛地介绍了程序设计的基本概念和技术,包括类型系统、算术运算、控制结构、错误处理等;介绍了从键盘和文件获取数值和文本数据的方法以及以图形化方式表示数值数据、文本和几何图形;介绍了C++标准库中的容器(如向量、列表、映射)和算法(如排序、查找和内积)的设计和使用。同时还对C++思想和历史进行了详细的讨论,很好地拓宽了读者的视野。 为方便读者循序渐进地学习,加上篇幅所限,《C++程序设计:原理与实践(原书第2版)》分为基础篇和进阶篇两册出版,基础篇包括第1~11章、第17~19章和附录A、C,进阶篇包括第12~16章、第20~27章和附录B、D、E。本书是基础篇。 本书通俗易懂、实例丰富,可作为大学计算机、电子工程、信息科学等相关专业的教材,也可供相关专业人员参考。 ---------------------------C++程序设计:原理与实践(进阶篇)(原书第2版)--------------------------- C++之父Bjarne Stroustrup经典著作《C++程序设计:原理与实践(原书第2版)》基于最新的C++11和C++14,广泛地介绍了程序设计的基本概念和技术,包括类型系统、算术运算、控制结构、错误处理等;介绍了从键盘和文件获取数值和文本数据的方法以及以图形化方式表示数值数据、文本和几何图形;介绍了C++标准库中的容器(如向量、列表、映射)和算法(如排序、查找和内积)的设计和使用。同时还对C++思想和历史进行了详细的讨论,很好地拓宽了读者的视野。 为方便读者循序渐进地学习,加上篇幅所限,《C++程序设计:原理与实践(原书第2版)》分为基础篇和进阶篇两册出版,基础篇包括第1~11章、第17~19章和附录A、C,进阶篇包括第12~16章、第20~27章和附录B、D、E。本书是进阶篇。 本书通俗易懂、实例丰富,可作为大学计算机、电子工程、信息科学等相关专业的教材,也可供相关专业人员参考。
目录



---------------------------C++程序设计:原理与实践(基础篇)(原书第2版)---------------------------


出版者的话
译者序
前言
引言
作者简介
第1章 计算机、人与程序设计 1
1.1 简介 1
1.2 软件 1
1.3 人 3
1.4 计算机科学 5
1.5 计算机已无处不在 6
1.5.1 有屏幕和无屏幕 6
1.5.2 船舶 6
1.5.3 电信 7
1.5.4 医疗 9
1.5.5 信息领域 10
1.5.6 一种垂直的视角 11
1.5.7 与C++程序设计有何联系 12
1.6 程序员的理想境界 12
思考题 14
术语 15
习题 15
附言 16
第2章 Hello, World! 17
2.1 程序 17
2.2 经典的第一个程序 17
2.3 编译 20
2.4 链接 22
2.5 编程环境 22
简单练习 23
思考题 24
术语 25
习题 25
附言 26
第3章 对象、类型和值 27
3.1 输入 27
3.2 变量 28
3.3 输入和类型 29
3.4 运算和运算符 31
3.5 赋值和初始化 33
3.5.1 实例:检测重复单词 34
3.6 复合赋值运算符 36
3.6.1 实例:重复单词计数 36
3.7 命名 37
3.8 类型和对象 39
3.9 类型安全 40
3.9.1 安全转换 40
3.9.2 不安全转换 41
简单练习 43
思考题 44
术语 45
习题 45
附言 46
第4章 计算 47
4.1 简介 47
4.2 目标和工具 48
4.3 表达式 50
4.3.1 常量表达式 51
4.3.2 运算符 52
4.3.3 类型转换 53
4.4 语句 54
4.4.1 选择语句 55
4.4.2 循环语句 59
4.5 函数 62
4.5.1 为什么使用函数 64
4.5.2 函数声明 65
4.6 vector 65
4.6.1 遍历一个vector 66
4.6.2 vector空间增长 67
4.6.3 一个数值计算实例 67
4.6.4 一个文本实例 69
4.7 语言特性 70
简单练习 71
思考题 71
术语 72
习题 72
附言 74
第5章 错误 75
5.1 简介 75
5.2 错误的来源 76
5.3 编译时错误 77
5.3.1 语法错误 77
5.3.2 类型错误 78
5.3.3 警告 78
5.4 链接时错误 79
5.5 运行时错误 79
5.5.1 调用者处理错误 80
5.5.2 被调用者处理错误 81
5.5.3 报告错误 82
5.6 异常 83
5.6.1 参数错误 84
5.6.2 范围错误 85
5.6.3 输入错误 86
5.6.4 窄化错误 88
5.7 逻辑错误 89
5.8 估计 91
5.9 调试 92
5.9.1 实用调试建议 93
5.10 前置条件和后置条件 95
5.10.1 后置条件 97
5.11 测试 98
简单练习 98
思考题 99
术语 100
习题 100
附言 102
第6章 编写一个程序 103
6.1 一个问题 103
6.2 对问题的思考 103
6.2.1 程序设计的几个阶段 104
6.2.2 策略 104
6.3 回到计算器问题 106
6.3.1 第一步尝试 106
6.3.2 单词 108
6.3.3 实现单词 109
6.3.4 使用单词 110
6.3.5 重新开始 111
6.4 文法 112
6.4.1 英文文法 116
6.4.2 设计一个文法 117
6.5 将文法转换为程序 117
6.5.1 实现文法规则 118
6.5.2 表达式 118
6.5.3 项 121
6.5.4 基本表达式 123
6.6 试验第一个版本 123
6.7 试验第二个版本 126
6.8 单词流 128
6.8.1 实现Token_stream 129
6.8.2 读单词 130
6.8.3 读数值 131
6.9 程序结构 131
简单练习 133
思考题 133
术语 134
习题 134
附言 135
第7章 完成一个程序 136
7.1 简介 136
7.2 输入和输出 136
7.3 错误处理 138
7.4 处理负数 141
7.5 模运算% 142
7.6 清理代码 143
7.6.1 符号常量 143
7.6.2 使用函数 145
7.6.3 代码布局 145
7.6.4 注释 146
7.7 错误恢复 148
7.8 变量 150
7.8.1 变量和定义 150
7.8.2 引入name单词 154
7.8.3 预定义名字 156
7.8.4 我们到达目的地了吗 156
简单练习 157
思考题 157
术语 158
习题 158
附言 159
第8章 函数相关的技术细节 160
8.1 技术细节 160
8.2 声明和定义 161
8.2.1 声明的类别 164
8.2.2 变量和常量声明 164
8.2.3 默认初始化 165
8.3 头文件 165
8.4 作用域 167
8.5 函数调用和返回 171
8.5.1 声明参数和返回类型 171
8.5.2 返回一个值 172
8.5.3 传值 173
8.5.4 传常量引用 174
8.5.5 传引用 176
8.5.6 传值与传引用的对比 178
8.5.7 参数检查和转换 179
8.5.8 实现函数调用 180
8.5.9 constexpr函数 183
8.6 计算顺序 184
8.6.1 表达式计算 185
8.6.2 全局初始化 186
8.7 名字空间 187
8.7.1 using声明和using指令 188
简单练习 189
思考题 190
术语 191
习题 191
附言 192
第9章 类相关的技术细节 193
9.1 用户自定义类型 193
9.2 类和成员 194
9.3 接口和实现 194
9.4 演化一个类 196
9.4.1 结构和函数 196
9.4.2 成员函数和构造函数 197
9.4.3 保持细节私有性 199
9.4.4 定义成员函数 200
9.4.5 引用当前对象 202
9.4.6 报告错误 202
9.5 枚举类型 203
9.5.1 “平坦”枚举 205
9.6 运算符重载 205
9.7 类接口 206
9.7.1 参数类型 207
9.7.2 拷贝 209
9.7.3 默认构造函数 209
9.7.4 const成员函数 212
9.7.5 类成员和“辅助函数” 213
9.8 Date类 214
简单练习 217
思考题 218
术语 218
习题 218
附言 220
第10章 输入输出流 221
10.1 输入和输出 221
10.2 I/O流模型 222
10.3 文件 223
10.4 打开文件 224
10.5 读写文件 226
10.6 I/O错误处理 227
10.7 读取单个值 229
10.7.1 将程序分解为易管理的子模块 231
10.7.2 将人机对话从函数中分离 233
10.8 用户自定义输出运算符 234
10.9 用户自定义输入运算符 235
10.10 一个标准的输入循环 235
10.11 读取结构化的文件 236
10.11.1 在内存中的表示 237
10.11.2 读取结构化的值 238
10.11.3 改变表示方法 241
练习 242
思考题 243
术语 243
习题 243
附言 244
第11章 定制输入输出 245
11.1 有规律的与无规律的输入和输出 245
11.2 格式化输出 245
11.2.1 输出整数 246
11.2.2 输入整数 247
11.2.3 输出浮点数 248
11.2.4 精度 249
11.2.5 域 250
11.3 打开和定位文件 250
11.3.1 文件打开模式 251
11.3.2 二进制文件 252
11.3.3 在文件中定位 254
11.4 字符串流 254
11.5 面向行的输入 255
11.6 字符分类 256
11.7 使用非标准分隔符 258
11.8 更多未讨论内容 263
简单练习 263
思考题 264
术语 264
习题 265
附言 266
第12章 向量和自由空间 267
12.1 简介 267
12.2 vector的基本知识 268
12.3 内存、地址和指针 269
12.3.1 sizeof运算符 271
12.4 自由空间和指针 272
12.4.1 自由空间分配 273
12.4.2 通过指针访问数据 274
12.4.3 指针范围 274
12.4.4 初始化 276
12.4.5 空指针 277
12.4.6 自由空间释放 277
12.5 析构函数 279
12.5.1 生成的析构函数 280
12.5.2 析构函数和自由空间 281
12.6 访问元素 282
12.7 指向类对象的指针 283
12.8 类型混用:void*和类型转换 284
12.9 指针和引用 285
12.9.1 指针参数和引用参数 286
12.9.2 指针、引用和继承 287
12.9.3 实例:链表 287
12.9.4 链表操作 289
12.9.5 链表的使用 290
12.10 this指针 291
12.10.1 关于链表使用的更多讨论 293
简单练习 294
思考题 294
术语 295
习题 295
附言 296
第13章 向量和数组 297
13.1 简介 297
13.2 初始化 298
13.3 拷贝 299
13.3.1 拷贝构造函数 300
13.3.2 拷贝赋值 301
13.3.3 拷贝术语 303
13.3.4 移动 304
13.4 必要的操作 305
13.4.1 显式构造函数 307
13.4.2 调试构造函数和析构函数 308
13.5 访问vector元素 309
13.5.1 对const向量重载运算符 311
13.6 数组 311
13.6.1 指向数组元素的指针 312
13.6.2 指针和数组 314
13.6.3 数组初始化 316
13.6.4 指针问题 316
13.7 实例:回文 319
13.7.1 使用string实现回文 319
13.7.2 使用数组实现回文 320
13.7.3 使用指针实现回文 321
简单练习 321
思考题 322
术语 323
习题 323
附言 324
第14章 向量、模板和异常 325
14.1 问题 325
14.2 改变大小 327
14.2.1 表示方式 327
14.2.2 reserve和capacity 328
14.2.3 resize 329
14.2.4 push_back 329
14.2.5 赋值 330
14.2.6 到目前为止的vector类 331
14.3 模板 332
14.3.1 类型作为模板参数 333
14.3.2 泛型编程 335
14.3.3 概念 336
14.3.4 容器和继承 338
14.3.5 整数作为模板参数 338
14.3.6 模板实参推断 340
14.3.7 泛化vector 340
14.4 范围检查和异常 342
14.4.1 旁白:设计上的考虑 343
14.4.2 坦白:使用宏 344
14.5 资源和异常 345
14.5.1 潜在的资源管理问题 346
14.5.2 资源获取即初始化 348
14.5.3 保证 348
14.5.4 unique_ptr 349
14.5.5 以移动方式返回结果 350
14.5.6 vector类的RAII 351
简单练习 352
思考题 353
术语 354
习题 354
附言 355
附录A C++语言概要 356
附录B Visual Studio简要入门教程 395
术语表 398
参考文献 402


---------------------------C++程序设计:原理与实践(进阶篇)(原书第2版)---------------------------


出版者的话
译者序
前言
引言
作者简介
第15章 容器和迭代器 1
15.1 存储和处理数据 1
15.1.1 处理数据 1
15.1.2 泛化代码 2
15.2 STL理念 4
15.3 序列和迭代器 7
15.3.1 回到实例 8
15.4 链表 9
15.4.1 链表操作 11
15.4.2 遍历 12
15.5 再次泛化vector 13
15.5.1 遍历容器 15
15.5.2 auto 15
15.6 实例:一个简单的文本编辑器 16
15.6.1 处理行 18
15.6.2 遍历 18
15.7 vector、list和string 21
15.7.1 insert和erase 22
15.8 调整vector类达到STL版本的功能 24
15.9 调整内置数组达到STL版本的功能 26
15.10 容器概览 27
15.10.1 迭代器类别 28
简单练习 29
思考题 30
术语 30
习题 31
附言 32
第16章 算法和映射 33
16.1 标准库算法 33
16.2 最简单的算法find() 34
16.2.1 一些一般的应用 35
16.3 通用搜索算法find_if() 36
16.4 函数对象 38
16.4.1 函数对象的抽象视图 39
16.4.2 类成员上的断言 39
16.4.3 lambda表达式 40
16.5 数值算法 41
16.5.1 累积 42
16.5.2 泛化accumulate() 43
16.5.3 内积 44
16.5.4 泛化inner_product() 45
16.6 关联容器 45
16.6.1 map 46
16.6.2 map概览 47
16.6.3 另一个map实例 50
16.6.4 unordered_map 51
16.6.5 set 53
16.7 拷贝 54
16.7.1 基本拷贝算法 55
16.7.2 流迭代器 55
16.7.3 使用set保持顺序 57
16.7.4 copy_if 57
16.8 排序和搜索 58
16.9 容器算法 60
简单练习 60
思考题 61
术语 62
习题 62
附言 63
第17章 一个显示模型 64
17.1 为什么要使用图形 64
17.2 一个基本显示模型 65
17.3 第一个例子 66
17.4 使用GUI库 68
17.5 坐标系 69
17.6 Shape 70
17.7 使用Shape类 70
17.7.1 图形头文件和主函数 70
17.7.2 一个几乎空白的窗口 71
17.7.3 坐标轴 73
17.7.4 绘制函数图 74
17.7.5 Polygon 75
17.7.6 Rectangle 76
17.7.7 填充 78
17.7.8 Text 78
17.7.9 Image 80
17.7.10 更多未讨论的内容 81
17.8 让图形程序运行起来 81
17.8.1 源文件 82
简单练习 83
思考题 83
术语 83
习题 84
附言 84
第18章 图形类 85
18.1 图形类概览 85
18.2 Point和Line 87
18.3 Lines 88
18.4 Color 91
18.5 Line_style 93
18.6 Open_polyline 95
18.7 Closed_polyline 96
18.8 Polygon 97
18.9 Rectangle 99
18.10 管理未命名对象 102
18.11 Text 104
18.12 Circle 105
18.13 Ellipse 107
18.14 Marked_polyline 108
18.15 Marks 110
18.16 Mark 111
18.17 Image 112
简单练习 114
思考题 115
术语 115
习题 116
附言 116
第19章 设计图形类 117
19.1 设计原则 117
19.1.1 类型 117
19.1.2 操作 118
19.1.3 命名 119
19.1.4 可变性 120
19.2 Shape 121
19.2.1 一个抽象类 122
19.2.2 访问控制 123
19.2.3 绘制形状 125
19.2.4 拷贝和可变性 127
19.3 基类和派生类 128
19.3.1 对象布局 130
19.3.2 类的派生和虚函数的定义 131
19.3.3 覆盖 131
19.3.4 访问 133
19.3.5 纯虚函数 134
19.4 面向对象程序设计的好处 135
简单练习 136
思考题 136
术语 137
习题 137
附言 138
第20章 绘制函数图和数据图 139
20.1 简介 139
20.2 绘制简单函数图 139
20.3 Function 143
20.3.1 默认参数 143
20.3.2 更多例子 144
20.3.3 lambda表达式 146
20.4 Axis 146
20.5 近似 148
20.6 绘制数据图 152
20.6.1 读取文件 153
20.6.2 一般布局 154
20.6.3 数据比例 155
20.6.4 构造数据图 156
简单练习 158
思考题 159
术语 159
习题 159
附言 160
第21章 图形用户界面 161
21.1 用户界面的选择 161
21.2 “Next”按钮 162
21.3 一个简单的窗口 163
21.3.1 回调函数 164
21.3.2 等待循环 166
21.3.3 lambda表达式作为回调函数 166
21.4 Button和其他Widget 167
21.4.1 Widget 167
21.4.2 Button 168
21.4.3 In_box和Out_box 169
21.4.4 Menu 170
21.5 一个实例 170
21.6 控制流反转 173
21.7 添加菜单 174
21.8 调试GUI代码 178
简单练习 179
思考题 179
术语 180
习题 180
附言 181
第22章 理念和历史 182
22.1 历史、理念和专业水平 182
22.1.1 程序设计语言的目标和哲学 182
22.1.2 编程理念 183
22.1.3 风格/范型 188
22.2 程序设计语言历史概览 190
22.2.1 最早的程序设计语言 191
22.2.2 现代程序设计语言的起源 193
22.2.3 Algol家族 197
22.2.4 Simula 203
22.2.5 C 204
22.2.6 C++ 207
22.2.7 今天 209
22.2.8 参考资料 210
思考题 211
术语 212
习题 212
附言 213
第23章 文本处理 214
23.1 文本 214
23.2 字符串 214
23.3 I/O流 217
23.4 映射 218
23.4.1 实现细节 222
23.5 一个问题 224
23.6 正则表达式的思想 225
23.6.1 原始字符串常量 227
23.7 用正则表达式进行搜索 228
23.8 正则表达式语法 229
23.8.1 字符和特殊字符 230
23.8.2 字符集 230
23.8.3 重复 231
23.8.4 子模式 232
23.8.5 可选项 232
23.8.6 字符集和范围 233
23.8.7 正则表达式错误 234
23.9 使用正则表达式进行模式匹配 235
23.10 参考文献 239
简单练习 239
思考题 239
术语 240
习题 240
附言 241
第24章 数值计算 242
24.1 简介 242
24.2 大小、精度和溢出 242
24.2.1 数值限制 245
24.3 数组 245
24.4 C风格的多维数组 246
24.5 Matrix库 247
24.5.1 矩阵的维和矩阵访问 248
24.5.2 一维矩阵 250
24.5.3 二维矩阵 252
24.5.4 矩阵I/O 253
24.5.5 三维矩阵 254
24.6 实例:求解线性方程组 255
24.6.1 经典的高斯消去法 256
24.6.2 选取主元 257
24.6.3 测试 257
24.7 随机数 258
24.8 标准数学函数 261
24.9 复数 262
24.10 参考文献 263
简单练习 264
思考题 264
术语 265
习题 265
附言 266
第25章 嵌入式系统程序设计 267
25.1 嵌入式系统 267
25.2 基本概念 269
25.2.1 可预测性 271
25.2.2 理想 272
25.2.3 生活在故障中 272
25.3 内存管理 274
25.3.1 动态内存分配存在的问题 274
25.3.2 动态内存分配的替代方法 276
25.3.3 存储池实例 277
25.3.4 栈实例 278
25.4 地址、指针和数组 279
25.4.1 未经检查的类型转换 279
25.4.2 一个问题:不正常的接口 280
25.4.3 解决方案:接口类 282
25.4.4 继承和容器 285
25.5 位、字节和字 287
25.5.1 位和位运算 287
25.5.2 bitset 290
25.5.3 有符号数和无符号数 292
25.5.4 位运算 295
25.5.5 位域 296
25.5.6 实例:简单加密 297
25.6 编码规范 301
25.6.1 编码规范应该是怎样的 302
25.6.2 编码原则实例 303
25.6.3 实际编码规范 307
简单练习 308
思考题 308
术语 310
习题 310
附言 311
第26章 测试 312
26.1 我们想要什么 312
26.1.1 警告 313
26.2 程序正确性证明 313
26.3 测试 313
26.3.1 回归测试 314
26.3.2 单元测试 315
26.3.3 算法和非算法 320
26.3.4 系统测试 325
26.3.5 寻找不成立的假设 326
26.4 测试方案设计 327
26.5 调试 328
26.6 性能 328
26.6.1 计时 329
26.7 参考文献 331
简单练习 331
思考题 331
术语 332
习题 332
附言 333
第27章 C语言 334
27.1 C和C++:兄弟 334
27.1.1 C/C++兼容性 335
27.1.2 C不支持的C++特性 336
27.1.3 C标准库 338
27.2 函数 338
27.2.1 不支持函数名重载 338
27.2.2 函数参数类型检查 339
27.2.3 函数定义 340
27.2.4 C++调用C和C调用C++ 341
27.2.5 函数指针 343
27.3 小的语言差异 344
27.3.1 struct标签名字空间 344
27.3.2 关键字 345
27.3.3 定义 345
27.3.4 C风格类型转换 347
27.3.5 无类型指针的转换 347
27.3.6 枚举 348
27.3.7 名字空间 348
27.4 自由存储空间 349
27.5 C风格字符串 350
27.5.1 C风格字符串和const 352
27.5.2 字节操作 352
27.5.3 实例:strcpy() 353
27.5.4 一个风格问题 353
27.6 输入/输出:stdio 354
27.6.1 输出 354
27.6.2 输入 355
27.6.3 文件 356
27.7 常量和宏 356
27.8 宏 357
27.8.1 类函数宏 358
27.8.2 语法宏 359
27.8.3 条件编译 360
27.9 实例:侵入式容器 360
简单练习 365
思考题 365
术语 366
习题 366
附言 367
附录C 标准库概要 368
附录D 安装FLTK 410
附录E GUI实现 413
术语表 419
参考文献 423



有问题微信扫码联系

推荐

Understand China
桂ICP备20004708号-4