资源描述:
《Fortran的主要版本及差别》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、、Fortran的主要版本及差别按其发展历史,Fortran编译器的版本其实很多。现在在广泛使用的是Fortran77和Fortran90。Fortran90在Fortran77基础上添加了不少使用的功能,并且改良了77编程的版面格式,所以编程时推荐使用90。鉴于很多现成的程序只有77版本,有必要知道77的一些基本常识,至少保证能够看懂77程序。以下是77和90的一些格式上的区别。Fortran77:固定格式(fixedformat),程序代码扩展名:.f或.for(1)若某行以C,c或*开头,则该行被当成注释;(2)每行前六个字符不能写程序代码,可空着,或者1~5字符以数字表明行代
2、码(用作格式化输入输出等);7~72为程序代码编写区;73往后被忽略;(3)太长的话可以续行,所续行的第六个字符必须是"0"以外的任何字符。Fortran90:自由格式(freeformat),扩展名:.f90(1)以"!"引导注释;(2)每行可132字符,行代码放在每行最前面;(3)以&续行,放在该行末或下行初。以下都是讨论Fortran90。3、Fortran的一些特点,和C的一些不同其实很多,在下面涉及具体方面时可以看到。这里只是大致提一些。(1)不分大小写(2)每句末尾不必要写分号(3)程序代码命令间的空格没有意义(4)不像C,Fortran不使用{}(5)数据类型多出了复数
3、和逻辑判断类型。比如复数类型complex::a!声明复数的方法。复数显然方便了科学计算,满足了工程方面的需求a=(1.0,2.0)!a=1+i(6)多出了乘幂运算(**)。乘幂除了整数还可以是实数形式。如开方,开立方a=4.0**0.5,a=8.0**(1.0/3.0)。(7)数组有一些整体操作的功能;可以方便的对部分元素进行操作(8)有些情况下可以声明大小待定的数组,很实用的功能4、Fortran的基本程序结构先看一看所谓的"HelloFortran"程序。programmain!程序开始,main是program的名字,完全自定义write(*,*)"Hello"!主程序sto
4、p!终止程序end[program[main]]!end用于封装代码,表示代码编写完毕。[]中的内容可省略,下同。再看一段实用一些的程序,好有点感性认识。程序用于计算圆柱的表面积,要求输入底面半径和高。其中展示了Fortran的一些特色用法。程序摘自维基。其实是一个叫www.answers.com的网上引用的维基的网页。推荐去看看!能查到不少有意思的东西。programcylinder!给主函数起个名字!Calculatetheareaofacylinder.!!Declarevariablesandconstants.!constants=pi!variables=radiussq
5、uaredandheightimplicitnone!Requireallvariablestobeexplicitlydeclared!这个一般都是要写上的。下面会进一步说明。integer::ierrcharacter::ynreal::radius,height,areareal,parameter::pi=3.1415926536!这是常量的声明方法interactive_loop:do!do循环,Fortran中的循环可以加标签,如do前!面的interactive_loop就是标签!Prompttheuserforradiusandheight!andreadthem.w
6、rite(*,*)'Enterradiusandheight.'!屏幕输出read(*,*,iostat=ierr)radius,height!键盘输入。isotat的值用于判断!输入成功否。!Ifradiusandheightcouldnotbereadfrominput,!thencyclethroughtheloop.if(ierr/=0)thenwrite(*,*)'Error,invalidinput.'cycleinteractive_loop!cycle相当于C里的continueendif!Computearea.The**means"raisetoapower."a
7、rea=2*pi*(radius**2+radius*height)!指数运算比C方便!Writetheinputvariables(radius,height)!andoutput(area)tothescreen.write(*,'(1x,a7,f6.2,5x,a7,f6.2,5x,a5,f6.2)')&!"&"表示续行。这里!还显示了格式化输出'radius=',radius,'height=',height,'area=',areayn=''yn_