工程问题C++语言求解(原书第3版)
作者 : (美)Delores M. Etter; Jeanine A. Ingber 著
译者 : 冯力 周凯译
丛书名 : 计算机科学丛书
出版日期 : 2014-08-04
ISBN : 978-7-111-45907-1
定价 : 79.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 457
开本 : 16
原书名 : Engineering Problem Solving with C++,Third Edition
原出版社: Pearson Education Asia
属性分类: 教材
包含CD :
绝版 :
图书简介

本书是以工程问题求解和C++编程语言知识结构相互融汇讲解的经典之作,书中介绍如何利用ANSI C++编程语言以基于对象的编程方式来解决工程问题,采用已经过作者证明的求解工程问题的五步法,展现了大量来自工程、科学和计算机科学领域的不同示例,包括物体的速率、海水冰点、气象气球、臭氧测量、仪器可靠性、语音信号分析、飓风等级分析、海啸预警、地形导航以及电路分析等,是一本理论和实践结合紧密的教材。

图书特色

本书是以工程问题求解和C++编程语言知识结构相互融汇讲解的经典之作,书中利用已经过作者证明的求解工程问题的五步法,展现了大量来自工程、科学和计算机科学领域的不同示例,包括物体的速率、海水冰点、气象气球、臭氧测量、仪器可靠性、语音信号分析、飓风等级分析、海啸预警、地形导航以及电路分析等。

本书特点
真实世界的工程、科学示例和应用问题。
求解工程问题的五步法:
1)清楚地描述问题。
2)描述输入和输出信息,确定需要的数据类型。
3)手动运行一个简单的例子。
4)设计算法,并将它转换成计算机程序。
5)使用大量数据测试解决方案。
类型丰富的练习题:节后的练习,与示例程序和“解决应用问题”节中的程序有关的“修改”问题,每章后的习题(包括判断题、语法题、多选题、编程题等)。

作者简介
Delores M. Etter 以解决工程和科学问题方面的创新教材得到广泛认可,目前是美国南卫理公会大学达拉斯分校工程教育学院德州仪器杰出主席。她曾先后在美国海军学院、科罗拉多大学博尔德分校、新墨西哥大学电气和计算机工程学院任教,也曾是斯坦福大学客座教授。Etter博士是美国国家工程院院士,IEEE、AAAS、ASEE会士,还曾是国家科学委员会成员。
Jeanine A. Ingber ASAP有限责任公司首席技术官,ASAP成立于2009年,主要研究工程和物理应用问题的数值解。她任教于美国艾奥瓦州立大学和新墨西哥大学,获得过多项教学奖。

图书前言

C++语言源自于C语言,它通过使用类和程序员自定义类型来支持面向对象编程的特性。C语言中那些适用于系统级操作和嵌入式编程的特性在C++中也得到了支持,这使C++语言成为最强大和最通用的编程语言之一,同时对于科学家和工程师而言,它也是计算导论课程的不错选择。本书主要介绍如何使用C++来求解工程问题,同时也介绍了C++语言面向对象的特性。我们的目标如下:
  设计一种用于求解工程问题的通用方法论。
  在着眼于编程和解决问题的基本层面的同时,阐述C++的面向对象特性。
  通过大量的工程示例和应用,说明使用C++解决问题的过程。
  为了使内容通俗易懂,整合了对于数据类型、函数、在C++标准模板库中定义的容器类的介绍。
  为了达到这些目标,第1章中介绍了本书其他章节求解工程问题时使用的五步处理过程。第2章介绍了C++支持的内建数据类型,同时介绍了类、自定义对象和支持标准输入/输出的成员函数。第3~6章介绍了C++解决工程问题的基本能力,包括控制结构、数据文件、函数和自定义数据类型。第7和第8章介绍了数组、向量和字符串类。第9章介绍了指针、动态内存分配和链式数据结构的用法。第10章对于一些高级主题进行了更深入的介绍,包括函数模板、类模板、递归成员函数、继承和虚函数。贯穿所有这些章节,我们使用了大量来自不同的工程、自然科学和计算机科学的示例。这些示例的解决方案都是使用五步处理过程和标准C++开发的。
第3版的特征
  介绍了两种集成开发环境(IDE):
  NetBeans
  MS Visual Studio
  包含了使用全球定位系统(GPS)数据和海啸预警系统数据的新工程应用程序。
  包括了按位操作符的介绍。
  扩展了控制结构的覆盖面。
  为了灵活性考虑,在本书可选章节提早介绍了类和自定义数据类型的开发。
  整合了贯穿全书的类的覆盖范围,提供了标准解决方案和面向对象解决方案的比较。
  包括了附加的语句块、程序跟踪和内存快照以及流程图。
  学生资源和教师资源中心可以在线访问www.pearsonhighered.com/etter。
先决条件
  本书不假定读者之前具备计算机使用经验。对于数学的要求是大学代数和三角知识。当然,如果学生曾用过其他计算机语言或者软件工具,则可以更快地阅读前面的内容。
课程结构
  本书中的内容可以作为工程和科学计算专业一学期课程的基础部分。这些章节包含数学计算、字符数据、控制结构、函数、数组、类和指针的基本主题。具有其他计算机语言背景的学生应该能够在半学期内掌握这些内容。仅介绍C++的短学时课程只需使用本书的必修章节(可选章节的内容使用星号标识)。下面是使用本书的三种方式以及相关推荐章节:
介绍C++ 许多基础类课程除了介绍程序语言外还包括若干计算机工具。对于这类课程,我们推荐使用第1~8章中的非可选章节。这些内容介绍了C++的基本能力,通过学习学生将能够使用数学计算、字符数据、控制结构、自定义数据类型、函数和数组写出内容充实的程序。
  使用C++求解问题 在半学期的课程中专门教授学生掌握C++语言,我们推荐覆盖第1~10章中所有的非可选章节。这些内容覆盖了C++语言中所有的基础概念,包括数学计算、字符数据、控制结构、函数、数组、类、模板和指针。
  使用C++和数值方法求解问题 高年级学生或者已经熟悉了其他高级语言的学生可以较快地学习书中的内容。此外,他们可以将数值方法的相关内容应用到其他课程中。因此,我们推荐这些学生学习第1~10章中的所有章节,包括可选内容。
  本书章节的设计在主题的顺序上为教师提供了较大的灵活性。自定义类型和类的相关内容自第2章开始贯穿本书。但是,有关类的内容都作为一个可选小节放在每章的结尾部分。下面的依赖关系图对此进行了说明。

解决问题的方法论
  需要强调的是,工程和科学问题求解方法在本书中是一个完整的过程。第1章中介绍了使用计算机解决工程问题的五步处理过程:
  1)清楚地描述问题。
  2)描述输入和输出信息,确定需要的数据类型。
  3)手动运行一个简单的例子。
  4)设计算法,并将它转换成计算机程序。
  5)使用大量数据测试解决方案。
  为了不断强化求解问题的能力,这五步中的每一步在每次解决完一个完整的工程问题时都要清楚地标识出来。此外,使用分解提纲、伪代码和流程图完成自顶向下的设计并逐步细化。
工程和科学应用
  本书的重点放在将真实世界的工程、科学示例和问题相结合上。这个重点以各类工程挑战为中心,这些挑战包括:
  天气、气候和全球变化的预测
  计算机语音识别
  图像处理
  人工智能
  提高油气采集率
  仿真
  每一章都以有关某个工程挑战的讨论开始,其中给出了工程师可能感兴趣的地方。每章的后面,我们不仅解决了开头所引出的问题,还将解决方案应用于其他的问题中。
标准C++
  书中所有的语句和程序都是使用符合国际标准组织和美国国家标准学会(ISO/ANSI)C++标准委员会发布的C++标准编写的。ISO和ANSI共同发布了C++编程语言的第一个国际标准。通过使用标准C++,学生可以学习编写可移植的代码,这些代码可以从一种计算机平台移植到另一种计算机平台上。本书中讨论了许多C++编程语言的标准功能,同时在附录A中还讨论了C++标准库中的附加组件。
软件工程的观点
  工程师和科学家都希望设计并实现对用户友好且可重用的计算机解决方案,因此了解软件工程技术是很关键的。在程序的设计中需要强调可读性和文档。有关软件工程的主题在本书各处都有讨论,其中包括软件生命周期、可移植性、维护、模块化、递归、抽象、可重用性、结构化编程、确认和验证。
类型丰富的练习题
  学习任何新的技能都需要进行大量不同难度层次的练习。本书中设计了多种类型的练习题,用于训练学生解决问题的能力。第一种类型是练习,这是答案较短的问题,与该节所讨论的内容相关。大部分节后面都带有一组练习,这样学生可以确定他们是否做好了继续学习下一节的准备。本书末尾给出了完整的练习答案。
  本书设计了“修改”类型的问题用来进行动手练习,一般与示例程序和“解决应用问题”节中的程序有关。在这些节中,我们使用五步处理过程开发一个完整的C++程序。“修改”类型的问题要求学生使用不同的数据集来运行程序,以测试他们对程序运行和工程变量之间关系的理解。这些练习题要求学生对程序进行简单的修改,然后运行程序对他们的修改进行测试。
  每章都以习题结束,其中包括判断题、语法题、多选题等,还包括一组编程题。大部分习题是与本章所介绍内容相关的、答案较短的问题,这些问题帮助学生确定他们是否很好地理解了本章所介绍的C++特性。编程题是与各种工程应用相关的新问题,难度不同,可能非常直接地看出解决办法(易),也可能需要较长的工程作业(难)。每个编程题都要求学生开发一个完整的C++程序或函数。
可选的数值方法
  数值方法在解决工程问题时得到了广泛的应用,本书在可选章节中对数值方法进行了讨论,包括插值、线性建模(回归)、求根、数值积分和解联立方程。书中还介绍了矩阵的概念,并使用大量的例子进行了说明。所有这些主题都假定读者只有代数和三角知识背景。
附录
  为了进一步方便读者参考,附录中包含了许多重要的主题。附录A包含了对于C++标准库的讨论。附录B给出了ASCII字符编码。附录C中介绍了MATLAB。附录D给出了练习答案。附录E包含了本书中用到的参考文献。
其他资源
  所有教师和学生资源都可以访问网站www.pearsonhighered.com/etter得到。在这里,学生可以得到本书的所有源代码,教师还可以在教师资源中心注册。教师资源中心包含本书使用的全部示例程序、所有编程问题的完整解决方案、测试题库,以及应用问题中用到的数据文件和完整的课程讲座幻灯片。
致谢
  感谢杰出的评审团队——科罗拉多矿业大学的Roman Tankelevich,宾州州立大学的John Sustersic,波特兰大学的Tanya L. Crenshaw,纽约城市学院的Daniel McCracken,弗吉尼亚理工学院的Deborah L. Pollio,科罗拉多矿业大学的Keith Hellman,波特兰大学的Tammy VanDeGrift,宾州州立大学Behrend校区的Melanie Ford,加州理工大学的Amar Raheja,他们为本书提出了详尽和有建设性的建议,感谢他们颇具价值的观点。还要对优秀的编辑人员表示感谢,他们是Tracy Dunkelberger、Stephanie Sellinger和Emma Snider,感谢他们把每件事都处理得井井有条。最后,还要感谢杰出的产品团队,包括Eric Arima、Kayla Smith-Tarbox和Lily Ferguson,感谢他们对每个细节的洞察与关注。

上架指导

计算机\程序设计

封底文字

本书是以工程问题求解和C++编程语言知识结构相互融汇讲解的经典之作,书中利用已经过作者证明的求解工程问题的五步法,展现了大量来自工程、科学和计算机科学领域的不同示例,包括物体的速率、海水冰点、气象气球、臭氧测量、仪器可靠性、语音信号分析、飓风等级分析、海啸预警、地形导航以及电路分析等。
本书特点
 真实世界的工程、科学示例和应用问题。
 求解工程问题的五步法:
1) 清楚地描述问题。
2) 描述输入和输出信息,确定需要的数据类型。
3) 手动运行一个简单的例子。
4) 设计算法,并将它转换成计算机程序。
5) 使用大量数据测试解决方案。
 类型丰富的练习题:节后的练习,与示例程序和“解决应用问题”节中的程序有关的“修改”问题,每章后的习题(包括判断题、语法题、多选题、编程题等)。

作者简介

(美)Delores M. Etter; Jeanine A. Ingber 著:Delores M. Etter 以解决工程和科学问题方面的创新教材得到广泛认可,目前是美国南卫理公会大学达拉斯分校工程教育学院德州仪器杰出主席。她曾先后在美国海军学院、科罗拉多大学博尔德分校、新墨西哥大学电气和计算机工程学院任教,也曾是斯坦福大学客座教授。Etter博士是美国国家工程院院士,IEEE、AAAS、ASEE会士,还曾是国家科学委员会成员。
Jeanine A. Ingber ASAP有限责任公司首席技术官,ASAP成立于2009年,主要研究工程和物理应用问题的数值解。她任教于美国艾奥瓦州立大学和新墨西哥大学,获得过多项教学奖。



译者简介

冯力 周凯译:暂无简介

译者序

人类对于语言的最初使用,是猿类进化到人类的重要标志,也是信息技术的诞生之源。而文字以及印刷技术的出现和使用,第一次突破了时空的约束而传递着更为复杂、容量更大的信息。“鸿雁传书”是中国文化中记录较多的信息传递方式,如晚唐诗人杜牧在《七律·寄远》中最早写道:“碧云空断雁行处,红叶已凋人未来。塞外音书无信息,道傍车马起尘埃。”而直到20世纪60年代,计算机的普及与应用才彻底激发了人类充分利用信息的巨大潜力。无论身处哪个时代,语言始终都是描述、传递和处理信息的载体和有效工具,在当前的网络信息时代,计算机编程语言更是超越延续了几万年的语言工具,在这个技术时代留下深深的烙印。
  然而面对浩如烟海的计算机软件编程书籍,每个初入门的读者都迫不及待地想弄清楚:“究竟哪种编程语言最优秀?”“哪种编程语言用得更多?”“哪种编程语言能最快入门?”这些问题从学术上、理论上、工程应用上都有很多解释,而且由于每个程序员从事的专业领域、技术水平或者掌握程度的不一样,也会有不同的回答,因此更多的是“仁者见仁,智者见智”,或者“如人饮水,冷暖自知”。
  至于学习编程,专一与执着尤为重要。曾国藩在其家书中说“掘井多而皆不及泉”,意思说挖了很多井,但没有一口井里挖出泉水。这对于那些在多种编程语言中徘徊不定的年轻人来说,应该有足够的启发了:为何不扎扎实实掌握一门编程语言,真正尝到泉水的甘甜清冽呢?难道大家从这之中还不能体会到专注的重要吗?
  本书是以工程问题求解和C++编程语言知识结构相互融汇讲解的经典之作,由美国专家Delores M. Etter和Jeanine A. Ingber共同编著,从通用的工程问题解决方法论入手,以物体的速率、海水冰点、气象气球、臭氧测量、仪器可靠性、语音信号分析、飓风等级分析、海啸预警、地形导航以及电路分析等众多工程问题为应用对象,将C++语言中的基本操作符、标准输入和输出、基本函数、控制结构、数据文件、模块化编程、数组以及指针等重要概念娓娓道来,使得学习C++的各类知识点变得更加生动、有趣,更重要的是整个过程充满了解决工程问题需要的丰富而充满自信的经验,能够让初学者更快地建立C++编程知识与实际工程应用的连接,这样在读者的脑海中对编程知识点的印象与理解就更加深入透彻和胸有成竹了。
  学习编程语言终究离不开多练勤思。其实,大体上来看,学习C++编程语言不外乎掌握语言与操作工具,工具的操作虽然有平台和操作方式的区别,但在熟练掌握之后不必过于迷恋,在暂时不得要领而难以登堂入室之时也不必徘徊彷徨。要想具备熟练的语言技能,除了看书阅读外,还需要有目的性地进行小型工程项目开发,需要思考与设计。日积月累,终有一天你会由编程路漫漫中的“渐悟”走向登高一览的“顿悟”,发现编程学习中很多东西原来“不外乎如此”“本质上就是……”,从而豁然开朗,步入到“触一类而通万象”的知识启发的“三摩地”。
  衷心感谢我们多年的朋友程雄先生对本书文字及内容的认真审核,您在C++方面的精湛技能以及深厚的经验令我们印象深刻!最后,祝大家学习愉快!

译 者
2014年5月于武汉光谷

图书目录

出版者的话
译者序
前言
第1章 计算与工程问题求解导论  1
1.1 历史回顾  1
1.2 现代工程成就  3
1.3 计算机系统  6
1.3.1 计算机硬件  6
1.3.2 计算机软件  6
1.4 数据表示与存储  9
1.4.1 数制  10
1.4.2 数据类型与存储  14
1.5 解决工程问题的方法论  16
本章小结  18
习题  19
第2章 简单的C++程序  22
工程挑战:汽车性能  22
2.1 程序结构  22
2.2 常量和变量  25
2.2.1 科学记数法  27
2.2.2 数值数据类型  27
2.2.3 布尔数据类型  28
2.2.4 字符数据类型  29
2.2.5 字符串数据  30
2.2.6 符号常量  31
2.3 C++类  31
2.3.1 类声明  32
2.3.2 类实现  32
2.4 C++操作符  34
2.4.1 赋值操作符  34
2.4.2 算术操作符  36
2.4.3 操作符的优先级  38
2.4.4 上溢和下溢  40
2.4.5 自增和自减操作符  40
2.4.6 缩写赋值操作符  41
2.5 标准输入和输出  42
2.5.1 cout对象  42
2.5.2 流对象  43
2.5.3 操纵符  44
2.5.4 cin对象  46
2.6 使用IDE构建C++解决方案:NetBeans  48
2.7 包含在C++标准库中的基本函数  55
2.7.1 基本的数学函数  55
2.7.2 三角函数  56
*2.7.3 双曲函数  57
2.7.4 字符函数  58
2.8 解决应用问题:速率计算  59
2.9 系统限制  61
本章小结  62
习题  65
第3章 控制结构:选择  68
工程挑战:全球变化  68
3.1 算法设计  68
3.2 结构化编程  69
3.2.1 伪代码  70
3.2.2 可选方案的评估  71
3.3 条件表达式  71
3.3.1 关系操作符  71
3.3.2 逻辑操作符  72
3.3.3 优先级和结合性  74
3.4 选择语句:if语句  74
3.4.1 简单的if语句  75
3.4.2 if/else语句  76
3.5 数值方法:线性插值  79
3.6 解决应用问题:海水的冰点  81
3.7 选择语句:switch语句  85
3.8 使用IDE构建C++解决方案:NetBeans  87
3.9 为自定义数据类型定义操作符  93
本章小结  97
习题  98
第4章 控制结构:循环  101
工程挑战:数据收集  101
4.1 算法设计  101
4.2 循环结构  102
4.2.1 while循环  102
4.2.2 do/while循环  105
4.2.3 for循环  107
4.3 解决应用问题:GPS  110
4.4 break和continue语句  114
4.5 结构化输入循环  114
4.5.1 计数器控制循环  114
4.5.2 标志控制循环  116
4.5.3 数据终止循环  117
4.6 解决应用问题:气象气球  118
4.7 使用IDE构建C++解决方案:Microsoft Visual C++  122
本章小结  128
习题  129
第5章 使用数据文件  132
工程挑战:天气预报  132
5.1 定义文件流  132
5.1.1 流的类层次  132
5.1.2 ifstream类  134
5.1.3 ofstream类  135
5.2 读取数据文件  137
5.2.1 指定记录的数目  137
5.2.2 标志信号  139
5.2.3 文件结束  141
5.3 生成数据文件  143
5.4 解决应用问题:数据过滤器——修改HTML文件  145
5.5 错误检查  148
*5.6 数值方法:线性建模  154
*5.7 解决应用问题:臭氧测量  156
本章小结  160
习题  162
第6章 使用函数进行模块化编程  166
工程挑战:仿真  166
6.1 模块化  166
6.2 自定义函数  168
6.2.1 函数定义  171
6.2.2 函数原型  175
6.3 参数传递  177
6.3.1 值传递  177
6.3.2 引用传递  179
6.3.3 存储类型和作用域  183
6.4 解决应用问题:计算重心  185
6.5 随机数  188
6.5.1 整数序列  188
6.5.2 浮点序列  192
6.6 解决应用问题:仪器可靠性  192
6.7 定义类方法  198
6.7.1 公共接口  198
6.7.2 访问方法  199
6.7.3 修改方法  200
6.8 解决应用问题:复合材料设计  204
*6.9 数值方法:多项式的根  208
6.9.1 多项式的根  209
6.9.2 增量搜索方法  211
*6.10 解决应用问题:系统稳定性  211
*6.11 数值方法:积分  219
本章小结  222
习题  224
第7章 一维数组  229
工程挑战:海啸预警系统  229
7.1 数组  229
7.1.1 定义和初始化  230
7.1.2 伪代码  231
7.1.3 计算与输出  235
7.1.4 函数参数  238
7.2 解决应用问题:飓风等级  241
7.3 统计表征数  245
7.3.1 简单分析  246
7.3.2 方差和标准差  247
7.3.3 自定义头文件  249
7.4 解决应用问题:语音信号分析  250
7.5 排序和搜索算法  254
7.5.1 选择排序  254
7.5.2 搜索算法  256
7.5.3 无序列表  256
7.5.4 有序列表  257
7.6 解决应用问题:海啸预警系统  258
7.7 字符串  263
7.7.1 C风格字符串定义和I/O  263
7.7.2 字符串函数  265
7.8 string类  266
7.9 vector类  267
7.10 解决应用问题:概率计算  270
本章小结  280
习题  281
第8章 二维数组  285
工程挑战:地形导航  285
8.1 二维数组  285
8.1.1 声明和初始化  286
8.1.2 计算与输出  290
8.1.3 函数参数  292
8.2 解决应用问题:地形导航  297
8.3 二维数组和vector类  300
8.4 矩阵  303
8.4.1 行列式  304
8.4.2 转置  304
8.4.3 矩阵加法和减法  305
8.4.4 矩阵乘法  305
8.5 数值方法:解联立方程  307
8.5.1 图形分析  307
8.5.2 高斯消元法  309
8.6 解决应用问题:电路分析  311
8.7 高维数组  316
本章小结  317
习题  318
第9章 指针  322
工程挑战:天气模式  322
9.1 地址与指针  322
9.1.1 地址操作符  323
9.1.2 指针的分派  324
9.1.3 指针的算术  326
9.2 指向数组元素的指针  329
9.2.1 一维数组  329
9.2.2 字符串  331
9.2.3 指针作为函数参数  332
9.3 解决应用问题:厄尔尼诺南方涛动数据  336
9.4 动态内存分配  338
9.4.1 new操作符  338
9.4.2 动态分配数组  339
9.4.3 delete操作符  339
9.5 解决应用问题:地震监测  340
9.6 使用new和delete的常见错误  345
9.7 链式数据结构  346
9.7.1 链表  346
9.7.2 栈  348
9.7.3 队列  348
9.8 C++标准模板库  349
9.8.1 list类  349
9.8.2 stack类  350
9.8.3 queue类  352
9.9 解决应用问题:文本文件的索引  353
本章小结  357
习题  358
第10章 高级主题  361
工程挑战:人工智能  361
10.1 泛型编程  361
10.2 数据抽象  365
10.2.1 操作符重载  365
10.2.2 像素类  365
10.2.3 算术操作符  367
10.2.4 友元函数  371
10.2.5 验证对象  374
10.2.6 按位操作符  378
10.3 解决应用问题:彩色图像处理  380
10.4 递归  385
10.4.1 阶乘函数  385
10.4.2 斐波纳契序列  387
10.4.3 BinaryTree类  388
10.5 类模板  396
10.6 继承  401
10.6.1 Rectangle类  401
10.6.2 Square类  404
10.6.3 Cube类  406
10.7 虚方法  409
10.8 解决应用问题:可重复的囚徒困境  411
本章小结  418
习题  419
附录A C++标准库  422
附录B ASCII字符编码  430
附录C 使用MATLAB从ASCII文件中绘制数据点  434
附录D 练习答案  437
附录E 参考文献  445

教学资源推荐
作者: [美]奥弗·曼德勒维奇(Ofer Mendelevitch) 凯西·斯特拉(Casey Stella) 著 道格拉斯·伊德理恩(Douglas Eadline)
作者: Charles N.Fischer, Richard J.LeBlanc
作者: 吴黎兵 熊建强 杨鏖丞
参考读物推荐
作者: 刘海波 沈晶 郭耸 等编著
作者: [巴西] 马克西米利亚诺·桑托斯(Maximiliano Santos),埃尼奥·莫拉(Enio Moura) 著
作者: J.D.Meier;Carlos Farre;Prashant Bansode;Scott Barber;Dennis Rea