Fortran语法备忘录(转载)

Fortran 语法备忘录 (初级)


   最简单的fortran程序:
   END

    * 目录:
      【注释】
      【并行】
      【续行】
      【程序开始】
      【常量】◆整型◆实型◆复型◆逻辑型◆字符◆例子◆其他进制
      【变量】
      【变量声明】◆类型说明&种别说明◆属性说明◆例子◆赋初值
      【数组】◆三元下标◆向量下标◆数组赋值◆数组运算◆WHERE构造◆FORALL构造◆函数名称◆动态数组
      【派生类型】
      【算术运算】
      【关系运算】
      【逻辑运算】
      【判断IF构造】
      【GOTO循环】
      【DO循环】◆隐DO循环◆无循环变量◆跳出循环◆DO WHILE
      【多重选择CASE构造】
      【READ,WRITE 输入输出】◆文件◆WRITE语句◆READ◆I/O列表◆OPEN◆CLOSE◆定位语句◆内部文件
      【FORMAT语句】
      【一些说明】
      【一些建议】


    * 【注释】
      整行注释,第一个字母为 C 或者 *
      附加注释,与句后面用 !
         !--------------------------------------------------------
         ! 说明(F90)
         !--------------------------------------------------------

    * 【并行】
         !--------------------------------------------------------
         a=1.0  ;  b=2.0
         !--------------------------------------------------------

    * 【续行】
      F90中一行为132列,允许有39个续行。在语句行最后加上续行符“&”号。如果字符串被打断,跨2行以上,则在续行的开始位置也要加&号。
      第6列上写一个非空格和非零的字符(任何ASCII字符), 常用C

    * 【程序开始】
         !--------------------------------------------------------
         PROGRAM main
         END PROGRAM main
         !--------------------------------------------------------

    * 【常量】
      ◆整型 (默认4字节)
         100_1                        !单字节整型常量
         2000
         2000_4                      !4字节整型常量
      ◆实型 (默认4字节)
         print *, 3.14159265358979_8   ! 直接打印双精度数
         print *, 3.14159265358979_4   ! 直接打印单精度数(7位有效数字)
      ◆复型  (默认2×4字节) 
         (a,b)=(实数,实数)
      ◆逻辑型 (默认4字节)  .TRUE.  和 .FALSE.
         a=.TRUE.
      ◆字符型 (F90用"")
         name="char"
         例:"I'm a boy."  (长为10字节)
               'I''m a boy.'  (长为10字节)
         字符子串:
         A(3:11)    ->  'CDE12345F',
         A(I+4:9)   ->  'E1234'(I=1),'1234'(I=2)
         A(:5)        ->  'ABCDE'
         A(11:)      ->  'FGH'
         A(:)          ->  'ABCDE12345FGH'
         A(3:3)      ->  'C'
         A=A(:5)//A(6:)          !字符串的合并运算
      求字符串长度的函数:LEN(字符串)
      不计尾部空格的字符串长度函数:LEN_TRIM(字符串)
      求子串在父串位置的函数:INDEX
      验证字符串的函数:VERIFY
      除去尾部空格函数:TRIM
      比较字符大小的函数:LGE、LGT、LLE、LLT


      ◆例如:
         21_2+7.6_4     表示整型种别为2的数21与实型种别为4的数7.6相加。
         3.8E-5_4
         0.87D-16      禁止说明种别值
         (4.7_8,5)      复数表示用括号,逗号分开前面的实部(种别值为8的实数)和后面的虚部(缺省种别值的整数)。
         .FALSE._4     表示逻辑型,其常数值是假,种别值是4。
         1_'计算数学'
         1_'αβγ'         字符串的字符不只限于Fortran字符集内,处理系统支持的图形符号也是允许的。


      ◆整数的其他进制:
      在 F90中,还可以根据需要定义二进制、八进制和十六进制正整数常量。二进制常量的表示方法是以字母B开头,后跟定界符括起来的数字串,定界符可以是撇号或括号,数字是0或1,如:B'01011',B(01011)。八进制常量的表示方法是以字母O开头,后跟定界符括起来的数字串,数字范围是0至7,如:O'10472'。十六进制常量的表示方法是以字母Z开头,后跟定界符括起来的数字或字母串,数字范围是0至9,字母范围为A至F,如:Z'18E2D'。但要注意,整数的这些形式,仅限于出现在DATA赋值语句中。

    * 【变量】
      变量可用字符: 字母A-Y,数字0-9,下划线_  (最多31个字符)
      数组 a(4)

    * 【变量声明】
      F90程序中的数据都有三个特征:类型、种别、属性
      类型说明[(种别说明)][,属性说明表] :: 变量名表[=初值]
      例如:Real (KIND=4), DIMENSION(4)  ::  array               !同:Dimension array(4)


      ◆类型说明 & 种别说明
      整型说明语句
         INTEGER([KIND=]1) 或 INTEGER*1  -128—127
         INTEGER([KIND=]2) 或 INTEGER*2  -32768—32767
         INTEGER([KIND=]4) 或 INTEGER*4  -2147483648—2147483647 缺省值
      实型说明语句
         REAL([KIND=]4) or REAL*4   通常实数的范围是10**-38—10**38之间的7位有效数字 缺省值
         REAL([KIND=]8) or REAL*8   等价于双精度型 DOUBLE PRECISION
      双精度说明语句
         DOUBLE PRECISION
      复型说明语句
         COMPLEX([KIND=]4) or COMPLEX*8    缺省值
      逻辑型说明语句
         LOGICAL([KIND=]4) or LOGICAL*4  缺省值
      字符型说明语句
         CHARACTER([KIND=]1)


      ◆属性说明
      属性关键字         描述  适用范围
      ALLOCATABLE  说明动态数组  数组
      AUTOMATIC      声明变量在堆栈中而不是在内存中  变量
      DIMENSION      说明数组  数组变量
      EXTERNAL        声明外部函数的名称  过程
      INTENT            说明过程哑元的用意  过程哑元
      INTRINSIC        声明一个内部函数  过程
      OPTIONAL        允许过程被调用时省略哑元  过程哑元
      PARAMETER     声明常量  常量
      POINTER          声明数据对象为指针  变量
      PRIVATE          限制模块中的实体访问于本块内  常量、变量或模块
      PUBLIC            允许模块中的实体被外部使用  常量、变量或模块
      SAVE              保存过程执行后其中的变量值  变量或公共块
      STATIC           说明变量为静态存储  变量
      TARGET          声明变量为目标  变量
      VOLATILE        声明对象为完全不可预测并在编译时无优化  数据对象或公共块


      ◆例如:
      REAL*8  a,b*4
      REAL(8) a,b
      REAL(LEN=8) a,b             !种类说明:([KIND=]种别值)
      INTEGER,PARAMETER :: Long=SELECTED_REAL_KIND(9,99)       !属性说明
      REAL :: A=2.8_LONG, B=1.23456789E60_LONG
      LOGICAL(KIND=2),DIMENSION(1:10) :: X                   !同DIMENSION*2  X(10) ??
      CHARACTER(LEN=12,KIND=1) :: A,B
      CHARACTER(KIND=1,LEN=12) :: A,B
      CHARACTER(12,1) :: A,B
      CHARACTER*12 :: A,B
      CHARACTER(LEN=*),PARAMETER :: C_NAME='GIRL'    !*号表示长度暂不确定
      CHARACTER(LEN=*),PARAMETER :: C_NAME='BOY'
      CHARACTER(LEN=12) :: A,B*5,C,D*7,E                      !变量名后标出自己的特有长度


      ◆赋初值:
      DATA 变量名表1/初值表1/[[,]变量名表2/初值表2/…]
      例如:
      DIMENSION A(10,10)
      DATA A/100*1.0/                                      ! 按数组变量名统一初始化(重复次数*常数值)
      DATA A(1,1), A(10,1), A(3,3) /2*2.5, 2.0/   ! 按数组元素逐个初始化
      DATA ((A(I,J),I=1,5,2),J=1,5) /15*1.0/        ! 按隐DO循环初始化
      DATA  cstuff/(-1.0,-1.0)/                            !复数初始化
      CHARACTER (LEN=10) name                       !字符串初始化
      CHARACTER BELL, TAB, LF, FF, STARS*6
      CHARACTER*8 help
      DATA name,STARS /'Zhang Fei','****'/ 
      DATA BELL,TAB,LF,FF /7,9,10,12/                ! 用ACSII控制字符码赋于字符变量
      DATA  help(1:4),help(5:8) /2*'HELP'/            ! 用字符子串分段赋值
      duiyul输入的数据可以是.TRUE.(真)或.FALSE.(假),也可以是以T或F字母开头的任何字符串

    * 【数组】
      !-----------------------------------------------------------------------
      real a(10)
      REAL        A(10,2,3)                     ! 类型说明
      DIMENSION   A(10,2,3)                 ! DIMENSI0N语句
      ALLOCATABLE B(:,:)                     ! ALLOCATABLE语句
      POINTER     C(:,:,:)                       ! POINTER语句
      REAL,DIMENSION(2,5):: D           ! 类型说明中的DIMENSION属性
      REAL,ALLOCATABLE::    E(:,:,:)   ! 类型说明中的ALLOCATABLE属性
      REAL,POINTER::        F(:,:)          ! 类型说明中的POINTER属性
      !-----------------------------------------------------------------------
      数组的秩至少是1。如果没有下标则指整个数组。下标必须用逗号隔开,可以用整型常量、变量或表达式,函数。
 

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Fortran(Formula Translation,公式翻译)是一种古老的高级编程语言,主要用于科学计算和工程应用。它的语法相对较为严谨,但对数值计算的支持非常强大。以下是Fortran的一些基本语法要点: 1. **声明变量和数据类型**: Fortran支持整型、实型(如REAL或DOUBLE PRECISION)、字符型等。例如,`INTEGER i`, `REAL x`, 和 `CHARACTER(len=8) name` 分别声明了一个整数、一个双精度浮点数和一个长度为8的字符数组。 2. **程序结构**: Fortran程序通常由程序单元组成,如子程序(SUBROUTINE)和函数(FUNCTION)。使用`IMPLICIT NONE`语句可以明确指定所有变量的数据类型。 3. **循环结构**: 使用`DO`循环进行迭代,如`DO i = 1, 10`表示从1到10执行循环体内的语句。还可以用`ENDDO`关闭循环。 4. **条件控制**: Fortran提供了`IF`语句用于条件判断,如`IF (x > 0) THEN ... ENDIF`。 5. **数组处理**: Fortran强调整体操作,数组在内存中连续存放,可以方便地进行多维数组运算。例如访问数组元素`array(1,2)`。 6. **注释**: 双斜线`!!`用于单行注释,而`!`开头的是单行或多行注释。 7. **编译指令**: 使用`PROGRAM`定义可执行程序,`END PROGRAM`结束程序。外部文件可以通过`USE`关键字导入。 尽管现代Fortran已经发展到Fortran 90/95/2003/2008/2018等多个版本,一些基本语法仍然适用。然而,更现代的语言如Python和Julia因其易读性和广泛的应用可能更适合科学计算。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值