华科fortran第3章1 Fortran语言程序设计初步.ppt
《华科fortran第3章1 Fortran语言程序设计初步.ppt》由会员分享,可在线阅读,更多相关《华科fortran第3章1 Fortran语言程序设计初步.ppt(38页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、华科fortran第3章1 Fortran语言程序设计初步 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望 5050年代末诞生了第一个主要用于科学计算的高级语言年代末诞生了第一个主要用于科学计算的高级语言FORTRANFORTRAN语言。语言。FortranFortran是英文是英文FORmula TRANslationFORmula TRANslation的的缩写,意为缩写,意为“公式翻译公式翻译”。它是为科学、工程问题中的那些能够用数学公式表它是为科学、工程问
2、题中的那些能够用数学公式表达的问题而设计的语言,主要用于数值计算。这种语言达的问题而设计的语言,主要用于数值计算。这种语言简单易学,因为可以像抄写数学教科书里的公式一样书简单易学,因为可以像抄写数学教科书里的公式一样书写数学公式,它比英文书写的自然语言更接近数学语言。写数学公式,它比英文书写的自然语言更接近数学语言。FORTRANFORTRAN语言简介语言简介3.1 Fortran3.1 Fortran语言的发展概况语言的发展概况 FortranFortran语言是第一个真正推广的高级语言。至今它已语言是第一个真正推广的高级语言。至今它已有五十多年历史,但仍历久不衰,始终是数值计算领域所使有五
3、十多年历史,但仍历久不衰,始终是数值计算领域所使用的主要语言。用的主要语言。FortranFortran语言问世以来,根据需要几经发展,语言问世以来,根据需要几经发展,先后推出形成了很多版本。先后推出形成了很多版本。FortranI:FortranI:第一代第一代FortranFortran语言语言,在在19541954年提出来的,于年提出来的,于19561956年在年在IBM 704IBM 704计算机上得以实现。计算机上得以实现。FortranII:FortranII:是是19581958年出现的,它对年出现的,它对FortranIFortranI进行了很多扩进行了很多扩充充(如引进了子程
4、序如引进了子程序),FortranIIFortranII在很多机器上得以实现。在很多机器上得以实现。FortranIII:FortranIII:未在任何计算机上实现。未在任何计算机上实现。FortranIV:FortranIV:19621962年出现。对原来的年出现。对原来的FortranFortran作了一些改作了一些改变,使得变,使得FortranIIFortranII源程序在源程序在FortranIVFortranIV编译程序下不能编译程序下不能全部直接使用,导致了语言不兼容的问题。这样就形成全部直接使用,导致了语言不兼容的问题。这样就形成了当时同时使用了当时同时使用FortranIIF
5、ortranII和和FortranIVFortranIV两种程序设计语两种程序设计语言的局面。言的局面。Fortran66Fortran66:19661966年年正正式式公公布布了了两两个个美美国国标标准准文文本本:标标准准基基 本本 Fortran Fortran X3.10-1966 X3.10-1966(相相 当当 于于 FortranII)FortranII)和和 标标 准准Fortran X3.9-1966(Fortran X3.9-1966(相当于相当于FortranIV)FortranIV)。问题:问题:u 很多编译程序并不向这一标准靠拢,它们往往为实现很多编译程序并不向这一标准
6、靠拢,它们往往为实现一些有用的功能而忽略标准;一些有用的功能而忽略标准;u FortranIV FortranIV、6666都不是结构化的语言,没有直接实现三都不是结构化的语言,没有直接实现三种基本结构的语句,在程序中往往需要用一些以种基本结构的语句,在程序中往往需要用一些以GOTOGOTO语句语句以实现特定的算法;以实现特定的算法;u 而且为了使非标准的而且为了使非标准的FortranFortran源程序能够交换移植,产源程序能够交换移植,产生了生了“预处理程序预处理程序”,通过预处理程序读入非标准的,通过预处理程序读入非标准的FortranFortran源程序,生成标准的源程序,生成标准的
7、FortranFortran文本,从而实现了源文本,从而实现了源程序的交换移植,但这种自动生成的程序的交换移植,但这种自动生成的FortranFortran程序通常让人程序通常让人难以理解。难以理解。Fortran77Fortran77:美国标准化协会在美国标准化协会在19761976年对年对ANSI X3.9-ANSI X3.9-1966 Fortran1966 Fortran进行了修订,基本上把各厂家行之有效的功进行了修订,基本上把各厂家行之有效的功能都吸收了进去,此外又增加了不少新的内容,能都吸收了进去,此外又增加了不少新的内容,19781978年年4 4月美国标准化协会正式公布将它作为
8、美国国家标准,即月美国标准化协会正式公布将它作为美国国家标准,即ANSI X3.9-1978 FortranANSI X3.9-1978 Fortran,称作,称作Fortran77Fortran77。Fortran77Fortran77还还不不是是完完全全结结构构化化的的语语言言,但但由由于于增增加加了了一一些些结结构构化化的的语语句句,使使Fortran77Fortran77能能用用于于编编写写结结构构化化程程序序。此此外外,还还扩扩充充了了字字符符处处理理功功能能。使使FortranFortran不不仅仅可可用用于于数数值计算领域还可以适用于非数值运算领域。值计算领域还可以适用于非数值运
9、算领域。Fortran90Fortran90:因因为为Fortran77Fortran77有有着着明明显显的的局局限限性性,为为了了引引入入一一些些新新的的功功能能,适适应应语语言言的的发发展展,19911991年年通通过过了了Fortran90Fortran90新新标标准准ANSI ANSI X3.198-1991 X3.198-1991,相相应应的的国国际际化化标标准准组织的编号为组织的编号为ISO/IEC1539:1991ISO/IEC1539:1991。新新的的FortranFortran标标准准废废弃弃了了过过时时的的严严格格的的源源程程序序书书写写格格式式,改改善善了了语语言言的的
10、正正规规性性,并并提提高高了了程程序序的的安安全全性性,功功能能有有更更大大的的扩扩充充,是是一一个个能能适适应应现现代代程程序序设设计计思思想想的的现现代代程程序序设设计语言。计语言。为为了了保保护护对对Fortran77Fortran77用用户户在在软软件件开开发发上上的的巨巨大大投投资资,整个整个Fortran77Fortran77被作为被作为Fortran90Fortran90的一个严格子集。的一个严格子集。对科学计算特别有益之一是自动存储、假定形状数组、对科学计算特别有益之一是自动存储、假定形状数组、可选参数、结构和指针。用更友好的接口把软件很好地工可选参数、结构和指针。用更友好的接
11、口把软件很好地工程化。程化。FORTRAN 2000FORTRAN 2000:全面引入面向对象的编程思想。全面引入面向对象的编程思想。FORTRANFORTRAN已经完全赶上了编程语言的潮流。已经完全赶上了编程语言的潮流。Fortran95Fortran95:它的设计在它的设计在19951995年年1111月完成,是月完成,是Fortran90Fortran90的最小扩展。的最小扩展。u 学习学习FortranFortran语言的意义在于继承传统和紧跟时代。语言的意义在于继承传统和紧跟时代。u 科科学学计计算算编编程程的的专专家家认认为为,科科学学与与工工程程相相关关专专业业的的学学生生应该采
12、用应该采用FortranFortran而非而非C C和和C+C+编程。编程。这这是是因因为为,Fortran90Fortran90具具有有C+C+所所有有的的重重要要功功能能(,然然而而C C语语言言主主要要是是用用于于微微机机上上的的廉廉价价开开发发,而而FortranFortran的的目目的的是是为为了了产产生生高高效效最最优优化化运运行行的的可可执执行行程程序序,用用FortranFortran编编写写的的大大型型科科学学计计算算软软件件较较C C语语言言编编写写的的通通常常要要快快一一个个数数量量级级,其其程程序编写更为自然和高效,且易学易懂。序编写更为自然和高效,且易学易懂。u 尤尤
13、其其是是在在高高性性能能并并行行计计算算逐逐渐渐成成为为时时代代必必然然的的今今天天,不不仅仅巨巨型型机机而而且且微微机机和和工工作作站站也也有有了了多多处处理理器器,其其串串行行机机上上的的线线性性内内存存模模式式已已不不再再适适用用,而而只只有有FortranFortran具具备备处处理理相相应应问问题题的的标标准准并并行行化化语语言言,其其独独特特的的数数组组操操作作充充分分体体现现了了它它的先进性。的先进性。为什么选择学习为什么选择学习FortranFortran为什么选择为什么选择 Fortran77 Fortran77u 由于很多用户在由于很多用户在FortranFortran程序
14、上作了巨大的投资,许多程序上作了巨大的投资,许多大型科学计算大型科学计算FortranFortran程序程序(有些长达数十万条语句有些长达数十万条语句),如,如分子动力学模拟计算分子动力学模拟计算(C60-C240(C60-C240的碰撞的碰撞)等程序仍在频繁等程序仍在频繁地使用。地使用。u 在科技领域内某些标准程序库(在科技领域内某些标准程序库(International International Mathematics and Statics Library,Numerical Mathematics and Statics Library,Numerical Algorithms Gr
15、oupAlgorithms Group)内有数千以上的子程序是用)内有数千以上的子程序是用FortranFortran写的,特别是早期的程序都是用写的,特别是早期的程序都是用Fortran77Fortran77编写的,这些编写的,这些程序库已通过长期使用验证了稳定性。程序库已通过长期使用验证了稳定性。u 科学研究经常需要使用或改编以前的程序,这时必须科学研究经常需要使用或改编以前的程序,这时必须了解了解Fortran77Fortran77的编程手法。的编程手法。因此,仍然需要学习将因此,仍然需要学习将Fortran77Fortran77作为基础,但随时与作为基础,但随时与Fortran90Fo
16、rtran90比较不同之处。比较不同之处。Fortran90/95Fortran90/95是是具具有有强强烈烈现现代代特特色色的的语语言言,总总结结了了现现代代软软件件的的要要求求与与算算法法应应用用的的发发展展,增增加加了了许许多多现现代代特特征征的的新新概概念念、新新功功能能、新新结结构构、新新形形式式。Fortran90Fortran90的的现现代代特性表现在:特性表现在:Fortran90/95Fortran90/95 u 加强了程序的可读性、可维护性:加强了程序的可读性、可维护性:淘淘汰汰所所有有转转移移语语句句,用用新新的的控控制制结结构构实实现现选选择择分分叉叉与重复操作,使程序
17、结构化。与重复操作,使程序结构化。同同时时增增加加了了结结构构块块、模模块块及及过过程程的的调调用用灵灵活活形形式式,使使程程序序易易读读易易维维护护,新新的的模模块块装装配配取取代代了了Fortran77Fortran77的的许许多多旧旧语语句句,使使程程序序员员更更为为清清晰晰明明确确地地定定义义全全局局数数据。据。增增加加了了新新的的数数据据种种别别说说明明,使使得得FortranFortran程程序序在在不不同计算机编译环境下有更自由的移植性。同计算机编译环境下有更自由的移植性。u 发展了现代算法功能:发展了现代算法功能:加加强强了了数数组组的的算算法法功功能能,引引进进了了多多种种数
18、数组组操操作作功功能能与与概概念念,使使数数组组像像一一个个变变量量一一样样自自由由操操作作,使使数数组组的的并并行行化化运运算成为可能。算成为可能。增增加加了了适适于于操操作作数数据据结结构构的的派派生生类类型型,提提高高了了文文字字处处理理功功能能,胜胜任任信信息息管管理理系系统统、办办公公自自动动化化的的任任务务。特特别别是是动动态态存存储储功功能能的的引引进进极极大大地地加加强强了了它它在在数数值值计计算算领领域域中中应应用用的威力。的威力。u 扩大与编程者的友好界面:扩大与编程者的友好界面:新新的的编编程程形形式式减减少少了了烦烦琐琐与与格格式式束束缚缚,接接近近自自然然语语言言与与
19、公式演算。公式演算。允允许许在在字字符符数数据据中中选选取取不不同同种种别别,在在字字符符串串中中可可使使用用各各国国文文字字(例例如如汉汉字字),还还可可任任意意使使用用化化学学、物物理理、数数学学的的各种专业字符。各种专业字符。例例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 PROGRA
20、M 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,av
21、1,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行是变量类型定义
22、,第行是变量类型定义,第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
23、 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
24、 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
25、 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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 华科fortran第3章1 Fortran语言程序设计初步 华科 fortran 语言程序设计 初步
限制150内