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

下载本文档

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

文档简介

1、FORTRAN 笔记2014.10.07目录第七讲 _FORTRAN 的基本知识 .ppt 2FORTRAN 语言程序设计初步 2FORTRAN 源程序的书写格式(以 77 为例) 2变量 2变量类型 2算术运算符和运算优先级 3赋值语句 3参数语句( PARAMETER 语句) 3END 语句 3PAUSE 语句 3逻辑运算和选择结构 4关系表达式 4FORTRAN 中数组的定义及使用 4其他 51. fortran 语言定义 CHARACTER*6 TTL(14,3),CNAM(400) 是什么意思 ? 52. fortran 里 character*10 是什么意思 53. Fortra

2、n 中 kind 是什么函数? 5第七讲FORTRAN的基本知识.pptFORTRAN语言程序设计初步FORTRAN是Formula Tran slation的缩写,意为“公式翻译”,它是为科学、工程问题或企事业管理中的那些能够用 数学公式表达的问题而设计的,其数值计算的功能较强。常用的是 FORTRAN77和FORTRAN90两种标准。1、一个程序由若干个程序单位组成。主程序和每一个子程序分别是一个独立的程序单位。2、每一个程序单位都是以“ END ”结束的。3、一个程序单位包括若干行。1)语句行。由一个 FORTRAN语句组成。2)非语句行,即注释行。4、FORTRAN程序中的语句可以没有

3、标号,也可以有标号,根据需要而定。标号的作用是标志一个语句以便被其 他语句引用。5、一个程序单位中各类语句的位置是有一定规定的。6、FORTRAN源程序必须按一定的格式书写。FORTRAN源程序的书写格式(以 77为例)每一行有80列,分别如下:1、第1-5列为标号区。一行中第一列为“ C”或“ *”,该行即被认为是注释行。2、第6列为“续行标志区”,如果在一行的第 6列上写一个非空格和非零的字符,则该行作为其上一行的续行。3、第7-72列为语句区。4、第73-80列,注释区。变量变量名:一个变量需要用一个名字(变量名)来识别。在同一个程序单位中不能用同一个变量名代表两个不同的变 量。FORT

4、RAN的变量名按以下规则选定:1)第一个字符必须是字母,即变量名必须以字母开头;2) 在一个字母后面可以跟 1-5为数字或字母。如果选定的变量名超过 6个字符,则只有前面 6个字符有效。注:在变量名中大写与小写字母是等价的。变量类型整型变量Integer、实型变量 Real、双精度变量Double Precision、复型变量 Complex、逻辑型变量 Logical和字符型变量 Character。1、隐含约定(I-N规则)FORTRAN规定:在程序中的变量名,凡以字母I, J, K,L,M,N六个字母开头的,即认为该变量为整型变量。在程序中,凡是变量名以字母l,J,K,L,M,N,i,j

5、,k,l,m,n开头的变量被默认为 整型变量,以其他字母开头的变量被默认为实型变量。2、用类型说明语句确定变量类型1)INTEGER语句(整型说明语句)2)REAL语句(实型说明语句)3)DOUBLE PRECISION 语句(双精度说明语句)4)COMPLEX语句(复型说明语句)5)LOGICAL语句(逻辑型说明语句)逻辑运算和选择结构内部数据类型分为两类:数值型(整型、实型和复型)和非数值型(字符型和逻辑型)3、用 IMPLICIT 语句(隐含说明语句)指定变量类型 例: IMPLICIT INTEGER(A,C,T -V)注: 以上三种方法中,以类型说明语句最优先, IMPLICIT 语

6、句次之, “ I-N 规则”的隐含约定级别最低。 类型说明只在本程序单位内有效。IMPLICIT 语句和类型说明语句应该出现在本程序单位中的所有执行语句的前面, 其中, IMPLICIT 语句又应在所有 的类型说明语句的前面。算术运算符和运算优先级 算术运算符和运算优先级:+表示“加” (或正号)-表示“减” (或负号)* 表示“乘”/ 表示“除”* 表示“乘方” 优先级次序:* 最高* , /次之+ ,-最低注:同类型的算术量之间运算的结果仍保持原类型。如果参加运算的两个算术量为不同类型,则编译系统会自动将它们转换成同一类型然后进行运算。转换的规 律是:将低级类型转成高级类型。赋值语句 赋值

7、语句的作用是将一个确定的值赋给一个变量。其一般格式为:V=eV 代表一个变量名, e 代表一个表达式。参数语句( PARAMETER 语句)PARAMETER 语句与赋值语句不同,它是非执行语句,在程序定义一个符号常量后,不能再改变它的值。它应 写在所有执行语句之前,符号常量的定名规则与定变量名相同。在一个参数语句中可以定义多个符号常量。优点:如果需要改变某一常数时,不需一一改变这个常数,只需改变参数语句中符号常量的值即可。END 语句作用: 1)结束本程序单位的运行;2)作为一个程序单位的结束标志。PAUSE 语句暂停语句,在程序中假如几个 PAUSE 语句,即设几个“断点” ,把程序分成几

8、段,调试程序时一段一段地检查,在 调试完成后再将所有的 PAUSE 删去。一般形式: PAUSE (n)N 是输出信息,程序员可以由此辨认程序的流程。用块IF结构来实现选择结构,其形式为:IF (条件)THENthen 块ELSEelse 块then块”,否则,执行else块”。ENDIF它的执行逻辑为:如果给定的条件成立则执行关系表达式 关系表达式是最简单的一种逻辑表达式。其形式:关系运算符: (.GT.)= (.GE.)(.LT.)= (.LE.)=(.EQ.)/= (.NE.)注意:1) 关系运算符的两个字母的两侧各有一个句点。2) 在一个关系表达式中可能包括算术运算符和关系运算符,它们

9、的运算次序为:先进行算术运算,然后进行关系 运算。3) 关系表达式是将两个数值进行比较,这两个数值量可以是不同类型的量。例:整型和实型。4) 关系表达式的值不是一个数值,而是一个逻辑量。FORTRAN中数组的定义及使用From:Fortran 95程序设计彭国伦1基本使用:一维数组:datatype n ame (size)datatype: integer, real, complex, logical,或 type 自定义出来的类型。in teger, parameter : stude nts = 5in teger : stude nt (stude nts)其他定义方法:intege

10、r a(10) !最简单的integer, dimension (10): a !另外的方法integer, dimension (10): a,b,c ! 一起定义integer a!f77先声明a是整型,dimension a(10)!再声明a是大小为10的数组或 typetype : pers onreal :height, weight end typetype (pers on) : a(10) a(2)%height = 180.0CNAM ,一维数组, 400dimension 可以声明变量。二维数组: integer a(3, 3) a(1,1) = 3 定义方法: integ

11、er a(10,10) integer, dimension (10, 10) : a,b,c integer adimension a(10,10) ! f77, 先定义类型 二维数组常用来当作矩阵使用。多维数组:fortran 最多可声明高达七维的数组。 integer a(D1,D2,.,Dn) ! n 维 一般说来,越高维数组读数据越慢。另类声明方法:integer a(5) 可使用的是 a(1), a(2), a(3), a(4), a(5)integer a(0:5)下标可使用的是05, a(0),a(1),.,a(5)六个元素。integer a(-3: 3)可以使用的是 a(-

12、3), a(-2), a(-1), a(0),.,a(3)七个元素。 integer a (5,0:5) 可用 a(15, 05) integer b(2:3, -1:3) 可用 b(23, -13)其他1. fortran 语言定义 CHARACTER*6 TTL(14,3),CNAM(400) 是什么意思 ? 表示定义字符串,每个字符串长度是 6。一共定义两个该长度字符串的数组,一个叫 TTL ,二维数组, 14 * 3 个元素。另一个叫 个元素。2. fortran 里 character*10 是什么意思就是限定 最大为 10个字符3. Fortran 中 kind 是什么函数? 查看

13、变量所占内存空间的字节数。声明整型数、浮点数变量所占用的内存字节4. bytes 字节1byte 有 8 位,可以表示一个字母、数字或符号(一个汉字占两字节)1 byte = 8 bit1 KB = 1024 bytes =210 bytes1 MB = 1024 KB = 220 bytes1 GB = 1024 MB = 230 bytes5. Fortran 声明变量(经典)大家好:我刚刚接触Fortran,看见个代码中用了 dimension这个东西,我在书里翻了一下,没看到 请问这个是什么意思呢? 谢谢!Program Main_hydrus double precision P,R

14、,S,Q,RTime1,t,tInit,tOld,RTime,tMax,tAtm, tPrint1,tAtm1,tAtm2,tAtmOld,tAtmN,tAtm2O, TPrint,tPrintInt character cFileName*260,cDataPath*260,ccname*260dimension x(NumNPD),hNew(NumNPD),hOld(NumNPD),hTemp(NumNPD)dimension 在 fortran 是定义数组,楼主的程序段中,dimension x(NumNPD),hNew(NumNPD),hOld(NumNPD),hTemp(NumNPD

15、)定义了 x,hNew , hOld , hTemp 四个一位数组,括号内的变量代表了数组的大小。需要注意的是 在 fortran 中默认 以 a-h 和 o-z 开头的变量为实型变量,而其他的均为整型变量,所以在这里 NumNPD 是一个整型变量。例如: dimension x(100) 即定义了一个容量了 100 的一维数组,记为 x(100) ,上述四个数组含义类似。fortran 语言对语法要求相对严格一些,祝学习顺利!以上愚见,如有不当之处,请见谅dimension 是声明数组大小用的。比如:real adimension a(10)fortran90 的新语法可以写成:real a

16、(10)不过我看lz的代码前面都有缩进,所以估计是旧语法。新语法向前兼容,但是老板看不懂6. Fortran 里面的 return 语句怎么用?目前遇到遇到如何把 C语言代码转换成 Fortran语句的问题。因为C语言里面有return,返回值给主调函数。Fortran 里面也有 return 语句,但是用法含义是否与 C 语言相同呢?求助高手! !本人菜鸟,刚刚开始Fortran,不知道retrun语句怎么用。而且也不知道哪个语句具有与C中的return中相同的功台匕能。找了一些书,也没有找到介绍。 。求助! F ortra n 里面也有 return 语句, 但是用法含义是否与 C 语言相

17、同呢?哪个语句具有与 C 中的 return 中相同的 功能呢?谢谢! !Fortran 中可以不用 return 啊。如果是子程序,返回值都直接写在子程序的参数序列中了如果是函数,函数名本身就是返回值所依附的变量不明白你为什么要把C转为Fortran,有什么特别的理由吗? Return is used in a subroutine for conditionally exiting the subroutine.retrurn 语句如果放到子程序的末尾 (即 end 之前的话, 跟不用 return 没有什么区别, 这种情况可以不用) ;如果不是 上面的这样,放在子程序其它位置的,表示程序

18、执行到return 语句的时候就返回到主程序中。7. 开方 SQRT 函数SQRTElemental Intrinsic Function (Generic): Derives the square root of its argument.单元内部函数Syntax语法 result = SQRT (x) x(In put) must be of type real or complex. If x is type real, its value must be greater tha n or equal to zero.输入的x必须为实型或复型。假如 x的类型为实型,x的值必须大于或等于0

19、Results:The result type is the same as x. The result has a value equal to the square root of x. A result of type complex is the prin cipal value, with the real part greater tha n or equal to zero. When the real part of the result is zero, the imag inary part is greater tha n or equal to zero.开平方函数的类

20、型与 x 一样。其结果是x的开平方值。复型的开平方是个主值,实部大于或等于0。当实部等于0时,虚部大于或等于08. 空格Fortran77会忽略行中的空格,关键字和变量中可以有空格。Free Format (自由格式) Fortran90 与 95 格式空格:在语句名和变量名中间不能有空格。需要空格的地方必须有一个以上空格(GOTO和GO TO ,ELSEIF和ELSEIF,END构造名(构造名有:DO, PROGRAM, FUNCTION, MODULE, SUBROUTINE)等有两种写法的除外),如关系运算符=,=不能写成=, =。这与F77有很大不同之处,因为 F77的设计中将编译源程

21、序的空格忽略。9. 双精度取桥度类型颉据或粘醴独在计口机系姣屮口两倍实犁的字节数來 就.它提供的有效数字比实割数蜓生一倍U1上.霞持麼垃也晁近似的表示牛数,只处它的辅厦迥 在同一个系统中.它歸实型敌撮的菱数范隔相同* 額箱度常数要以腊敷倉式表赤lJel * Ud2I2,M567eHH【只苗也时妞字)L234567d+0l : t i.234S67raiOM)oto.竹孩辅弋担却 m熄有恢数才) 租精度璽数据*彊先用类3!悅明语旬或implicit语旬I ilik- . L- 、 nt miiuuiii, iiKumei . ti i h j(r. x-z)rtnl X imnxT vuLt;e

22、ultis itntut* ull;-i it innax. volt ft-nrtar若指数标识为 D或d,则表示该实数为双精度实数,等价于 kind值为8,但不能指定kind值,即D指数不允许指 定实型kind值。表 实数的存储空间、精度及取值范围实型类型名字节数精度(有效数字)取值范围单精度d46-7 3.40282347E38- 1.17549435E-38双精度815-16 2.2250738585072013D308 - 1.7976931348623158 D -308表 整数的存储空间及取值范围整型类型名字节数取值范围in teger(1)1-128127短整型 integer

23、(2)2-3276832767长整型 integer4-21474836482147483647in teger(8)8263 263-1( Alpha 系统)Fortran 95程序设计(书籍 彭国伦编著)Chapter 3 Fortran程序设计基础3-1 字符集“字符集”是指编写 Fortran程序时,所能使用的所有字符及符号。26个英文字母(不区分大小写)0-9数字22个特殊符号3-2书面格式Fixed Format (固定格式),扩展名为*.F或*.FOR文件在“固宦堆式中规定了程序弋码每一打中毎个字段的意义.第772个字符.g 可以用夹编写程序的字段*每-厅的前5个宇符只廃是空格或

24、是敷字.数字用来作为行 代码S每一行的第6个字符只能是空格或“(T以外的字符,* 12蒂妁歎址字站G c AJ号r違一厅尢蛊舍飯当此就明批出 不冬就坞屯|第1-5木李苻I妁熹是蛊字,就是周表给这一节翌*代碣Jk金代号*盂抓只能是空板 T第6个芋芍1如幕Jl(r以外的好何宇氏 反示遠一疔轅芹命聶肄上一幷JFonnrn 14代碣妁麟坊匯握?3个手特之怎不使寤,趨过的部分会就息略,巧前坞幸鑫会发出特誤依扈Fixed Format是为了配合早期使用穿孔卡片输入程序所发明的格式。Free Format (自由格式),扩展名为*.F90文件Free Format基本上允许罪常自由的编写洛式,它没有规定每一

25、行的第几个字袴有什么 作用.需要注意的爭项只有以下几点:叹号*!*后面的文本部是注释*(.2)每fj可以編写132个字符3)fT号放在毎疔程序的垠前曲“ 逻辑判断(Logical)L 整数(INTEGER)整数的类型文分雋权氏整型与短整尘.在个人计算机中枚豎型占用32 bits (4 by佬叮 的空间长整型可以保石的數值范禹在-2147483648 - +2M7485647之间(也就退妇2 3之间人而短磐型占用Mbits (2byte$)的空间*帰存的歎B范禺虚-3276S _+32%7之间 (就是Q+l V之间).有的堀译器还可以提供一种更盤的雙數类:型.只占$ bits ( 1 bytes

26、) 的空就、可- 128 +27,fa的怡數.X 浮点REAL)浮点甦也有两种売型早辅虔乩讪屢.却帽度浮点就在*人计算机中占用32 bite (4 Bytrs)的空臥有效負戟为位于活录的最大4t值为士3虫叫0*, * *5 (FALSE).也可玖 *1宰成*时=-4t A是护、“假”普钦在二itl中通常以1代衷TRURO代表LSE3-4 Fortra n的数学表达式用Fortran来编写數学表达式的规则和方法邯娠詛貞现化冷和在城上俊四则运爍只有 一点点的差別h Fortran所使用的数学运算符号,根据运1?优先级顺序排行如下+加漆 -减法*胞法 / 隐法*乘謨(两沧星号要连*)() 括号(表示括号起来的部分优先计修)越是卜面的?号,运算优先级越鹉 所以算式中会先计算乘除,后计算加减.在殍序 中編瑪表达式和手写的差别主要肖三点:1)乘算要连用两个星号,不能像手写的时候只要把融字写成上标就行了.觇妇炉必 须写成2袖2百乘号不能省略*手写的算式中(A+B) (C+D)和(A+B) * (C+D)咼一样的* 但写程序时只容许第2种写法.所以12*A也平能写成2A。(3)除法用计悴机编写时没有下ftj的衣示方法:“申团智OD2*(E+F)这个算式一定要写成(A+B) * C+D / (2*(E+F)的形式

温馨提示

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

评论

0/150

提交评论