前言
Fortran是一种古老的编程语言,它的设计初衷是用于科学计算和数值分析。
Fortran = Formala+Translator,称为公式翻译器。
其广泛应用于数值计算领域,在气象和海洋等领域主要用于数值模式的开发和优化。
数值模拟:用计算机对数学物理模型数值计算求解,进行可视化分析,达到对问题的研究目的。
公式翻译器:把数学物理模型中的公式变成计算机能理解的语言,以此来求解问题。
一、程序的基本结构
program main
....
stop !程序停止运行,可以用于条件判断中
pause !暂停程序执行,按enter继续运行
end program main
一个标准fortran程序需要以program 【程序名】作为程序的开头,以End program 【程序名】作为程序的结束,结尾也可以直接写end。但是写全更加容易读懂代码,代码更加规范。
其中,main是函数名,stop可以用于结束程序的运行,一般用于条件判断中,pause用于暂停程序执行,敲击键盘继续执行。
end终止程序是一定要有的,表明程序编写完毕。
二、输入和输出
1、输入和输出命令
①write命令
write(*,*)a
write(unit=6,fmt=*)"string"
第一个*,是输出位置, 第二个 * 是输出格式
②print命令
print *,a
用print命令输出则不限定输出格式。
③read命令
read(*,*)a
2、格式化输入和输出
这里将的100是一个格式号,在输出时候第二个*填写100可以直接代替format(I4)功能
Program main
integer::a=20
write(*,100)a
100 format(I4)!使用行代码,设置输出位整型,宽度为4
write(*,"(2I4)")a,b !输出2个,a ,b
stop
end
write(*,"(2I4)")a,b等价于write(*,"(I4,I4)")a,b
三、基本数据类型
1、整型(integer)
格式:integer::a
integer::a
①赋值长整型
以下三种写法是一样的效果
integer(kind=4)a !fortran90新增
integer*4 b !fortran77传统
integer(4)c !fortran77传统
②赋值短整型
integer(kind=2)a !fortran90新增
integer*2 b !fortran77传统
integer(2)c !fortran77传统
2、浮点数(real)
格式:real a 或者 rean::a
①赋值单精度
real(kind=4)a !fortran90新增
real*4 b !fortran77传统
real(4)c !fortran77传统
②赋值双精度
real(kind=8)a !fortran90新增
real*8 b !fortran77传统
real(8)c !fortran77传统
3、复数(complex)
格式:complex a
复数由实部和虚部组成,在fortran中由两个浮点数来表示。
①单精度
complex(kind=4)a !fortran90新增
complex*4 b !fortran77传统
complex(4)c !fortran77传统
②双精度
complex(kind=8)a !fortran90新增
complex*8 b !fortran77传统
complex(8)c !fortran77传统
4、字符与字符串
格式:character a
声明字符:
character(len=10)a
complex(10)b
complex*c
character *10d
ps:字符串连接使用 // 完成
5、逻辑型(logical)
格式:logical a
a=.true
a=.false
6、获取字符串长度
len:返回字符串长度
len_trim:返回实际使用长度
Program example
character(20)::string
write(*,*)len(string)
write(*,*)len_trim(string)
end
输出:
20
13
7、自定义数据类型
type::person
character(len=10)::none
integer::age
real::hight
real::weight
character(len=50)::address
end type person
赋值方式1:全部赋值
a=person("peter",20,170,60,"China")
赋值方式2:单独赋值
b%name=...
单独对name这一个数据赋值
四、各类声明
1、implicit命令
在Fortran中,变量不一定要经过经过声明数据类型。
变量名为:I、J、K、L、M、N、会视为整型变量。
其它则为浮点型
而implicit可以用于设置变量的默认类型。
如:
implicit integer(A,B,C)!则以ABC开头的变量都会视为整型
implicit (A-F,I,K)!以A到F开头的变量,和I,K开头的变量都会视为整型。
在Program main 的下一行加入implicit none,可以禁止该行为。
2、常量声明
格式:
real,parameter::Pi=3.1415926
或者
real Pi
parameter(Pi=3.1415926)
ps:被parameter声明的常量只能赋值一次,再次赋值会报错。
3、等价声明
格式:
equivalence(a,b)
使a,b共用一块内存空间。
4、声明位置(特别注意)
以下是错误写法:
Program Hello
implicit none
integer::a=2
write(*,*)a
integer::b=5 !这里再次使用整型声明会报错
write(*,*)b
End Program Hello
正确写法:
Program Hello
implicit none
integer::a=2
integer::b=5
write(*,*)a
write(*,*)b
End Program Hello
Fortran的一个特点是它的静态类型系统,这意味着变量的类型在编译时就需要确定,并且不能在运行时改变。因此,在输出之后声明变量可能会导致类型不匹配的问题,因为输出语句通常需要根据变量的类型进行格式化。Fortran在输出之后不能声明变量是由于其静态类型系统和历史版本的限制所导致的。现代的编程语言通常允许在任何地方声明变量,并且具有更灵活的类型系统。如果您需要更灵活的变量声明和使用方式,可以考虑使用其他编程语言。