C 之父BjarneStroustrup经典著作《C 程序设计:原理与实践(原书第2版)》基于新的C 11和C 14,广泛地介绍了程序设计的基本概念和技术,包括类型系统、算术运算、控制结构、错误处理等;介绍了从键盘和文件获取数值和文本数据的方法以及以图形化方式表示数值数据、文本和几何图形;介绍了C 标准库中的容器(如向量、列表、映射)和算法(如排序、查找和内积)的设计和使用。同时还对C 思想和历史进行了详细的讨论,很好地拓宽了读者的视野。为方便读者循序渐进学习,加上篇幅所限,《C 程序设计:原理与实践(原书第2版)》分为基础篇和进阶篇两册出版,基础篇包括第0~11章、第17~19章和附录A、C,进阶篇包括第12~16章、第20~27章和附录B、D、E。本书是进阶篇。本书通俗易懂、实例丰富,可作为大学计算机、电子工程、信息科学等相关专业的教材,也可供相关专业人员参考。
作者简介Programming: Principles and Practice Using C , Second Edition你也许有理由问:“是一些什么人想要教我程序设计?”那么,下面给出作者的一些生平信息。Bjarne Stroustrup和Lawrence“Pete”Petersen合著了本书。Stroustrup还设计并讲授了面向大学一年级学生的课程,这门课程是与本书同步发展起来的,以本书的初稿作为教材。
Bjarne Stroustrup我是C 语言的设计者和初的实现者。在过去大约40年间,我使用C 和许多其他程序设计语言进行过各种各样的编程工作。我喜欢那些用在富有挑战性的应用(如机器人控制、绘图、游戏、文本分析以及网络应用)中的优美而又高效的代码。我教过能力和兴趣各异的人设计、编程和C 语言。我是ISO标准组织C 委员会的创建者,现在是该委员会语言演化工作组的主席。
这是我及时本入门性的书。我编著的其他书籍如《The C Pro-gramming Language》和《The Design and Evolution of C 》都是面向有经验的程序员的。
我生于丹麦奥尔胡斯一个蓝领(工人阶级)家庭,在家乡的大学获得了数学与计算机科学硕士学位。我的计算机科学博士学位是在英国剑桥大学获得的。我为AT&T工作了大约25年,初在著名的贝尔实验室的计算机科学研究中心——Unix、C、C 及其他很多东西的发明地,后来在AT&T实验室研究中心。
我现在是美国国家工程院的院士,ACM会士(Fellow)和IEEE会士。我获得了2005年度Sigma Xi(科学研究协会)的科学成就William Procter奖,我是首位获得此奖的计算机科学家。2010年,我获得了丹麦奥尔胡斯大学古老也富声望的奖项Rigmor og Carl Holst-Knudsens Videnskapspris,该奖项颁发给为科学做出贡献的与该校有关的人士。2013年,我被位于俄罗斯圣彼得堡的信息技术、力学和光学(ITMO)国立研究大学授予计算机科学荣誉博士学位。
至于工作之外的生活,我已婚,有两个孩子,一个是医学博士,另一个在进行博士后研究。我喜欢阅读(包括历史、科幻、犯罪及时事等各类书籍),还喜欢各种音乐(包括古典音乐、摇滚、蓝调和乡村音乐)。和朋友一起享受美食是我生活中必不可少的一部分,我还喜欢参观世界各地有趣的地方。为了能够享受美食,我还坚持跑步。
关于我的更多信息,请见我的网站www.stroustrup.com。特别是,你可以在那里找到我名字的正确发音。
Lawrence“Pete”Petersen2006年年末,Pete如此介绍他自己:“我是一名教师。近20年来,我一直在德州农工大学讲授程序设计语言。我已5次被学生选为教师,并于1996年被工程学院的校友会选为杰出教师。我是Wakonse教师计划的委员和教师发展研究院院士。
作为一名陆军军官的儿子,我的童年是在不断迁移中度过的。在华盛顿大学获得哲学学位后,我作为野战炮兵官员和操作测试研究分析员在军队服役了22年。1971年至1973年期间,我在俄克拉荷马希尔堡讲授野战炮兵军官的高级课程。1979年,我帮助创建了测试军官的训练课程,并在1978年至1981年及1985年至1989年期间在跨越美国的九个不同地方以首席教官的身份讲授这门课程。
1991年我组建了一个小型的软件公司,生产供大学院系使用的管理软件,直至1999年。我的兴趣在于讲授、设计和实现供人们使用的实用软件。我在乔治亚理工大学获得了工业管理学硕士学位,在德州农工大学获得了教育管理学硕士学位。我还从NTS获得了微型计算机硕士学位。我在德州农工大学获得了信息与运营管理学博士学位。
我和我的妻子Barbara都生于德州的布莱恩。我们喜欢旅行、园艺和招待朋友;我们花尽可能多的时间陪我们的儿子和他们的家庭,特别是我们的孙子和孙女Angelina、Carlos、Tess、Avery、Nicholas和Jordan。”
令人悲伤的是,Pete于2007年死于肺癌。如果没有他,这门课程不会取得成功。
目 录
Programming: Principles and Practice Using C , Second Edition
出版者的话
译者序
前言
引言
作者简介
第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 最简单的算法f?ind() 34
16.2.1 一些一般的应用 35
16.3 通用搜索算法f?ind_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
ok ok
质量不错,好评!
这本书慢慢看
包装有点破了书还行很好
很赞,书本包装完美
一本好书,需要慢慢品味。
与《C++程序设计:原理与实践(基础篇)(原书第2版)》是一套的。