baisc语法

基本构成

fortran程序由一组程序单元组成,每个包含一个主程序,语法如下

program program_name
implicit none
end program program_name

命名以及字符集

与C语言所包含的ASCII字符集基本相同,标识符即变量名称不区分大小写,且第一个字符必须是字母

关键字

https://wenku.baidu.com/view/08bea464cfbff121dd36a32d7375a417866fc109.html

数据类型

分为了5种包括整数,浮点数,复杂数,布尔类型,字符类型

  1. 整数(integer)与C语言中的int类似,仅保存整数
  2. 浮点数(real)默认类型为双精度浮点数,可通过kind函数对其以及整数进行精度控制,对整数是控制其所占字节大小,通过huge函数可以得到某一整数变量的最大值。通过数字后加d0来声明数字为双精度实数
  3. 复杂类型(complex)用于存储复数,赋值有两种方式,无论输入参数如何,其实部和虚部均为单精度
complex :: cx
cx = (1.0 , 2.0) ! cx = 1+2i
cx = cmplx(2.0 , 1.0) ! cx = 2+i
  1. 字符类型(character)用于存储字符串,通过len声明其长度
character(len = 10) :: name !声明了一个长度为40,名称为name的字符串
  1. 逻辑类型(logical)用于存储逻辑布尔值

  2. 对常量的声明,通过使用parameter关键字

integer , parameter :: const = 1
  1. 动态数组(Dynamic Arrays)编译时大小未知,执行时已知,通过allocatable来声明动态数组,必须声明数组的维度,通过allocate函数,随后可以通过deallocate来释放内存

算术运算符

基本的数学运算符以及关系运算符(== , >=…)与C基本相同,逻辑运算符与ncl相同,在含有等于的运算符多了一个v(如.eq.变为了.eqv.)

条件语句

与C类似,不同的是switch case 变为了 select case

循环语句

使用do或者do while来控制循环,循环可以嵌套,且存在内部声明的变量为局部变量,使用exit来退出循环,cycle作用类似于continue

函数

  1. 通过subroutine关键字来声明函数也称为子程序,在主函数中通过call来调用,fortran中函数的返回值较为特殊,在subroutine声明的函数中需要将返回值也作为函数参数声明,bingqie

  2. 通过function声明,需要注意在主函数中声明函数与函数类型,且结果返回值以函数名为结果,即返回 函数名=expression,同时函数中需要对参数进行声明时加上intent(in)关键字,并且此时参数为局部变量,变量不可修改,声明intent(out)变量不可为函数参数,但可以修改且可向外输送;intent(inout)既可以作为参数同时也可作为输出的结果,效果等同不声明intent,一般来说,在函数中其优势为局部变量,intent应该总为in,如果要使用其他的intent则应该使用subroutine热不是function