新書推薦:
《
甲骨文丛书·剑桥世界暴力史(第一卷):史前和古代世界(套装全2册)
》
售價:NT$
959.0
《
甲骨文丛书·中华早期帝国:秦汉史的重估
》
售價:NT$
1367.0
《
欲望与家庭小说
》
售價:NT$
449.0
《
惜华年(全两册)
》
售價:NT$
320.0
《
甲骨文丛书·古代中国的军事文化
》
售價:NT$
454.0
《
中国王朝内争实录(套装全4册):从未见过的王朝内争编著史
》
售價:NT$
1112.0
《
半导体纳米器件:物理、技术和应用
》
售價:NT$
806.0
《
创客精选项目设计与制作 第2版 刘笑笑 颜志勇 严国陶
》
售價:NT$
281.0
|
內容簡介: |
本书以C++为编程语言,介绍程序设计的基本思想、方法和技术。本书内容围绕程序设计的基础知识、过程式和面向对象程序设计基本内容进行展开,主要包括:计算机基础知识、基本数据类型、常量、变量、操作符、表达式、流程控制、结构化程序设计、过程抽象、递归函数、复杂数据类型(数组、结构等)、数据抽象、继承、类属类型(STL)、输入/输出、异常处理以及事件驱动和基于MFC“文档-视”结构的面向对象的Windows应用程序框架等。
|
目錄:
|
目 录前言第3版前言第2版前言第1版前言教学建议第1章 概述 11.1 计算机的工作原理 11.1.1 冯·诺依曼体系结构 11.1.2 硬件与软件 21.1.3 机内信息表示 41.2 程序设计概述 81.2.1 程序设计范式 81.2.2 程序设计步骤 91.2.3 程序设计语言 111.3 C++语言概述 141.3.1 C++语言的特点 141.3.2 C++程序的构成 151.3.3 C++程序的运行步骤 161.3.4 C++语言的词法 171.4 小结 191.5 习题 20第2章 简单数据的描述—基本数据类型和表达式 212.1 数据类型概述 212.2 基本数据类型 222.2.1 整数类型 222.2.2 实数类型 222.2.3 字符类型 232.2.4 逻辑类型 242.3 数据的表现形式 242.3.1 常量 242.3.2 变量 272.3.3 变量值的输入 292.4 数据的基本操作—操作符 302.4.1 操作符概述 302.4.2 算术操作符 312.4.3 关系与逻辑操作符 322.4.4 赋值操作符 342.4.5 位操作符 352.4.6 其他操作符 372.4.7 操作数的类型转换 382.5 数据操作的基本单位—表达式 422.5.1 表达式的构成和分类 422.5.2 操作符的优先级和结合性 432.5.3 表达式中操作数的类型转换 442.5.4 表达式结果的输出 452.5.5 带副作用操作符的表达式计算 452.5.6 左值表达式与右值表达式 462.6 小结 472.7 习题 48第3章 程序流程控制(算法)描述—语句 503.1 程序流程控制概述 503.2 顺序执行 513.2.1 表达式语句 513.2.2 复合语句 533.2.3 空语句 533.3 选择执行 543.3.1 两路分支语句—if语句 543.3.2 多路分支语句—switch语句 593.4 重复执行 623.4.1 问题求解的迭代法与穷举法 623.4.2 循环语句 633.4.3 计数循环和事件循环 663.4.4 循环程序设计实例 693.5 无条件转移执行 743.5.1 goto语句 743.5.2 break语句 753.5.3 continue语句 763.6 程序设计风格 783.6.1 结构化程序设计 783.6.2 关于goto语句 793.7 小结 793.8 习题 80第4章 过程抽象—子程序 824.1 过程抽象概述 824.1.1 基于功能分解与复合的过程式程序设计 824.1.2 子程序及子程序间的数据传递 834.2 C++函数 844.2.1 函数的定义 844.2.2 函数的调用 864.2.3 通过参数向函数传数据的值—值参数传递 894.3 变量的局部性 904.3.1 局部变量与全局变量 904.3.2 变量的生存期(存储分配) 93*4.3.3 基于栈的函数调用 964.4 程序的多模块结构 984.4.1 程序的模块化 984.4.2 标识符的作用域 1004.4.3 标准函数库 1084.5 递归函数 1094.5.1 什么是递归函数 1094.5.2 “分而治之”的程序设计 1104.5.3 递归函数应用实例 1114.5.4 递归与循环的选择 1134.6 C++函数的进一步讨论 1144.6.1 带参数的宏和内联函数 1144.6.2 带默认值的形式参数 1164.6.3 函数名重载 1174.6.4 匿名函数—λ表达式 1204.7 小结 1214.8 习题 122第5章 复合数据的描述—构造数据类型 1245.1 自定义值集的数据描述—枚举类型 1245.1.1 枚举类型的定义 1245.1.2 枚举类型的操作 1255.2 由同类型元素构成的复合数据的描述—数组类型 1285.2.1 线性复合数据的描述—一维数组类型 1285.2.2 字符串类型的一种实现—一维字符数组 1335.2.3 二维复合数据的描述—二维数组类型 1365.2.4 数组类型的应用 1405.3 由属性构成的复合数据的描述—结构类型 1455.3.1 结构类型的定义 1455.3.2 结构类型的操作 1475.3.3 结构类型的应用 1505.4 用一种类型表示多种类型的数据—联合类型 1535.4.1 联合类型的定义与操作 1535.4.2 联合类型的应用 1555.5 内存地址的描述—指针类型 1575.5.1 指针类型概述 1575.5.2 指针类型的定义与基本操作 1585.5.3 指针类型作为参数—地址参数传递 1645.5.4 指针与动态变量—实现元素个数可变的复合数据描述(动态数组与链表) 170*5.5.5 用指针提高对数组元素的访问效率 1825.5.6 把函数作为参数传递给函数—函数指针 185*5.5.7 多级指针 1895.6 数据的别名—引用类型 1925.6.1 引用类型的定义 1925.6.2 引用作为函数参数类型 1935.7 小结 1955.8 习题 196第6章 数据抽象—对象与类 2006.1 数据抽象概述 2006.1.1 数据抽象与封装 2006.1.2 面向对象程序设计 204*6.1.3 面向对象程序设计与过程式程序设计的对比 2056.2 类 2096.2.1 数据成员 2096.2.2 成员函数 2106.2.3 成员的访问控制—信息隐藏 2116.3 对象 2126.3.1 对象的创建 2136.3.2 对象的操作 2146.3.3 this指针 2166.4 对象的初始化和消亡前处理 2186.4.1 构造函数 2186.4.2 析构函数 2226.4.3
|
內容試閱:
|
前 言
自本教材的第3版于2015年出版以来已经过去7年了,根据我们的教学实践以及广大读者的反馈意见,我们对第3版内容进行了修订。
第4版的变动主要体现在以下几个方面。
1)增加了对函数式程序设计的介绍(10.4节)。函数式程序设计属于一种声明式程序设计范式,只需要对“做什么”进行描述,而不需要给出具体的操作步骤,它带来的好处是设计出的程序比较精练且具有潜在的并行性。虽然函数式程序设计不是现在的主流程序设计范式,但在程序的局部设计中经常会用到,在C++中主要是通过STL提供对函数式程序设计的支持。
2)加强了对类之间的聚合/组合关系的介绍(7.5节),以满足一些不采用继承机制的对象式编程模型对类的复用需求。
3)对第11章(事件驱动的程序设计)进行了重新定位,以突出事件驱动的程序设计思想和基于应用框架的程序复用技术。
4)针对C++新的国际标准(C++11及以后版本),增加了一些对程序设计有良好支持的内容,其中包括类型自动推断auto、基于范围的for语句等,以提高程序的抽象程度。
5)从程序设计的角度,重新梳理了教材各部分的逻辑和文字描述,使得教材内容的安排更合理,可读性更好。书中加“*”标记的内容在初次阅读时可以跳过。
最后,感谢南京大学程序设计课程组的各位老师,他们在教学过程中不断发现教材的不足之处,并提出了很多很好的建议。特别感谢黄书剑老师,在教材的函数式程序设计部分的编写中,他帮助我们厘清了一些模糊的地方。另外,还要感谢策划编辑一直以来对教材的关心与支持,她对教材第4版的编写提出了诸多很好的建议。
作者于南京大学
2021年10月
第3版前言
自本教材的第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),增加一些对程序设计有良好支持的内容。例如:增加了对λ表达式的介绍,包括λ表达式的定义(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月
第2版前言
本教材第1版自2004年出版以来,得到了广大读者的热情关注和支持,很多读者还提出了宝贵的建议,我们深表感谢。
在近几年的教学中,我们也发现了本书的一些不足之处。首先,编写该教材的初衷是介绍程序设计的基本思想、概念和技术,C++语言是作为编程实现语言的角色出现的,然而,在教材某些内容的表述上违背了这个初衷,教材的一些地方出现了C++语言“喧宾夺主”的情况。其次,教材在一些内容的表达上过于“精练”,使初学者有“看天书”的感觉。再次,教材对现在比较流行的C+
|
|