华科fortran第3章1 Fortran语言程序设计初步.ppt
华科fortran第3章1 Fortran语言程序设计初步 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望 5050年代末诞生了第一个主要用于科学计算的高级语言年代末诞生了第一个主要用于科学计算的高级语言FORTRANFORTRAN语言。语言。FortranFortran是英文是英文FORmula TRANslationFORmula TRANslation的的缩写,意为缩写,意为“公式翻译公式翻译”。它是为科学、工程问题中的那些能够用数学公式表它是为科学、工程问题中的那些能够用数学公式表达的问题而设计的语言,主要用于数值计算。这种语言达的问题而设计的语言,主要用于数值计算。这种语言简单易学,因为可以像抄写数学教科书里的公式一样书简单易学,因为可以像抄写数学教科书里的公式一样书写数学公式,它比英文书写的自然语言更接近数学语言。写数学公式,它比英文书写的自然语言更接近数学语言。FORTRANFORTRAN语言简介语言简介3.1 Fortran3.1 Fortran语言的发展概况语言的发展概况 FortranFortran语言是第一个真正推广的高级语言。至今它已语言是第一个真正推广的高级语言。至今它已有五十多年历史,但仍历久不衰,始终是数值计算领域所使有五十多年历史,但仍历久不衰,始终是数值计算领域所使用的主要语言。用的主要语言。FortranFortran语言问世以来,根据需要几经发展,语言问世以来,根据需要几经发展,先后推出形成了很多版本。先后推出形成了很多版本。FortranI:FortranI:第一代第一代FortranFortran语言语言,在在19541954年提出来的,于年提出来的,于19561956年在年在IBM 704IBM 704计算机上得以实现。计算机上得以实现。FortranII:FortranII:是是19581958年出现的,它对年出现的,它对FortranIFortranI进行了很多扩进行了很多扩充充(如引进了子程序如引进了子程序),FortranIIFortranII在很多机器上得以实现。在很多机器上得以实现。FortranIII:FortranIII:未在任何计算机上实现。未在任何计算机上实现。FortranIV:FortranIV:19621962年出现。对原来的年出现。对原来的FortranFortran作了一些改作了一些改变,使得变,使得FortranIIFortranII源程序在源程序在FortranIVFortranIV编译程序下不能编译程序下不能全部直接使用,导致了语言不兼容的问题。这样就形成全部直接使用,导致了语言不兼容的问题。这样就形成了当时同时使用了当时同时使用FortranIIFortranII和和FortranIVFortranIV两种程序设计语两种程序设计语言的局面。言的局面。Fortran66Fortran66:19661966年年正正式式公公布布了了两两个个美美国国标标准准文文本本:标标准准基基 本本 Fortran Fortran X3.10-1966 X3.10-1966(相相 当当 于于 FortranII)FortranII)和和 标标 准准Fortran X3.9-1966(Fortran X3.9-1966(相当于相当于FortranIV)FortranIV)。问题:问题:u 很多编译程序并不向这一标准靠拢,它们往往为实现很多编译程序并不向这一标准靠拢,它们往往为实现一些有用的功能而忽略标准;一些有用的功能而忽略标准;u FortranIV FortranIV、6666都不是结构化的语言,没有直接实现三都不是结构化的语言,没有直接实现三种基本结构的语句,在程序中往往需要用一些以种基本结构的语句,在程序中往往需要用一些以GOTOGOTO语句语句以实现特定的算法;以实现特定的算法;u 而且为了使非标准的而且为了使非标准的FortranFortran源程序能够交换移植,产源程序能够交换移植,产生了生了“预处理程序预处理程序”,通过预处理程序读入非标准的,通过预处理程序读入非标准的FortranFortran源程序,生成标准的源程序,生成标准的FortranFortran文本,从而实现了源文本,从而实现了源程序的交换移植,但这种自动生成的程序的交换移植,但这种自动生成的FortranFortran程序通常让人程序通常让人难以理解。难以理解。Fortran77Fortran77:美国标准化协会在美国标准化协会在19761976年对年对ANSI X3.9-ANSI X3.9-1966 Fortran1966 Fortran进行了修订,基本上把各厂家行之有效的功进行了修订,基本上把各厂家行之有效的功能都吸收了进去,此外又增加了不少新的内容,能都吸收了进去,此外又增加了不少新的内容,19781978年年4 4月美国标准化协会正式公布将它作为美国国家标准,即月美国标准化协会正式公布将它作为美国国家标准,即ANSI X3.9-1978 FortranANSI X3.9-1978 Fortran,称作,称作Fortran77Fortran77。Fortran77Fortran77还还不不是是完完全全结结构构化化的的语语言言,但但由由于于增增加加了了一一些些结结构构化化的的语语句句,使使Fortran77Fortran77能能用用于于编编写写结结构构化化程程序序。此此外外,还还扩扩充充了了字字符符处处理理功功能能。使使FortranFortran不不仅仅可可用用于于数数值计算领域还可以适用于非数值运算领域。值计算领域还可以适用于非数值运算领域。Fortran90Fortran90:因因为为Fortran77Fortran77有有着着明明显显的的局局限限性性,为为了了引引入入一一些些新新的的功功能能,适适应应语语言言的的发发展展,19911991年年通通过过了了Fortran90Fortran90新新标标准准ANSI ANSI X3.198-1991 X3.198-1991,相相应应的的国国际际化化标标准准组织的编号为组织的编号为ISO/IEC1539:1991ISO/IEC1539:1991。新新的的FortranFortran标标准准废废弃弃了了过过时时的的严严格格的的源源程程序序书书写写格格式式,改改善善了了语语言言的的正正规规性性,并并提提高高了了程程序序的的安安全全性性,功功能能有有更更大大的的扩扩充充,是是一一个个能能适适应应现现代代程程序序设设计计思思想想的的现现代代程程序序设设计语言。计语言。为为了了保保护护对对Fortran77Fortran77用用户户在在软软件件开开发发上上的的巨巨大大投投资资,整个整个Fortran77Fortran77被作为被作为Fortran90Fortran90的一个严格子集。的一个严格子集。对科学计算特别有益之一是自动存储、假定形状数组、对科学计算特别有益之一是自动存储、假定形状数组、可选参数、结构和指针。用更友好的接口把软件很好地工可选参数、结构和指针。用更友好的接口把软件很好地工程化。程化。FORTRAN 2000FORTRAN 2000:全面引入面向对象的编程思想。全面引入面向对象的编程思想。FORTRANFORTRAN已经完全赶上了编程语言的潮流。已经完全赶上了编程语言的潮流。Fortran95Fortran95:它的设计在它的设计在19951995年年1111月完成,是月完成,是Fortran90Fortran90的最小扩展。的最小扩展。u 学习学习FortranFortran语言的意义在于继承传统和紧跟时代。语言的意义在于继承传统和紧跟时代。u 科科学学计计算算编编程程的的专专家家认认为为,科科学学与与工工程程相相关关专专业业的的学学生生应该采用应该采用FortranFortran而非而非C C和和C+C+编程。编程。这这是是因因为为,Fortran90Fortran90具具有有C+C+所所有有的的重重要要功功能能(,然然而而C C语语言言主主要要是是用用于于微微机机上上的的廉廉价价开开发发,而而FortranFortran的的目目的的是是为为了了产产生生高高效效最最优优化化运运行行的的可可执执行行程程序序,用用FortranFortran编编写写的的大大型型科科学学计计算算软软件件较较C C语语言言编编写写的的通通常常要要快快一一个个数数量量级级,其其程程序编写更为自然和高效,且易学易懂。序编写更为自然和高效,且易学易懂。u 尤尤其其是是在在高高性性能能并并行行计计算算逐逐渐渐成成为为时时代代必必然然的的今今天天,不不仅仅巨巨型型机机而而且且微微机机和和工工作作站站也也有有了了多多处处理理器器,其其串串行行机机上上的的线线性性内内存存模模式式已已不不再再适适用用,而而只只有有FortranFortran具具备备处处理理相相应应问问题题的的标标准准并并行行化化语语言言,其其独独特特的的数数组组操操作作充充分分体体现现了了它它的先进性。的先进性。为什么选择学习为什么选择学习FortranFortran为什么选择为什么选择 Fortran77 Fortran77u 由于很多用户在由于很多用户在FortranFortran程序上作了巨大的投资,许多程序上作了巨大的投资,许多大型科学计算大型科学计算FortranFortran程序程序(有些长达数十万条语句有些长达数十万条语句),如,如分子动力学模拟计算分子动力学模拟计算(C60-C240(C60-C240的碰撞的碰撞)等程序仍在频繁等程序仍在频繁地使用。地使用。u 在科技领域内某些标准程序库(在科技领域内某些标准程序库(International International Mathematics and Statics Library,Numerical Mathematics and Statics Library,Numerical Algorithms GroupAlgorithms Group)内有数千以上的子程序是用)内有数千以上的子程序是用FortranFortran写的,特别是早期的程序都是用写的,特别是早期的程序都是用Fortran77Fortran77编写的,这些编写的,这些程序库已通过长期使用验证了稳定性。程序库已通过长期使用验证了稳定性。u 科学研究经常需要使用或改编以前的程序,这时必须科学研究经常需要使用或改编以前的程序,这时必须了解了解Fortran77Fortran77的编程手法。的编程手法。因此,仍然需要学习将因此,仍然需要学习将Fortran77Fortran77作为基础,但随时与作为基础,但随时与Fortran90Fortran90比较不同之处。比较不同之处。Fortran90/95Fortran90/95是是具具有有强强烈烈现现代代特特色色的的语语言言,总总结结了了现现代代软软件件的的要要求求与与算算法法应应用用的的发发展展,增增加加了了许许多多现现代代特特征征的的新新概概念念、新新功功能能、新新结结构构、新新形形式式。Fortran90Fortran90的的现现代代特性表现在:特性表现在:Fortran90/95Fortran90/95 u 加强了程序的可读性、可维护性:加强了程序的可读性、可维护性:淘淘汰汰所所有有转转移移语语句句,用用新新的的控控制制结结构构实实现现选选择择分分叉叉与重复操作,使程序结构化。与重复操作,使程序结构化。同同时时增增加加了了结结构构块块、模模块块及及过过程程的的调调用用灵灵活活形形式式,使使程程序序易易读读易易维维护护,新新的的模模块块装装配配取取代代了了Fortran77Fortran77的的许许多多旧旧语语句句,使使程程序序员员更更为为清清晰晰明明确确地地定定义义全全局局数数据。据。增增加加了了新新的的数数据据种种别别说说明明,使使得得FortranFortran程程序序在在不不同计算机编译环境下有更自由的移植性。同计算机编译环境下有更自由的移植性。u 发展了现代算法功能:发展了现代算法功能:加加强强了了数数组组的的算算法法功功能能,引引进进了了多多种种数数组组操操作作功功能能与与概概念念,使使数数组组像像一一个个变变量量一一样样自自由由操操作作,使使数数组组的的并并行行化化运运算成为可能。算成为可能。增增加加了了适适于于操操作作数数据据结结构构的的派派生生类类型型,提提高高了了文文字字处处理理功功能能,胜胜任任信信息息管管理理系系统统、办办公公自自动动化化的的任任务务。特特别别是是动动态态存存储储功功能能的的引引进进极极大大地地加加强强了了它它在在数数值值计计算算领领域域中中应应用用的威力。的威力。u 扩大与编程者的友好界面:扩大与编程者的友好界面:新新的的编编程程形形式式减减少少了了烦烦琐琐与与格格式式束束缚缚,接接近近自自然然语语言言与与公式演算。公式演算。允允许许在在字字符符数数据据中中选选取取不不同同种种别别,在在字字符符串串中中可可使使用用各各国国文文字字(例例如如汉汉字字),还还可可任任意意使使用用化化学学、物物理理、数数学学的的各种专业字符。各种专业字符。例例1.1 1.1 输入两个数,求算数平均和几何平均值。输入两个数,求算数平均和几何平均值。1.0 2.0 1.0 2.0 键盘输入键盘输入(a,b)(a,b)值值 1.500000 1.414214 1.500000 1.414214 计算结果输出至屏幕计算结果输出至屏幕F77F77的固定书写格式的固定书写格式 PROGRAM Example_1_1 PROGRAM Example_1_1 C-求两种平均値求两种平均値-(注释行)(注释行)REAL a,b,av1,av2 REAL a,b,av1,av2 READ(*,*)a,b READ(*,*)a,b av1=(a+b)/2 av1=(a+b)/2 av2=sqrt(a*b)av2=sqrt(a*b)WRITE(*,*)av1,av2 WRITE(*,*)av1,av2 END END3.2 简单的简单的FORTRAN 77程序分析程序分析F90F90的自由格式的自由格式PROGRAM Example_1_1 PROGRAM Example_1_1 !求两种平均値求两种平均値REAL:a,b,av1,av2REAL:a,b,av1,av2READ*,a,bREAD*,a,bav1=(a+b)/2;av2=(a*b)*0.5av1=(a+b)/2;av2=(a*b)*0.5PRINT*,av1,av2PRINT*,av1,av2ENDEND 程序説明:程序説明:程序中第程序中第1 1行是注释行,对程序起说明作用。行是注释行,对程序起说明作用。F77 F77注释行是以注释行是以“C“C”或或“*”作为该行第一个字符的,作为该行第一个字符的,F90 F90可在任意一行末以可在任意一行末以“!“!”开始作为注释符。开始作为注释符。第第2 2行是主程序名,第行是主程序名,第3 3行是变量类型定义,第行是变量类型定义,第4 4行是输入语句,行是输入语句,第第5 56 6行是赋值部分,第行是赋值部分,第7 7行是打印输出语句,最后是程序结束。行是打印输出语句,最后是程序结束。F90 F90中用中用“;”将两行并为一行。将两行并为一行。例例1.2 输入圆錐底面输入圆錐底面半径半径R,高度,高度H,求体积和表面积求体积和表面积。从数学公式中知道:从数学公式中知道:V=V=R R2 2H/3H/3圆锥侧面积圆锥侧面积圆锥体积圆锥体积-求圆錐体积和表面积求圆錐体积和表面积-F77F77的固定书写格式的固定书写格式*EXAMPLE 1_2 EXAMPLE 1_2 REAL R,H,S,V REAL R,H,S,V PI=3.1415926 PRINT*,Input radius r and height h?PRINT*,Input radius r and height h?READ(*,*)R,H READ(*,*)R,H S=PI*R*SQRT(R*R+H*H)S=PI*R*SQRT(R*R+H*H)V=PI*R*2*H/3 V=PI*R*2*H/3 PRINT*,Volume=,V PRINT*,Volume=,V PRINT*,Area =,S PRINT*,Area =,S ENDENDF90F90的自由格式的自由格式 PROGRAM Example_1_2 PROGRAM Example_1_2 REAL:pi,r,h,v,s REAL:pi,r,h,v,s pi=3.141593 pi=3.141593 PRINT*,Input radius r and height h?PRINT*,Input radius r and height h?READ*,r,h READ*,r,h v=pi*h*r*2/3.0 v=pi*h*r*2/3.0 s=pi*r*(r+sqrt(r*2+h*2)s=pi*r*(r+sqrt(r*2+h*2)PRINT*,Volume=,v PRINT*,Volume=,v PRINT*,Area =,s PRINT*,Area =,s END END 例例1.3 1.3 分分别别求求半半径径R=1R=1,3 3,12.512.5时时的的圆圆周周长长。此此源源程序由二部分组成:主程序和子程序。程序由二部分组成:主程序和子程序。F90F90的自由格式的自由格式real:r(3)real:r(3)!MAIN PROGRAMMAIN PROGRAMdata r/1,3,12.5/data r/1,3,12.5/do i=1,3do i=1,3 print*,print*,半径半径,r(i),r(i),圆周长圆周长,c c(r(i)(r(i)end doend doendendfunction function c c(radius)(radius)!SUB PROGRAM SUB PROGRAM pi=acos(-1.0)pi=acos(-1.0)c=2*pi*radius c=2*pi*radius return returnendend F77F77的固定书写格式的固定书写格式C MAIN PROGRAMC MAIN PROGRAM PROGRAM EX3 PROGRAM EX3 REAL R(3)REAL R(3)DATA R/1,3,12.5/DATA R/1,3,12.5/DO 10 I=1,3 DO 10 I=1,3 PRINT *,PRINT *,R R,r(i),r(i),C C,C(R(I),C(R(I)10 CONTINU 10 CONTINU ENDENDC SUB PROGRAMC SUB PROGRAMFUNCTION C(R)FUNCTION C(R)PI=3.1415925 PI=3.1415925 C=2*PI*R C=2*PI*R RETURN RETURNEND END u 一个一个FortranFortran程序由一个或若干个程序单位组成。程序由一个或若干个程序单位组成。主主程程序序和和辅辅程程序序分分别别是是一一个个独独立立的的程程序序单单位位。主主程程序序单单元元起起整整体体控控制制作作用用,各各辅辅程程序序单单元元完完成成总总问问题题中中的的一一个个子子问题。问题。u 每每一一个个程程序序单单位位都都是是以以ENDEND语语句句结结束束的的。ENDEND既既是是一一个个程序单位的结束标志,又是一个独立的语句程序单位的结束标志,又是一个独立的语句(结束语句结束语句)。主程序中的主程序中的ENDEND语句的作用语句的作用-是使程序是使程序“停止运行停止运行”。辅程序中的辅程序中的ENDEND语句语句-是是“使流程返回调用程序使流程返回调用程序”。FortranFortran程序的特点程序的特点 u 一个程序单位包括若干行。一个程序单位包括若干行。F77F77规规定定,一一行行只只能能写写一一个个语语句句,一一行行中中不不能能写写几几个个语语句句。如如果果一一个个语语句句太太长长,一一行行内内写写不不下下的的话话,可可以以写写在在继继续续行行(要用要用“续行标志续行标志”)。F77 F77行分为下面两类。行分为下面两类。语句行:语句行:由一个由一个FortranFortran语句组成,语句组成,Fortran Fortran语句分语句分为执行语句和非执行语句。为执行语句和非执行语句。执行语句执行语句使计算机在运行时产生某些操作,如赋值使计算机在运行时产生某些操作,如赋值语句、打印语句等。语句、打印语句等。非执行语句非执行语句(包括说明语句,数据语句等包括说明语句,数据语句等)将有关信将有关信息通知编译系统,以便在编译时作出相应的处理,例如息通知编译系统,以便在编译时作出相应的处理,例如类型说明语句、函数子程序语句等。类型说明语句、函数子程序语句等。非非语语句句行行:即即注注释释行行它它不不是是FortranFortran语语句句,它它不不被被翻翻译译成成机机器器目目标标指指令令。不不产产生生任任何何机机器器操操作作。它它仅仅仅仅是是为为了了人人们们阅阅读读程程序序的的方方便便而而加加到到程程序序中中的的。一一个个程程序序中中注注释释行行的的数数目目不不受受限限制制,根根据据需需要要而而定定。但但一一个个程程序序单单位位不不能能只只由由注注释释行行组组成成。注注释释行行的的内内容容完完全全是是根根据据程程序序设设计计人人员员需需要要而而写写的的,一一般般是是为为程程序序(或或程程序序中中一一部部分分)的的作作用作注释以易于理解程序。用作注释以易于理解程序。F90 F90行不分类。注释可以写在任一行末尾,而且行不分类。注释可以写在任一行末尾,而且一行不限语句数,可以将几个一行不限语句数,可以将几个F77F77行合并写入一行。这行合并写入一行。这样,极大地简化了程序写法,使得程序可以编写得更为样,极大地简化了程序写法,使得程序可以编写得更为清晰明了。因此清晰明了。因此F90F90的格式较的格式较F77F77有柔软性。有柔软性。u FortranFortran程程序序中中的的语语句句可可以以有有标标号号。一一个个语语句句有有否否标标号号是是根根据据需需要要而而定定,其其作作用用是是标标志志一一个个语语句句以以便便被被其其它它语语句句引引用用。在在同同一一个个程程序序单单元元中中不不能能有有两两个个相相同同标标号号的的语句。标号不影响语句的执行顺序。语句。标号不影响语句的执行顺序。在在F90F90中因为提倡结构化程序设计,一般不使用标号。中因为提倡结构化程序设计,一般不使用标号。u 一个程序单位中各类语句的位置是有一定规定的。一个程序单位中各类语句的位置是有一定规定的。例如例如 PROGRAM PROGRAM语句应是主程序的第一个语句语句应是主程序的第一个语句 FUNCTION FUNCTION语句是函数子程序的第一个语句语句是函数子程序的第一个语句 SUBROUTINE SUBROUTINE语句是语句是SUBSUB子程序的第一个语句子程序的第一个语句 END END语句只能是程序单位中最后一行。语句只能是程序单位中最后一行。主程序主程序 PROGRAM PROGRAM 程序程序名名 语句可省略语句可省略 .END PROGRAM END PROGRAM 程序程序名名 END END必须有必须有FORTRAN FORTRAN 程序的构成程序的构成a)a)程序单位程序单位辅程序辅程序(过程过程)SUBROUTINE SUBROUTINE 子程序子程序 FUNCTION FUNCTION 函数函数 BLOCK DATA BLOCK DATA 块数据块数据 MODULE MODULE 模块模块(F90)F90)内部过程内部过程CONTAINS(F90)CONTAINS(F90)各各程程序序单单位位(除除模模块块程程序序单单位位外外)的的程程序序体体形形式式相相同同,共共分分两两部部分分:前前面面是是说说明明部部分分,后后面面是是执执行行部部分分(模模块块程程序序单单位位只只有有说说明明部部分分),两两部部分分之之间间没没有有确确切切的的分分界界,紧紧密密衔衔接,但不准彼此穿插。接,但不准彼此穿插。即:程序单位单位起始语句程序体单位结束语句。即:程序单位单位起始语句程序体单位结束语句。程序体说明部分执行部分。程序体说明部分执行部分。P PROGRAMROGRAM,FUNCTIONFUNCTION,SUBROUTINESUBROUTINE,BLOCK DATABLOCK DATA等程序单位开始语句等程序单位开始语句 变量类型和语句函数等定义语句变量类型和语句函数等定义语句(说明部分说明部分)执行语句,执行语句,DATADATA语句,语句,FORMATFORMAT语句语句 (执行部分执行部分)ENDEND语句语句b)b)程序体和语句顺序程序体和语句顺序Fortran要要求求严严格格的的语语句句顺顺序序。在在每每个个程程序序单单位位中中,根根据据语语句句种种类类按按如如下下的的次次序序排排列列。F77中中的的顺顺序序可可简简单单归归纳为:纳为:在在F90F90中将新增加的语句功能综合后,其顺序为:中将新增加的语句功能综合后,其顺序为:PROGRAM,FUNCTION,SUBROUTINE,MODULE,BLOCK DATAUSEFORMATENTRYIMPLICIT NONEPARAMETERIMPLICITPARAMETER&DATA定义:派生类型、接口块、变量类型、语句函数DATA执行结构CONTAINS内部过程或模块过程END整个程序中只能有一个整个程序中只能有一个PROGRAMPROGRAM,一个,一个BLOCK DATABLOCK DATA,可以,可以有多个各自命名的有多个各自命名的FUNCTIONFUNCTION和和SUBROUTINESUBROUTINE辅程序。辅程序。c)c)英文名英文名变变量量名名和和程程序序名名等等使使用用的的英英文文名名是是由由(F77(F77:6 6;F90F90:31)31)个个字字符符(包包含含英英文文字字母母A-ZA-Z、数数字字0-90-9、F90:F90:下下划划线线 _)_)构构成成,且且第第一一个个字字符符必必须须是是字字母母。其其英英文文名名的的有有效效使使用用范范围围原原则则上限于一个程序单位之内(内部过程除外)。上限于一个程序单位之内(内部过程除外)。如下面的语句是错误的:如下面的语句是错误的:INTEGER:1A !INTEGER:1A !不是以字母开头不是以字母开头 INTEGER:A_name_made_up_of_more_than_31_letters !INTEGER:A_name_made_up_of_more_than_31_letters !太长太长 INTEGER:China:0 !INTEGER:China:0 !含有不允许的字符含有不允许的字符 INTEGER:A-3 !INTEGER:A-3 !减号在此是无意义的减号在此是无意义的 d)d)标号和标签标号和标签可可在在语语句句开开头头加加上上标标号号或或标标签签,用用于于指指定定特特定定的的语语句句。有效范围限于一个程序单位内。有效范围限于一个程序单位内。标标号号:1-51-5位位的的1010进进制制整整数数,且且至至少少一一位位不不为为0 0,前前导导0 0不不起作用。起作用。F90F90中,不可对空语句加上语句标号。中,不可对空语句加上语句标号。例:例:DO10k=1,100.10CONTINUE标签标签:英文名,后面接:英文名,后面接“:”(冒号)(冒号)(F90)注:不能使用整型变量来指定转向语句的标号。如下是错误的。注:不能使用整型变量来指定转向语句的标号。如下是错误的。n=10GOTOn例:例:DOk=1,100loop2:DO.ENDDOloop2!已有已有标签标签名名时时不能省略不能省略标签标签名。名。ENDDO a)a)固定格式固定格式FortranFortran作为历史上第一种高级语言,其程序编写的规则作为历史上第一种高级语言,其程序编写的规则与当时使用的计算机系统有很大的关系。早期的计算机与当时使用的计算机系统有很大的关系。早期的计算机系统须用卡片将源程序输入,一张卡片相应于源程序的系统须用卡片将源程序输入,一张卡片相应于源程序的一行。由于卡片物理宽度的限制,因此一行程序允许的一行。由于卡片物理宽度的限制,因此一行程序允许的字符数也是有限的。由此决定了字符数也是有限的。由此决定了F77F77的格式,既为的格式,既为F90/95F90/95中的固定格式中的固定格式。3.3 FORTRAN3.3 FORTRAN源程序的书写格式源程序的书写格式 标号区:第标号区:第l l5 5列列可可以以写写l l至至5 5位位整整数数。也也可可以以没没有有标标号号。标标号号区区中中的的空空格格不不起起作作用用。如如lOOlOO与与100 100 或或1 1 0 0 0 0作作用用相相同同。标标号号应应是是无无符符号号整整数数(无无正正负负号号或或小小数数点点)。标标号号大大小小顺顺序序没没有有任任何何要要求求。假假如如第第二二行行的的标标号号为为10001000,第第三三行行的的标标号号可可以以是是1010,也可以是,也可以是9999999999。标标号号区区内内不不得得出出现现标标号号以以外外的的内内容容,但但注注释释行行例例外外。注注释释行行的的内内容容可可以以写写在在标标号号区区内内,一一行行中中第第一一列列为为C C或或*的的,该该行行即即被被认认为为注注释释行行,编编译译时时对对该该行行内内容容不不作作翻翻译译,对对程程序序运运行行不不产产生生任任何何影影响响。如如果果在在第第一一列列上上出出现现的的不不是是数字、空格或数字、空格或C C和和*的字符,编译时按出错处理。的字符,编译时按出错处理。一行分为四个区一行分为四个区,分别书写源程序不同部分的内容分别书写源程序不同部分的内容续行区:第续行区:第6 6列列如果在一行的第如果在一行的第6 6列上写一个列上写一个非空格和非零非空格和非零的字符,则的字符,则该行作为其上一行的续行。该行作为其上一行的续行。F77 F77允许一个语句有允许一个语句有1919个续行个续行(即一个语句最多可以即一个语句最多可以写成写成2020行行)。有的程序中第。有的程序中第6 6列上用列上用“l l”,“2 2”,表示该行是第表示该行是第1 1个或第个或第2 2个续行,但用数字字符容易与个续行,但用数字字符容易与第第7 7列的数字形成连续的数字串而引起错觉,故最好使列的数字形成连续的数字串而引起错觉,故最好使用固定的特殊字符。用固定的特殊字符。语句区:第语句区:第7 77272列列不不要要求求一一定定从从第第7 7列列开开始始写写语语句句,可可以以从从第第7 7列列以以后后(7272列列以以前前)的的任任何何一一列列开开始始写写,但但一一行行只只能能写写一一个个语语句句。如如果果写写满满了了7272列列,一一旦旦在在终终端端上上修修改改程程序序时时在在该该行行又又插插入入了了一一些些字字符符,就就会会使使本本行行最最后后几几个个字字符符超超出出语语句句区区而而引引起起意意料料不不到到的的错错误误。特特别别注注意意到到语语句句最最后后的的空空格格将将可可能能溢溢出出7272列列,在在某某些些计计算算机机系系统统上上将将导导致致难难以以查查出出的的错错误误。应应注注意意,引引号号内内的的字字符符串串中中所所包包括的空格是有效的,不能忽略。括的空格是有效的,不能忽略。注释区:第注释区:第73738080列列在在卡卡片片输输入入法法时时代代,程程序序员员一一般般利利用用此此8 8列列为为程程序序行行编编序序号号以以便便查查找找。注注释释区区只只对对程程序序员员提提供供辨辨别别信信息息,不不是语句的一部分,在编译时不对是语句的一部分,在编译时不对72728080列作处理。列作处理。续行标志区b)b)自由格式自由格式在在F90F90中中,用用自自由由格格式式编编写写程程序序有有很很大大的的自自由由度度。与与固固定定格式相比,不易产生键入位置的错误,而且易读易懂。格式相比,不易产生键入位置的错误,而且易读易懂。行行:一一行行为为132132列列。可可以以有有复复数数条条程程序序语语句句,语语句句间间用用分号分号“;”分开。语句没有位置规定。分开。语句没有位置规定。注注释释行行:起起始始用用注注释释符符“!”号号,此此行行其其后后的的所所有有字字符符均均作作 为为 注注 释释(字字 符符 串串 中中 的的!号号 除除 外外,如如 print print*,*,help!help!)。)。续续行行:当当一一个个语语句句非非常常长长以以至至于于132132列列都都书书写写不不下下时时,允允许许有有3939个个续续行行。在在语语句句行行最最后后加加上上续续行行符符“&”号号。如如果果字字符符串串跨跨2 2行行以以上上,则则在在续续行行的的开开始始位位置置也也要要加加&号号。注注意意语语句句的的有有效效字字符符是是从从“&”前前和和续续行行符符“&”之之后后的的位位置算起。置算起。INCLUDEINCLUDE行行很很多多时时候候一一个个完完整整程程序序的的源源码码还还可可以以原原封封不不动动地地移移植植到到另另一一个个程程序序源源码码的的中中间间,这这时时并并不不需需要要把把被被移移植植源源码码完完整地抄写过来,而只需要简单地运用整地抄写过来,而只需要简单地运用INCLUDEINCLUDE行即可。行即可。【例【例3-1】PROGRAM GREEN_FUNCTION PROGRAM GREEN_FUNCTION REAL X,Y,Z REAL X,Y,Z .INCLUDE INCLUDE GAUSEGAUSE .END END这样源码文件这样源码文件GAUSEGAUSE就直接进入程序就直接进入程序GREEN_FUNCTIONGREEN_FUNCTION的源的源码里面,取代了码里面,取代了INCLUDEINCLUDE行的位置。行的位置。INCLUDEINCLUDE行行只只是是针针对对编编译译器器的的一一个个提提示示,而而不不是是属于程序内的属于程序内的FORTRANFORTRAN语句。语句。INCLUDEINCLUDE行行必必须须放放置置在在程程序序当当中中,其其所所引引用用文文件件应应当出现的位置。当出现的位置。INCLUDEINCLUDE行行所所在在行行不不能能有有任任何何其其他他文文字字,包包括括标标识识符,当然可以有注释。符,当然可以有注释。INCLUDEINCLUDE行行可可以以进进行行嵌嵌套套,嵌嵌套套的的层层数数由由具具体体的的编编译器规定。注意在嵌套的同时不能导致定义循环。译器规定。注意在嵌套的同时不能导致定义循环。INCLUDE INCLUDE行之前的语句不能是被连续行,其后的语句行之前的语句不能是被连续行,其后的语句也不能是连续行。也不能是连续行。c)c)文件名文件名以以上上两两种种格格式式的的源源程程序序在在编编译译时时可可以以用用选选项项来来指指定定,对对应的默认文件扩展名为:应的默认文件扩展名为:固定格式:固定格式:.for.for或或.f.f 自由格式:自由格式:.f90.f90 运行一个运行一个FORTRANFORTRAN程序的过程程序的过程编编辑辑、编编译译、连连接接、运运行行Compaq Visual Fortran Compaq Visual Fortran 的集成开发环境的集成开发环境 (在在WINDOWSWINDOWS下下)操做顺序:1.进入WINDOWS 20002.选择E盘并建立自己的文件夹3.在“开始”菜单中选择“程序”“Compaq Visual Fortran 6”。4.进入Compaq Visual Fortran开发环境的主窗