学习fortran77基础语法
1 Program ParamaterDefine 2 Implicit None 3 C FORTRAN变量名和关键字不区分大小写。但调用外部函数的话,需要在编译选项里指定 4 c 大小写等选项 因为链接器是区分大小写的 5 ! 关于注释:在自由格式中,只有!一种方法; 在固定格式中,除了!还可以用c或C或*,但必须写在前五个 6 ! 字母,即绿线的左边。 7 * *和C是必须放在第一列的,!不必,另外73列以后的内容也属于注释 8 Integer I,J,K,L,M,N!整型,前面只能声明变量,不能给变量赋值,语句后面不用分号 9 Double Precision Area,Length,pi,R,YMJ,ZMJ,degree,SinAddCos,A(1:10)!双精度实型 10 DOUBLE PRECISION MyExp,y,x 11 Complex D,C!复数类型,如果含表达式则用CMPLX 12 Logical T,F!逻辑型,逻辑常量有“T”和“F”,“T”表示“.TRUE.”,“F”表示“.FALSE.” 13 Character*50 name,str*20!字符型,N为字符串长度,可以在变量名称后重新指定长度 14 C DIMENSION IA(0:9) !使用I-N规则时用DIMENSION说明数组,也可在定义变量类型同时说明数组,说明格式为: 15 C 数组名(下标下界,下标上界),也可省略下标下界,此时默认为1,例:一维数组DIMENSION IA(0:9) 二维:A(0:2,0:1,0:3) 16 17 parameter(pi=3.1415926)!参数语句,用来定义常量,在程序中应放在类型说明语句之后 18 19 YMJ(R)=3.14159265*R*R!应该放在所有可执行语句之前和有关类型说明语句之后,是非执行语句; 20 SinAddCos(degree)=SIN(degree)+COS(degree)!语句函数必须放在函数的赋值语句前,声明语句后 21 N=3 22 Length=3.0 23 D=(8.76,-67.8E-3)!D=(8.76E+0.5,-67.8E-3)为啥错误啊 24 C=Cmplx(3.0*N,6.0+Length)!有表达式,得用Cmplx 25 T=.TRUE. 26 F=.FALSE. 27 name='My name is zhubinglong!'! //是字符串连接符,/是换行 28 c 语句函数的调用,并输出结果 29 ZMJ=YMJ(5) 30 print * ,ZMJ 31 c 默认格式输出字符串 32 Write(*,*)'I LOVE YOU!'!默认格式输出(默认输出完成后换行) 33 Write(*,*) name 34 c 格式化输出 35 Write(*,1)! 36 1 format(/) ! 1x表示一个空格;/表示换行; 37 c 循环给数组赋值,并格式化输出一维数组A 38 DO 100 I=1,10,1 39 A(I)=I**2 40 100 CONTINUE 41 WRITE(*,10) ('I=',I,'A=',A(I),I=1,10,1) 42 10 FORMAT(1X,5(A2,I2,1X,A2,F4.0,3X)) 43 C 尝试调用语句函数并输出结果 44 R=SinAddCos(pi) 45 WRITE(*,*) R 46 c 调用函数子程序 47 48 WRITE(*,*) '请输入x:' 49 READ(*,*) x 50 y=(MyExp(x)-MyExp(-x))/2.0 51 End Program ParamaterDefine 52 WRITE(*,2)'Sinh(',x,')=',y 53 2 format(1x,a,f5.2,a,e13.6) 54 55 !SUBROUTINE SinAddCos(degree) 56 !double precision rest 57 !rest=SIN(degree)+COS(degree) 58 !return rest 59 !END SUBROUTINE SinAddCos(degree) 60 FUNCTION MyExp(x)!或者:DOUBLE PRECISION FUNCTION MyExp(x) 61 DOUBLE PRECISION MyExp,t,s,x 62 INTEGER n 63 n=0 64 t=1 65 s=1 66 do 10 while (abs(t).gt.1e-5) 67 n=n+1 68 t=t*x/n 69 s=s+t 70 10 continue 71 MyExp=s 72 End 73 74
用fortran77
1.介绍几个基本语法学习:
http://micro.ustc.edu.cn/Fortran/ZJDing/
http://blog.sina.com.cn/s/blog_8e7709e101018mqd.html
http://blog.sina.com.cn/s/blog_6e0aa6420100pu9p.html
2.具体
https://wenku.baidu.com/view/7f656ad06529647d272852cd.html
可以看出,默认是按列输入的
3.子程序
Fortran77中默认传址,而不是传值
4.子例行程序
怎么没有在子程序中声明变量???
子例行程序默认也是传址
conmmon就像int一样,可以在多行声明,也可以在单行声明
额外发现:
c#写注释搜代码:http://www.360doc.com/content/14/0218/15/8772388_353542751.shtml
http://codesnippet.research.microsoft.com/# 插件地址:https://marketplace.visualstudio.com/items?itemName=VisualStudioPlatformTeam.DeveloperAssistant