描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787519822941
译 者 的 话
Fortran起源于1954年,是早出现的高级程序设计语言之一,它主要适合用来解决科学计算方面的问题。今天即使是已经进入到面向对象编程时代,Fortran语言仍然被专注于数据计算的科学家和工程师广泛使用。本书为第四版,相较于第三版以Fortran 95/2003为蓝本,这次主要讲解Fortran 2008,并在第17章增加了并行处理和优化数组两个Fortran 2008中的全新内容。但是原书的结构与风格依然未变:章节学习目标明确,自上而下的程序设计方法贯穿始终,理论阐述翔实,例题讲解清晰,代码测试完整,验证学习效果的测验问题和练习内容丰富。所有这些特性都是作者为方便读者自学、掌握Fortran语言程序设计而精心设计的,这也成为用Fortran语言编程的人们乐于购买本书的亮点。
本书不仅是Fortran语言初学者的入门必选,也是熟练掌握Fortran语言人员的参考书。本书第1~7章,从计算机基本结构出发,讲述了计算机中数据的表示。Fortran语言的发展历史,以及编程良好习惯如何培养,详尽介绍了Fortran语言基本知识。第8~15章介绍了Fortran语言高级特性,为初学者掌握和用好Fortran语言提供了强有力的支持。第16章介绍了Fortran语言面向对象编程方法,第17章介绍了Fortran
2008中的并行处理和优化数组,第18章逐一简述已经宣布废弃的那些Fortran旧特性,为遗留的旧版Fortran程序继续使用提供支持,这些新知识和旧特性是熟练使用Fortran编程人员关心的内容。
本书自始至终强调树立实际工程编程思想,致力于培养读者编写良好的可读性、维护性和完整性的程序的能力。书中有大量的工程实例,在每章后面的习题中配有很多练习,其中不少练习涉及各个学科的实际工程计算。例如,相对论、电子工程、万有引力、逃逸速度、双曲余弦、振动周期、无线电接收机等的编程。这极利于读者明白所学知识在实际工程中的运用,掌握所学知识,增加学习兴趣。
本书主要译者有刘博雅(第1~4章)、林慕清(第5~7章)、李浩亮(第8~10章)、王志强(第13~15章)、张克君(第16章)、李援南(第17章)、章小莉(第18章、附录及其他内容),还得到了张悦、钱榕、李伟、杨志成、霍刚、周志全、曹长宏、章晓盛等人的大力支持。后章小莉对全部译稿进行了审阅。在此对大家的精诚合作表示深深的感谢!
我们希望这本新修订的第四版图书能为用计算机处理数据计算、完成科学研究的读者们带去更多的帮助。限于时间和水平,书中难免存在不足之处,敬请读者批评指正。
译 者
前 言
本书版是我编写和维护国防和地球物理领域的大型Fortran程序的产物。在工作期间,很显然,成功编写大型程序取决于策略和技术,那时候对一个年轻的工程师来说,维护Fortran程序与在学校学习Fortran程序的编写完全不同。一旦程序投入服务,维护和修改大型程序需要高得令人难以置信的费用。因为编程的人容易理解程序,而修改程序的人相较于原程序员来说就很难明白它们的内容。我编写本书的目标是,既传授Fortran语言的基础知识,也很好地讲解编写和维护程序的技术。另外,还希望本书对今后打算从事编程工作的学生有参考价值。
在学生学习程序设计过程的早期,要教会他们花更多的精力来保证程序的可维护性是非常难的。因为课堂上的编程任务都很简单,一个人足以在短时间内完成编写任务,且这些程序也不需要多年的维护。正因为项目简单,一个学生只要参加了课程学习,就能完成所有编程任务,通过考试,即使不学实际工作中参加大型编程项目时需要的习惯,常常也能胜任从“编写”到产生代码整个过程的任务。
本书一开始介绍编写的Fortran程序就适用于大型项目开发,这样可以强调在编代码前认真进行设计的重要性。其中设计过程使用的技术是自顶向下设计,即把大型程序分解为可以单独实现的若干个逻辑部分。书中还强调完成单个逻辑部分编写过程的重要性和在开始将各个独立部分集成为终产品的过程开始之前单元测试的重要性。
另外,本书讲述的Fortran程序,工程师和科学家在实际工作与研究中都会遇到。所有编程环境中一个问题是很常见的:必须维护大量遗留代码。在特殊场合的遗留代码起初是用Fortran Ⅳ(或甚至更早版本!)编写的,今天这些程序的结构已不再被使用。例如,这些代码可以通过使用IF语句来完成,或计算转到或赋值转到GO TO语句。第18章将介绍Fortran语言中那些不再被使用,但是在遗留代码中还是会遇到的旧特性。同时也强调在新程序中应该永不再用这些特性,并教会学生在遇到这些特性时如何处理它们。
第四版的变化
本书第四版直接基于Fortran 95/2003(适用科学家和工程师) 的第三版而编写,保留了上一版的编写结构,但全书都穿插Fortran 2008的新知识(以及Fortran 2015标准建议的相关内容),可喜的是,Fortran起源于1954年,至今还生机勃勃。
从逻辑上来说,Fortran 2008大部分新增技术是对Fortran 2003的扩展,各章的相应地方都介绍了这些新技术。但是,并行处理和优化数组为全新内容,第17章专门对它们有介绍。
绝大多数Fortran语言课程授课时间限定为三个月或一个学期,学生从中掌握Fortran语言的基础知识和编程基本概念。这些课程的内容为本书第1~7章,如果有时间的话,可选学第8章、第9章。给学生打下良好基础,以便他们在实践中更好地使用Fortran语言。
有能力的学生、工作中的科学家和工程师会需要第11~15章的COMPLEX(复数)、派生数据类型和指针知识。工作中的科学家和工程师几乎肯定需要第18章中陈旧、丰富和已删除的Fortran特性,这些知识很少在课堂中传授。但是本书包含了这些知识,目的在于实际中用Fortran语言解决真实问题时,本书依然有参考价值。
本书特点
本书设计了很多特性来强调如何用恰当的方法编写可靠性高的Fortran程序。这些特性对于首次学习Fortran的学生和实际工程中的人们都很有用。它们是:
1.现代技术
本书在例题中始终用的是特性。许多Fortran 2008现代特性中不仅一直保留着Fortran语言旧版本的特性,还有了可取代它们的新特性。在这种情况下,例题中用的是现代新技术。旧技术的使用大部分被移到第18章中讲述,在那里强调了它们是旧版本的/不受欢迎的。保留的旧版本Fortran特性有:使用模块替代COMMON(通用)块来实现数据共享,DO… END DO循环替代DO…CONTINUE循环,内部过程替代语句函数、CASE结构替代计算转向GOTO语句。
2.强制类型
全书一直使用IMPLICIT NONE语句来强制每个程序中的每个变量类型要显式声明,以便编译时捕捉到常见的打字错误。与程序中每个变量显式声明一起,书中强调创建数据字典的重要性。该字典描述程序中每个变量的作用。
3.自顶向下设计方法
本书第3章介绍了自顶向下设计方法,并且随后的其他章节一直在用该方法。这一方法鼓励学生在开始编代码前,仔细思考,对程序进行好的设计。强调明确定义问题的重要性,以便在开始任何其他工作之前准备好需要的输入和输出数据。一旦问题被恰当定义,紧接着就教授学生逐步细化问题,即将问题分解得更小,把单个子任务设计为子例程或函数,后告诉学生每个阶段中测试的重要性,包括关于构建程序的单元测试和终产品的集成测试。书中给出了几个程序示例说明如何进行测试,这些程序可以在一些数据集上正确运行,而在另一数据集上运行时却可能失败。
通过学习本书可以知道标准的程序设计过程是:
(1)清晰地说明要解决的问题。
(2)定义程序需要的输入和将产生的输出。
(3)描述打算用于程序的算法。这一步涉及自顶向下、逐步分解、伪代码或流程图。
(4)把算法转换成Fortran程序。
(5)测试程序。这一步包括对于特定子例程的单元测试,也包括用许多不同数据完成终程序的集成测试。
4.过程
本书强调用子例程和函数来实现在逻辑上大任务分解出来的子任务,并利用过程隐藏数据,还强调要重视在将子任务集成为后的程序之前的单元测试。另外,书中还介绍了使用过程时常见的错误,以及怎样避免这些错误(参数类型不匹配、数组长度不匹配等)。书中强调对过程要用好显式接口,因为它使得在对Fortran编译时,编译器能尽可能多地捕捉常见的编程错误。
5.简版和标准版Fortran
本书强调编写简洁Fortran代码的重要性,因为这样才可以很容易地实现代码在不同类型计算机之间的移植。书中还教授学生在自己的程序中一定要用标准版的Fortran语句,以便代码达到限度的简洁。另外,书中还教授多用像SELECTED_REAL_KIND函数这样的特性,以避免在不同机器上运行程序时,发生数据精度和类别不同的问题。
本书也教授学生不要在少数特殊的过程中用与机器型号有关的代码(如调用与机器系统有关的类库文件),以免在移植程序时不得不重写这些代码。
6.良好的编程习惯
当介绍良好编程习惯时,便于对学生强调它们,这些知识点被突出表示,以示强调这是好的编程做法。另外,每章介绍的“良好的编程习惯”在每章后都进行了小结。下面举例说明书中如何标示“良好的编程习惯”知识点。
7.编程警示
书中对编程时需要注意的事项进行了突出表示,以提示要避免它们的发生。下面举例说明书中如何标示“编程警示”知识点。
8.指针和动态数据结构
第15章详细讨论了Fortran指针,包括指针使用不正确可能带来的问题。如内存不足,指针指向的空间将得不到分配。书中给出了很多动态数据结构示例,包括链表和二叉树。
第16章讨论了Fortran的对象和面向对象编程,包括涉及程序多态性的动态指针的使用。
9.注意事项
本书中有很多的注意事项,这些注意事项列出的是学生可能感兴趣的其他信息。某些注意事项实质上展示了Fortran的发展史。例如,第1章有一条注意事项描述了IBM Model 704,这是台运行Fortran的机器。另有一条注意事项是对书本知识的补充。再如,第9章的一条注意事项回顾和概述了Fortran中数组的多处不同。
10.知识点完整参考资料
后,书中给出了现代Fortran语言的完整参考资料,以便读者在实际应用中能快速查找需要的相关知识点。这里把特别关注点列入在特性表中,很容易查阅,其中包括晦涩和难于理解的特性,如通过地址引用传递过程名,在表控输入语句中的默认值等。
本书教学特点
为了便于学生理解书中所讲内容,本书有如下设计特点:
每章开头列出了本章学习目标。共有27个测验分布于全书之中,相应答案在附录F。这些测验能帮助读者自我检验学习效果。另外,有大约360个练习出现在各章节之后,全部练习答案在图书网站可以找到,当然练习答案在教师参考手册上也有包含。各章中“良好的编程习惯”均加粗强调,常见的错误在“编程警示”中给出了提醒,各章末尾也对“良好的编程习惯”和Fortran语句和结构进行了小结,后附录C给出了Fortran内置过程的详细说明,附录E列出了全部的术语。
本书有教师参考手册,其中含有各章练习答案,教师也可在该图书网站的教师参考手册中找到答案,书中全部例题源代码和相关的补充材料也可以从图书网站上下载获得。
关于Fortran编译器的注意事项
在写作本书的时候,我用过两种Fortran编译器:Intel Visual Fortran Version 16.0和GNU G95 Fortran编译器。两个编译器对Fortran 2008的完整功能基本实现,仅有非常少的几项功能不支持,同时这两种编译器对Fortran 2015未来的实现特性的建议给予了关注。
在此,我对潜在的用户强烈推荐该两编译器,因为Intel Fortran的优点是很好地集成了调试环境,但其缺点是价格偏高。G95编译器则可以免费使用,但其调试功能相对难用。
用户后的注意事项
无论我多么努力地审校本书,书中还是会存在一些印刷和打印错误,如果读者发现这些错误,请通过出版社告诉我,我将在重印和改版时努力修正它们。对于你的帮助与支持我深表感谢。
在本书网站上我将提供完整的勘误表和错误改正说明,网址是www.mhhe.com/ chapman4e,如果需要获取修订信息和更新请查看该网站。
致谢
在此我对Raghu
Srinivasan和McGraw-Hill教育团队为本次图书修订所做的工作深表感谢。另外,我要感谢我的妻子Rosa和女儿Devorah,她们在本次图书修订过程中给予了我大力支持(在前一版的图书修订中,我也对其他7个孩子给予了感谢,但是这次他们均已长大成人)。
Stephen J. Chapman
Melbourne, Victoria,
Australia
评论
还没有评论。