变量名称的取名策略:变量的名字中可以使用的字符集包括英文的26个字母、0~9这10个数字以及下划线“_”,不过前缀必须是英文字母。变量名称的长度限制随着各家编译器的不同而不同,Fortran标准规定最少要支持到6个字符,Fortran90则最少要支持到31个字符
Implicit
Fortran标准中有一项不太好的功能,它的变量不一定要经过程序声明才能使用,编译器会根据变量的第一个字母来自东决定这个变量的类型。第一个字母为I、J、K、L、M、N的变量会被视为整数类型,其他的变量则会被当成浮点数来使用。
Implicit命令的功能是用来设置“默认类型”。所谓的默认类型,是指Fortran不经过声明,由第一个字母来决定变量类型。可以经过Implicit描述来决定哪些字母开头的变量会自动使用某种类型
Implicit integer (A,B,C) !A、B、C开头的都被视为整型数
Implicit integer(A-F,I,K) !A到F及I、K开头的变量都视为整型数
Implicit real(M-P) !M到P开头的变量都视为浮点数
Implicit none !关闭默认类型功能,所有变量都要事先声明
常数的声明方法(Parameter)
Program ex
Implicit none
Real ::pi
Parameter(pi = 3.14129)
Write(*,”(F4.2)”) sin(pi/6)
end
在Fortran90里,Parameter可以作为形容词,和变量的声明同时写在一起
Real, parameter ::pi=3.14159!这里pi前面的冒号不能省,和上面代码不同(上面的可以省略)
设置变量的初值
变量内容并不一定要在程序执行时才设置,可以在声明时同时给予初值。在Fortran90偶那个,在设置变量初值时,直接把数值写在声明的变量后面就行了。使用这个方法来设置初值是,不能省略声明中间的那两个冒号(Fortran90)
在fortran77中则要使用Data命令设置初值
Fortran 90
Fortran 77
program ex90
implicit none
integer ::a=1
real ::b=2.0
complex ::c=(1.0,2.0)
character (len=20)::str="Hello Acuzio!"
write (*,*) a,b,c,str
end
program ex77
implicit none
integer a
real b
complex c
character (len=20) str
data a,b,c,str/1,2.0,(1.0,2.0),’Hello ‘/
write (*,*) a,b,c,str
end
等价声明(equivalence)
把两个以上的变量,声明它们使用同一个内存地址,就是“等价声明”。使用同一个内存位置的变量,只要改变其中一个变量,就会同时改变其他变量的数值
Integer a,b
Equivalence(a,b)
Fortran 90 的自定义数据类型
使用关键字:type
Type ::person
Character(len=30)::name
Integer ::age
Integer ::length
Integer ::weight
End type person
Type(person) ::a!声明一个person类型的变量
a%name !引用person中的name
Kind的使用
Kind描述如果搭配上一些Fortran90的库函数,可以增加程序代码的“跨平台”能力
Fortran 90提供库函数来判断所要记录的数值值域范围所需要的kind值
Selected_int_kind(n) :返回如果想要记录n位整数时,所应声明的kind.返回-1时,表示无法提供所想要的值域范围
Selected_real_kind(n,e) :返回如果想要能够记录具有N位有效位数、指数达到e位的浮点数所需要的kind值。返回-1表示无法满足所要求的有效位数、返回-2表示无法满足所要求的指数范围、返回-3表示两者都无法满足
IF基本用法
If(逻辑判断式) then
……
End if
If(逻辑判断式) then
……
Else
……
End if
逻辑运算符:
Fortran 90
Fortran 77
==
判断是否“相等”
.eq.
判断是否“等于”
/=
判断是否“不相等”
.ne.
判断是否“不等于”
判断是否“大于”
.gt.
判断是否“大于”
>=
判断是否“大于或等于”
.ge.
判断是否“大于或等于”
判断是否“小于”
.lt.
判断是否“小于”
<=
判断是否“小于或等于”
.le.
判断是否“小于或等于”
逻辑判断式
.and.
交集,如果两边的表达式都成立,整个表达式就成立
.or.
并集,两边的表达式只要有一个成立,整个表达式就成立
.not.
逻辑反向,如果后面的表达式不成立,整个表达式就成立
.eqv.
两边表达式的逻辑运算结果相同时,整个表达式就成立
.neqv.
两边表达式的逻辑运算结果不同时,整个表达式就成立
多重判断
If(条件1) then
……
Else if(条件2) then
Else
……
End if
浮点数及字符的逻辑运算
使用浮点数来做逻辑运算时,要避免使用“等于”的判断。因为使用浮点数做计算时,有效位数是有限的,难免会出现计算上的误差,理想中的等号不一定会成立。要使用浮点数来做“等于”的逻辑判断时,最好用其他方法来取代(ABS这个函数是取绝对值。使用误差小于某一个值来进行判断)
Select case语句
Select case(变量)
Case(数值)
……
Case(数值2)
……
Case default
……
End select
在case里的冒号前后放两个数值时,代表在这两个数值范围中的所有数值
Remark:
l Selectcase只能使用整数(integer)、字符(character)及逻辑变量(logical),不能使用浮点数及复数
l 每个case中所使用的数值必须是固定的常量,不能使用变量
Pause, continue, stop
Pause的功能就跟它的字母意义相同,程序执行到pause时,会暂停执行,直到用户按下enter键才会继续执行。
Continue 无实际用途
Stop 结束程序执行
Fortran 90的库中,IAND用来做二进制的AND计算,IOR用来做二进制的OR计算
DO循环
Integer, parameter ::index =1
Integer, parameter ::counts =100
Do index,counts,1
……
End do
Real,parameter ::weight =45.0!答案
Real,parameter ::e=0.001!误差
Real ::guess
Do while(abs(guess-weight)>e)
Write(*,*) “Weight”
Read(*,*) guess
End do
循环控制:
Cycle和exit
Cycle 命令可以略过循环的程序模块中,在cycle命令后面的所有程序代码,直接跳回循环的开头来进行下一次循环
Exit 功能:可以直接“跳出”一个正在运行的循环
署名循环
循环还可以取“名字”,这个用途是可以在编写循环是能明白地直到Enddo这个描述的位置是否正确,尤其是在多层循环当中。署名的循环也可以配合Cycle、exit来使用。
数组(Array)
数组的声明方法:Datatype name(size)
赋初值:
integer A(5)
Data a /1,2,3,4,5/
Integer a(5)
Data a /5*3/ !5个3
Integer A(5)
Integer i
Data(A(i),i=2,4) /2,3,4/
!这是一个隐含式循环,I会从2增加到4,依照顺序到后面取数字。初值设定结果为A(2)=2、A(3)=3、A(4)=4,A(1)和A(5)没有设定
Fortran 90隐含式循环的功能可以更强大
Integer ::a(5)=(/(I,I=1,5)/)!设置结果:a(1)=1,a(2)=2,a(3)=3,a(4)=4,a(5)=5

Fortran 95简单教程(二)相关推荐

  1. mysql使用简单教程_Mysql使用简单教程(二)_MySQL

    接上文Linux系统下Mysql使用简单教程(一) 字段参数以"(字段名1 数据类型1,字段名2 数据类型2,......)"的形式构建. 关于mysql常用的数据类型,一下是比较 ...

  2. ArtCAM入门简单教程(二)——浮雕

    记录过去,奋斗现在,展望未来 (给未来即将结束的工作的'存档') ArtCAM入门简单教程 二.浮雕 前言:这不是个很专业的浮雕设计教程,不过是很简单即可实现的入门教程,而更深入的浮雕学习建议查找更全 ...

  3. FusionCharts简单教程(三)-----如何自定义图表上的工具提示

    原文出自:http://cmsblogs.com/?p=696.尊重作者的成果,转载请注明出处! 个人站点:http://cmsblogs.com -------------------------- ...

  4. openlayers地图旋转_OpenLayers教程二:实现简单的地图显示

    本文衔接上一篇文章:不睡觉的怪叔叔:OpenLayers教程二:实现简单的地图显示​zhuanlan.zhihu.com 经过上一篇文章对OpenLayers的简单了解以后,现在让我们来实现一个简单的 ...

  5. Flow-3D的fortran语言简单科普,足够二次开发的入门

    Flow-3D的fortran语言简单科普,足够二次开发的入门 直接看链接吧 直接看链接吧 B站的UP主 lglhit 视频 看这个链接: 如何编写焊接热源子程序(平面热源) 这个讲的是abaqus的 ...

  6. python爬虫入门教程(二):开始一个简单的爬虫

    2019/10/28更新 使用Python3,而不再是Python2 转载请注明出处:https://blog.csdn.net/aaronjny/article/details/77945329 爬 ...

  7. 树莓派简单教程(二)(下)

    2 脚本和vim 2.1 脚本 在windows平台下,如何写一个脚本? 答:新建一个文本文档,修改后缀名为bat,但在部分情况下往往会出现例如无法正确显示汉字等问题,这里不做详述. 在linux系统 ...

  8. AD17入门简单教程(二)

    AD17入门简单教程 紧接着上一片文章,紧接着介绍下面的内容 文末附视频链接以及C8T6整个工程. 第三部分 PCB 通常对于我们新手来说这一个步骤是一个难点,因为进入到这个界面我们不知道到底要是干什 ...

  9. 区块链教程(二):基础概念介绍

    注:本教程为技术教程,不谈论且不涉及炒作任何数字货币 本系列重点在于以太坊基础知识.以太坊客户端以及以太坊solidity编程,因此博客重点在于以太坊核心知识点的掌握,区块链部分的基础知识可以作为补充 ...

  10. idea 从svn导入多个项目_IDEA导入项目简单教程

    该教程用于IDEA初学者导入eclipse项目,或者导入其他已经写好的Java源程序的简单教程. 我们用IDEA打开一个已经写好的项目源文件时,如果没有配置好,就会出现:JDK配置失误报错.程序无法启 ...

最新文章

  1. 阿里P7架构师谈:MySQL慢查询优化、索引优化、以及表等优化总结
  2. java 虚拟机 参数_Java虚拟机的参数
  3. boost::program_options::options_description相关的测试程序
  4. mybatis 模糊查询
  5. 【超分辨率实验】Matlab-使用深度学习的单图像超分辨率(Single Image Super-Resolution Using Deep Learning)
  6. 牛客练习赛52-记录
  7. 逆向行驶!数据结构双向链表DoubleLinkedList,Java实现增删改查
  8. 数据保护伞—为MaxCompute平台数据安全保驾护航
  9. 系统无法分配所需内存_Innodb内存管理解析
  10. SAP License:SAP HANA CLOUD MM 实施的坑
  11. sweetalert2不相应回车_你还不知道的SketchUp建模小技能
  12. 证明二叉树节点数公式
  13. 为什么现在我最终推荐内存OLTP
  14. Python 颜色代码大全
  15. Java实现网页截图技术
  16. 暴走欧洲之文明的迭代
  17. 注册石墨文档无法连接服务器,石墨文档没有访问权限怎么办
  18. 不变初心数 (15 分)
  19. CJBorderView 一种iOS开发中常用的虚线边框View------* An easy way to init a view with dotted line border
  20. Lync 2010升级到Lync 2013 之设定企业联盟!

热门文章

  1. Java笔试题黑棋围白棋_2016恒生电子笔试题_软件测试笔试题100精讲_恒生电子笔试题目(2)...
  2. java银行叫号课程设计_《银行排队叫号系统设计》课程设计.doc
  3. MTP管理才能发展专家
  4. 如何使用 Spring Boot 开发邮件系统
  5. Python入门书籍推荐
  6. 药品管理系统java_基于Java的药品管理系统
  7. 骑士资本高频交易系统事故案例分析
  8. 【Python】numpy矩阵运算大全
  9. AD09,如何设置按住鼠标轮放大缩小
  10. seay代码审计工具_“代码审计”了解一下