完整Fortran经典编程语言笔记你值得拥有.docx
- 文档编号:16014968
- 上传时间:2023-07-09
- 格式:DOCX
- 页数:17
- 大小:1.45MB
完整Fortran经典编程语言笔记你值得拥有.docx
《完整Fortran经典编程语言笔记你值得拥有.docx》由会员分享,可在线阅读,更多相关《完整Fortran经典编程语言笔记你值得拥有.docx(17页珍藏版)》请在冰点文库上搜索。
完整Fortran经典编程语言笔记你值得拥有
FORTRAN笔记
2014.10.07
第七讲_FORTRAN的基本知识.ppt
FORTRAN语言程序设计初步
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和字符型变量Character。
1、隐含约定(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语句(逻辑型说明语句)
6)CHARACTER语句(字符型说明语句)
内部数据类型分为两类:
数值型(整型、实型和复型)和非数值型(字符型和逻辑型)
3、用IMPLICIT语句(隐含说明语句)指定变量类型
例:
IMPLICITINTEGER(A,C,T-V)
注:
以上三种方法中,以类型说明语句最优先,IMPLICIT语句次之,“I-N规则”的隐含约定级别最低。
类型说明只在本程序单位内有效。
IMPLICIT语句和类型说明语句应该出现在本程序单位中的所有执行语句的前面,其中,IMPLICIT语句又应在所有的类型说明语句的前面。
算术运算符和运算优先级
算术运算符和运算优先级:
+表示“加”(或正号)
-表示“减”(或负号)
*表示“乘”
/表示“除”
**表示“乘方”
优先级次序:
**最高
*,/次之
+,-最低
注:
同类型的算术量之间运算的结果仍保持原类型。
如果参加运算的两个算术量为不同类型,则编译系统会自动将它们转换成同一类型然后进行运算。
转换的规律是:
将低级类型转成高级类型。
赋值语句
赋值语句的作用是将一个确定的值赋给一个变量。
其一般格式为:
V=e
V代表一个变量名,e代表一个表达式。
参数语句(PARAMETER语句)
PARAMETER语句与赋值语句不同,它是非执行语句,在程序定义一个符号常量后,不能再改变它的值。
它应写在所有执行语句之前,符号常量的定名规则与定变量名相同。
在一个参数语句中可以定义多个符号常量。
优点:
如果需要改变某一常数时,不需一一改变这个常数,只需改变参数语句中符号常量的值即可。
END语句
作用:
1)结束本程序单位的运行;
2)作为一个程序单位的结束标志。
PAUSE语句
暂停语句,在程序中假如几个PAUSE语句,即设几个“断点”,把程序分成几段,调试程序时一段一段地检查,在调试完成后再将所有的PAUSE删去。
一般形式:
PAUSE(n)
N是输出信息,程序员可以由此辨认程序的流程。
逻辑运算和选择结构
用块IF结构来实现选择结构,其形式为:
IF(条件)THEN
then块
ELSE
else块
ENDIF
它的执行逻辑为:
如果给定的条件成立则执行“then块”,否则,执行“else块”。
关系表达式
关系表达式是最简单的一种逻辑表达式。
其形式:
<算术量><关系运算符><算术量>
关系运算符:
>(.GT.)>=(.GE.)
<(.LT.)<=(.LE.)
==(.EQ.)/=(.NE.)
注意:
1)关系运算符的两个字母的两侧各有一个句点。
2)在一个关系表达式中可能包括算术运算符和关系运算符,它们的运算次序为:
先进行算术运算,然后进行关系运算。
3)关系表达式是将两个数值进行比较,这两个数值量可以是不同类型的量。
例:
整型和实型。
4)关系表达式的值不是一个数值,而是一个逻辑量。
-------------------------------------------------------
FORTRAN中数组的定义及使用
From:
《Fortran95程序设计》彭国伦
1.基本使用:
一维数组:
datatypename(size)
datatype:
integer,real,complex,logical,或type自定义出来的类型。
integer,parameter:
:
students=5
integer:
:
student(students)
其他定义方法:
integera(10)!
最简单的
integer,dimension(10):
:
a!
另外的方法
integer,dimension(10):
:
a,b,c!
一起定义
integera !
f77先声明a是整型,
dimensiona(10) !
再声明a是大小为10的数组
或type
type:
:
person
real:
:
height,weight
endtype
type(person):
:
a(10)
a
(2)%height=180.0
二维数组:
integera(3,3)
a(1,1)=3
定义方法:
integera(10,10)
integer,dimension(10,10):
:
a,b,c
integera
dimensiona(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
(1),...,a(5)六个元素。
integera(-3:
3)可以使用的是a(-3),a(-2),a(-1),a(0),...,a(3)七个元素。
integera(5,0:
5)可用a(1~5,0~5)
integerb(2:
3,-1:
3)可用b(2~3,-1~3)
其他
1.fortran语言定义CHARACTER*6TTL(14,3),CNAM(400)是什么意思?
表示定义字符串,每个字符串长度是6。
一共定义两个该长度字符串的数组,一个叫TTL,二维数组,14*3个元素。
另一个叫CNAM,一维数组,400个元素。
2.fortran里character*10是什么意思
就是限定最大为10个字符
3.Fortran中kind是什么函数?
查看变量所占内存空间的字节数。
声明整型数、浮点数变量所占用的内存字节
4.bytes字节
1byte有8位,可以表示一个字母、数字或符号(一个汉字占两字节)
1byte=8bit
1KB=1024bytes=210bytes
1MB=1024KB=220bytes
1GB=1024MB=230bytes
5.Fortran声明变量(经典)
大家好:
我刚刚接触Fortran,看见个代码中用了dimension这个东西,我在书里翻了一下,没看到dimension可以声明变量。
请问这个是什么意思呢?
谢谢!
ProgramMain_hydrus
doubleprecisionP,R,S,Q,RTime1,t,tInit,tOld,RTime,tMax,tAtm,
!
tPrint1,tAtm1,tAtm2,tAtmOld,tAtmN,tAtm2O,
!
TPrint,tPrintInt
charactercFileName*260,cDataPath*260,ccname*260
dimensionx(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是声明数组大小用的。
比如:
reala
dimensiona(10)
fortran90的新语法可以写成:
reala(10)
不过我看lz的代码前面都有缩进,所以估计是旧语法。
新语法向前兼容,但是老板看不懂……
6.Fortran里面的return语句怎么用?
?
目前遇到遇到如何把C语言代码转换成Fortran语句的问题。
因为C语言里面有return,返回值给主调函数。
Fortran里面也有return语句,但是用法含义是否与C语言相同呢?
?
求助高手!
!
本人菜鸟,刚刚开始Fortran,不知道retrun语句怎么用。
。
。
。
而且也不知道哪个语句具有与C中的return中相同的功能。
。
。
。
找了一些书,也没有找到介绍。
。
。
求助!
Fortran里面也有return语句,但是用法含义是否与C语言相同呢?
?
哪个语句具有与C中的return中相同的功能呢?
?
谢谢!
!
!
!
!
----------------------------------------------------------------------------
Fortran中可以不用return啊。
如果是子程序,返回值都直接写在子程序的参数序列中了……
如果是函数,函数名本身就是返回值所依附的变量……
不明白你为什么要把C转为Fortran,有什么特别的理由吗?
----------------------------------------------------------------------------
"Return"isusedinasubroutineforconditionallyexitingthesubroutine.
----------------------------------------------------------------------------
retrurn语句如果放到子程序的末尾(即end之前的话,跟不用return没有什么区别,这种情况可以不用);如果不是上面的这样,放在子程序其它位置的,表示程序执行到return语句的时候就返回到主程序中。
7.开方SQRT函数
SQRT
ElementalIntrinsicFunction(Generic):
Derivesthesquarerootofitsargument.
单元内部函数
Syntax语法
result=SQRT(x)
x
(Input)mustbeoftyperealorcomplex.Ifxistypereal,itsvaluemustbegreaterthanorequaltozero.
输入的x必须为实型或复型。
假如x的类型为实型,x的值必须大于或等于0
Results:
Theresulttypeisthesameasx.Theresulthasavalueequaltothesquarerootofx.Aresultoftypecomplexistheprincipalvalue,withtherealpartgreaterthanorequaltozero.Whentherealpartoftheresultiszero,theimaginarypartisgreaterthanorequaltozero.
开平方函数的类型与x一样。
其结果是x的开平方值。
复型的开平方是个主值,实部大于或等于0。
当实部等于0时,虚部大于或等于0
8.空格
Fortran77会忽略行中的空格,关键字和变量中可以有空格。
------------------------------------------------------
FreeFormat(自由格式)Fortran90与95格式
空格:
在语句名和变量名中间不能有空格。
需要空格的地方必须有一个以上空格(GOTO和GOTO,ELSEIF和ELSEIF,END构造名(构造名有:
DO,PROGRAM,FUNCTION,MODULE,SUBROUTINE)等有两种写法的除外),如关系运算符==,<=不能写成==,<=。
这与F77有很大不同之处,因为F77的设计中将编译源程序的空格忽略。
9.双精度
若指数标识为D或d,则表示该实数为双精度实数,等价于kind值为8,但不能指定kind值,即D指数不允许指定实型kind值。
表实数的存储空间、精度及取值范围
实型类型名
字节数
精度(有效数字)
取值范围
单精度
4
6-7
±3.40282347E38-±1.17549435E-38
双精度
8
15-16
±2.2250738585072013D308-±1.7976931348623158D-308
表整数的存储空间及取值范围
整型类型名
字节数
取值范围
integer
(1)
1
-128~127
短整型integer
(2)
2
-32768~32767
长整型integer
4
-2147483648~2147483647
integer(8)
8
-263~263-1(Alpha系统)
Fortran95程序设计(书籍彭国伦编著)
Chapter3Fortran程序设计基础
3-1字符集
“字符集”是指编写Fortran程序时,所能使用的所有字符及符号。
26个英文字母(不区分大小写)
0-9数字
22个特殊符号
3-2书面格式
FixedFormat(固定格式),扩展名为*.F或*.FOR文件
FixedFormat是为了配合早期使用穿孔卡片输入程序所发明的格式。
FreeFormat(自由格式),扩展名为*.F90文件
3-3Fortran的数据类型
数据类型:
使用Fortran在计算机内存中记录文本、数值等数据的最小单位及方法
整数(Integer)、浮点数(Real)、复数(Complex)、字符(Character)、逻辑判断(Logical)
3-4Fortran的数学表达式
Chapter4输入输出及声明
1.Implicit命令
Fortran标准中,变量不一定要经过程序的声明才能使用,编译器会根据变量名称的第一个字母来自动决定这个变量的类型。
第1个字母为I、J、K、L、M、N的变量被视为整数类型,其他的变量则被当成浮点数来使用。
Implicit命令的功能是用来设置“默认类型”。
所谓的默认类型,是指Fortran不经过声明,由第一个字母来自动决定这个变量的类型。
2.常数的声明方法(Parameter)
3.设置变量的初值
Fortran77要使用DATA命令来设置初值。
DATA的语法是在DATA后接上所要设置初值的变量,然后再用两个斜杠包住所要设置的值
P130DATA对数组赋初值
4.输入(WRITE)命令
用法:
在括号中挂上两个星号,再把所要输出的字符串用两个双引号引起来放在后面,例如:
write(*,*)“就是这么简单”
write(UNIT=*,FMT=*)“就是这么简单”
以上这两种写法结果是一样的,在write中加上了UNIT=*,FMT=*这两个描述,只是为了明确的表示输出位置使用默认值以及不限定输出格式。
通常在程序中都会使用简写的写法。
事实上,严谨的写法如下:
write(6,*)“String”
write(UNIT=6,FMT=*)“String”
因为屏幕的输出UNIT位置就是6,而UNIT=*时,就是UNIT=6。
Fortran90可以使用双引号或单引号来封装字符串,Fortran77标准中只能使用单引号,不过大部分的Fortran77编译器还是可以接受双引号的。
Chapter7数组(ARRAY)
7-1基本使用
7-1-1一维数组
大小为5的数组,可以把它想象成5个变量。
---------------------------------------------------------------------
7-1-2二维数组
7-3数组的保存规则
Fortran程序设计视频教程.徐洪波
PRINT*,
其中*为表控输出
Fortran固定格式
(1)第1-5列为标号区。
(2)第6列为续行区。
(3)第7-72列为语句区。
(4)第73-80列为注释区。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整 Fortran 经典 编程 语言 笔记 值得 拥有