Fortran语言(Fortran77结构化程序设计)普通高校计算机基础教学课程2020/1/102说明•第一章算法(略)•第二章计算机和计算机程序(略)2020/1/103第三章Fortran语言程序设计初步2020/1/1043.1Fortran语言的发展概况FORmulaTRANslator公式翻译器Fortran语言是一种适合于科学和工程计算问题的程序设计语言;也是计算机高级语言发展史上使用最早的一种程序设计语言。2020/1/1053.1Fortran语言的发展概况Fortran语言的发展过程:•1951年由约翰·贝克斯等人开始研究Fortran语言;•1957年第一个Fortran程序在IBM704机上运行;•1958和1962年先后推出FortranⅡ和FortranⅣ;•1966和1978年先后颁布Fortran66和Fortran77;•1991年颁布了Fortran90。•现在已经有了Fortran95,Fortran20032020/1/106Fortran语言的特征Fortran语言的最大特性是接近数学公式的自然描述,在计算机里具有很高的执行效率。易学,语法严谨。可以直接对矩阵和复数进行运算。自诞生以来广泛地应用于数值计算领域,积累了大量高效而可靠的源程序。很多专用的大型数值运算计算机针对Fortran做了优化。广泛地应用于并行计算和高性能计算领域。Fortran90,Fortran95,Fortran2003的相继推出使Fortran语言具备了现代高级编程语言的一些特性。2020/1/1073.2简单的Fortran程序分析例1:求一元二次方程x2+3x-5.6=0的根,并打印结果。•利用公式:•(这里,a=1,b=3,c=-5.6)aacbbx2422,12020/1/1083.2简单的Fortran程序分析编程如下:ctherootsofthequadraticequationa=1.0b=3.0c=-5.6x1=(-b+sqrt(b*b-4.0*a*c))/(2.0*a)x2=(-b-sqrt(b*b-4.0*a*c))/(2.0*a)write(*,100)x1,x2100format(1x,'x1=',f6.2,'x2=',f6.2)endaacbbx2422,12020/1/1093.2简单的Fortran程序分析执行结果:x1=1.30x2=-4.30例2:试求3!,6!,9!的值。编程如下:2020/1/10103.2简单的Fortran程序分析主程序:子程序:cmainprogramcsubprogramj=k(3)functionk(n)l=k(6)k=1m=k(9)i=2write(*,*)j,l,m5if(i.le.n)thenendk=k*ii=i+1执行结果:goto56720362880endifreturnend2020/1/10113.2简单的Fortran程序分析Fortran程序的基本结构:⑴一个Fortran源程序由一个或多个程序单位组成,每个程序单位以“end”语句结束。⑵每个程序单位包括若干行语句行(执行语句和非执行语句行)非语句行(注释行)⑶语句前可不设标号,也可根据需要设标号。⑷各类语句在程序单位中的位置有一定规则。⑸程序必须按规定格式书写。2020/1/10123.3Fortran源程序的书写格式Fortran77源程序必须按以下格式书写:⑴每行只能在80列内书写,并把80列分为4个区。⑵1~5列:标号区(1~5位无符号整数;第1列为“*”或“c”时,为注释行)⑶第6列:续行标志区(非空格或非零字符;最多19个续行)⑷7~72列:语句区(书写语句;一行只能写一条语句)⑸73~80列:语句注释区(一般作编号注释)2020/1/10133.4Fortran程序的编辑与运行FortranPowerStation4.0集成开发环境简介2020/1/10143.4Fortran程序的编辑与运行一、FortranPowerStation4.0的启动选“开始”→“程序”→“FortranPowerStation4.0”→“MicrosoftDeveloperStudio”。二、创建项目工作间选“File”→“New”→“ProjectWorkspace”→“ConsoleApplication”,并输入项目工作间名称(如:aaa)和存放项目工作间的位置或路径(如:c:\for\)→Create。2020/1/10153.4Fortran程序的编辑与运行三、给项目工作间添加和编辑文件打开指定的项目工作间→选“Insert”→“FileintoProject”→输入要添加的文件名(如:st01.for)→“Add”。然后按Fortran程序的书写规则编辑程序。四、编译项目工作间中的文件打开指定的文件→选“Build”→“Compilest01.for”。五、连编项目文件选“Build”→“Buildaaa.exe”。六、运行项目文件选“Build”→“Executeaaa.exe”。(显示程序执行结果)2020/1/10163.4Fortran程序的编辑与运行注:若Fortran程序是由一个主程序文件和若干个子程序文件组成,则应将各文件添加到同一项目工作间,分别进行编译,然后连编和运行项目文件。七、打开项目文件选“File”→“Open”→在打开对话框文件类型下拉列表中选“ProjectWorkspace(*.mdp)”→然后选项目工作间文件夹中的项目文件。2020/1/10173.5常量常量——在程序执行期间其值固定不变的量。Fortran处理六种类型的常量:⑴整型常量(Integer)⑵实型常量(Real)⑶双精度常量(Doubleprecision)⑷复型常量(Complex)⑸逻辑型常量(Logical)⑹字符型常量(Character)2020/1/10183.5常量3.5.1整型常量包括正、负整数和零。例:5,-13,0,…说明:①在(16位)微机中,整数的取值范围为:-215~215-1(-32768~32767)②在(32位)微机中,整数的取值范围为:-231~231-1(-2147483648~2147483647)2020/1/10193.5常量3.5.2实型常量(有二种表示形式)⒈小数形式例:15.8,-21.05,14.0,14.,.17,0.0,…⒉指数形式(通常表示较大或较小的数)例:100000000→1.0E+80.0000125→1.25E-05数字部分指数部分2020/1/10203.5常量说明:⑴一个数值用指数形式表示时有两种表达方式:①一个基本实数后面跟指数部分。例:0.876→8.76E-1-2589.4→-2.5894E+3②一个整数后面跟指数部分。例:0.876→876E-3-2589.4→-25894E-12020/1/10213.5常量⑵同一个数值可用不同的指数形式表示。例:0.876→8.76E-1→87.6E-2→876E-3⑶计算机在输出时,按标准化指数形式输出。例:0.28→2.800000E-01-59.58E+12→-5.958000E+13即数字部分大于1,且小数点前只有一位非零数字的指数输出形式。⑷在微机中,一般用四个字节存放一个实数,其取值范围为:10-75~1075。超出此范围时为“溢出”错误。2020/1/10223.5常量⑸下列形式为不合法的指数形式:①单独的小数点和单独的指数部分。例:.E5,E10×②指数部分只能是整数,不能带小数点。例:8E0.5,12.3E1.5×2020/1/10233.6变量变量——在程序执行期间其值可以改变的量。3.6.1变量的概念Fortran为每一个变量分配一个相应的存储单元;每个变量在每个时刻只能有一个确定的值。例:x=4.5xx=8.0x注:在程序中用到的变量都必须要有确定的值。4.58.02020/1/10243.6变量3.6.2变量名变量名——标识一个变量所用的名字。命名规则:•变量名的第一个字符必须是字母;•在第一个字符后可跟1~5个字母或数字。例:x,m1,total,k123,…2020/1/10253.6变量注意几点:⑴变量名不区分大小写字母。例:TOTAL,Total,total代表同一变量⑵变量名中的空格不起作用。例:abc,abc,abc,abc代表同一变量⑶变量名尽量做到“见名知义”AVER、SUM、Imax⑷允许变量名与语言中具有特定含义的字(“保留字”)同名。例:sin,read,open,end,…建议不要使用fortran中具有特定含义的字作变量名2020/1/10263.6变量3.6.3变量的类型Fortran能处理各种类型的变量。不同类型的变量用来存放不同类型的数据。变量类型的说明(三种方式)⒈隐含说明即以I、j、k、l、m、n开头的变量为整型变量,以其它字母开头的变量为实型变量。(“I~N规则”)例:imax,m5,number,…为整型变量v,h2,aver,…为实型变量2020/1/10273.6变量⒉显式说明即用类型说明语句指定变量的类型。如:Integer——说明变量为整型变量Real——说明变量为实型变量Doubleprecision——说明变量为双精度变量Complex——说明变量为复型变量Logical——说明变量为逻辑型变量Character——说明变量为字符型变量2020/1/10283.6变量如:Integerabc,xyzrealimax,k3logicala1,kpz⒊用implicit语句说明即说明用某一字母开头的变量为指定的类型。例:implicitinteger(a,b),real(k)implicitinteger(x-z)2020/1/10293.6变量三种类型说明的优先级:高类型说明语句(显式说明)implicit语句说明低“I~N规则”2020/1/10303.7Fortran内部函数在编制Fortran程序时,经常要用到一些基本的数学函数,如三角函数、指数函数、对数函数等。为方便用户,Fortran编译系统已提供了这些函数的计算程序,需要时即可调用。Fortran内部函数调用格式:函数名(自变量)2020/1/10313.7Fortran内部函数如:sin(90*3.14159/180)→1.0sqrt(9.0)→3.0abs(-5.6)→5.6int(6.75)→6exp(3.0)→20.085540Fortran77全部内部函数见附录Ⅵ2020/1/10323.7Fortran内部函数注意几点:⑴函数自变量(参数)必须用括号括起来。例:sinx+cosx→sin(x)+cos(x)⑵函数自变量可以是常量、变量或表达式。例:exp(3.0)sin(x+cos(x))⑶有些函数的类型是由自变量的类型确定的。例:mod(8.0,3.0)→2.0mod(8,3)→2⑷三角函数的角度单位是“弧度”而不是“度”。⑸函数名分为“通用名”和“专用名”内部函数名一般用“通用名”。2020/1/10333.8Fortran算术表达式Fortran77提供了四种表达式:•算术表达式•关系表达式•逻辑表达式•字符表达式算术表达式——将各运算元素(常量、变量、函数和数组等)用算术运算符连接起来的一个有值的式子。2020/1/10343.8Fortran算术表达式一、算术运算符及其优先级⒈算术运算符(五种)加(+)减(-)乘(*)除(/)乘方(**)⒉算术运算符的优先级括号→函数→乘方→乘、除→加、减注:同级运算“先左后右”,连续乘方时“先右后左”。2020/1/10353.8Fortran算术表达式例:3+5-6.0*8.5/4**2+sin(x)→3+5-6.0×8.5÷42+sinxx**y**z、x**(y**z)→xyz(x**y)**z→(xy)z有了算术表达式概念之后,我们就可以将:数学运算式→Fortran算术表达式2020/1/10363.8Fortran算术