现代C++程序设计
|
|
| 新书城图书编号:1664 |
| 图书ISBN:7302108056 |
| 出版时间:2005-8-1 |
| 出版社:清华大学出版社 |
| 作者:(美)约翰斯顿(Johnston,B.) 著,曾葆青 等译 |
|
市场价格:¥58 |
|
普通会员:¥46.4
|
80折 |
|
VIP会员:¥43.5
|
75折 |
|
|
|
|
|
|
|
【图书简介】
|
本书用简单通俗的语言,细腻生动地介绍了C++语言和面对象程序设计技术。全书图文并茂,易学易懂,真正做到了寓教于乐,是一本难得C++面向对象的设计入门教材。本书特色如下: 深入浅出地讲解了基本概念和各种重点难点,并配合大量趣味生动的案例。 每章开头给出了重要术语、概念和学习内容,每章后面部分给出了程序排错指南。 很多案例既给出了源代码,也列举了常见错误,以及编译器产生的出错信息。 各种技巧方法和注意事项被总结成易于查阅的表格。 课后练习类型丰富,循序渐进,难度和规模适中。 附录部分内容独特,信息丰富。 本书提供全部案的源代码。 本书在配套的《教师手册》、《实验手册》及教学配套多站。 本书的读者对象是高校计算机系及软件学院低年级学生、非计算机专业软件工程硕士、计算机专业二学位和双学位、非计算机专业的计算机语言公共选择修课学生,以及计算机业余爱好者。
|
|
|
|
【图书目录】
|
|
第1章C++与软件开发1 欢迎来到C++的世界2 1.1什么是C,什么是C++4 1.1.1C和C++发展简史5 1.1.2C/C++是编译语言5 1.1.3为什么程序员们喜欢C++6 1.2什么是面向对象7 1.2.1C++程序不是自动面向对象的7 1.2.2一个简单的面向对象程序案例7 1.2.3面向对象的软件更受欢迎8 1.3结构化设计与面向对象设计9 1.3.1ATM的结构化方法9 1.3.2ATM的面向对象方法9 1.4软件开发技术简介11 1.4.1如何不编程11 1.5找错12 1.5.1我的程序哪儿出了错12 复习题与作业13 简答题13 作业13 第2章C++入门: 数据类型、变量、操作符、算术、简单输入输出14 软件开发简介15 2.1编程基础15 2.1.1算法设计15 2.1.2走成功编程之路17 2.1.3练习: 如何给猫洗澡17 2.1.4三分原则18 2.1.5如何编程19 2.2术语及项目的建立19 2.2.1项目的建立步骤20 2.3C++程序的一般格式21 2.3.1Hello World!程序21 2.3.2注释21 2.3.3预处理指令22 2.3.4main函数22 2.3.5函数首行22 2.3.6C++语句23 2.3.7气象信息23 2.3.8空白字符与C++灵活的编程风格24 2.3.9语法与编译错误25 2.3.10C++关键字26 2.3.11大小写敏感27 2.3.12好的编程风格27 2.3.13坚持好的风格27 2.3.14关于程序中的注释28 2.4程序与数据: 球与球拍28 2.5C++中的数据类型29 2.5.1物品架=内存,容器=数据类型,标签=变量名30 2.5.2数据类型修饰符31 2.5.3找错: 整数有多大31 2.6C++中的变量声明32 2.6.1C++中的命名规则33 2.6.2在哪里声明变量33 2.7C++中的操作符34 2.7.1操作的优先级34 2.7.2赋值操作符35 2.7.3算术操作符36 2.7.4自增量和自减量操作符41 2.7.5累计操作符42 2.7.6C++中的其他操作符43 2.8其他话题: #define、const和数据类型转换43 2.8.1#define43 2.8.2const修饰符44 2.8.3const优于#define吗45 2.8.4数据类型转换46 2.9键盘输入和屏幕输出48 2.10练习48 2.10.1找错: 赋值操作的摆放位置48 2.10.2计算圆柱体的体积49 2.10.3求余和距离换算50 2.10.4将字符数据表示为十进制、十六进制、八进制数,流格式化51 复习题与作业51 简答题51 程序改错题52 代码阅读53 编程题54 第3章控制语句和循环55 判断,还是判断56 3.1关系操作符和逻辑操作符56 3.1.1表达式求值和操作符优先级57 3.2if语句59 3.2.1if else语句60 3.2.2if语句中的括号错误61 3.2.3if—else if—else语句62 3.2.4低效率编程方法64 3.2.5if else: This Old Man编程举例65 3.2.6嵌套if else语句66 3.2.7“?”操作符67 3.3switch语句68 3.3.1找错: 不要忘了break69 3.4循环语句概述70 3.4.1加括号还是不加括号70 3.4.2无法跳出无穷循环71 3.5for循环71 3.5.1不要更改循环指标72 3.5.2for循环举例73 3.6while循环74 3.6.1while循环举例75 3.7do while循环76 3.7.1do while举例77 3.8排除错误79 3.8.14种常见错误79 3.8.2找错: 循环无法中止80 3.8.3找错: 分号和括号82 3.8.4找错: 放错位置的else、非法else、文件不完整错误83 3.8.5调试程序84 3.9总结84 3.9.1缩进原则86 3.10练习86 3.10.1时间转换87 3.10.2数89 3.10.3输出图案90 复习题与作业92 简答题92 找错题: 编译错误93 找错题: 运行期错误93 代码阅读95 编程题95 第4章指针、地址、间接寻址操作符97 泊车与指针98 4.1指针的重要性98 4.2变量与内存98 4.2.1sizeof操作符99 4.2.2分配内存100 4.2.3计算机内存与十六进制数101 4.3取地址操作符&102 4.4指针104 4.4.1指针与取地址操作符104 4.4.2小红帽与白宫106 4.4.3指针与间接寻址操作符106 4.4.4指针类型混用109 4.5指针有什么用110 4.5.1C++中的函数只返回一个值110 4.5.2高效处理大数据结构、数组、类111 4.6总结112 4.6.1指针: 早学,勤练113 4.7练习113 4.7.1问候与指针113 4.7.2“This Old Man”与指针114 4.7.3金字塔的体积与指针115 复习题与作业116 简答题116 代码阅读116 找错题117 编程题118 第5章函数第I部分: 基本概念119 盖房子与开发软件120 5.1C++中的函数120 5.1.1使用函数之前120 5.1.2有了函数以后121 5.1.3使用函数有很多优点122 5.2函数的基本格式122 5.2.14个简单函数例子123 5.2.2调用函数与被调函数124 5.3写函数的要求125 5.3.1计算年龄125 5.3.2函数原型126 5.3.3函数调用127 5.3.4函数首行与函数体127 5.3.5传值调用129 5.3.6再看一个例子130 5.3.7回顾函数的一般形式132 5.3.8找错: 类型失配133 5.3.9找错: 调用语句中的数据类型134 5.3.10函数使用要求与C++库135 5.4局部变量、静态变量、全局变量135 5.4.1局部变量136 5.4.2找错: 忘记声明变量136 5.4.3静态变量137 5.4.4全局变量138 5.4.5全局变量是危险的139 5.4.6找错: 全局变量y1和math.h139 5.5指针与函数141 5.5.1传值调用复习141 5.5.2函数返回两个值142 5.5.3指针复习142 5.5.4传引用调用: 将变量地址传给函数143 5.6总结145 5.7练习146 5.7.1素数146 5.7.2随机数150 5.7.3时间转换151 5.7.4猫和狗152 复习题与作业155 简答题155 代码阅读156 程序找错题157 编程题157 第6章数组159 跑得更快,跳得更高160 6.1使用单数据变量160 6.2数组基础161 6.2.1C++中的数组下标从零开始162 6.2.2数组不被自动初始化162 6.2.3初始化一维数组162 6.2.4for循环与数组163 6.3数组的伴随指针165 6.3.1数组指针165 6.4一维数组和函数166 6.4.1数组与数组指针167 6.4.2向函数传递一维数组167 6.4.3求数组元素的平均值168 6.4.4找错: 不能从函数中“返回”数组169 6.5字符数组172 6.5.1字符数组的初始化173 6.5.2空字符173 6.5.3输入字符串175 6.5.4读取数值和字符数据181 6.5.5C++中的字符串函数183 6.6多维数组184 6.6.1二维数组的初始化185 6.6.2嵌套for循环和二维数组186 6.6.3二维数组的应用: 水电杂费计算程序186 6.7多维数组与函数188 6.7.1重新设计水电杂费计算程序188 6.7.2白雪公主: 用二维数组存储姓名190 6.8数组下标越界190 6.8.1数组下标越界等于灾难192 6.9从文件中读数据192 6.10总结192 6.11练习194 6.11.1常用单词194 6.11.2气象信息195 复习题与作业199 简答题199 找错题: 编译错误199 找错题: 运行期错误200 编程题201 第7章用户定义的数据类型、结构与枚举204 建城堡205 7.1用户定义的数据类型205 7.1.1将数据分组205 7.1.2结构与枚举206 7.2结构206 7.2.1数据类型基本概念回顾206 7.2.2创建并声明结构207 7.2.3结构说明208 7.2.4无名结构209 7.3访问结构成员210 7.3.1方框图210 7.3.2访问结构成员210 7.4结构数组213 7.4.1结构数组举例213 7.5结构中的结构216 7.5.1使用了时间结构的竞赛程序216 7.5.2嵌套了两个结构的结构217 7.6复制结构219 7.7结构与函数220 7.7.1时间结构举例221 7.7.2求线段的中点222 7.8传引用调用: 将结构地址传递给函数223 7.8.1函数与指针: 简要回顾223 7.8.2结构变量的赋值与返回225 7.8.3右箭操作符与点操作符226 7.8.4程序员的捷径227 7.8.5编程案例: 观鸟228 7.9结构数组与函数230 7.9.1底线230 7.9.2举例: Student结构数组231 7.10枚举数据类型232 7.10.1通过枚举变量创建编号序列233 7.10.2枚举变量: 赋值与比较235 7.10.3枚举变量找错: 选择枚举值要谨慎238 7.10.4举例: 数硬币239 7.10.5枚举变量的输入与输出240 7.11枚举类型与函数242 7.11.1举例: 光学器件与错误代码243 7.12多文件程序245 7.13练习245 7.13.1计算时间245 7.13.2扑克牌247 7.13.3趣味狗秀248 复习题与作业251 简答题251 找错: 编译错误252 找错: 运行期错误253 编程题254 第8章函数第II部分: 高级概念256 走进新世界257 8.1函数复习257 8.1.1基本要求257 8.1.2传值调用257 8.1.3调用函数与被调函数259 8.1.4传引用调用: 向函数传递变量地址259 8.1.5全局变量与函数260 8.1.6函数传递数据的4种方法261 8.2利用引用参数的传引用调用262 8.2.1通过引用参数进行函数的传引用调用262 8.2.2引用变量数组269 8.3函数重载270 8.3.1在过去的C时代270 8.3.2函数重载271 8.4可变长参数表函数273 8.4.1画线程序274 8.4.2参数顺序275 8.4.3找错: 函数重载278 8.4.4不同类型的重载函数280 8.5内联函数281 8.6总结282 复习题与作业282 简答题282 找错题: 编译错误283 找错题: 运行期错误285 编程题287 第9章类与对象290 打蜡291 9.1面向对象的原则和定义291 9.1.1简介291 9.1.2面向对象语言的基本原则293 9.1.3对象存在于生活中294 9.1.4对象定义295 9.2类与对象296 9.2.1面向对象分析: 特征、行为和功能296 9.2.2面向对象设计297 9.2.3结构化网球程序298 9.2.4类的声明299 9.2.5网球类300 9.2.6如何给数据成员赋值302 9.3定义成员函数305 9.3.1两种不同格式305 9.3.2举例: 球体类305 9.4类的构造函数308 9.4.1数据成员的初始化308 9.4.2构造函数309 9.4.3举例: 构造函数与时钟310 9.4.4构造函数注意事项312 9.4.5举例: 两个日期312 9.5析构函数315 9.6一个简单例子316 9.6.1学习难点316 9.6.2举例: Gadgets程序316 9.6.3找错: 与类相关的常见错误320 9.7对象数组325 9.7.1PhoneList对象数组325 9.7.2对象数组和扑克牌328 9.8操作符重载与对象330 9.8.1一元操作符重载331 9.8.2增量/减量操作符的前缀形式与后缀形式332 9.8.3二元操作符重载333 9.9指针与类339 9.9.1举例340 9.10总结346 9.10.1结构与类的比较347 9.11练习348 9.11.1足球运动员348 复习题与作业353 简答题353 找错题: 编译错误353 找错题: 运行期错误356 编程题358 第10章类之间的关系360 开心时刻361 10.1对象模型和类关系361 10.2使用C++的类362 10.2.1输入输出流类iostream362 10.2.2C++字符串类362 10.2.3C++数值类362 10.2.4使用名字空间std363 10.2.5名字空间举例363 10.3“有”关系和“使用”关系365 10.3.1例1: 顾客与收银员365 10.3.2例2: 掷色子372 10.3.3例3: 教练的秒表376 10.3.4例4: 可乐零售机379 10.4总结387 作业387 第11章继承与虚函数392 家长与孩子393 11.1为什么继承如此重要393 11.1.1举例: 计数器类393 11.1.2答案是继承395 11.2继承基础395 11.2.1举例: Counter与NewCounter395 11.2.2受保护的成员399 11.2.3雇员、经理、执行总裁401 11.3存取说明符的特殊用法408 11.4多重继承410 11.5继承、构造函数和析构函数410 11.5.1复习构造函数和析构函数410 11.5.2基类和派生类的构造函数411 11.5.3基类和派生类的析构函数411 11.5.4基类和派生类构造函数的参数传递412 11.5.5找错: 继承419 11.6继承举例420 11.6.1动物园421 11.6.2洗牌与发牌424 11.6.3面向对象程序设计425 11.6.4类声明427 11.7多态与虚函数434 11.7.1多态: 一个界面,多种形式434 11.7.2什么是虚函数435 11.7.3纯虚函数437 11.7.4虚函数的应用438 11.8总结443 复习题与作业443 简答题443 编程题444 第12章高级C++编程446 冰山的启示447 12.1动态内存分配447 12.1.1概述447 12.1.2new和delete操作符448 12.1.3如果new操作失败,会出什么事451 12.2星球大战452 12.2.1为二维和三维数组分配内存452 12.2.2在函数之间多次传递地址457 12.3异常处理458 12.3.1举例459 12.3.2new操作符的异常处理461 12.4微软基础类库(MFC)462 12.4.1简述462 12.4.2快速构建一个会发声的Windows应用程序463 12.5JavaTM程序设计语言465 12.5.1JavaTM是没有指针的C++465 12.5.2Java版“Hello World”466 12.6总结: 模板、标准模板库、友元466 12.6.1cout<<'\n再见!';467 附录A Visual C++使用入门468 附录B C++关键字480 附录C C++中的操作符492 附录D ASCII码493 附录E 位、字节、内存及十六进制表示法497 附录F 文件输入输出502 附录G C++的string类515 附录H 多文件程序524 附录I 键盘输入和屏幕输出532 附录J Microsoft Visual C++调试工具544 附录K 例子程序索引552 参考文献559 词汇表560
|
|
|
|