• C++程序设计
21年品牌 40万+商家 超1.5亿件商品

C++程序设计

全新正版 极速发货

53.71 5.4折 99 全新

库存5件

广东广州
认证卖家担保交易快速发货售后保障

作者(美)本贾尼·斯特劳斯特鲁普(Bjarne Stroustrup) 著;刘晓光,李忠伟,王刚 译

出版社机械工业出版社

ISBN9787111562528

出版时间2017-04

装帧平装

开本16开

定价99元

货号1201491071

上书时间2024-09-05

谢岳书店

已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:全新
商品描述
作者简介
本贾尼·斯特劳斯特鲁普(Bjarne Stroustrup),英国剑桥大学计算机科学博士,C++的设计者和很初的实现者。他现在是德州农工大学计算机科学首席教授。1993年,由于在C++领域的重大贡献,他获得了ACM的Grace Murray Hopper大奖并成为ACM院士。在进入学术界之前,他在AT&T贝尔实验室工作,是ISO C++标准委员会的创始人之一。

目录
出版者的话
译者序
前言
引言
作者简介
5章容器和迭代器
15.1存储和处理数据
15.1.1处理数据
15.1.2泛化代码
15.2STL理念
15.3序列和迭代器
15.3.1回到实例
15.4链表
15.4.1链袁操作
15.4.2遍历
15.5再次泛化vector
15.5.1遍历容器
15.5.2auto
15.6实例:一个简单的文本编辑器
15.6.1处理行
15.6.2遍历
15.7vector、list和string
15.7.1insert和erase
15.8调整vector类达到STL版本的功能
15.9调整内置数组达到STL版本的功能
15.10容器概览
15.10.1迭代器类别
简单练习
思考题
术语
习题
附言
6章算法和映射
16.1标准库算法
16.2最简单的算法find()
16.2.1一些一般的应用
16.3通用搜索算法findjf()
16.4函数对象
16.4.1函数对象的抽象视图
16.4.2类成员上的断言
16.4.3lambda表达式
16.5数值算法
16.5.1累积
16.5.2泛化accumulate()
16.5.3内积
16.5.4泛化inner_product()
16.6关联容器
16.6.1map
16.6.2map概览
16.6.3另一个map实例
16.6.4unordered_map
16.6.5set
16.7拷贝
16.7.1基本拷贝算法
16.7.2流迭代器
16.7.3使用set保持顺序
16.7.4copy_if
16.8排序和搜索
16.9容器算法
简单练习
思考题
术语
习题
附言
7章一个显示模型
17.1为什么要使用图形
17.2一个基本显示模型
17.3个例子
17.4使用GUI库
17.5坐标系
17.6Shape
17.7使用Shape类
17.7.1图形头文件和主函数
17.7.2一个几乎空白的窗口
17.7.3坐标轴
17.7.4绘制函数图
17.7.5Polygon
17.7.6Rectangle
17.7.7填充
17.7.8Text
17.7.9Image
17.7.10更多未讨论的内容
17.8让图形程序运行起来
17.8.1源文件
简单练习
思考题
术语
习题
附言
8章图形类
18.1图形类概览
18.2Point和Line
18.3Lines
184Color
185Line_Style
18.6Open_polyline
18.7Closed_polyline
18.8Polygon
18.9Rectangle
18.10管理未命名对象
18.11Text
18.12Circle
18.13Ellipse
18.14Marked_polyline
18.15Marks
18.16Mark
18.17Image
简单练习
思考题
术语
习题
附言
9章设计图形类
19.1设计原则
19.1.1类型
19.1.2操作
19.1.3命名
19.1.4可变性
19.2Shape
19.2.1一个抽象类
19.2.2访问控制
19.2.3绘制形状
19.2.4拷贝和可变性
19.3基类和派生类
19.3.1对象布局
19.3.2类的派生和虚函数的定义
19.3.3覆盖
19.3.4访问
19.3.5纯虚函数
19.4面向对象程序设计的好处
简单练习
思考题
术语
习题
附言
第20章绘制函数图和数据图
20.1简介
20.2绘制简单函数图
20.3Function
20.3.1默认参数
20.3.2更多例子
20.3.3lambda表达式
20.4Axis
20.5近似
20.6绘制数据图
20.6.1读取文件
20.6.2一般布局
20.6.3数据比例
20.6.4构造数据图
简单练习
思考题
术语
习题
附言
第21章图形用户界面
21.1用户界面的选择
21.2“Next”按钮
21.3一个简单的窗口
21.3.1回调函数
21.3.2等待循环
21.3.3lambda表达式作为回调函数
21.4Button和其他Widget
21.4.1Wjdget
21.4.2Button
21.4.3In_box和Out_box
21.4.4Menu
21.5一个实例
21.6控制流反转
21.7添加菜单
21.8调试GUI代码
简单练习
思考题
术语
习题
附言
第22章理念和历史
22.1历史、理念和专业水平
22.1.1程序设计语言的目标和哲学
22.1.2编程理念
22.1.3风格/范型
22.2程序设计语言历史概览
22.2.1最早的程序设计语言
22.22现代程序设计语言的起源
22.2.3Algol家族
22.2.4Simula
22.2.5C
22.2.6C++
22.2.7今天
22.2.8参考资料
思考题
术语
习题
附言
第23章文本处理
23.1文本
23.2字符串
23.3I/O流
23.4映射
23.4.1实现细节
23.5一个问题
23.6正则表达式的思想
23.6.1原始字符串常量
23.7用正则表达式进行搜索
23.8正则表达式语法
23.8.1字符和特殊字符
23.8.2字符集
23.8.3重复
23.8.4子模式
23.8.5可选项
23.8.6字符集和范围
23.8.7正则表达式错误
23.9使用正则表达式进行模式匹配
23.10参考文献
简单练习
思考题
术语
习题
附言
第24章数值计算
24.1简介
24.2大小、精度和溢出
24.2.1数值限制
24.3数组
24.4C风格的多维数组
24.5Matrix库
24.5.1矩阵的维和矩阵访问
24.5.2一维矩阵
24.5.3二维矩阵
24.5.4矩阵I/O
24.5.5三维矩阵
24.6实例:求解线性方程组
24.6.1经典的高斯消去法
24.6.2选取主元
24.6.3测试
24.7随机数
24.8标准数学函数
24.9复数
24.10参考文献
简单练习
思考题
术语
习题
附言
第25章嵌入式系统程序设计
25.1嵌入式系统
25.2基本概念
25.2.1可预测性
25.2.2理想
25.2.3生活在故障中
25.3内存管理
25.3.1动态内存分配存在的问题
25.3.2动态内存分配的替代方法
25.3.3存储池实例
25.3.4栈实例
25.4地址、指针和数组
25.4.1未经检查的类型转换
25.4.2一个问题:不正常的接口
25.4.3解决方案:接口类
25.4.4继承和容器
25.5位、字节和字
25.5.1位和位运算
25.5.2bitset
25.5.3有符号数和无符号数
25.5.4位运算
25.5.5位域
25.5.6实例:简单加密
25.6编码规范
25.6.1编码规范应该是怎样的
25.6.2编码原则实例
25.6.3实际编码规范
简单练习
思考题
术语
习题
附言
第26章测试
26.1我们想要什么
26.1.1警告
26.2程序正确性证明
26.3测试
26.3.1回归测试
26.3.2单元测试
26.3.3算法和非算法
26.3.4系统测试
26.3.5寻找不成立的假设
26.4测试方案设计
26.5调试
26.6性能
26.6.1计时
26.7参考文献
简单练习
思考题
术语
习题
附言
……
第27章C语言
附录C标准库概要
附录D安装FLTK
附录EGUI实现
术语表
参考文献

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

主编推荐
《计算机科学丛书·C++程序设计:原理与实践(进阶篇)(原书第2版)》由机械工业出版社出版。

精彩内容
前  言Programming: Principles and Practice Using C++, Second Edition该死的鱼雷!全速前进。    ——Admiral Farragut程序设计是这样一门艺术,它将问题求解方案描述成计算机可以执行的形式。程序设计中很多工作都花费在寻找求解方案以及对其求精上。通常,只有在真正编写程序求解一个问题的过程中才会对问题本身理解透彻。    本书适合于那些从未有过编程经验但愿意努力学习程序设计技术的初学者,它能帮助读者理解使用C++语言进行程序设计的基本原理并获得实践技巧。本书的目标是使你获得足够多的知识和经验,以便能使用最新、最好的技术进行简单有用的编程工作。达到这一目标需要多长时间呢?作为大学一年级课程的一部分,你可以在一个学期内完成这本书的学习(假定你有另外四门中等难度的课程)。如果你是自学的话,不要期望能花费更少的时间完成学习(一般来说,每周15个小时,14周是合适的学时安排)。    三个月可能看起来是一段很长的时间,但要学习的内容很多。写个简单程序之前,就要花费大约一个小时。而且,所有学习过程都是渐进的:每一章都会介绍一些新的有用的概念,并通过真实应用中的例子来阐述这些概念。随着学习进程的推进,你通过程序代码表达思想的能力——让计算机按你的期望工作的能力,会逐渐稳步地提高。我绝不会说:“先学习一个月的理论知识,然后看看你是否能使用这些理论吧。”    为什么要学习程序设计呢?因为我们的文明是建立在软件之上的。如果不理解软件,那么你将退化到只能相信“魔术”的境地,并且将被排除在很多最为有趣、最具经济效益和社会效益的领域之外。当我谈论程序设计时,我所想到的是整个计算机程序家族,从带有GUI(图形用户界面)的个人计算机程序,到工程计算和嵌入式系统控制程序(如数码相机、汽车和手机中的程序),以及文字处理程序等,在很多日常应用和商业应用中都能看到这些程序。程序设计与数学有些相似,认真去做的话,会是一种非常有用的智力训练,可以提高我们的思考能力。然而,由于计算机能做出反馈,程序设计不像大多数数学形式那么抽象,因而对多数人来说更易接受。可以说,程序设计是一条能够打开你的眼界,将世界变得更美好的途径。最后,程序设计可以是非常有趣的。    为什么学习C++这门程序设计语言呢?学习程序设计是不可能不借助一门程序设计语言的,而C++直接支持现实世界中的软件所使用的那些关键概念和技术。C++是使用最为广泛的程序设计语言之一,其应用领域几乎没有局限。从大洋深处到火星表面,到处都能发现C++程序的身影。C++是由一个开放的国际标准组织全面考量、精心设计的。在任何一种计算机平台上都能找到高质量的、免费的C++实现。而且,用C++所学到的程序设计思想,大多数可直接用于其他程序设计语言,如C、C#、Fortran以及Java。最后一个原因,我喜欢C++适合编写优美、高效的代码这一特点。    本书不是初学程序设计的最简单入门教材,我写此书的用意也不在此。我为本书设定的目标是——这是一本能让你学到基本的实用编程技术的最简单书籍。这是一个非常雄心勃勃的目标,因为很多现代软件所依赖的技术,不过才出现短短几年时间而已。    我的基本假设是:你希望编写供他人使用的程序,并愿意认真负责地以较高质量完成这个工作,也就是说,假定你希望达到专业水准。因此,我为本书选择的主题覆盖了开始学习实用编程技术所需要的内容,而不只是那些容易讲授和容易学习的内容。如果某种技术是你做好基本编程工作所需要的,那么本书就会介绍它,同时展示用以支持这种技术的编程思想和语言工具,并提供相应的练习,期望你通过做这些练习来熟悉这种技术。但如果你只想了解“玩具程序”,那么你能学到的将远比我所提供的少得多。另一方面,我不会用一些实用性很低的内容来浪费你的时间,本书介绍的内容都是你在实践中几乎肯定会用到的。    如果你只是希望直接使用别人编写的程序,而不想了解其内部原理,也不想亲自向代码中加入重要的内容,那么本书不适合你,采用另一本书或另一种程序设计语言会更好些。如果这大概就是你对程序设计的看法,那么请同时考虑一下你从何得来的这种观点,它真的满足你的需求吗?人们常常低估程序设计的复杂程度和它的重要性。我不愿看到,你不喜欢程序设计是因为你的需求与我所描述的软件世界之间不匹配而造成的。信息技术世界中有很多地方是不要求程序设计知识的。本书面向的是那些确实希望编写和理解复杂计算机程序的人。    考虑到本书的结构和注重实践的特点,它也可以作为学习程序设计的第二本书,适合那些已经了解一点C++的人,以及那些会用其他语言编程而现在想学习C++的人。如果你属于其中一类,我不好估计你学习这本书要花费多长时间。但我可以给你的建议是,多做练习。因为你在学习中常见的一个问题是习惯用熟悉的、旧的方式编写程序,而不是在适当的地方采用新技术,多做练习会帮助你克服这个问题。如果你曾经按某种更为传统的方式学习过C++,那么在进行到第7章之前,你会发现一些令你惊奇的、有用的内容。除非你的名字是Stroustrup,否则你会发现我在本书中所讨论的内容不是“你父辈的C++”。    学习程序设计要靠编程实践。在这一点上,程序设计与其他需要实践学习的技艺是相似的。你不可能仅仅通过读书就学会游泳、演奏乐器或者开车,必须进行实践。同样,你也不可能不读写大量代码就学会程序设计。本书给出了大量代码实例,都配有说明文字和图表。你需要通过读这些代码来理解程序设计的思想、概念和原理,并掌握用来表达这些思想、概念和原理的程序设计语言的特性。但有一点很重要,仅仅读代码是学不会编程实践技巧的。为此,你必须进行编程练习,通过编程工具熟悉编写、编译和运行程序。你需要亲身体验编程中会出现的错误,学习如何修改它们。总之,在学习程序设计的过程中,编写代码的练习是不可替代的。而且,这也是乐趣所在!    另一方面,程序设计远非遵循一些语法规则和阅读手册那么简单。本书的重点不在于C++的语法,而在于理解基础思想、原理和技术,这是一名好程序员所必备的。只有设计良好的代码才有机会成为一个正确、可靠和易维护的系统的一部分。而且,“基础”意味着延续性:当现在的程序设计语言和工具演变甚至被取代后,这些基础知识仍会保持其重要性。    那么计算机科学、软件工程、信息技术等又如何呢?它们都属于程序设计范畴吗?当然不是!但程序设计是一门基础性的学科,是所有计算机相关领域的基础,在计算机科学领域占有重要的地位。本书对算法、数据结构、用户接口、数据处理和软件工程等领域的重要概念和技术进行了简要介绍,但本书不能替代对这些领域的全面、均衡的学习。    代码可以很有用,同样可以很优美。本书会帮你了解这一点,同时理解优美的代码意味着什么,并帮你掌握构造优美代码的原理和实践技巧。祝你学习程序设计顺利!    致学生到目前为止,我在德州农工大学已经用本书教过几千名大一新生,其中60%曾经有过编程经历,而剩余40%从未见过哪怕一行代码。大多数学生的学习是成功的,所以你也可以成功。    你不一定是在某门课程中学习本书,本书也广泛用于自学。然而,不管你学习本书是作为课程的一部分还是自学,都要尽量与他人协作。程序设计有一个不好的名声——它是一种个人活动,这是不公正的。大多数人在作为一个有共同目标的团体的一份子时,工作效果更好,学习得更快。与朋友一起学习和讨论问题不是“作弊”,而是取得进步最有效同时也是最快乐的途径。如果没有特殊情况的话,与朋友一起工作会促使你表达出自己的思想,这正是测试你对问题理解和确认你的记忆的最有效方法。你没有必要独自解决所有编程语言和编程环境上的难题。但是,请不要自欺欺人——不去完成那些简单练习和大量的习题(即使没有老师督促你,你也不应这样做)。记住:程序设计(尤其)是一种实践技能,需要通过实践来掌握。如果你不编写代码(完成每章的若干习题),那么阅读本书就纯粹是一种无意义的理论学习。    大多数学生,特别是那些爱思考的好学生,有时会对自己努力工作是否值得产生疑问。当你产生这样的疑问时,休息一会儿,重新读一下前言,读一下章和第22章。在那里,我试图阐述我在程序设计中发现了哪些令人兴奋的东西,以及为什么我认为程序设计是能为世界带来积极贡献的重要工具。如果你对我的教学哲学和一般方法有疑问,请阅读引言。    你可能会对本书的厚度感到担心。本书如此之厚的一部分原因是,我宁愿反复重复一些解释说明或增加一些实例,而不是让你自己到处找这些内容,这应该令你安心。另外一个主要原因是,本书的后半部分是一些参考资料和补充资料,供你想要深入了解程序设计的某个特定领域(如嵌入式系统程序设计、文本分析或数值计算)时查阅。    还有,学习中请耐心些。学习任何一种重要的、有价值的新技能都要花费一些时间,而这是值得的。    致教师本书不是传统的计算机科学导论书籍,而是一本关于如何构造能实际工作的软件的书。因此本书省略了很多计算机科学系学生按惯例要学习的内容(图灵完全、状态机、离散数学、乔姆斯基文法等)。硬件相关的内容也省略了,因为我假定学生从幼儿园开始就已经通过不同途径使用过计算机了。本书也不准备涉及一些计算机科学领域最重要的主题。本书是关于程序设计的(或者更一般地说,是关于如何开发软件的),因此关注的是少量主题的更深入的细节,而不是像传统计算机课程那样讨论很多主题。本书只试图做好一件事,而且计算机科学也不是一门课程可以囊括的。如果本书被计算机科学、计算机工程、电子工程(我们最早的很多学生都是电子工程专业的)、信息科学或者其他相关专业所采用,我希望这门课程能和其他一些课程一起进行,共同形成对计算机科学的完整介绍。    请阅读引言,那里有对我的教学哲学、一般方法等的介绍。请在教学过程中尝试将这些观点传达给你的学生。    ISO标准C++C++由一个ISO标准定义。个ISO C++标准于1998年获得批准,所以那个版本的C++被称为C++98。写本书版时,我正从事C++11的设计工作。最令人沮丧的是,当时我还不能使用一些新语言特性(如统一初始化、范围for循环、move语义、lambda表达式、conc

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP