第1章基础教材_第1页
第1章基础教材_第2页
第1章基础教材_第3页
第1章基础教材_第4页
第1章基础教材_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Fortran程序设计刘世熙关于教材刘卫国主编,Fortran90程序设计教程,

北京邮电大学出版社彭国伦,Fortran95程序设计,中国电力出版社刘瑾等译,Fortran95/2003程序设计(第三版),中国电力出版社WalterS.Brainerd,GuidetoFortran2003Programming,Springer内容基础基础知识数据类型表达式等控制结构if,case,do模块与过程module,subroutine,function数组检索排序字符数据结构体与派生输入与输出文件第一章基础本章内容第一节 背景知识第二节 编译环境第三节 算法第四节 流程图第五节 数据类型第六节 变量与输入第七节 Fortran程序格式第八节 内部函数第九节 表达式与赋值语句第十节 格式化输入输出简介第十一节 实例Whatisprogramming?Programmingisinstructingacomputertodosomethingforyouwiththehelpofaprogramminglanguage.Writingaprogramisonlyonepart.程序设计(Programming)是指设计、编制、调试程序的方法和过程。程序设计的步骤分析问题,确定数学模型或方法。设计算法,画出流程图。选择编程工具,编写程序。调试程序,分析输出结果。WhyStudyProgramming?Valuableskillforscientists.Programminginitselfisanart!Itrequiredacreativeandproblemsolvingmind.Youwillfindprogrammingisfun.Enjoythefeelingofaccomplishingsomething.WhyFortran?FORTRANisFORmulaTRANslation.Designedforscientificandtechnical(engineering)computing.Goodchoiceasthefirstprogramminglanguageforsciencestudents.Highperformancecomputing(HPC).Computationalchemistry.Chemicalprocessdesign,analysis,andsimulation.Fortran的历史最早出现的计算机高级程序设计语言FORTRANI1951年,美国IBM公司约翰·贝克斯(JohnBackus)针对汇编语言的缺点着手研究开发FORTRAN语言1954年公布1957年7月在IBM704上实现FORTRANII1958年春IBM公司发布引进了子函数等概念商业化Fortran的历史FORTRANIII存在严重缺陷,没有在计算机上实现FORTRANⅣ1962年推出没有充分考虑兼容性,导致FORTRANII程序不能在FORTRANIV系统中运行FORTRAN661966年ANSI采纳ANSIX3.9-1966Fortran的历史FORTRAN771978年4月公布结构化字符类型变量ANSIX3.9-19781980年,被ISO正式确定为国际标准ISO1539-1:1980兼容FORTRAN66Fortran的历史Fortran901991年5月ANSIX3.198-1991ISO/IEC1539-1:1991新国际标准还采纳了我国计算机和信息处理标准化技术委员会程序设计分会提出的多字节字符集数据类型及相应的内部函数新特性:自由源码形式、直接操作数组元素或整个数组、参数化数据、派生数据类型以及显式接口Fortran的历史Fortran951996年新特性:FORALL结构、纯函数和一些新的内置过程澄清了Fortran90标准中几个模糊点Fortran20032004年ISO/IEC1539-1:2004新特性:增强的派生数据类型、面向对象编程、Unicode字符集、增强的数据操作功能、过程指针和与C语言互操作Fortran的历史Fortran2008ISO/IEC1539-1:2010theBLOCKconstruct,additionalintrinsicfunctionsforbitmanipulation,additionalmathematicalintrinsicfunctions,othernewintrinsicprocedures,changestoexistingintrinsicprocedures,ISOFORTRANENVadditions,miscellaneousandconveniencefeatures.FORTRAN77Fortran90第一个Fortran程序programfirstprint*,"Hello,world!"endprogramfirst三个步骤实际上是四个步骤编辑编译(链接)运行如果有错,那就要返回编辑步骤去修改代码缺省的输出格式在print语句后接着*号,说明采用系统默认的格式输出也称为表控输出不同的系统下,不同的编译环境下,输出的结果(格式)可能会不同数值之间用制表位分开,字符之间不分隔用print语句输出用引号或双引号括起来,那就原样输出print*,"Hello,world!"如果是变量、常量就输出相应的值print*,3如果是表达式则计算之后输出结果的值print*,3+3program语句每一个Fortran程序都以program语句开始这里程序指主程序一个程序只能有一个主程序,可以有多个子程序子程序不以program开始program后接的是程序名命名需要以字母开头,可以包含字母、数字、下划线,最长63个字符后面所有的命名都是同样的规则program语句可以省略,但为了程序的可读性最好写写了program,则程序名不可以省略end语句每一个fortran程序单元都以end语句结尾主程序、模块、子程序都称为程序单元主程序用endprogram结尾模块用endmodule结尾子例行子程序用endsubroutine结尾函数子程序用endfunction结尾end后的东西可以省略,看自己喜好而定Fortran开发环境FortranPowerStation4.0是以Fortran90为标准的Fortran语言开发工具,其集编辑、编译、调试和运行程序为一体的图形界面使得它具有可视化编程的优点上机步骤从原理上讲,Fortran程序上机运行要经过编辑、编译、连接和运行四个步骤。在FORTRANPowerStation4.0环境下,具体操作如下: (1)建立一个项目(Project)。 (2)建立源程序文件。 (3)将源文件加入项目。 (4)编译和运行。注意上机时间为15:50~17:20作业完成后利用红蜘蛛软件提交17:15教师将开始拷贝文件,所以上传必须在这个时间前完成确实无法现场提交,请在课后72小时内通过e-mail提交独立完成作业,不要像“赶街”shxliu@Fortran开发环境CompaqVisualFortran6.6SilverfrostFTN95

/default.aspxForce

/G95

/GFortran

/fortran/Fortran开发环境PGIFortran

/AbsoftProFortran

/IntelVisualFortran

/NAGFortran

/nagware/NP.aspLahey/FujitsuFortran

/MSFortranPowerstation4.0绿色版链接:/s/1i35ebdF密码:atgwGFortran链接:/s/1qWM0H0w密码:v2xeDoitonyourphone?AndroidCCToolsIDEdroidIOSCodeToGo算法(Algorithm)Informally,analgorithmisanywell-definedcomputationalprocedurethattakessomevalue,orsetofvalues,asinputandproducessomevalue,orsetofvalues,asoutput.Analgorithmisthusasequenceofcomputationalstepsthattransformtheinputintotheoutput.算法+数据结构=程序同样的问题,不同的人有不同的想法,也就有不同的算法,编写出不同的程序在本课程中将不太强调算法(因为太过专业),但是你必须有分析问题、解决问题的思路算法的五个特征有穷性。算法中执行的步骤总是有限次数的,不能无止境地执行下去。确定性。算法中的每一步操作必须具有确切的含义,不能有二义性。有效性。算法中的每一步操作必须是可执行的。要有数据输入。算法中操作的对象是数据,因此应提供有关数据。要有结果输出。算法的目的是用来解决一个给定的问题,因此应提供输出结果,否则算法就没有实际意义。算法的描述自然语言图形,如N-S图、传统流程图,图的描述与算法语言的描述对应算法语言,即计算机语言、程序设计语言、伪代码形式语言,用数学的方法,可以避免自然语言的二义性问题:

计算1+2+3+…+100,并输出。programsum100implicitnoneinteger::sum,isum=0i=1dowhile(i<=100)sum=sum+ii=i+1enddoprint*,sumendprogramsum100传统流程图传统流程图是一种传统的算法描述方法,它用不同的几何图形来代表不同性质的操作。主要优点是直观性强,初学者容易掌握。缺点是对流程线的使用没有严格限制,如毫无限制地使流程任意转来转去,将使流程图变得毫无规律,难以阅读。端点符此符号表示转向外部环境或从外部环境转人。例如,程序流程的起始或结束.数据的外部使用以及起源(或终点)基本处理符号此符号表示各种处理功能。例如,执行一个或一组确定操作,从而使信息的值。形式或位置发生变化,或者确定几个流向中的某一个流向判断此符号表示判断或开关类型功能.该符号只有一个人口,但可以有若干个可选择的出口,在对符号中定义的条件进行求值后,有一个且仅有一个出口被激活.求值结果可在表示路径的流线附近写出既定处理此符号表示一个已命名的处理,它由在别处已详细说明的一个或多个操作或程序步骤所组成。例如子程序、模块。循环界限此符号分为两个部分,分别表示循环的开始和结束.在该符号的两个部分中要使用同一标识符.初始.增量和终止量条件按其测试操作位置分别出现在开始符号或结束符号内。基本流线符号此符号表示数据流或控制流。连接符此符号表示转向流程图它处,或自流程图它处转人。它用来作为一条流线的断点,使该流线在别处继续下去。对应的连接符应有同一标记。数据符号(输入/输出符)此符号表示数据,但为规定媒体标准流向标准流向是从左到右和自上而下。箭头的使用为了图的清晰,可随时在流线上使用箭头指示流向(例如在交结点处)。当流程不遵循所规定的标准流向时,要使用箭头来指示方向。传统流程图的绘制软件Office自带的自选图形组件,可在Word、PowerPoint等入绘制流程图VisioDiagramDesigner

http://meesoft.logicnet.dk/DiagramDesigner/EdrawMindMap

/freemind.php在线工具LovelyCharts

程序的三种基本结构1966年,Bohm和Jacopini证明了“只用三种基本的控制结构就能实现任意单入口和单出口的程序”1969年Dijkstra提出了结构化程序设计的概念顺序结构、选择结构和循环结构顺序结构是最简单的一种基本结构,依次顺序执行不同的程序块。选择结构(分支结构、判断结构)根据条件满足或不满足而去执行不同的程序块。当条件P满足时执行S1程序块,否则执行S2程序块。循环结构是指重复执行某些操作,重复执行的部分称为循环体。循环结构分为当型循环和直到型循环两种。当型循环先判断条件是否满足,当条件P满足时反复执行S程序块,每执行一次测试一次P,直到P不满足为止,跳出循环体执行它下面的基本结构。直到型循环先执行一次循环体,再判断条件P是否满足,如果不满足则反复执行循环体,直到条件P满足为止。三种基本程序结构的共同特点只有一个入口。只有一个出口。结构中无死语句,即结构内的每一部分都有机会被执行。结构中无死循环。结构化定理表明,任何一个复杂问题的程序,都可以用以上三种基本结构组成。具有单入口单出口性质的基本结构之间形成顺序执行关系,使不同基本结构之间的接口关系简单,相互依赖性少,从而呈现出清晰的结构。N-S图由于传统流程图的缺点,1973年美国学者I.Nassi和B.Shneiderman提出了一种新的流程图工具─N-S图。N-S图以三种基本结构作为构成算法的基本元素,每一种基本结构用一个矩形框来表示,而且取消了流程线,各基本结构之间保持顺序执行关系。N-S图可以保证程序具有良好的结构,所以N-S图又叫做结构化流程图。N-S图表示的三种基本结构绘制N-S图的软件表格软件Structorizer

http://structorizer.fisch.lu/NSDEditor

http://diuf.unifr.ch/drupal/sites/diuf.unifr.ch.drupal.softeng/files/teaching/studentprojects/kalt/ftp-nsd.htmlEdraw

/Nassi-Schneiderman.php算法举例:将2000-2500年中每一年是否闰年打印出来[分析]闰年的条件是: (1)能被4整除,但不能被100整除的年份是闰年; (2)能被100整除,又能被400整除的年份是闰年。设Y为年份,算法如下: S1:2000=>Y S2:若Y不能被4整除,打印Y“不是闰年”。然后转到S5。 S3:若Y能被4整除,不能被100整除,打印Y“是闰年”。 S4:若Y能被100整除,又能被400整除,打印Y“是闰年”,否则打印“不是闰年”。 S5:Y+1=>Y S6:当Y≤2500时,转S2继续执行,若Y>2500,算法结束。用N-S流程图表示算法优点比文字描述直观、形象、易于理解;比传统流程图紧凑易画,废除了流程线,上下顺序即执行顺序;用N-S图表示的算法都是结构化算法。程序设计方法结构化程序设计(StructureProgramming,SP)自顶向下逐步求精单入、出口模块化对向对象程序设计(Object-OrientedProgramming,OOP)对象为主体事件驱动两者并不相互孤立结构化程序设计的定义与特点一般认为:结构化程序设计是一种设计程序的技术,它采用自顶向下逐步求精的设计方法和单入口单出口的控制技术。特点:有一个入口、一个出口。没有死语句(永远执行不到的语句),每一个语句都至少应当有一条从入口到出口的路径通过它。没有死循环(无限制的循环)。内在数据类型(IntrinsicDataTypes)整型(integer)实型(real)复型(complex)逻辑型(logical)字符型(character)整型数据就是表示我们数学上说的整数注意,数在程序语言里是范围的范围由种别参数(kind,又称类别参数)决定,-28n-1—28n-1-11:-128—1272:-32768—32767

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论