Programming: principles and practice using C++

副标题:无

作   者:(美)Bjarne Stroustrup著;王刚[等]译

分类号:

ISBN:9787111303220

微信扫一扫,移动浏览光盘

简介

本书是经典程序设计思想与C++开发实践的完美结合,是C++之父回归校园后对C++编程原理和技巧的全新阐述。书中全面地介绍了程序设计基本原理,包括基本概念、设计和编程技术、语言特性以及标准库等,教你学会如何编写具有输入、输出、计算以及简单图形显示等功能的程序。此外,本书通过对C++思想和历史的讨论、对经典实例(如矩阵运算、文本处理、测试以及嵌入式系统程序设计)的展示,以及对C语言的简单描述,为你呈现了一幅程序设计的全景图。 ·C++初学者的权威指南。无论你是从事软件开发还是其他领域的工作,本书将为你打开程序开发之门。 ·中高级程序员的必备参考。通过观察程序设计大师如何处理编程中的各种问题,使你获得新的领悟和指引。 ·全面阐释C++基本概念和技术。与传统的C++教材相比,本书对基本概念和技术的介绍更为深入,为你编写实用、正确、易维护和有效的代码打下坚实的基础。 ·强调现代C++编程风格。本书从开篇就介绍现代C++程序设计技术,并揭示了大量关于如何使用C++标准库来简化程序设计的原理,使你快速掌握实用编成技巧。 ·配套教辅资源丰富。本书网站(www.stroustrup.com/Programming)提供了丰富的辅助资料,包括实例源码、PPT、勘误等。

目录

出版者的话

译者序

前言

第0章致读者

0.1本书结构

0.1.1一般方法

0.1.2简单练习、习题等

0.1.3进阶学习

0.2讲授和学习本书的方法

0.2.1本书内容顺序的安排

0.2.2程序设计和程序设计语言

0.2.3可移植性

0.3程序设计和计算机科学

0.4创造性和问题求解

0.5反馈方法

0.6参考文献

0.7作者简介

第1章计算机、人与程序设计

1.1介绍

1.2软件

.1.3人

1.4计算机科学

1.5计算机已无处不在

1.5.1有屏幕和没有屏幕

1.5.2船舶

1.5.3电信

1.5.4医疗

1.5.5信息领域

1.5.6一种垂直的视角

1.5.7与c++程序设计有何联系

1.6程序员的理想

第一部分基本知识

第2章hello,world!

2.1程序

2.2经典的第一个程序

2.3编译

2.4链接

2.5编程环境

第3章对象、类型和值

3.1输入

3.2变量

3.3输入和类型

3.4运算和运算符

3.5赋值和初始化

3.5.1实例:删除重复单词

3.6组合赋值运算符

3.6.1实例:重复单词统计

3.7命名

3.8类型和对象

3.9类型安全

3.9.1安全类型转换

3.9.2不安全类型转换

第4章计算

4.1计算

4.2目标和工具

4.3表达式

4.3.1常量表达式

4.3.2运算符

4.3.3类型转换

4.4语句

4.4.1选择语句

4.4.2循环语句

4.5函数

4.5.1使用函数的原因

4.5.2函数声明

4.6向量

4.6.1向量空间增长

4.6.2一个数值计算的例子

4.6.3一个文本处理的例子

4.7语言特性

第5章错误

5.1介绍

5.2错误的来源

5.3编译时错误

5.3.1语法错误

5.3.2类型错误

5.3.3警告

5.4连接时错误

5.5运行时错误

5.5.1调用者处理错误

5.5.2被调用者处理错误

5.5.3报告错误

5.6异常

5.6.1错误参数

5.6.2范围错误

5.6.3输入错误

5.6.4截断错误

5.7逻辑错误

5.8估计

5.9调试

5.9.1实用调试技术

5.10前置条件和后置条件

5.10.1后置条件

5.11测试

第6章编写一个程序

6.1一个问题

6.2对问题的思考

6.2.1程序设计的几个阶段

6.2.2策略

6.3回到计算器问题

6.3.1第一步尝试

6.3.2单词

6.3.3实现单词

6.3.4使用单词

6.3.5重新开始

6.4文法

6.4.1英文文法

6.4.2设计一个文法

6.5将文法转换为程序

6.5.1实现文法规则

6.5.2表达式

6.5.3项

6.5.4基本表达式

6.6试验第一个版本

6.7试验第二个版本

6.8单词流

6.8.1实现token_stream

6.8.2读单词

6.8.3读数值

6.9程序结构

第7章完成一个程序

7.1介绍
7.2输入和输出

7.3错误处理

7.4处理负数

7.5模运算:%

7.6清理代码

7.6.1符号常量

7.6.2使用函数

7.6.3代码格式

7.6.4注释

7.7错误恢复

7.8变量

7.8.1变量和定义

7.8.2引入单词name

7.8.3预定义名字

7.8.4我们到达目的地了吗

第8章函数相关的技术细节

8.1技术细节

8.2声明和定义

8.2.1声明的类别

8.2.2变量和常量声明

8.2.3默认初始化

8.3头文件

8.4作用域

8.5函数调用和返回

8.5.1声明参数和返回类型

8.5.2返回一个值

8.5.3传值参数

8.5.4传常量引用参数

8.5.5传引用参数

8.5.6传值与传引用的对比

8.5.7参数检查和转换

8.5.8实现函数调用

8.6求值顺序

8.6.1表达式求值

8.6.2全局初始化

8.7名字空间

8.7.1using声明和using指令

第9章类相关的技术细节

9.1用户自定义类型

9.2类和成员

9.3接口和实现

9.4演化一个类

9.4.1结构和函数

9.4.2成员函数和构造函数

9.4.3保持细节私有性

9.4.4定义成员函数

9.4.5引用当前对象

9.4.6报告错误

9.5枚举类型

9.6运算符重载

9.7类接口

9.7.1参数类型

9.7.2拷贝

9.7.3默认构造函数

9.7.4const成员函数

9.7.5类成员和“辅助函数”

9.8date类

第二部分输入和输出

第10章输入/输出流

10.1输入和输出

10.2i/o流模型

10.3文件

10.4打开文件

10.5读写文件

10.6i/o错误处理

10.7读取单个值

10.7.1将程序分解为易管理的子模块

10.7.2将人机对话从函数中分离

10.8用户自定义输出操作符

10.9用户自定义输入操作符

10.10一个标准的输入循环

10.11读取结构化的文件

10.11.1内存表示

10.11.2读取结构化的值

10.11.3改变表示方法

第11章定制输入/输出

11.1有规律的和无规律的输入和输出

11.2格式化输出

11.2.1输出整数

11.2.2输入整数

11.2.3输出浮点数

11.2.4精度

11.2.5域

11.3文件打开和定位

11.3.1文件打开模式

11.3.2二进制文件

11.3.3在文件中定位

11.4字符串流

11.5面向行的输入

11.6字符分类

11.7使用非标准分隔符

11.8还有很多未讨论的内容

第12章一个显示模型

12.1为什么要使用图形用户界面

12.2一个显示模型

12.3第一个例子

12.4使用gui库

12.5坐标系

12.6形状

12.7使用形状类

12.7.1图形头文件和主函数

12.7.2一个几乎空白的窗口

12.7.3坐标轴

12.7.4绘制函数图

12.7.5polygon

12.7.6rectangle

12.7.7填充

12.7.8文本

12.7.9图片

12.7.10还有很多未讨论的内容

12.8让图形程序运行起来

12.8.1源文件

第13章图形类

13.1图形类概览

13.2point和line

13.3lines

13.4color

13.5line_style

13.6open_polyline

13.7closed_polyline

13.8polygon

13.9rectangle

13.10管理未命名对象

13.11text

13.12circle

13.13ellipse

13.14marked_polyline

13.15marks

13.16mark

13.17image

第14章设计图形类

14.1设计原则

14.1.1类型

14.1.2操作

14.1.3命名

14.1.4可变性

14.2shape类

14.2.1一个抽象类

14.2.2访问控制

14.2.3绘制形状

14.2.4拷贝和可变性

14.3基类和派生类

14.3.1对象布局

14.3.2类的派生和虚函数定义

14.3.3覆盖

14.3.4访问

14.3.5纯虚函数

14.4面向对象程序设计的好处

第15章绘制函数图和数据图

15.1介绍

15.2绘制简单函数图

15.3function类

15.3.1默认参数

15.3.2更多的例子

15.4axis类

15.5近似

15.6绘制数据图

15.6.1读取文件

15.6.2一般布局

15.6.3数据比例

15.6.4构造数据图

第16章图形用户界面

16.1用户界面的选择

16.2“next”按钮

16.3一个简单的窗口

16.3.1回调函数

16.3.2等待循环

16.4button和其他widget

16.4.1widget

16.4.2button

16.4.3in_box和out_box

16.4.4menu

16.5一个实例

16.6控制流的反转

16.7添加菜单

16.8调试gui代码

第三部分数据结构和算法

第17章向量和自由空间

17.1介绍

17.2向量的基本知识

17.3内存、地址和指针

17.3.1运算符sizeof

17.4自由空间和指针

17.4.1自由空间分配

17.4.2通过指针访问数据

17.4.3指针范围

17.4.4初始化

17.4.5空指针

17.4.6自由空间释放

17.5析构函数

17.5.1生成的析构函数

17.5.2析构函数和自由空间

17.6访问向量元素

17.7指向类对象的指针

17.8类型混用:无类型指针和指针类型转换

17.9指针和引用

17.9.1指针参数和引用参数

17.9.2指针、引用和继承

17.9.3实例:列表

17.9.4列表的操作

17.9.5列表的使用

17.10this指针

17.10.1关于link使用的更多讨论

第18章向量和数组

18.1介绍

18.2拷贝

18.2.1拷贝构造函数

18.2.2拷贝赋值

18.2.3拷贝术语

18.3必要的操作

18.3.1显示构造函数

18.3.2调试构造函数与析构函数

18.4访问向量元素

18.4.1对const对象重载运算符

18.5数组

18.5.1指向数组元素的指针

18.5.2指针和数组

18.5.3数组初始化

18.5.4指针问题

18.6实例:回文

18.6.1使用string实现回文

18.6.2使用数组实现回文

18.6.3使用指针实现回文

第19章向量、模板和异常

19.1问题

19.2改变向量大小

19.2.1方法描述

19.2.2reserve和capacity

19.2.3resize

19.2.4push_back

19.2.5赋值

19.2.6到现在为止我们设计的

vector类

19.3模板

19.3.1类型作为模板参数

19.3.2泛型编程

19.3.3容器和继承

19.3.4整数作为模板参数

19.3.5模板参数推导

19.3.6一般化vector类  
19.4范围检查和异常

19.4.1附加讨论:设计上的考虑 

19.4.2使用宏

19.5资源和异常

19.5.1潜在的资源管理问题

19.5.2资源获取即初始化

19.5.3保证

19.5.4auto_ptr

19.5.5vector类的raii

第20章容器和迭代器

20.1存储和处理数据

20.1.1处理数据

20.1.2一般化代码

20.2stl建议

20.3序列和迭代器

20.3.1回到实例

20.4链表

20.4.1列表操作

20.4.2迭代

20.5再次一般化vector

20.6实例:一个简单的文本编辑器

20.6.1处理行

20.6.2迭代

20.7vector、list和 string

20.7.1insert 和 erase

20.8调整vector类达到stl版本的功能

20.9调整内置数组达到stl版本的功能

20.10容器概览

20.10.1迭代器类别

第21章算法和映射

21.1标准库中的算法

21.2最简单的算法:find()

21.2.1一些一般的应用

21.3通用搜索算法:find_if()

21.4函数对象

21.4.1函数对象的抽象视图

21.4.2类成员上的谓词

21.5数值算法

21.5.1累积

21.5.2一般化accumulate()

21.5.3内积

21.5.4一般化inner_product()

21.6关联容器

21.6.1映射

21.6.2map概览

21.6.3另一个map实例

21.6.4unordered_map

21.6.5集合

21.7拷贝操作

21.7.1拷贝

21.7.2流迭代器

21.7.3使用集合保持顺序

21.7.4copy_if

21.8排序和搜索

第四部分拓宽视野

第22章理念和历史

22.1历史、理念和专业水平

22.1.1程序设计语言的目标和哲学

22.1.2编程理念

22.1.3风格/范型

22.2程序设计语言历史概览

22.2.1最早的程序语言

22.2.2现代程序设计语言的起源

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.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.3.6寻找不成立的假设

26.4测试方案设计

26.5调试

26.6性能

26.6.1计时

26.7参考文献

第27章c语言

27.1c和c++:兄弟

27.1.1c/c++兼容性

27.1.2c不支持的c++特性

27.1.3c标准库

27.2函数

27.2.1不支持函数名重载

27.2.2函数参数类型检查

27.2.3函数定义

27.2.4c++调用c和c调用c++

27.2.5函数指针

27.3小的语言差异

27.3.1结构标签名字空间

27.3.2关键字

27.3.3定义

27.3.4c风格类型转换

27.3.5void*的转换

27.3.6枚举

27.3.7名字空间

27.4动态内存分配

27.5c风格字符串

27.5.1c风格字符串和const

27.5.2字节操作

27.5.3实例:strcpy()

27.5.4一个风格问题

27.6输入/输出:stdio

27.6.1输出

27.6.2输入

27.6.3文件

27.7常量和宏

27.8宏

27.8.1类函数宏

27.8.2语法宏

27.8.3条件编译

27.9实例:侵入式容器

术语表

参考书目

第五部分附录

附录ac++语言概要

附录b标准库概要

附录cvisual studio简要入门教程

附录d安装fltk

附录egui实现


已确认勘误

次印刷

页码 勘误内容 提交人 修订印次

Programming: principles and practice using C++
    • 名称
    • 类型
    • 大小

    光盘服务联系方式: 020-38250260    客服QQ:4006604884

    意见反馈

    14:15

    关闭

    云图客服:

    尊敬的用户,您好!您有任何提议或者建议都可以在此提出来,我们会谦虚地接受任何意见。

    或者您是想咨询:

    用户发送的提问,这种方式就需要有位在线客服来回答用户的问题,这种 就属于对话式的,问题是这种提问是否需要用户登录才能提问

    Video Player
    ×
    Audio Player
    ×
    pdf Player
    ×
    Current View

    看过该图书的还喜欢

    some pictures

    解忧杂货店

    东野圭吾 (作者), 李盈春 (译者)

    loading icon