程序设计教程:用C++语言编程(第3版)
作者 : 陈家骏,郑滔
出版日期 : 2015-06-15
ISBN : 978-7-111-50123-7
定价 : 45.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 394
开本 : 16
原书名 :
原出版社:
属性分类: 教材
包含CD :
绝版 :
图书简介

本书以C++为编程语言,介绍程序设计的基本思想、方法和技术。本书内容围绕程序设计的基础知识、过程式和面向对象程序设计基本内容进行展开,主要包括:计算机基础知识、基本数据类型、常量、变量、操作符、表达式、流程控制、结构化程序设计、过程抽象、递归函数、复杂数据类型(数组、结构等)、数据抽象、继承、类属类型(STL)、输入/输出、异常处理以及事件驱动和基于MFC“文档-视”结构的面向对象的Windows应用程序框架等。

图书特色

本书基于作者多年来的程序设计教学和科研项目开发经验编写而成,围绕程序设计的基本思想,以C++为实现语言,以培养良好的程序设计素质和能力为目标,采取以问题引导程序设计基本方法的讲解方式。本书前两版问世以来,已被全国几十所高校采用为教材,并入选教育部普通高等教育精品教材、“十二五”江苏省高等学校重点教材(编号为2014-1-029)等。本书概念准确、系统性强,既有简单方法的介绍,又有深入话题的讨论,无论是初学者还是有一定程序设计经验的读者都能从本书中获益。

本书特色
内容全面,组织合理:本书面向第一门程序设计课程的学习,精心组织内容,突出程序设计的主流思想、概念和技术。
问题引导,案例丰富:本书以培养学生良好的程序设计能力为目标,以问题引导的方式讲解程序设计的基本方法。同时,利用丰富的实例说明程序设计思想和重要概念,使初学者更容易理解。
教辅丰富,便于教学:本书配备了丰富的习题,方便读者进行针对性训练;此外,还为教师配备了电子教案和习题答案,需要的教师可登录华章网站下载。

陈家骏,南京大学计算机科学与技术系教授,博士生导师。教授本科生第一门程序设计课程近二十年。科研方面主要从事自然语言处理和软件工程领域的研究工作,曾多次主持国家及省级科研项目的研究与开发,研究成果多次获得省部级科研奖励。
郑滔,南京大学软件学院教授,具有多年程序设计、软件开发以及编译技术课程的教学经历。其科研兴趣为软件工程和嵌入式系统。曾多次参加国家/省科技攻关项目、国家/省自然科学基金项目和国家863高科技项目的研究与开发,研究成果两次获得部级科技成果二等奖。

图书前言

自本教材的第2版出版以来,根据我们的教学实践以及广大读者的反馈意见,我们发现教材还存在一些不尽如人意的地方,现予以修订。
教材第3版的变动主要体现在以下几个方面:
1.重新组织和调整了一些章节的内容,使得教材内容安排更加合理,并进一步突出教材对主流程序设计思想、概念和技术的介绍。例如:把对整数的补码表示以及实数的浮点表示的描述集中放入1.1.3 节“机内信息表示”中介绍;把基于断言的程序调试从第4章“过程抽象—函数”移至第10章“异常处理”中介绍;在第5章“复合数据的描述—构造数据类型”的子标题中显式指出每种类型的作用;把“操作符重载”从单独的一章(第2版的第7章)变成一节(6.6.5节)放入6.6节的“对象与类的进一步讨论”中;把C++的编译预处理命令(包括条件编译)、常用标准函数和STL算法以及MFC常用类的介绍放到附录中;围绕“消息驱动”和“文档-视”软件结构重新组织了第11章对基于MFC的面向对象程序设计的介绍;等等。
2.针对C++新的国际标准(C++11),增加一些对程序设计有良好支持的C++内容。例如:增加了对λ表达式的介绍,包括λ表达式的定义(4.6.4节“匿名函数—λ表达式”)、实现(6.6.5节中的“函数调用操作符重载”)以及应用(5.5.6节“函数指针”和8.3节“C++标准模板库”),通过λ表达式可以实现匿名函数,它把函数定义和使用合二为一,以提高程序中“临时用一下”的小函数的灵活性;增加了对转移构造函数(6.6.4节“对象拷贝构造过程的优化—转移构造函数”)和转移赋值操作符重载函数(6.6.5节)的介绍,它们基于“右值引用”参数类型实现把资源从即将消亡的对象转移(而不是复制)到新创建的或已有的对象中,从而提高程序效率;等等。
3.针对初学者,尤其是自学者,对一些内容的描述进行了完善,并对全书的语言文字和逻辑进行了优化,使得教材更加便于阅读;对教材例子中的程序代码增加了注释,使得它们更加容易理解。另外,尽量减少了在前面出现而在后面才会详细介绍的概念,以避免给初学者带来困扰。对于必须提前出现的概念以“将在……节……中介绍”的引用形式给出,而在后面用到前面介绍的内容时,将采用“参见……节的……”的引用形式。
4.补充了一些习题,使得读者能更好地理解和掌握核心内容,并有针对性地进行程序设计训练。
5.修正了教材第2版中的一些错误。
本书修订过程中得到了很多人的帮助,在第3版出版之际向他们表示感谢。特别感谢刘奇志老师和黄书剑老师,他们在与作者一起承担程序设计课程的教学过程中发现了本教材的一些问题,并对本教材的修订提出了很多很好的建议,作者获益良多。另外,还要感谢策划编辑朱劼对我们的鼓励与鞭策,并为教材编写出谋划策。

作者于南京大学
2015年2月

上架指导

计算机\程序设计

封底文字

本书基于作者多年来在程序设计教学和实际科研项目开发经验编写而成,围绕程序设计的基本思想,以C++为实现语言,以培养良好的程序设计素质和能力为目标,采取以问题引导程序设计基本方法的讲解方式。本书前两版问世以来,已被全国几十所高校采用为教材,并入选教育部普通高等教育精品教材、“十二五”江苏省高等学校重点教材等。本书概念准确、系统性强,既有简单方法的介绍,又有深入的话题讨论,无论是初学者还是有一定程序设计经验的人都能从本书中获益。
本书特色:
内容全面,组织合理:本书面向第一门程序设计课程的学习,精心组织内容,突出程序设计的主流思想、概念和技术。
问题引导,案例丰富:本书以培养学生良好的程序设计能力为目标,以问题引导的方式讲解程序设计的基本方法。同时,利用丰富的实例说明程序设计思想和重要概念,使初学者更容易理解。
教辅丰富,便于教学:本书配备了丰富的习题,方便读者进行针对性的训练;此外,还为教师配备了电子教案和习题答案,需要的教师可登录华章网站下载。
作者介绍:
陈家骏,南京大学计算机科学与技术系教授,博士生导师。主要从事本科生第一门程序设计课程的教学工作。科研方面主要从事自然语言处理和软件工程领域的研究工作,曾多次主持国家及省级科研项目的研究与开发,研究成果多次获得省部级科研奖励。
郑滔,南京大学软件学院教授,具有多年程序设计、软件开发以及编译技术课程教学的经历。其科研兴趣为软件工程和嵌入式系统。曾多次参加国家/省科技攻关项目、国家/省自然科学基金项目和国家863高科技项目的研究与开发,研究成果两次获得部级科技成果二等奖。

作者简介

陈家骏:暂无

郑滔:暂无

图书目录

第3版前言
第2版前言
第1版前言
教学建议
第1章 概述
 1.1 计算机的工作模型
  1.1.1 冯·诺依曼体系结构
  1.1.2 硬件与软件
  1.1.3 机内信息表示
 1.2 程序设计
  1.2.1 程序设计范式
  1.2.2 程序设计步骤
  1.2.3 程序设计语言
 1.3 C++语言
  1.3.1 概述
  1.3.2 C++程序的构成
  1.3.3 C++语言的词法
  1.3.4 C++程序的运行步骤
 1.4 小结
 1.5 习题
第2章 简单数据的描述——基本数据类型和表达式
 2.1 概述
 2.2 基本数据类型
  2.2.1 整数类型
  2.2.2 实数类型
  2.2.3 字符类型
  2.2.4 逻辑类型
 2.3 数据的表现形式
  2.3.1 常量
  2.3.2 变量
  2.3.3 变量值的输入
 2.4 数据的基本运算——操作符
  2.4.1 操作符概述
  2.4.2 算术操作符
  2.4.3 关系与逻辑操作符
  2.4.4 位操作符
  2.4.5 赋值操作符
  2.4.6 其他操作符
  2.4.7 操作数的类型转换
 2.5 数据基本运算的实现——表达式
  2.5.1 表达式的构成与分类
  2.5.2 操作符的优先级和结合性
  2.5.3 表达式中操作数的类型转换
  2.5.4 带副作用操作符的表达式计算
  2.5.5 表达式结果的输出
 2.6 小结
 2.7 习题
第3章 程序的流程控制(算法)描述——语句
 3.1 概述
 3.2 顺序执行
  3.2.1 表达式语句
  3.2.2 复合语句
  3.2.3 空语句
 3.3 选择执行
  3.3.1 if语句
  3.3.2 switch语句
 3.4 循环(重复)执行
  3.4.1 迭代与穷举
  3.4.2 while语句
  3.4.3 do-while语句
  3.4.4 for语句
  3.4.5 计数循环和事件循环
  3.4.6 循环程序设计实例
 3.5 无条件转移
  3.5.1 goto语句
  3.5.2 break语句
  3.5.3 continue语句
 3.6 程序设计风格
  3.6.1 结构化程序设计
  3.6.2 关于goto语句
 3.7 小结
 3.8 习题
第4章 过程抽象——函数
 4.1 概述
  4.1.1 功能分解与复合
  4.1.2 子程序及子程序间的数据传递
 4.2 C++函数
  4.2.1 函数的定义
  4.2.2 函数的调用
  4.2.3 值作为参数传递
  4.2.4 局部变量与全局变量
  4.2.5 基于函数的过程式程序设计
 4.3 标识符的作用域与变量的生存期
  4.3.1 程序的多模块结构
  4.3.2 标识符的作用域
  4.3.3 命名空间
  4.3.4 变量的生存期(存储分配)
  *4.3.5 基于栈的函数调用的实现
 4.4 递归函数
  4.4.1 什么是递归函数
  4.4.2 “分而治之”的程序设计
  4.4.3 递归与循环的选择
  4.4.4 递归函数应用实例
 4.5 标准函数库
 4.6 C++函数的进一步讨论
  4.6.1 内联函数
  4.6.2 带默认值的形式参数
  4.6.3 函数名重载
  4.6.4 匿名函数——λ表达式
 4.7 小结
 4.8 习题
第5章 复合数据的描述——构造数据类型
 5.1 枚举类型——自定义值集的数据描述
  5.1.1 枚举类型的定义
  5.1.2 枚举类型的操作
 5.2 数组类型——由多个同类型元素构成的复合数据描述
  5.2.1 一维数组类型——线性复合数据的描述
  5.2.2 一维字符数组——字符串类型的一种实现
  5.2.3 二维数组类型——二维复合数据的描述
  5.2.4 数组类型的应用
 5.3 结构类型——由若干属性构成的复合数据描述
  5.3.1 结构类型的定义
  5.3.2 结构类型的操作
  5.3.3 结构类型的应用
 5.4 联合类型——用一种类型表示多种类型的数据
  5.4.1 联合类型的定义与操作
  5.4.2 联合类型的应用
 5.5 指针类型——内存地址的描述
  5.5.1 指针类型的定义
  5.5.2 指针类型的基本操作
  5.5.3 指针作为参数类型
  5.5.4 指针与动态变量
  5.5.5 指针与数组
  5.5.6 函数指针
  *5.5.7 多级指针
 5.6 引用类型——变量的别名
  5.6.1 引用类型的定义
  5.6.2 引用作为参数类型
 5.7 小结
 5.8 习题
第6章 数据抽象——对象与类
 6.1 概述
  6.1.1 数据抽象与封装
  6.1.2 面向对象程序设计
  *6.1.3 面向对象程序设计与过程式程序设计的对比
 6.2 类
  6.2.1 数据成员
  6.2.2 成员函数
  6.2.3 成员的访问控制——信息隐藏
 6.3 对象
  6.3.1 对象的创建
  6.3.2 对象的操作
  6.3.3 this指针
 6.4 对象的初始化和消亡前处理
  6.4.1 构造函数
  6.4.2 析构函数
  6.4.3 成员对象的初始化
  6.4.4 拷贝构造函数
 6.5 类作为模块
  6.5.1 类模块的组成
  *6.5.2 Demeter法则
 6.6 对象与类的进一步讨论
  6.6.1 对常量对象的访问——常(const)成员函数
  6.6.2 同类对象之间的数据共享——静态(static)数据成员
  6.6.3 提高对象私有数据成员的访问效率——友元(friend)
  6.6.4 对象拷贝构造过程的优化——转移构造函数
  6.6.5 操作符重载
 6.7 小结
 6.8 习题
第7章 继承(类的复用)——派生类
 7.1 概述
  7.1.1 类之间的继承关系——基类与派生类
  7.1.2 继承的作用
 7.2 单继承
  7.2.1 单继承派生类的定义
  7.2.2 在派生类中访问基类成员——protected访问控制
  7.2.3 派生类对基类成员的访问控制——继承方式
  7.2.4 派生类对象的初始化和赋值操作
  7.2.5 单继承的应用实例
  7.2.6 类之间的聚集关系
 7.3 消息(成员函数调用)的动态绑定
  7.3.1 消息的多态性
  7.3.2 虚函数与消息的动态绑定
  7.3.3 纯虚函数和抽象类
  *7.3.4 虚函数动态绑定的一种实现
 7.4 多继承
  7.4.1 多继承的必要性
  7.4.2 多继承派生类的定义
  7.4.3 命名冲突
  7.4.4 重复继承——虚基类
 7.5 小结
 7.6 习题
第8章 类属类型(泛型)——模板
 8.1 概述
 8.2 模板
  8.2.1 函数模板
  8.2.2 类模板
  8.2.3 模板的复用
 8.3 C++标准模板库
  8.3.1 概述
  8.3.2 容器
  8.3.3 迭代器
  8.3.4 算法
 8.4 小结
 8.5 习题
第9章 输入/输出
 9.1 概述
 9.2 面向控制台的输入/输出
  9.2.1 基于函数库的控制台I/O
  9.2.2 基于类库的控制台I/O
  9.2.3 抽取/插入操作符“>>”和“<<”的重载
 9.3 面向文件的输入/输出
  9.3.1 文件概述
  9.3.2 基于函数库的文件I/O
  9.3.3 基于类库的文件I/O
 9.4 面向字符串变量的输入/输出
 9.5 小结
 9.6 习题
第10章 异常处理
 10.1 概述
  10.1.1 什么是异常
  10.1.2 异常处理的基本手段
 10.2 C++异常处理机制
  10.2.1 try、throw以及catch语句
  10.2.2 异常的嵌套处理
 10.3 基于断言的程序调试
 10.4 小结
 10.5 习题
第11章 Windows应用程序设计
 11.1 Windows应用程序的基本结构
  11.1.1 Windows应用程序简介
  11.1.2 消息驱动的程序结构
 11.2 面向对象的Windows应用程序结构
  11.2.1 Windows应用程序中的对象
  11.2.2 微软基础类库(MFC)
  11.2.3 基于MFC“文档-视”结构的应用框架
 11.3 小结
 11.4 习题
附录A ASCII字符集及其编码
附录B IEEE浮点数的内部表示
附录C C++标准函数库中的常用函数
附录D C++编译预处理命令
附录E C++标准模板库(STL)常用功能
附录F MFC一些常用类的功能
参考文献

教学资源推荐
作者: Frank L. Friedman;Elliot B. Koffman
作者: Brian W.Kernighan,Dennis M.Ritchie
作者: [美]兰德尔·海德(Randall Hyde) 著
参考读物推荐
作者: [美]马特·利博维茨(Matt Liebowitz) 克里斯托弗·库塞克(Christopher Kusek) 吕南德特·施皮斯(Rynardt Spies) 著
作者: 刘智勇