新書推薦:
《
伟大民族:从路易十五到拿破仑的法国史(方尖碑)
》
售價:NT$
857.0
《
古今“书画同源”论辨——中国书法与中国绘画的关系问题兼中国画笔墨研究
》
售價:NT$
602.0
《
《日本文学史序说》讲演录
》
售價:NT$
332.0
《
无尽的海洋:美国海事探险与大众文化(1815—1860)
》
售價:NT$
454.0
《
治盗之道:清代盗律的古今之辨
》
售價:NT$
556.0
《
甲骨文丛书·剑桥世界暴力史(第一卷):史前和古代世界(套装全2册)
》
售價:NT$
959.0
《
甲骨文丛书·中华早期帝国:秦汉史的重估
》
售價:NT$
1367.0
《
欲望与家庭小说
》
售價:NT$
449.0
內容簡介:
本书采用C++语言来讲解面向对象编程,在介绍C++语法的基础上,还引入了数据结构、设计模式等内容。全书篇章结构精良、组织有序、概念清晰,围绕教学需求展开内容,程序文档形式一致,为学生日后在学术界和专业领域承担程序设计方面的工作打好了基础。
關於作者:
---作者简介---
贝赫鲁兹·A. 佛罗赞(Behrouz A. Forouzan) 德安扎学院荣休教授,主导了计算机信息系统专业的课程建设。此外,他还是多家公司的系统开发咨询顾问。除本书外,他还著有Foundations of Computer Science、Computer Networks: A Top-Down Approach和Data Communications and Networking等畅销书籍。
理查德·F. 吉尔伯格(Richard F. Gilberg) 德安扎学院退休教授,主要讲授计算机编程、数据结构和Web开发课程。在加入德安扎学院之前,他曾在一家大型航空航天公司担任程序员、分析师和经理。
---译者简介---
江红 华东师范大学副教授,博士。1994年毕业于复旦大学计算机系。曾荣获上海市教学成果一等奖、华东师范大学教学成果一等奖、华东师范大学任课教师奖等荣誉。---作者简介---
贝赫鲁兹·A. 佛罗赞(Behrouz A. Forouzan) 德安扎学院荣休教授,主导了计算机信息系统专业的课程建设。此外,他还是多家公司的系统开发咨询顾问。除本书外,他还著有Foundations of Computer Science、Computer Networks: A Top-Down Approach和Data Communications and Networking等畅销书籍。
理查德·F. 吉尔伯格(Richard F. Gilberg) 德安扎学院退休教授,主要讲授计算机编程、数据结构和Web开发课程。在加入德安扎学院之前,他曾在一家大型航空航天公司担任程序员、分析师和经理。
---译者简介---
江红 华东师范大学副教授,博士。1994年毕业于复旦大学计算机系。曾荣获上海市教学成果一等奖、华东师范大学教学成果一等奖、华东师范大学任课教师奖等荣誉。
余青松 华东师范大学高级工程师。1990年毕业于华东师范大学并留校任教。编著计算机相关教材30余本,在国内外学术期刊和学术会议上发表科技论文近百篇。
目錄 :
出版者的话
译者序
前言
第1章 计算机与程序设计语言导论1
1.1 计算机系统1
1.1.1 计算机硬件1
1.1.2 计算机软件4
1.2 计算机语言4
1.2.1 机器语言4
1.2.2 符号语言5
1.2.3 高级语言5
1.3 计算机语言范式5
1.3.1 面向过程的程序设计语言范式6
1.3.2 面向对象的程序设计语言范式7
1.3.3 函数式程序设计语言范式7
1.3.4 逻辑式程序设计语言范式8
1.3.5 C++语言中包含的范式8
1.4 程序设计8
1.4.1 理解问题9
1.4.2 开发解决方案9
1.5 程序开发11
1.5.1 编写和编辑程序11
1.5.2 编译程序12
1.5.3 链接程序12
1.5.4 执行程序12
1.6 测试12
1.6.1 设计测试数据12
1.6.2 程序错误13
本章小结13
思考题14
第2章 C++程序设计基础16
2.1 C++程序16
2.1.1 第一个程序16
2.1.2 第二个程序20
2.2 变量、值和常量22
2.2.1 变量22
2.2.2 值22
2.2.3 常量26
2.3 C++程序的组成部分26
2.3.1 标记符27
2.3.2 注释29
2.4 数据类型30
2.4.1 整数类型30
2.4.2 字符类型36
2.4.3 布尔类型38
2.4.4 浮点类型39
2.4.5 void类型40
2.4.6 字符串类41
本章小结42
思考题42
编程题47
第3章 表达式和语句48
3.1 表达式48
3.1.1 基本表达式49
3.1.2 一元表达式51
3.1.3 乘法类表达式52
3.1.4 加法类表达式54
3.1.5 赋值表达式55
3.1.6 左值和右值的概念57
3.2 类型转换57
3.2.1 隐式类型转换58
3.2.2 显式类型转换(强制转换)61
3.3 表达式的求值顺序62
3.3.1 优先级62
3.3.2 结合性65
3.4 上溢和下溢66
3.4.1 整数的上溢和下溢66
3.4.2 浮点数的上溢和下溢68
3.5 格式化数据69
3.5.1 用于输出的操作符69
3.5.2 用于输入的操作符74
3.6 语句75
3.6.1 声明语句76
3.6.2 表达式语句77
3.6.3 空语句78
3.6.4 复合语句78
3.6.5 返回语句79
3.7 程序设计80
3.7.1 提取浮点数的整数部分和小数部分80
3.7.2 提取整数的个位数82
3.7.3 把时间分解为时分秒83
3.7.4 计算平均值和偏差84
本章小结86
思考题86
编程题90
第4章 选择结构92
4.1 简单选择结构92
4.1.1 关系和等性表达式92
4.1.2 单分支选择结构:if语句93
4.1.3 双分支选择结构:if-else语句97
4.1.4 多分支选择结构101
4.2 复杂条件决策103
4.2.1 逻辑表达式104
4.2.2 逻辑表达式的应用105
4.3 基于特定值的选择结构111
4.3.1 switch语句111
4.4 条件表达式117
4.4.1 条件表达式的结构117
4.4.2 比较118
4.5 程序设计119
4.5.1 学生成绩119
4.5.2 计算给定收入的税款122
4.5.3 日期编号124
本章小结126
思考题126
编程题128
第5章 循环结构130
5.1 概述130
5.1.1 前缀表达式和后缀表达式130
5.1.2 循环语句132
5.2 while语句132
5.2.1 计数器控制while语句133
5.2.2 事件控制while语句138
5.2.3 while语句分析144
5.3 for语句144
5.3.1 循环头145
5.3.2 循环体145
5.4 do-while语句148
5.4.1 事件控制的循环结构149
5.4.2 do-while循环结构的分析151
5.5 有关循环结构的详细信息152
5.5.1 三种循环结构的比较152
5.5.2 嵌套循环152
5.6 其他相关语句155
5.6.1 return语句155
5.6.2 break语句157
5.6.3 continue语句157
5.6.4 goto语句158
5.7 程序设计158
5.7.1 累加和与累乘积158
5.7.2 阶乘160
5.7.3 乘幂162
5.7.4 最小值和最大值164
5.7.5 any或者all查询166
本章小结168
思考题169
编程题171
第6章 函数173
6.1 概述173
6.1.1 函数的优点174
6.1.2 函数的定义、声明和调用174
6.1.3 库函数和用户自定义函数176
6.2 库函数177
6.2.1 数学函数177
6.2.2 字符函数181
6.2.3 处理时间183
6.2.4 随机数生成184
6.3 用户自定义函数186
6.3.1 函数的四种类型186
6.3.2 使用声明192
6.4 数据交换194
6.4.1 传递数据195
6.4.2 返回值199
6.4.3 综合示例200
6.5 有关参数的进一步讨论203
6.5.1 默认参数203
6.5.2 函数重载204
6.6 作用域和生命周期206
6.6.1 作用域206
6.6.2 生命周期211
6.7 程序设计213
6.7.1 固定投资的未来价值214
6.7.2 周期性投资的未来价值217
本章小结221
思考题221
编程题224
第7章 用户自定义类型:类227
7.1 概述227
7.1.1 现实生活中的类型和实例227
7.1.2 程序中的类和对象228
7.1.3 比较228
7.2 类229
7.2.1 一个示例229
7.2.2 类定义231
7.2.3 成员函数定义233
7.2.4 内联函数234
7.2.5 应用程序235
7.2.6 结构235
7.3
內容試閱 :
本书适用于使用C++语言教授面向对象程序设计的课程。本书还为学生提供了高级的概念,如数据结构和设计模式。完成本书学习的学生将具备学习其他面向对象语言课程、数据结构课程或者设计模式课程的知识储备。
什么是C++语言
C++是从C语言和B语言派生出来的不断演进的程序设计语言。C++语言将结构的思想扩展到类,可以从单个类的定义创建不同的对象,并赋予每个数据元素不同的值。
此外,C++语言采用面向对象语言的思想来模拟现实生活。在现实生活中,我们定义一个类型,然后创建该类型的对象。在C++语言中,我们定义一个类,然后创建该类的对象。C++还包括继承的思想。在继承中,我们可以创建一个类,然后通过扩展定义来创建其他类,就像在现实生活中,可以扩展动物的概念以创建马、牛、狗等概念。
也许C++语言最有意思的部分是多态性。多态性使我们能够编写多个具有相同名称的操作版本,供不同的对象使用。这种实践行为在现实生活中也存在,例如动词“开”(open)的使用。我们可以说开了一家公司,开了一盒罐头,开了一扇门,等等。尽管在这些场景下均使用了“开”这个字,但在不同的对象上引发了不同的动作。
C++的最新功能包括标准模板库(Standard Template Library,STL),它是预定义的复杂对象和可以应用于这些对象上的操作的集合,以及帮助用户更加高效和连贯地解决问题的设计模式。
为什么编写本书
本书包括五个独具特色的目标模块,分别阐述如下。
讲授计算机程序设计
本书可以适用于以C++语言为载体的计算机程序设计的第一门课程。第1~6章就是基于上述目的而设计的。前六章讨论计算机系统和程序语言,同时还讨论C++语法和程序控制的基本知识,例如选择结构和循环结构。第1章到第6章对于使用C++语言学习程序设计而言是必不可少的组成部分。
讲授C++语言的语法
第7~12章是研究面向对象程序设计的基础。虽然第8和9章与C++的面向对象特性没有直接关系,但是我们认为这两章可以在学生理解了第7章讨论的面向对象程序设计的基础知识之后再进行讲授。
呈现C++的新特点
第13~17章讨论第一门或者第二门程序设计课程中通常包含的其他主题,可以按任意顺序进行讲授。
讨论数据结构并介绍STL
第18和19章(在线提供)是数据结构入门知识,它们为学生进一步选修数据结构课程提供知识准备。
介绍设计模式
第20章(在线提供)给出了面向对象程序设计中一些典型问题的简单可行的解决方案,如果不使用设计模式,解决这些问题的方法将更加复杂。第20章通过一系列针对特定问题的标准解决方案,让学生更加深入地洞察面向对象程序设计。虽然设计模式通常在计算机图形学课程中讲授,但我们将其应用于非图形问题,以帮助没有图形程序设计经验的学生更好地掌握它。
课程大纲
本书可以按以下顺序讲授:
附录
本书配套网站提供了在线附录,包括六部分内容。
参考资料
附录A至附录E旨在为学生提供参考资料。学生在学习本书的相应章节时可能需要参考这些附录。
语言知识
附录F和附录G为学生提供有关C++如何准备用于编译的源代码,以及如何在不同的节中处理名称的信息。
高级主题
附录H到附录O讨论了C++语言中新增的一些高级主题。教师可以在课堂上讲授这些内容,或者学生可以将其作为附加信息的来源。
C++11简介
附录P简要概述了在讨论高级主题的附录中没有涉及的有关C++11的主题。
UML简介
本书使用了UML图。附录Q提供了作为面向对象项目设计工具的UML的一般性知识。
位集
当使用C++进行网络编程时,位集(bitset)的概念变得越来越流行。我们在附录R中包含了这个主题。
教师资源
本教程提供了若干附加资源,读者可以在www.mhhe.comforouzan1e上找到。这些资源包括:知识点测验题,有助于指导教师检验学生对章节内容的理解;判断题和复习题,可以用于进一步测试学生对知识的掌握程度。此外,还提供了知识点测验题、判断题、复习题和思考题的完整答案。最后,提供了授课PPT、文本图像文件和示例程序。
致谢
我们对本书的审阅者深表感谢。在过去几年中,他们的见解和建议对本书的出版影响巨大。按字母顺序,本书的审阅者如下:
Vicki H. Allan,犹他州立大学
Kanad Biswas,德里理工学院
Gary Dickerson,联合学院
Max I. Formitchev,马克西姆斯能源公司
Cynthia C. Fry,贝勒大学
Barbara Guillott,洛杉矶拉斐特CGI的Q&A分析师
Jon Hanrath,伊利诺伊理工学院
David Keathly,北得克萨斯大学
Robert Kramer,扬斯敦州立大学
Kami Makki,拉马尔大学
Christopher J. Mallery,微软首席软件工程主管
Michael L. Mick,加州普渡大学
Amar Raheja,加利福尼亚州立理工大学
Brendan Sheehan,内华达大学雷诺分校
我们还要感谢McGraw-Hill的编辑和制作人员:Thomas Scaife(高级投资组合经理);Suzy Banbridge(执行投资组合经理);Heather Ervolino(产品开发人员);Shannon O''Donnell(营销经理);Patrick Diller(业务项目经理);Jane Mohr(内容项目经理)。