Fortran90程序设计21世纪高等学校计算机科学与技术规划教材教学课程几点说明一、学习FORTRAN语言的目的和意义•计算机应用的基础•工程应用•思维能力的训练几点说明二、学习方法及注意的问题•FORTRAN语言与Windows程序•怎样学习的问题•基本要求•课时安排第一章Fortran程序设计基础2019/10/44本章目的和要求1.了解程序及其概念2.掌握算法及算法描述方法3.简单程序设计——了解Fortran编程环境(FortranPowerStation4.0)Fortran语言的发展概况2019/10/45Fortran语言的发展过程:•1951年由约翰·贝克斯等人开始研究Fortran语言;•1957年第一个Fortran程序在IBM704机上运行;•1958和1962年先后推出FortranⅡ和FortranⅣ;•1966和1978年先后颁布Fortran66和Fortran77;•1991年颁布了Fortran90。•现在已经有了Fortran95,Fortran2003Fortran的特点FORmulaTRANslator公式翻译器Fortran语言是一种适合于科学和工程计算问题的程序设计语言;也是计算机高级语言发展史上使用最早的一种程序设计语言Fortran语言的特征2019/10/47Fortran语言的最大特性是接近数学公式的自然描述,在计算机里具有很高的执行效率。易学,语法严谨。可以直接对矩阵和复数进行运算。自诞生以来广泛地应用于数值计算领域,积累了大量高效而可靠的源程序。很多专用的大型数值运算计算机针对Fortran做了优化。广泛地应用于并行计算和高性能计算领域。Fortran90,Fortran95,Fortran2003的相继推出使Fortran语言具备了现代高级编程语言的一些特性。1.1程序与程序设计程序设计包括以下四个过程1.分析问题,确定解决问题的方法或数学模型2.设计算法—通常采用流程图3.编写程序—也叫源程序(通常为文本文件,Fortran源程序文件的后缀是“f90”、4.调试程序,分析结果。2019/10/481.2算法及其表示方法例1:求从键盘输入x,y的值如果x+y不等于零,则计算输出u的值否则,输出分母为零2019/10/491.2算法及其表示方法例2,输入10个数,求最大数?2019/10/4101.输入一个数,放在存储单元MAX中2.设置一个统计比较次数的单元i,i=13.若i=9,执行44.输入一个数,放在X单元中5.比较X与MAX,若XMAX,MAX=X6.i增加17.i增加1,执行38.输出MAX1.2算法及其表示方法例3求两个正整数m,n的最大公约数。1)比较m与n的大小,如果mn,则交换m,n2)求m除以n的余数r3)若r=0则执行6)4)n→m,r→n5)执行2)6)输出n1.2算法及其表示方法2019/10/412一、算法的概念算法——解决某一问题所采取的方法和步骤。计算机算法——计算机能够执行的算法。计算机算法的特征:⑴有穷性——操作步骤是有限的。⑵确定性——方法步骤是明确的。⑶有效性——方法是正确的,步骤是完整的。⑷必须有输入和输出。(取得必要的信息,给出正确的结果。)1.2算法及其表示方法2019/10/413Fortran是结构化程序设计语言,每个程序单位可由三种基本结构组成:⑴顺序结构⑵分支选择结构⑶循环结构实践证明,任何复杂的问题都可以用这三种基本结构来描述。1.2算法及其表示方法例1:求从键盘输入x,y的值如果x+y不等于零,则计算输出u的值否则,输出分母为零2019/10/414流程图输入x,yX+y=0U=(x-y)/(x+y)输出u输出无效结果结束否是1.2算法及其表示方法例2,输入10个数,求最大数?2019/10/4151.输入一个数,放在存储单元MAX中2.设置一个统计比较次数的单元i,i=13.若i=9,执行44.输入一个数,放在X单元中5.比较X与MAX,若XMAX,MAX=X6.i增加17.i增加1,执行38.输出MAX输入Maxi→1输入xX→Maxi+1→i输出Maxi=9?NXMaxYYYN1.2算法及其表示方法例3求两个正整数m,n的最大公约数。1)比较m与n的大小,如果mn,则交换m,n2)求m除以n的余数r3)若r=0则执行6)4)n→m,r→n5)执行2)6)输出n输入M,N交换M,NM/N的余数→rN→Mr→N输出NNr=0YMNYN1.2算法及其表示方法2019/10/417二、算法的表示用N~S流程图表示。(由几种功能框组合而成)⑴矩形框——用于表示顺序结构。如:若先执行语句A,再执行语句B。AB1.2算法及其表示方法2019/10/418例:若a=1.5,b=4.5,求a+b的平方。①画N~S图:②编程:A=1.5B=4.5C=(a+b)**2Print*,cend1.5→a4.5→b(a+b)2→c打印c结束1.2算法及其表示方法2019/10/419⑵三角框——用于表示分支选择结构。如:若P为条件,当P成立执行语句A,否则执行语句B。PTrueFalseABPAB1.2算法及其表示方法2019/10/420⑶L形框——用于表示循环结构。①当型循环(P为条件,A循环体)如:若条件P成立,则执行循环体A,否则跳出循环体。PAYNPA1.2算法及其表示方法2019/10/421②直到型循环(P为条件,A循环体)如:首先执行循环体A,若条件P不成立继续执行循环体A,直到条件P成立为止。APPAYN1.3程序设计的基本方法2019/10/422计算机程序计算机解决问题所需要的一系列代码化指令序列——计算机程序。程序=数据结构+算法即“程序就是在数据的某些特定的表示方式和结构的基础上,对抽象算法的具体描述。”上述公式可扩充为:程序=数据结构+算法+程序设计方法+语言工具1.3程序设计的基本方法2019/10/423所谓面向过程的程序设计,是指利用面向过程的语言工具(如Basic、Pascal、Fortran和C等)进行程序开发的各项活动。面向过程的程序设计优点:编程简单、结构性强、可读性好,程序执行时序特征明显;遵循这种结构的程序只有一个入口和一个出口。缺点:存在数据与程序模块的分离和程序的可重用性差等问题。基本思想:把一个需要求解的复杂问题分为若干个模块来处理,每个模块处理一个子问题;设计时遵循自顶向下、逐步细化、模块化设计和结构化编码的原则。1.3程序设计的基本方法2019/10/424结构化程序设计方法:结构化编码•在结构化程序设计中,任何复杂的算法,都可以由三种基本结构组成。•在构造算法时,也仅以三种基本结构作为基本单元。•遵循这种结构的程序只有一个输入口和一个输出口。模块化设计将一个复杂问题的程序分为若干个程序模块,每个模块完成一项特定功能;其中有一个主模块和若干个子模块,主模块控制各个子模块来实现整个程序的功能。自顶向下,逐步细化1.3程序设计的基本方法2019/10/425面向对象的程序设计是一种新的程序设计范型。它将一些新的理念和结构化程序设计中好的思想相融合,提供了一种全新的程序设计方法。面向对象的程序设计基本思想将一个需要求解的问题分解为一系列实体(对象),然后围绕这些对象建立数据和函数;函数的功能决定了该对象的行为。规定一个对象的函数可以访问另一对象的函数,但一个对象的数据不能应用于另一对象的函数中。几个基本概念:三类机制:类,对象,属性,事件,方法封装、继承、多态1.4简单的Fortran程序分析2019/10/426例1的Fortran程序如下:ProgramExample1Reala,b,xprint*,'请输入a,b的值'Read*,a,bIf((a+b)/=0)thenx=(a-b)/(a+b)Print*,xElseprint*,'表达式的分母为零'endifend1.4简单的Fortran程序分析2019/10/427Fortran程序的基本结构:⑴一个Fortran源程序由一个或多个程序单位组成,每个程序单位以“end”语句结束。⑵每个程序单位包括若干行语句行(执行语句和非执行语句行)非语句行(注释行)⑶语句前可不设标号,也可根据需要设标号。⑷各类语句在程序单位中的位置有一定规则。⑸程序必须按规定格式书写。1.5Fortran源程序的书写格式2019/10/428Fortran77源程序必须按以下格式书写:⑴每行只能在80列内书写,并把80列分为4个区。⑵1~5列:标号区(1~5位无符号整数;第1列为“*”或“c”时,为注释行)⑶第6列:续行标志区(非空格或非零字符;最多19个续行)⑷7~72列:语句区(书写语句;一行只能写一条语句)⑸73~80列:语句注释区(一般作编号注释)1.5Fortran源程序的书写格式自由格式一行可以写多个语句,语句之间用分号“;”隔开,末句不能有标点号用!作为注释符号,可以在一行的任意一列用&作为续行连接符,表示其后有续行,行首加续行符,表示上下行是相连字符。1.6Fortran程序的编辑与运行2019/10/430上机步骤1.建立一个项目文件2.建立源程序文件3.将源程序加入到项目4.编译和运行1.6Fortran程序的编辑与运行2019/10/431一、FortranPowerStation4.0的启动选“开始”→“程序”→“FortranPowerStation4.0”→“MicrosoftDeveloperStudio”。二、创建项目工作间选“File”→“New”→“ProjectWorkspace”→“ConsoleApplication”,并输入项目工作间名称(如:aaa)和存放项目工作间的位置或路径(如:c:\for\)→Create。1.6Fortran程序的编辑与运行2019/10/432三、给项目工作间添加和编辑文件打开指定的项目工作间→选“Insert”→“FileintoProject”→输入要添加的文件名(如:st01.for)→“Add”。然后按Fortran程序的书写规则编辑程序。四、编译项目工作间中的文件打开指定的文件→选“Build”→“Compilest01.for”。五、连编项目文件选“Build”→“Buildaaa.exe”。六、运行项目文件选“Build”→“Executeaaa.exe”。(显示程序执行结果)1.6Fortran程序的编辑与运行2019/10/433注:若Fortran程序是由一个主程序文件和若干个子程序文件组成,则应将各文件添加到同一项目工作间,分别进行编译,然后连编和运行项目文件。七、打开项目文件选“File”→“Open”→在打开对话框文件类型下拉列表中选“ProjectWorkspace(*.mdp)”→然后选项目工作间文件夹中的项目文件。1.7简单程序设计2019/10/434例1:求一元二次方程x2+3x-5.6=0的根,并打印结果。•利用公式:•(这里,a=1,b=3,c=-5.6)aacbbx2422,11.7简单程序设计2019/10/435编程如下: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,1第二章顺序结构程序设计FORTRAN常量FORTRAN变量FORTRAN内部函数FORTRAN算术表达式本章重点:函数和算术表达式的掌握和应用理解常量与变量的涵义和表示方式2019/10/4372.1常量常量——在程序执行期间其值固定不变的量。Fortran处理六种类型的常量:⑴整型常量(Integer)⑵实型常量(Real)⑶双精度常量(Doubleprecision)⑷复型