第一周—Fortran语言学习

使用教材:Fortran95程序设计【彭国伦】

第二章 编译器的使用

编译结果的好坏

1、翻译正确
2、执行文件的运行效率
3、翻译出来的执行码的长短
4、编译过程花费的时间
5、编译器提供Debug工具的完整度

Visual Fortran的使用

第三章 Fortran程序设计基础

字符集

不区分大小写

书面格式

Fixed Format(固定格式)

配合穿孔卡片输入程序发明的格式
被淘汰

Free Format(自由格式)

1、!后的文本是注释
2、每行可以编写132个字符
3、行号在每行最前面
4、&行和行连接
5、空格无意义

数据类型

数学表达式

** 乘幂

第四章 输入输出及声明

program main
...
stop !可以省略
end

write 和 print

尽量使用write

write(*,*)"hello","!"
write(UNIT=*,FMT=*)"hello"
write(UNIT=5,FMT=*)"hello"

Fortran77只能用单引号
Fortran90支持单和双

声明

整数:

integer(kind=2/4) a,b,c
未声明长度默认长
向下取整
integer :: a

浮点数

real(kind=4/8) a,b,c
real(kibd=4) :: a,b

write(,) "sin(",a,")=",sin(a)

复数

complex(kind=4/8) a,b,c
a=(x,y) !表示 a=3.2+3.5i
支持直接的复数+-*/

字符及字符串

character(len=10) a,b,c
a(6) = "you" !设置第6个字符之后的字符串
b(1:2) = "we" !最前面两个字符变we
add=first//second

Fortran 中有关字符串运行的函数:

CHAR(num)  !num在计算机所使用的字符表中所代表的字符
ICHAR(char)  !返回值是整型,char字符在计算机所使用的字符表中所代表的编号
LEN(string)  !声明长度
LEN_TRIM(string)  !实际长度
INDEX(string,key)  !key在string中第一次出现的位置
TREM(string)  !返回清除尾端空格后的字符串

!更多见附录A
逻辑变量

logical(kind=2/4) a,b
a=.true.
b=.false.
用 write 函数只会显示 T or F

输入命令(READ)

read(*,*) a !在输入字符时可能因为空格出错
read(unit=5,fmt=*) a !最严谨
read(*,*) a,b,c !可输入a,b,c or a b c

格式化输入输出(FORMAT)

没怎么看懂的格式命令参考表....
885738-20171105212650966-2018255711.jpg
885738-20171105212654154-1869449967.jpg

看来上面这些并不重要....
常用的几个格式:"I、F、E、A、X"
好了下面来一一学习一下
({}和[]里的内容可以省略

Iw[.m]

Iw[.m]
以w个字符的宽度来输出整数,至少输出m个数字
如果不足会输出*

write(*,"(I5.3)") 10
  010 !前面有两个空格

Fw.d

Fw.d
以w个字符文本宽度来输出浮点数,小数部分d
不足一样是*
write(*,"(F9.3)")123.45
   123.450

Ew.d[Ee]

Ew.d[Ee]
用科学计数法,以w个字符宽度来输出浮点数,小数部分占d个字符宽,字数部分最少输出e个数字

write(*,"(E9.2E3)") 12.34
   0.12E002

Dw.d

Dw.d
同Ew.d
代表指数的字母由E换成D

Aw

Aw
以w宽输出字符串
write(*,"(A10)")"Hello"
     Hello
     
不足超过部分会被省略

Lw

Lw
w个字符输出 T or F 的真假值
write(*,"(L4)") .true.
   T !输出3个空格和一个T

Gw.d[Ee]

Gw.d[Ee]
G可以用来输出所有类型的数据,固定使用w个字符宽来输出,d不一定会使用但是不能省略

/

/
write(*,*(I3//I3)) 10,10
 10
 
 
 10 !中间有两行空格是从“/"得到的

Tc

Tc
把输出位置移动到本行的第c个字节

声明的其他事项

IMPLICIT命令

开头字母决定变量类型

implicit integer(A-F,I,K)
implicit none !关闭,都要先声明

放在PROGRAM的下一行,不能放在其他位置
常数的声明方法(PARAMETER)
parameter(pi=3,14159)
设置变量的初值
integer :: a = 1
等价声明(EQUIVALENCE)
equivaluence(a,b) !声明a、b这两个变量用同一块内存

1、节省内存
2、精简代码

声明在程序中的结构

混合运算

1、
885738-20171105155605388-1383309060.jpg

2、
885738-20171105155616826-422816283.jpg

3、
885738-20171105155626873-1550042937.jpg

Fortran 90 的自定义数据类型

type :: person
  character(len=30) :: name
  integer :: age
  ...
end type person

type(person) :: a

write (*,*) "NEME:"
read(*,*) a%name

KIND 的使用

SELECTED_INT_KIND(n)   !返回如果想要记录N位整数时,所要声明的kind值。 
                       !返回-1时表示无法提供
SELECTED_READ_KIND(n,e)  !记录具有n位有效数,指数达到e位的浮点数需要的kind值
                         !返回-1 有效位无法满足,-2指数范围无法满足,-3均无法满足

转载于:https://www.cnblogs.com/Olivia1011/p/7787639.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值