(完整)Fortran经典编程语言笔记(你值得拥有)_第1页
(完整)Fortran经典编程语言笔记(你值得拥有)_第2页
(完整)Fortran经典编程语言笔记(你值得拥有)_第3页
(完整)Fortran经典编程语言笔记(你值得拥有)_第4页
(完整)Fortran经典编程语言笔记(你值得拥有)_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

FORTRAN笔记2014.10.07目录TOC\o"1-5"\h\z第七讲.FORTRAN的基本知识.ppt2FORTRAN语言程序设计初步2FORTRAN源程序的书写格式(以77为例)2变量2变量类型2算术运算符和运算优先级3赋值语句3参数语句(PARAMETER语句)3END语句3PAUSE语句3逻辑运算和选择结构4关系表达式4FORTRAN中数组的定义及使用4其他5fortran语言定义CHARACTER*6TTL(14,3),CNAM(400)是什么意思?5fortran里character*10是什么意思5Fortran中kind是什么函数?5第七讲—FORTRAN的基本知识・pptFORTRAN语言程序设计初步FORTRAN是FormulaTranslation的缩写,意为“公式翻译”它是为科学、工程问题或企事业管理中的那些能够用数学公式表达的问题而设计的,其数值计算的功能较强。常用的是FORTRAN77和FORTRAN90两种标准。1、一个程序由若干个程序单位组成。主程序和每一个子程序分别是一个独立的程序单位。2、每一个程序单位都是以“END”结束的。3、一个程序单位包括若干行。1)语句行。由一个FORTRAN语句组成。2)非语句行,即注释行。4、FORTRAN程序中的语句可以没有标号,也可以有标号,根据需要而定。标号的作用是标志一个语句以便被其他语句引用。5、一个程序单位中各类语句的位置是有一定规定的。6、FORTRAN源程序必须按一定的格式书写。FORTRAN源程序的书写格式(以77为例)每一行有80列,分别如下:1、第1-5列为标号区。一行中第一列为“C”或“*”,该行即被认为是注释行。2、第6列为“续行标志区”如果在一行的第6列上写一个非空格和非零的字符,则该行作为其上一行的续行。3、第7-72列为语句区。4、第73-80列,注释区。变量变量名:一个变量需要用一个名字(变量名)来识别。在同一个程序单位中不能用同一个变量名代表两个不同的变量。FORTRAN的变量名按以下规则选定:1)第一个字符必须是字母,即变量名必须以字母开头;2)在一个字母后面可以跟1-5为数字或字母。如果选定的变量名超过6个字符,则只有前面6个字符有效。注:在变量名中大写与小写字母是等价的。变量类型整型变量Integer、实型变量Real、双精度变量DoublePrecision、复型变量Complex、逻辑型变量Logical和字符型变量Charactero1、隐含约定(I-N规则)FORTRAN规定:在程序中的变量名,凡以字母I,J,K,L,M,N六个字母开头的,即认为该变量为整型变量在程序中,凡是变量名以字母I,J,K,L,M,N,i,j,k,l,m,n开头的变量被默认为整型变量,以其他字母开头的变量被默认为实型变量。2、用类型说明语句确定变量类型1)INTEGER语句(整型说明语句)2)REAL语句(实型说明语句)3)DOUBLEPRECISION语句(双精度说明语句)4)COMPLEX语句(复型说明语句)5)LOGICAL语句(逻辑型说明语句)66)CHARACTER语句(字符型说明语句)内部数据类型分为两类:数值型(整型、实型和复型)和非数值型(字符型和逻辑型)3、用IMPLICIT语句(隐含说明语句)指定变量类型例:IMPLICITINTEGER(A,C,T-V)注:以上三种方法中,以类型说明语句最优先,IMPLICIT语句次之,“I-N规则”的隐含约定级别最低。类型说明只在本程序单位内有效。IMPLICIT语句和类型说明语句应该出现在本程序单位中的所有执行语句的前面,其中,IMPLICIT语句又应在所有的类型说明语句的前面。算术运算符和运算优先级算术运算符和运算优先级+表示“加”(或正号)表示“减”(或负号)*表示“乘”/**表示“除”表示“乘方”优先级次序:**最高*,/次之+,-最低注:同类型的算术量之间运算的结果仍保持原类型。如果参加运算的两个算术量为不同类型,则编译系统会自动将它们转换成同一类型然后进行运算。转换的规律是:将低级类型转成高级类型。赋值语句赋值语句的作用是将一个确定的值赋给一个变量。其一般格式为:V=eV代表一个变量名,e代表一个表达式。参数语句(PARAMETER语句)PARAMETER语句与赋值语句不同,它是非执行语句,在程序定义一个符号常量后,不能再改变它的值。它应写在所有执行语句之前,符号常量的定名规则与定变量名相同。在一个参数语句中可以定义多个符号常量。优点:如果需要改变某一常数时,不需一一改变这个常数,只需改变参数语句中符号常量的值即可。END语句作用:1)结束本程序单位的运行;2)作为一个程序单位的结束标志。PAUSE语句暂停语句,在程序中假如几个PAUSE语句,即设几个“断点”把程序分成几段,调试程序时一段一段地检查,在调试完成后再将所有的PAUSE删去。一般形式:PAUSE(n)N是输出信息,程序员可以由此辨认程序的流程。逻辑运算和选择结构用块IF结构来实现选择结构,其形式为:IF(条件)THENthen块ELSEelse块ENDIF它的执行逻辑为:如果给定的条件成立则执行“then块”,否则,执行“else块”关系表达式关系表达式是最简单的一种逻辑表达式。其形式:<算术量><关系运算符〉<算术量〉关系运算符:>=(.GE.)<=>=(.GE.)<=(.LE.)/=(.NE.)<(.LT.)==(.EQ.)1)关系运算符的两个字母的两侧各有一个句点。2)在一个关系表达式中可能包括算术运算符和关系运算符,它们的运算次序为:先进行算术运算,然后进行关系运算。3)关系表达式是将两个数值进行比较,这两个数值量可以是不同类型的量。例:整型和实型4)关系表达式的值不是一个数值,而是一个逻辑量。FORTRAN中数组的定义及使用From:《Fortran95程序设计》彭国伦基本使用:一维数组:datatypename(size)datatype:integer,real,complex,logical,或type自定义出来的类型。integer,parameter::students=5integer::student(students)其他定义方法:integera(10)!最简单的integer,dimension(10)::a!另外的方法integer,dimension(10)::a,b,c!一起定义integera!f77先声明a是整型,dimensiona(10)!再声明a是大小为10的数组或typetype::personreal::height,weightendtypetype(person)::a(10)a(2)%height=180.0二维数组:integera(3,3)a(1,1)=3定义方法:integera(10,10)integer,dimension(10,10)::a,b,cintegeradimensiona(10,10)!f77,先定义类型二维数组常用来当作矩阵使用。多维数组:fortran最多可声明高达七维的数组。integera(D1,D2,...,Dn)!n维一般说来,越高维数组读数据越慢。另类声明方法:integera(5)可使用的是a(1),a(2),a(3),a(4),a(5)integera(0:5)下标可使用的是0〜5,a(0),a(l),...,a(5)六个元素。integera(-3:3)可以使用的是a(-3),a(-2),a(-1),a(0),...,a(3)七个元素。integera(5,0:5)可用a(l~5,0~5)integerb(2:3,-1:3)可用b(2~3,-1~3)其他fortran语言定义CHARACTERSTTL(14,3),CNAM(400)是什么意思?表示定义字符串,每个字符串长度是6。一共定义两个该长度字符串的数组,一个叫TTL,二维数组,14*3个元素。另一个叫CNAM,—维数组,400个元素。fortran里character*10是什么意思就是限定最大为10个字符Fortran中kind是什么函数?查看变量所占内存空间的字节数。声明整型数、浮点数变量所占用的内存字节bytes字节1byte有8位,可以表示一个字母、数字或符号(一个汉字占两字节)1byte=8bit1KB=1024bytes=210bytes1MB=1024KB=220bytes1GB=1024MB=230bytesFortran声明变量(经典)大家好:我刚刚接触Fortran,看见个代码中用了dimension这个东西,我在书里翻了一下,没看到dimension可以声明变量。请问这个是什么意思呢?谢谢!ProgramMain_hydrusdoubleprecisionP,R,S,Q,RTime1,t,tInit,tOld,RTime,tMax,tAtm,tPrint1,tAtm1,tAtm2,tAtmOld,tAtmN,tAtm2O,TPrint,tPrintIntcharactercFileName*260,cDataPath*260,ccname*260dimensionx(NumNPD),hNew(NumNPD),hOld(NumNPD),hTemp(NumNPD)dimension在fortran是定义数组,楼主的程序段中,dimensionx(NumNPD),hNew(NumNPD),hOld(NumNPD),hTemp(NumNPD)定义了x,hNew,hOld,hTemp四个一位数组,括号内的变量代表了数组的大小。需要注意的是在fortran中默认以a-h和o-z开头的变量为实型变量,而其他的均为整型变量,所以在这里NumNPD是一个整型变量。例如:dimensionx(100)即定义了一个容量了100的一维数组,记为x(100),上述四个数组含义类似。fortran语言对语法要求相对严格一些,祝学习顺利!以上愚见,如有不当之处,请见谅……dimension是声明数组大小用的。比如:realadimensiona(10)fortran90的新语法可以写成:reala(10)不过我看lz的代码前面都有缩进,所以估计是旧语法。新语法向前兼容,但是老板看不懂……6.Fortran里面的return语句怎么用??目前遇到遇到如何把C语言代码转换成Fortran语句的问题。因为C语言里面有return,返回值给主调函数。Fortran里面也有return语句,但是用法含义是否与C语言相同呢??求助高手!!本人菜鸟,刚刚开始Fortran,不知道retrun语句怎么用。。。。而且也不知道哪个语句具有与C中的return中相同的功能。。。。RtsoOOO找了一些书,也没有找到介绍。。。求助!Fortran里面也有return语句,但是用法含义是否与C语言相同呢??哪个语句具有与C中的return中相同的功能呢??谢谢!!!!!Fortran中可以不用return啊。如果是子程序,返回值都直接写在子程序的参数序列中了如果是函数,函数名本身就是返回值所依附的变量……不明白你为什么要把C转为Fortran,有什么特别的理由吗?"Return"isusedinasubroutineforconditionallyexitingthesubroutine.retrurn语句如果放到子程序的末尾(即end之前的话,跟不用return没有什么区别,这种情况可以不用);如果不是上面的这样,放在子程序其它位置的,表示程序执行到return语句的时候就返回到主程序中。7.开方SQRT函数SQRTElementalIntrinsicFunction(Generic):Derivesthesquarerootofitsargument.单元内部函数Syntax语法result=SQRT(x)x(Input)mustbeoftyperealorcomplex.Ifxistypereal,itsvaluemustbegreaterthanorequaltozero.输入的x必须为实型或复型。假如x的类型为实型,X的值必须大于或等于0Results:Theresulttypeisthesameasx.Theresulthasavalueequaltothesquarerootofx.Aresultoftypecomplexistheprincipalvalue,withtherealpartgreaterthanorequaltozero.Whentherealpartoftheresultiszero,theimaginarypartisgreaterthanorequaltozero.开平方函数的类型与X一样。其结果是X的开平方值。复型的开平方是个主值,实部大于或等于0。当实部等于0时,虚部大于或等于08.空格Fortran77会忽略行中的空格,关键字和变量中可以有空格。FreeFormat(自由格式)Fortran90与95格式空格:在语句名和变量名中间不能有空格。需要空格的地方必须有一个以上空格(GOTO和GOTO,ELSEIF和ELSEIF,END构造名(构造名有:DO,PROGRAM,FUNCTION,MODULE,SUBROUTINE)等有两种写法的除外),如关系运算符==,<=不能写成==,<=。这与F77有很大不同之处,因为F77的设计中将编译源程序的空格忽略。9.双精度液粘度类型数拯液粘度类型数拯取特度数在计算机系统中以两倍」:实型的字节数来仔储.它提供的有效数字比实型数据參一倍既上。取粘度数也是近似的表承数,只尾它的粘度更高.在同一个系统中.它与实型数据的表推范帽相同°戏耕塵常数要以指敌形式叢示.井以ifl代替%LU21.1d21234567d+fll個览垠帶披融坤1衲:H狀状T)取精度型.數粥・姿先用类型说明语句^implidt^句諮义「怔川doubkpriseisJQflanuniot,iAtodaeiitiplicildc.ibk[irccisK)n(rTx-i)real::8imax,voltr&il⑻imax,voltreal(kind=B)imaxrvolt!Fartan90诵加若指数标识为D或d,则表示该实数为双精度实数,等价于kind值为8,但不能指定kind值,即D指数不允许指定实型kind值。表实数的存储空间、精度及取值范围实型类型名字节数精度(有效数字)取值范围单精度46-7±3.40282347E38-±1.17549435E-38双精度815-16±2.2250738585072013D308-土1.7976931348623158D-308表整数的存储空间及取值范围整型类型名字节数取值范围integer(1)1-128~127短整型integer(2)2-32768~32767长整型integer4-2147483648~2147483647integer(8)8-263〜263-1(Alpha系统)Fortran95程序设计(书籍彭国伦编著)Chapter3Fortran程序设计基础3-1字符集“字符集”是指编写Fortran程序时,所能使用的所有字符及符号。26个英文字母(不区分大小写)0-9数字22个特殊符号3-2书面格式FixedFormat(固定格式),扩展名为*.F或*.FOR文件在“固定培式"中*规定了程序代玛每"行中毎个字段的意义"第7—72个宇符,是可以用来编写程序的字段。毎一厅的前5个字符只能是空格或是敷字.数字用來作为拆行代码仃每一行的第6个字符只能是空格或我『以外的字符*第字符如耒是字母Gu克星号*・这一行丸去会皱当航说明就注「不会被编译第1T牛字特卜知果赴鑑字,就是周来綸迟一杆程芦代硝Jk*代号.本热只能是空格*6金字袴女果是P”以外的桜何宇祎,.蠱示逍一冇租斤豪■拙续上亠佇复丁〜72个字帚Foruan腥序代码的爲宵区喪'第茁个字苻之若不使用,超迪灼部分缺忠噁,嗚的塩曄器会发出错祀住息FixedFormat是为了配合早期使用穿孔卡片输入程序所发明的格式。FreeFormat(自由格式),扩展名为*.F90文件FreeFormat基本上允许非常自由飾編写格式.它没有规定每一行的第几个字符有什么作用.需翌注意的爭项只有以下几点:叹号I”后面的文本都是注释匕<2)每街可以編耳132个字符,C3)厅号放在每行程序的国前咖」-疔程序代码的最后如果是符号代表下一行程序会和这--行连接_如果一行程序代码的幵头是符号代表它会和上一行程序连接。3-3Fortran的数据类型数据类型:使用Fortran在计算机内存中记录文本、数值等数据的最小单位及方法整数(Integer)、浮点数(Real)、复数(Complex)、字符(Character)、逻辑判断(Logical)1-整数<INTEGERJ埜数的类型又分两种、脸螯型与短整聲在个心算机中长整型占用32呱(4by【Q的空间,长整型可以保淸的牧值范匿在-2147483648-+2147483647之间〔也就是在_少+1-刃之冋h而短整型占16bits(2bytes)空间,保存的鬆值范围^-3276«-+32767<间(就是「2汙+1*屮3之间).有的編译器还可収提供一种更短的整数类型"只占sbits(ibyte&)的空间,可以保存-12呂・*12了之间的墊數.X浮点数<REAL)浮点就也有两种类型,羊精度及则靱C单栉度睜点数翟卜人计第机中占用32bits(4切说)的空臥有裁住歎为6~7^ti■可记录萌最大戳值为士阳打贰,童小#t值为il.lS*l(TMt双狗t金占即64b伽(8by仙),肴枚住歎为15-1644.可记录的載乂麹<为±1.砂・10~,故小就值为±223*UP®.复数(COMPLEX)就是以a+bi的形式来惡示的就隹*复就中的氷b值其实捷由两卜浮点数来僦记录,所以震戡岡样电有两种类釦单糊SJUt及轴初L复杜・氐宇符(CHARACTER)计算机除了存储數字之外,电可以在,内存中範录一段文本.字符矣型可讽记录的东西非常广」从牲盘輪入的任何东西,不论是敵字、丈本或怪何待殊苻号・它都可权记義*附朿B的ASCU字幷表此是这个典型所能记敗的所有字符.只记录一个字母、幷号时的数据类型称为班芋朴J记叢一堆申杓丰符时.就韩为•■字符率J记滾一个字苻需笑一个字节的存皤空间,记秉口介字符也t的字杆审列儒要n个字节的存储空间.逻辑判斷(LOGICAL)逐辑列斷只能保存两种逻辑姑忌分别为44是”(TRUE>矜“否”(FALSE)4也可以翻畢成“对S“错S或是=真J嘟T等等■崔二进创中,通常以1代表TRUE闪柑IRALSE.3-4Fortran的数学表达式用Fortran来編写数学表达式的规则和方法都垠声直观化”,和在纸上做四则运算只有一点点的差别。Fortran所使用的数学运算符号,报据运算优先级顺序排行如下,+加法-减法*乘法/燎法**乘幕(两能星号要连续)()括号(表示括号起来的部分优先计算)越是卜「面的符号’运算优先级趟髙,所以算式申会先计算乘除,后计算加减°在程序中编爲表达式和手写的差别主耍有三点;乘算要连用两个星号,不能像手写的时候只妾把数字写底上标就行了’例如沪必须写啟2"匕<2>乘号不能省略手写的算式中<A+B)(C+D)和<A4B)*(C+D)是一样的*但写程序时只容许第2种写法.所以像2*A也不能写成2Ao(3)除法用计算机編写时没有下面的表示方法;鱼严K+D)~2*(£+F)~这个算式一定要写成((A+B)*(C+D))/(2*(E+F))的形式才行匕Chapter4输入输出及声明1.Implicit命令Fortran标准中,变量不一定要经过程序的声明才能使用,编译器会根据变量名称的第一个字母来自动决定这个变量的类型。第1个字母为I、J、K、L、M、N的变量被视为整数类型,其他的变量则被当成浮点数来使用。Implicit命令的功能是用来设置“默认类型”所谓的默认类型,是指Fortran不经过声明,由第一个字母来自动决定这个变量的类型。2.常数的声明方法(Parameter)3.设置变量的初值Fortran77要使用DATA命令来设置初值。DATA的语法是在DATA后接上所要设置初值的变量,然后再用两个斜杠包住所要设置的值DATA命令会依照服序来设置盟侑“dataa,B.c.STR/h2-0,(],0*FORTRAN77'/ttttABCSTRP130DATA对数组赋初值4.输入(WRITE)命令用法:在括号中挂上两个星号,再把所要输出的字符串用两个双引号引起来放在后面,例如:write(*,*)“就是这么简单”write(UNIT=*,FMT=*)“就是这么简单”以上这两种写法结果是一样的,在write中加上了UNIT=*,FMT=*这两个描述,只是为了明确的表示输出位置使用默认值以及不限定输出格式。通常在程序中都会使用简写的写法。事实上,严谨的写法如下:write(6,*)“String”write(UNIT=6,FMT=*)“String”因为屏幕的输出UNIT位置就是6,而UNIT=*时,就是UNIT=6oFortran90可以使用双引号或单引号来封装字符串,Fortran77标准中只能使用单引号,不过大部分的Fortran77编译器还是可以接受双引号的。Chapter7数组(ARRAY)7-1基本使用7-1-1一维数组EMsdypeniime()11it爼遽量部E亭Daiarypt的崟世.除了4种患本宾型(血器er,real,rompkx,10&ical>芝外,也可type自订出皋的更嗨程序的第4行丙明了…个叫做stud

温馨提示

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

评论

0/150

提交评论