第1章Fortran概述•作为一门诞生于上个世纪50年代后半期的高级计算机语言,Fortran在这个C/C++、Java等新兴语言大行其道的时代仍然活跃在人们的视野之中。Fortran语言的长项在于数值计算,在科学研究和工程设计领域有着广泛的用途。在描述数学语言的自然性方面,Fortran同现存的其他高级语言相比有着明显的优势。对于科研工作者和工程技术人员而言,Fortran语言的易学性和易用性是公认的。1.1Fortran起源•Fortran是英语中“公式(Formula)”和“翻译(Translation)”两个单词取前几个字母的缩写形式,意即“公式翻译”。Fortran主要面向科学研究、工程设计或企事业管理中经常遇到的能够用数学公式表达的数值计算问题。因为可以像抄写教科书里的公式一样书写数学表达式,它比用英文书写的自然语言更接近数学语言。这使得Fortran在科研工作者和工程技术人员中拥有庞大的使用人群。Fortran语言是第一个被正式推广的高级计算机语言。在四十多年的发展历程中,它始终是数值计算领域所使用的主要语言。本小节主要介绍Fortran的起源。•第一代Fortran语言是在1954年提出来的,称为FortranI。它于1957年在IBM704计算机上得以实现。其开发者巴科斯的目标是开发一种容易理解、简单易学又几乎能像汇编语言一样高效运行的计算机语言,他和他的团队在这一点上取得了极大的成功。但是这一计划在最初阶段并不被人们看好,这其中包括巴克斯的上司冯·诺依曼。1.2Windows下Fortran编译器使用•由于Windows操作系统有着庞大的用户群体,因此Windows系统下的编译器开发非常活跃。目前市场上常见的Fortran编译器包括VisualFortran系列、Salford的FTN系列、G95/gFortran的Windows版本、Absoft公司的AbsoftFortran,Macrovision公司的PGIVisualFortran等。这其中,影响较大、功能较全、性能较好、应用最广泛的Fortran编译器提供了集成开发环境的VisualFortran系列。•VisualFortran系列编译器起源于微软公司开发的FortranPowerStation4.0编译系统。该系统结合了当时微软最新开发的DevelopStudio集成开发环境(IDE),使得Fortran程序的开发方式跟上了时代的潮流。但是该编译系统在实际使用中出现的问题较多,例如没有严格的数组越界检查功能等。这套工具随后被卖给了数字设备(DEC)公司继续开发,随后产生了一个曾经非常流行的Fortran编译器系统。1.2.1安装CompaqVisualFortran•CompaqVisualFortran的安装过程比较简单。用户将安装光盘放入CD-ROM后,计算机会自动运行光盘中的安装程序。【SelectFolder】对话框安装欢迎界面1.2.2创建第一个Fortran工程•CompaqVisualFortran的图形用户界面直接使用了微软公司的DevelopStudio6.0集成开发环境,极大地方便了程序的编写、调试和修改。在图形界面下,编写、调试一个Fortran程序首先需要创建一个DeveloperStudio工程。1.2.3在Fortran工程中添加源代码•完成工程的基本设置之后,就可以向Fortran工程添加用户编写的源代码了。向Fortran工程中添加源代码可以参照下面的步骤来进行操作。1.2.4在Fortran工程中新建源文件•除了添加已有的源代码来对工程进行填充外,还可以在工程中创建新的源代码文件。在工程中创建新的源代码文件有两种方式可供选择。下面的图示演示了第一种操作方法。1.2.5在CompaqVisualFortran中编译源文件•在CompaqVisualFortran中有两种编译模式可供选择:一种是Debug模式(编译出来的程序姑且称作调试版本);另一种是Release模式(编译出来的程序姑且称作发行版本)。同一个源代码经过这两种编译模式编译出来的程序在执行效率和文件大小上都有很大区别:•编译程序在Debug模式下会向生成的可执行文件写入很多调试信息和控制语句,因此编译出来的可执行文件“个头大”、“跑得慢”。•在Release模式下,编译程序只会将源代码中的有效语句编译成可执行文件,因此编译出来的可执行文件“个头小”、“跑得快”。1.3Linux下常见Fortran编译器•作为开源的操作系统,Linux因其较好的安全特性也拥有较多的使用人群,特别是一些资质较深的计算机爱好者。在Linux系统下,常见的Fortran编译器包括GNU的Fortran77编译器G77、GNU的Fortran95编译器gFortran和G95、Intel公司开发的IntelFortranCompiler等。这里主要介绍gFortran和G95的基本用法。•在Linux系统下安装Fortran编译器需要在控制台窗口中进行。以G95编译器的安装为例,首先打开一个控制台窗口,并进入到想要安装G95编译器的文件夹中。接下来运行如下命令即可:•wget-O-|tarxvfz-•ln-s$PWD/g95-install/bin/i686-pc-linux-gnu-g95/usr/bin/g951.4常见编译器性能比较•各个编译器由于实现的方式有所区别,因此实际编译出的执行程序也有区别。这种区别主要体现在可执行程序的大小、程序的运行速度、编译所花费的时间等方面。本节主要给出Windows操作系统下,一些常见编译器的性能比较。程序员可以以此为参考,在软件开发时选择合适的编译器版本。编译器名称和版本号厂商或组织编译器名称版本号AbsoftAbsoftProFortran95,简称APF958.0CompaqCompaqVisualFortran,简称CVF6.6CSalfordSalfordFTN77,简称FTN774.02SalfordSalfordFTN95,简称FTN953.4.1605GNUG773.220020907IntelIntelFortranCompiler,简称IFC10.1LaheyLahey/FujitsuLF95,简称LF957.2N.A.SoftwareN.A.SoftwareFortranPlus,简称NAS2.21.5常用编辑器•通常,编译器厂商为了用户更方便使用,会随同编译器为用户提供简单的编辑器来书写源代码。例如,CompaqVisualFortran借用了微软的DevelopStudio6.0集成开发环境。IntelVisualFortran虽然没有集成可视化开发环境,但它可以嵌入到DevelopStudio.NET集成开发环境中。不过对于某些用户而言,他们更习惯使用独立的编辑器来进行源代码的编辑,而在命令行模式下对源代码进行编译调试。独立的源代码编辑器大多也能用于普通文本的编辑。很多程序设计语言的源代码文件同普通文本文件的差别仅仅是文件的扩展名不同而已。本文主要介艹S玫囊恍Fortran源代码编辑器和基本的使用方法。1.5.1UltraEdit•UltraEdit软件是IDMComputerSolutions公司开发的一款性能优秀、功能强大的文本编辑器,能够用于编写多种进制格式的文本文件和各种程序设计语言的源代码(如C、C++、JAVA、HTML等)。该编辑器配合自定义的语言配置文件,可以实现指定程序设计语言的语法高亮、代码折叠、自动缩进和补位、代码自动补全、列操作模式等功能。本小节主要介绍UltraEdit文本编辑器的基本用法。•在讲解UltraEdit的用法前,建议首先用保存在本书配套光盘/Tools/IDM文件夹中的wordfile.txt文本文件替换掉UltraEdit安装目录中的对应文件。光盘中的wordfile.txt文本文件已经由作者添加了Fortran语言的语法定义模块,收集了尽可能全的Fortran语句、内部函数、运算符、关键字等信息,添加了代码折叠、缩进和补位的定义,能够实现语法关键字的高亮显示、源代码折叠、自动缩进和补位等功能。在完成了语法配置文件的替换之后,就可以按照下图所示的步骤学习应用UltraEdit软件进行Fortran源代码编辑的过程。1.5.2ZionEdit•ZionEdit是一款定位于Windows平台下的开源源代码编辑器。软件作者的开发目标就是打造一个方便易用的源代码编辑环境。ZionEdit的体积小巧、功能完善、界面友好,是不可多得的开源源代码编辑器。目前该软件的最新版本为1.0.35版。•这款编辑器同样支持多种程序设计语言,能够定制语法高亮方案。特别是列编辑模式,能够方便的实现大段代码的整体注释。读者可以在软件作者的主页中获取相关的软件。1.5.2gEdit•gEdit是Linux系统下常用的一款文本编辑器。该编辑器体积不大、功能较为完善,能够支持语法自动高亮和自动保存。最主要的是该软件的使用较为简单,很容易上手。对于一些对功能要求不多、对操作的简易性较高的用户而言,是替代那些功能完善、操作复杂的专业软件,如Emacs、Vim等的不二之选。需要注意的是,gEdit只能运行在Linux的图形用户界面下,在字符模式下则不能正常运行。如果想在字符模式下进行Fortran源代码的编辑,建议学习Emacs、Vim等不需要图形环境的文本编辑器。1.6第一个Fortran程序——Hello!Fortran90/95•1.2节和1.5节分别介绍了几种常用的Fortran编译器和源代码编辑器。在对软件的介绍过程中,我们已经开始了与Fortran源代码的初步接触。在光盘\Program\chap01\文件夹中也提供了一段最简单的源代码。本节就主要通过对一个基本程序的介绍来使大家对Fortran程序有一个初步的认识。•对于了解C/C++语言的程序员肯定都非常熟悉一个著名的C/C++入门程序,即Hello!World。该程序通过最简单的几句代码使初学者对C/C++程序的结构有了一个基本的了解。本节将借鉴这一做法,对Fortran程序的基本结构进行讲解。•用UltraEdit、ZionEdit、gEdit或是CompaqVisualFortran编辑窗,输入如下代码段。•PROGRAMHELLO•IMPLICITNONE•PRINT*,“Hello!Fortran90/95”•ENDPROGRAMHELLO