3. Fortran语言结构和数据类型

3.1 Fortran字符集

  • 字符集表示在这个语言中可以使用的所有字符的集合,包括标识符和一些特殊的字符比如英文状态下的[:]、[()]、[!]等等。
  • 标识符是用来标识程序中有关实体的(变量、命名常量、函数、过程、程序单元、公用块、哑元等)。
  • Fortran中的标识符有四种字符组成,分别是英文字母、数字、下划线"_"、和美元符号"$",并且标识符的第一个字符必须是英文字母,像"_worng"这种的就不可以,标识符不可以超过31个字符。
  • 常用的标识符有注释标识符"!"、语句分隔标识符";“和续行标识符”&"(续行标识符的用法是在要续行的结尾加上,或者续行的结尾和第二行的开头都加上)
  • 在Fortran中,是不区分大小写的,其实是Fortran只认大写,如果有小写输入,程序会先转成大写。
  • 关键字是用于描述语句语法成分或命名哑元名称的特定字符串,Fortran中分为语句关键字和变元关键字。
  • 在书写标识符时,强烈建议使用JAVA语言规范,程序名首字母大写(Main);关键字小写(program);变量名、对象名、方法名全部小写,如果多个单词构成,第一个单词后的单词以大写字母开头如getName;常量名称全部大写如PI。

3.2 Fortran的语言结构

  • Fortran程序的大类可以分为可执行语句和不可执行语句。不可执行语句主要是指注释。
  • 一个完整的程序包括 program开头 、声明部分、执行部分、终止部分、有时需要进行说明,可添加注释,有时为了简化主程序、可以添加子例行程序和子函数或者定义接口和模块。

3.3 Fortran的语言格式

  • Fortran分为固定格式和自由格式。
  • 固定格式是Fortran90 以前用的语言格式,比如FORTRAN77,这种格式很死板,不做说明,文件后缀为.for。
  • 自由格式是Fortran90以后的语言格式,比较符合大众,可以在每一行的任意位置开始书写,之间的空格无任何意义。文件后缀为.f90。
  • 固定格式和自由格式之间有很多不同的,比如在固定格式中,注释用’c’,而在自由格式中注释用’!’。

3.4 Fortran的内部数据类型

  • Fortran中的数据类型按变化可分为常量类型和变量类型,按存放类型可分为整型、实型(浮点型)、复型、字符型、逻辑型。
  • Fortran中的常量和Java中的类似,程序都是会为常量单独开辟一片内存单元,在程序整个的运行过程中都不可以改变。
  • 变量是在程序运行过程中可以随时改变的量。
  • 内部数据类型KIND值参数以及存储开销
整型子类型KIND类型字节数说明
byte&integer(1)11
integer(2)22
integer(4)44缺省情况下 integer = integer(4)
integer(8)88
  • 整型变量或者常量我们一般情况下选择integer,即*4那个,因为那个范围在-2147483648~~2147483647 对咱们大多数程序,完全够用。
  • 声明操作:integer(2)=integer(kind =2)=integer*2 完全等价。
  • integer(4)比较特殊,就是多了一个省略表达,所以Kind=4的有四种表达。
  • integer a,b,c
  • integer :: a,b,c
  • 上面两种声明变量完全一样,只是第二种加了双冒号的可以声明的同时给变量赋值,第一种不可以。
实型子类型KIND类型字节数说明
real(4)44在缺省情况下real = real(4) ,等同float
read(8)& double precision88等同 double
  • 实型和整型的声明类同,不过实型只有4和8
  • 实型的常量比如3.1415926默认单精度,即你虽然输入这么多小数,但是依然没有用,编译器会自动截取前七位有效数字,如果想做双精度处理,需要加上3.1415926d0或者3.1415926D0。
复型子类型KIND类型字节数说明
complex(4)48缺省情况下 complex = complex(4)
complex(8)&double complex816
  • 复型和整型的声明类同,不过实型只有4和8,但是复型是按照两个实型来计算内存空间的,所以字节数翻倍。
  • 复型的变量表达为value = (12,13) ,表示12.0+13.0i。
字符型子类型KIND类型字节数说明
character*len1lenlen是字符串长度
  • 字符串的声明 character*30=character(30)=character(len=30),30表示后面声明的字符串要分配的长度,一般声明的长度在10以上,防止字符串过长被截取。举个例子,character*5 a ,就是定义了一个字符串长度为5的变量名称为a的变量,假如 a =adjfnsjnf,可能会报错或者被截取,变成adjfn。
  • 有时可能会用到character*(*)这种情况,这是在子程序或者子函数里面才可以定义的,表示字符串长度沿用在主程序里的长度。
逻辑型子类型KIND类型字节数说明
logical(1)11
logical(2)22
logical(4)44
logical(8)88
  • 逻辑型变量就两种形式,.true.和.false.
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值