1-声明 输出 输入 变量
本章内容:
对fortran程序的一般结构,输入,输出方式,以及变量的格式进行了介绍。
前言:
(1)fortran不区分大小写
(2)fortran不区分单引号和双引号,但有时候需要转义
(3)fortran的三角函数使用的单位是弧度不是角度
(4)两个**表示^,幂运算
一、fortran格式:
program main !fortran语言以program作为做程序开头,main是程序名,随便取
implicit none !表示变量必须声明,防止疏忽
... !主程序代码
end program main !主程序结束,用来封装这一段代码
二、声明
2.1基本信息
位置:
一般紧接着
program name
下面 ,必须在执行程序之前
含义: 在后面的程序中提到变量或者数组的时候,需要“声明一下”,我要提前占用一定的空间储存这些变量或者数组。
格式:
类型(属性),形容词,形容词...::变量名
类型: 代表后面变量名的格式,有integer(整数型),real(浮点型),complex(复数型),character(字符串型),logical(布尔变量)
属性: 根据类型的不同,可选的属性也不同(可看后面详细类型介绍)。
形容词: 形容变量是什么,有parameter表示常量等。
变量名: 自订
2.2属性详细介绍:
2.2.1整型
含义: 整数
例子:
integer::A !最简单的声明整型变量
integer(kind=4),parameter::A=10 !kind=4表示采用4byte的内存储存这个变量,可取1,2,4,8(有的编译器可能是1,2,3,4)
!默认(kind=4),此时可省略。一般来说A的位数越多,kind则需越多。一般kind=4足够
!parameter是形容词,代表常量,也就是说必须给A赋值,而且A在后面程序中无法更改。
!双冒号不建议省略
!将10赋值于A,在声明中赋值是可行的也比较常见,后面将介绍更多赋值方式
ps: 两个整型进行计算,那么结果还是整型。比如3/2=1,舍了余数。其中一个换成浮点型即可破解
2.2.2浮点型
含义: 小数
例子:
real::A
real(kind=4)::A=3 !kind=4代表单精度,有效位数6-7位,kind=8是双精度,有效位数15位
!对于超过位数的话,应选择指数表示,比如2.5E23,或者2.5D23。E表示单精度,D表示双精度
ps: 对于声明了是浮点型的变量,其与整数或者整型计算得到的结果都是浮点型(可自行对比)
2.2.3复数型
含义: 复数
例子:
complex::a
complex(kind=8)::a=(1,2) !kind与浮点型一致,因为实部和虚部都是两个浮点型的数。
!a=(1,2)表示1+2i
2.2.4字符串
含义: 数字,字母,符号的组合
例子:
character(len=20)::a !属性len=20,表示这个字符串长20个长度
!需要把长度带上,如果不确定就写一个比较大的值
a='hello world' !给变量a赋予一串字符。别忘了加引号
a(2:2)='o' !结果变为'hollo world',可以用变量后加括号的方法改变对应位置的字符
ps: 介绍几个跟字符串相关的函数
char(num):求出ASCII码值=num的对应的字符
ichar('A'):求出字符'A'对应的ASCII码值
len(string):求出字符串的长度
len_trim(string):求出消除尾部空格后字符串的长度
2.2.5布尔变量
含义: 又名逻辑变量。只有两种结果。TRUE(T),FALSE(F)
例子:
logical::a !因为只有两种结果,通常不设置属性,也就是占用空间的大小
a=.truec !设置为“真”,这是设置变量的方法。
2.2.6不同类型之间的运算
可以在执行的过程中作转换
integer::a=1,b=2
real::c
c=real(a)/real(b) !这样得到的结果才是0.5
三、输出函数
3.1write
write(*,*) content !这个函数代表写出后面content的内容,如果content是字符,要加引号,如果是变量或者表达式则不用
结构分析:
第一个星号代表默认的输出位置,通常是默认屏幕(unit=6),一般不用更改。
第二个星号代表不限定输出格式,在很多情况需要替换。
例子:
write(*,*)'I love u'
write(*,*)a*b+3
wreite(*,*)10,10
3.2print
print *,content !这个函数和write的效果一样,content与write的要求一样
结构分析: 少了一个星号,代表输出位置无法更改,默认屏幕
这个星号对应
write
的第二个星号是一样的,代表不限定输出格式
3.3对比
一般用write
四、输入函数
read(*,*)a !和write基本一样。只不过第一个星号的默认输入设备是unit=5(键盘)。
!a表示从键盘输入的值,通常是变量
4.1设置输入输出格式
前面讲到第二星号表示要设置输入输出的格式。
在write中就是无论变量之前是什么格式,只要设定了,那么他的输出只能按照这个格式。
在read中就是输入的时候只能按照这个格式输入,否则会报错
详细的格式见下表
例子:
write(*,'(1x,F5.2)') a !这个逗号只是阅读方便,可以删去
write(*,'(I3,I3)')10,10 !把其中的逗号换成/表示换行输出
write(*,'(3(1XF5.2))')a,b,c !表示a,b,c三个的格式都相同,前面3表示3倍
read(*,'(I2)')a
五、自定义数据类型
含义: 将许多变量归为一类,比如体重,身高,年龄皆可归为到人中
例子:
type::person
character(len=30)::name