版块导航
正在加载中...
客户端APP下载
论文辅导
申博辅导
登录
注册
帖子
帖子
用户
本版
应《网络安全法》要求,自2017年10月1日起,未进行实名认证将不得使用互联网跟帖服务。为保障您的帐号能够正常使用,请尽快对帐号进行手机号验证,感谢您的理解与支持!
24小时热门版块排行榜
>
论坛更新日志
(3331)
>
虫友互识
(225)
>
导师招生
(208)
>
文献求助
(119)
>
考研
(101)
>
公派出国
(74)
>
招聘信息布告栏
(55)
>
硕博家园
(52)
>
考博
(45)
>
博后之家
(42)
>
论文投稿
(42)
>
休闲灌水
(30)
>
基金申请
(21)
>
教师之家
(20)
>
无机非金属
(16)
>
找工作
(16)
小木虫论坛-学术科研互动平台
»
计算模拟区
»
程序语言
»
Fortran
»
Fortran90数组学习
南方科技大学公共卫生及应急管理学院2026级博士研究生招生报考通知(长期有效)
2
1/1
返回列表
查看: 636 | 回复: 1
只看楼主
@他人
存档
新回复提醒
(忽略)
收藏
在APP中查看
jerkwin
专家顾问
(正式写手)
专家经验: +14
应助: 454
(硕士)
金币: 20699.1
散金: 148
红花: 81
帖子: 813
在线: 2648.3小时
虫号: 1023452
注册: 2010-05-19
专业: 理论和计算化学
管辖:
分子模拟
[交流]
Fortran90数组学习
已有1人参与
最近学习了一下Fortran90的数组,主要是参考中科大的教程
http://micro.ustc.edu.cn/Fortran/ZJDing/
。下面是我的一点总结,希望对大家熟悉Fortran的数组有所帮助。
CODE:
[font=Courier New]
数组的定义与引用
两种变量:标量+数组。标量维数为0,数组维数>=1。
1. 数组的定义
类型相同的一组标量数据的有序集合
数组元素类型必须相同,这些元素按某种确定方式排列
与数学上的联系
一维数组:向量(列向量或行向量)
二维数组:矩阵
数组的参数
o 数组的维数(dimension):最小为1,最大为7
o 数组的维长(extent):某一维中元素的个数,可以为0
维长由 维下界:维上界 指定,等于维上界-维下界+1
维下界省略时为默认值1
维上界必须大于维下界的值
维界值可以是正、负、零或任何整型表达式
o 数组的大小(size):所有元素的个数,等于各维长的乘积,可以为0
o 数组的形状(shape):取决于维数与每一维的维长,可由函数shape得到
例:
数组A(10,3,2)的维数为3,维长分别为10、3、2,大小为10×3×2=60,形状为10乘3乘2,或表示成(10,3,2),shape(A)的结果是一维数组,其元素为10,3,2。
数组B(2,2,0)的第三维维长为0,因而大小为0,不能用于存储任何数据。
数组C(2, 0:9, -3:-1, int(-sqrt(45./3.)):int(5/2))为4维数组,大小为2×10×3×6。
数组声明:
o real A(10,2,3) ! 类型说明
o dimension A(10,2,3) ! dimension语句
o allocatable B(:,:) ! allocatable语句
o pointer C(:,:,:) ! pointer语句
o real, dimension(2,5):: D ! 类型说明中的dimension属性
o real, allocatable:: E(:,:,:) ! 类型说明中的allocatable属性
o real, pointer:: F(:,:) ! 类型说明中的pointer属性
声明时数组的维数必须指定的,大小和形状是否需要指定视数组的形式而定
2. 数组的引用
o 数组名 :数组中所有元素,无下标
o 数组元素:数组中某个元素,指定所有下标
o 数组片段:数组中若干元素,不需连续或遵循某个规则,指定部分下标列表,本身也是数组
引用时数组的下标必须用逗号隔开
引用下标的个数要和声明的数组的维数一致
下标是整型表达式,可正、可负、也可为0,但必须在引用的数组的维界之内
例: real A(3,3),B(3,3),C(89),R
B(2,2)=4.5; R=7.O; C(int(R)*2+1)=2.O !给元素B(2,2)和C(15)赋值
A(1,2)=B(int(C(15)),int(sqrt(R))) !元素A(1,2)和元素B(2,2)的值相同
real A(2,3,4),则A(1,2,3)是数组元素,而A(1:2,2,2),A(1,1,4:2:-1),A(1,2:3,(/2,4/))都是数组片段
数组的下标列表有两种:三元下标和向量下标。
o 三元下标[下界]:[上界][:步长]:用三个值分别代表数组片段的下界,上界和步长,以上升或下降的顺序指定数组元素。
若省略下(上)界,缺省值为数组相应维的下(上)维界
若上下界全省略,缺省片段为这个维的全长
三元下标的值可以不在数组的边界以内
三元下标只能算一个下标
对多维数组的数组片段,每一维都可以用三元下标来声明
在语句或过程中引用数组片段时,引用下标的个数必须与声明时的相同
若省略步长,缺省值为1。
步长不能是0。当步长为负值时,数组子片段从上界开始递减至下界
例:real A(10)
A(1:5:2)=3.0 !把元素A(1),A(3),A(5)置为3.0
A(:5:2)=3.O !把元素A(1),A(3),A(5)置为3.0,因为缺省下界为1
A(2::3)=3.O !把元素A(2),A(5),A(8)置为3.0,因为上界缺省值为10
A(7:9)=3.0 !把元素A(7),A(8),A(9)置为3.0,因为缺省步长为1
A(:)=3.0 !和A=3.0相同,将A的所有元素置为3.0
real B(10)
数组片段B(9:2:-2)是由元素B(9),B(7),B(5)和B(3)组成的数组。
数组片段B(3:15:6)是由B(3)和B(9)组成的数组。 REAL A(5,9)则A(1:4:3,6:8:2)=3.0
等价于
A(1,6) A(1,8)
A(4,6) A(4,8)
o 向量下标:利用一个一维整数数组(即向量)来指定数组元素
向量下标的值应该在定义的边界之内
向量下标可以有多个重复的值,此时数组片段称为多对一数组片段
例: real A(10),B(5,5)
integer I(4),J(3)
I=(/5,3,8,2/) !定义向量I
J=(/3,1,5/) !定义向量J
A(I)=3.O !设置元素A(5),A(3),A(8),A(2)的值
B(2,J)=3.O !设置元素B(2,3),B(2,1)和B(2,5)的值
integer :: a(4)=(/0,1,2,3/),b(3)=(/1,4,3/),则a(b)与a同类型,与b同形状,取值为(/0,3,2/)
a(b)可以不是数组片段,而是更大的数组。如上面b为(/2,3,2,3,2,3/)时,a(b)为(/1,2,1,2,1,2/)
character(1) :: symbol(0:1)=(/'F','M'/)
integer :: bit(100)
若bit的元素列为0001101100111...,则symbol(bit)是用{F,M}字符构成的100字节的字符型数组FFFMMFMMFFMMM...。
real A(3,3),B(4)
integer K(4)
K=(/3,1,1,2/) !K矢量有重复值
A=5.0 !设置A的所有元素
B=A(3,K) !数组片段B由下列元素组成:A(3,3),A(3,1),A(3,1),A(3,2)
因为在B(4)或A(3,K)中有重复的元素A(3,1),所以它是多对一数组片段。一个多对一数组片段不能出现在赋值语句的左端[/font]
[
Last edited by jerkwin on 2012-7-27 at 08:39
]
回复此楼
» 猜你喜欢
请问有评职称,把科研教学业绩算分排序的高校吗
已经有3人回复
孩子确诊有中度注意力缺陷
已经有12人回复
2025冷门绝学什么时候出结果
已经有3人回复
天津工业大学郑柳春团队欢迎化学化工、高分子化学或有机合成方向的博士生和硕士生加入
已经有4人回复
康复大学泰山学者周祺惠团队招收博士研究生
已经有6人回复
AI论文写作工具:是科研加速器还是学术作弊器?
已经有3人回复
2026博士申请-功能高分子,水凝胶方向
已经有6人回复
论文投稿,期刊推荐
已经有4人回复
硕士和导师闹得不愉快
已经有13人回复
请问2026国家基金面上项目会启动申2停1吗
已经有5人回复
高级回复
» 本主题相关价值贴推荐,对您同样有帮助:
菜鸟求助fortran数组声明及子程序的一些问题啊
已经有4人回复
C/C++数组读取
已经有3人回复
FORTRAN90标准函数及IMSL标准函数库
已经有166人回复
fortran 权威指南 英文版 以及fortran的教学ppt
已经有235人回复
编一个fortran程序
已经有17人回复
fortran里一个子程序不运行是怎么回事
已经有13人回复
Fortran程序库
已经有9人回复
fortran数组输出,行与列请教
已经有7人回复
Fortran中数组的使用
已经有4人回复
大家帮我看一个fortran的程序,我总是计算不出正确的结果
已经有20人回复
请教Fortran下如何给二维或三维数组赋初值,谢谢
已经有3人回复
求助Fortran编程
已经有8人回复
Fortran中关于数组的变化
已经有5人回复
【求助】如何写FORTRAN程序实现求平均最近邻距离
已经有34人回复
【求助】求Fortran90编译器?
已经有11人回复
【转帖】intel Fortran编译器的一个“危险”优化
已经有9人回复
【求助】求指点,在Fortran里面,怎样实现“数组维度可调”的数组?
已经有5人回复
【求助】关于matlab的高维数组
已经有6人回复
1楼
2012-07-27 08:33:27
已阅
回复此楼
关注TA
给TA发消息
送TA红花
TA的回帖
slttgb
2楼
2012-07-29 22:44:04
已阅
回复此楼
关注TA
给TA发消息
送TA红花
TA的回帖
相关版块跳转
第一性原理
量子化学
计算模拟
分子模拟
仿真模拟
程序语言
我要订阅楼主
jerkwin
的主题更新
2
1/1
返回列表
如果回帖内容含有宣传信息,请如实选中。否则帐号将被全论坛禁言
普通表情
龙
兔
虎
猫
高级回复
(可上传附件)
百度网盘
|
360云盘
|
千易网盘
|
华为网盘
在新窗口页面中打开自己喜欢的网盘网站,将文件上传后,然后将下载链接复制到帖子内容中就可以了。
信息提示
关闭
请填处理意见
关闭
确定