您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 薪酬管理 > fortran95程序设计基础-lxc
Fortran95程序设计基础李小椿bestlxc@gmail.com13581737775推荐参考书-Fortran95程序设计《Fortran95程序设计》,彭国伦编著,中国电力出版社主要内容一.Fortran简史二.编译器的使用三.数据类型与数学表达式四.输入输出及声明五.选择结构六.循环结构七.数组八.函数与子程序九.文件一.Fortran简史二.编译器的使用三.数据类型与数学表达式四.输入输出及声明五.选择结构六.循环结构七.数组八.函数与子程序九.文件这种语言适用于科技与工程上的数学计算,用它写成的程序中的表达式与数学式子在形式上极为相似。FORTRAN语言是世界上第一个出现的高级程序设计语言,历经四十余年,广泛地应用于科学和工程计算方面。FORTRAN=FORmulaTRANslation,意思为“公式翻译”FORTRAN语言发展一览表年代语言名1954FORTRAN-I1958FORTRAN-II1960FORTRAN-IV1966FORTRAN-661978FORTRAN771992FORTRAN901997FORTRAN95Fortran简史早在1951年,美国IBM公司约翰·贝克斯(JohnBackus)针对汇编语言的缺点着手研究开发FORTRAN语言,并于1954年在纽约正式对外发布。称约翰·贝克斯提出的FORTRAN语言FORTRANⅠ,FORTRANⅠ虽然功能简单,但它的开创性工作,在社会上引起了极大的反响。到1957年第一个FORTRAN编译器在IBM704计算机上实现,并首次成功运行了FORTRAN程序。Fortran77&&Fortran90•既然已经有了Fortran90,那么是否就不用学习Fortran77了?•其实,许多大型科学计算Fortran程序,特别是早期的程序都是用Fortran77编写的,这些程序库已通过长期使用验证了稳定性。科学研究经常需要使用或改编以前的程序,这时必须了解Fortran77的编程手法。•Fortran90并没有删去任何Fortran77的功能•因此,我们应重点掌握Fortran90,但是也应了解Fortran77。一.Fortran简史二.编译器的使用三.数据类型与数学表达式四.输入输出及声明五.选择结构六.循环结构七.数组八.函数与子程序九.文件程序结构•主程序programname说明部分程序主体end[programname]•子程序subroutinename说明部分程序主体endprogrammainimplicitnoneprint*,Hellostopendprogrammainsubroutineadd(first,second)implicitnoneinteger::first,secondwrite(*,*)first+secondreturnendFortran程序书写格式1.自由格式:非常自由的格式,文件后缀为*.f902.固定格式:将程序分成4个区,文件后缀名为*.f或*.for注意:Fortran程序不区分大小写FORTRAN固定格式文件后缀:*.for*.f•1~5字符:标号区•6字符:续行标志区,字符是0以外字符表示续行•7~72字符:语句区•73~80字符:注释区•如果第一个字符是“C”,“c”,“*”,表示本行为注释FORTRAN自由格式文件后缀:*.f90•“!”后面的文本都是注释•每行可以写132个字符•行号放在每行程序的最前面•多个语句用“;”隔开•续行符:“&”,放在行末尾,允许39续行编译器的使用Windows平台:•CompaqVisualFortran•IntelVisualFortranCompilerLinux平台:•G77(g77,free,onlyforfortran77)•IntelFortran(ifort,forIntelCPU)•Pgi(pgf90,forAMDCPU)CompaqVisualFortran6.5的使用启动FORTRAN新建菜单写程序前要先新建一个项目,如图所示路径中不能有中文字符选择建立什么样的项目生成了什么文件已经建立了项目建立一个源文件一个简单的程序编译和运行提示没有错误运行的结果会生成一个Debug目录Debug目录下会有一个test.exe执行文件可以把其他源程序文件加入到这个项目CompaqVisualFortran6.5总结1.建立一个新的project(File/New,选择porject选项卡,选择FortranConsoleProgram格式,给定Project名称),project会保存为*.dsw格式的文件。2.生成一个新的程序文件(File/New,选择Files选项卡,选择FortranFreeFormatSourceFile,给定文件名),或者插入一个已经存在的程序文件。程序代码会保存为*.f90或*.for格式。3.CompileBuildExecuteProgram4.不要把两个独立的fortran文件放到同一个project5.要修改程序可以直接打开dsw工程文件G77的使用•g77hello.for!会自动编译出a.out执行文件•./a.out!运行执行文件,“./”表示a.out在当前目录•g77hello.for–ohello!不想以a.out作为执行文件,则加入-o选项,在后面加上名字•./hello!运行执行文件•注意:只适合Fortran77文件Linux下G77的使用方法示意图一.Fortran简史二.编译器的使用三.数据类型与数学表达式四.输入输出及声明五.选择结构六.循环结构七.数组八.函数与子程序九.文件数据类型与数学表达式•整型(INTEGER)•浮点数(REAL)•复数(COMPLEX)•字符(CHARACTER)•逻辑型(LOGICAL)•符号常量(PARAMETER)整型(INTEGER)•分为长整型和短整型•长整型:-2147483648~+2147483647(-231+1~231)•短整型:-32768~+32767(-215+1~215)•Integer(kind=2)a!kind=1/2/4,为f90新加•Integer::a!f90•Integer*2a•Integer(2)a•Integera,b,c!默认为4•Kind=2:短整型•Kind=4:长整型•Kind=1:更短的整型-128~127浮点数(REAL)•分为单精度和双精度•单精度:有效位数为6-7位•双精度:有效位数为15-16位•real(kind=4)a!kind=4/8,为f90新加•real::a!f90•real*4a•real(4)a•reala,b,c!默认为kind=4•Kind=4单精度•Kind=8双精度复数(COMPLEX)•a+bi,a、b为两个浮点数,同样分单双精度•complex(kind=4)a;a=(x,y)!x,y为两个实数•complex*4c•complex(8)d•kind=4/8字符(CHARACTER)•character(len=10)a•character(10)b•character*10c•character*(10)d•有很多针对字符的函数,比如•len(string):返回字符长度•trim(string):去除尾端空格•//:字符串相加,d=a//”string”•……逻辑型(LOGICAL)•logicala;a=.ture./.false.•logical(kind=4)a!用4bytes来记录•logical*4b•logical(4)b符号常量(PARAMETER)•realpi;parameter(pi=3.14159)•real,parameter::pi=3.14159隐含说明语句IMPLICIT•将某些字母开头的变量规定为所需类型•implicit类型说明符(字母表)•implicitinteger(a,c,t-v)•I-N规则:以I,J,K,L,M,N开头的字母当作整型•以implicitnone语句来取消I-N规则•implicit语句为非执行语句,应放在所有语句之前•符号常量不能当作变量使用数学表达式•+-*/加减乘除;**乘幂,两个星号要连续2**3=23函数名含义调用格式ABS绝对值ABS(X)INT取整,取整数部分INT(X)LOG;LOG10自然对数,10对数LOG(X)MAX;MIN最大最小值MAX(X,Y,…)MOD求余,MDO(X,Y)SIGN求符号,使X与Y同符号SIGN(X,Y)SQRT平方根SQRT(X)SIN;COS;TAN三角函数(弧度)SIN(X)ASIN;ACOS;ATAN反三角ASIN(X)EXPe为底指数EXP(X)一.Fortran简史二.编译器的使用三.数据类型与数学表达式四.输入输出及声明五.选择结构六.循环结构七.数组八.函数与子程序九.文件表控格式(自由格式)输出•PRINT*输出表列•WRITE(*,*)输出表列•PRINT语句中“*”表示“表控方式”即按系统隐含规定的格式输出;WRITE语句中括号内的第一个“*”号表示“在系统隐含指定的设备上输出”,一般计算机系统隐含指定的设备是显示器或打印机;第二个“*”号指的是“用表控格式输出”。相当于PRINT语句中的“*”号。输出表列也称输出变量,可以是变量名、数组名、数组元素,各变量间用逗号相隔。•如果输出表列为空,即输出语句无任何输出项,它将输出一个空白行;表控输入•READ*,变量表•READ(*,*)变量表•第一个“*”,代表“系统隐含的输入设备”(一般指显示器和键盘)第二个“*”,代表“表控输入”。•输入数据的个数应当不少于READ语句中变量的个数,多余的数据不起作用.•输入数据时,用“/”表示数据结束,READ语句不再继续读数输入输出整数的例子输入输出字符的例子格式输出•WRITE(*,L)输出表列;PRINTL输出表列•*代表隐含的输出设备,L指输出格式语句的标号•LFORMAT(1X,S)•FORMAT语句又叫“格式语句”,是一个非执行语句,本身不产生任何操作,只是提供输入或输出的格式。FORMAT语句可以出现在程序的任何地方。系统按WRITE语句或PRINT语句中指定的语句标号找到相应的FORMAT语句,并按FORMAT语句所规定的格式对数据进行输出。•比如:100format(I4)格式语句的例子常见编辑符Aw以w个字符来输出字符串Fw.d以w个字符输出浮点数,小数占d位Iw以w个字符来输出整数nx输出位置右跳n个位置(输出n个空格)Ew.d以w个字符输出指数,小数占d位/换行符可以在编辑符之前加入重复系数,比如rAw,表示重复输出r次Aw格式不同变量的格式语句格式输入•格式输入即按指定的格式输入数据。一般用READ语句和FORMAT语句来实现,形式为:•READ(输入设备号,语句标号)输入表列•标号FORMAT(格式说明)•用的比较少,主要用于文件读入一.Fortran简史二.编译器的使用三.数据类型与数学表达式四.输入输出及声明五.选择结构六.循环结构七.数组八.函数与子程序九.文件逻辑运算F90F77含义英文==.EQ.相等EQuivalent/=.NE.不等于NotEquivalent.GT.大于GreaterThan=.GE.大于等于GreaterorEquivalent.LT.小于LittleThan=.LE.小于等于LittleorEquivalent.AND.逻辑与,两边同时相等才成立.OR.逻辑或,一个成立则成立.NOT.逻辑非,表达式不成立则整个表达式成立.EQV.逻辑等,两边表达式结果相同则成立.NEQV.逻辑不等,两边表达式结果不同则成立If语句If(逻辑表达式)then语句endifIf(逻辑表达式)语句(一个)If(逻辑表达式)then语句1else语句1endifIf(逻辑表达式1)then语句elseIf(逻辑表达式2)then语句…………..else语句endif一个划分学生成绩等级的例子
本文标题:fortran95程序设计基础-lxc
链接地址:https://www.777doc.com/doc-4877149 .html