FORTRAN数组介绍大全

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数组元素的下标表达式过于复杂时,最好先
行算出,最好不要书写过于复杂的语句和表达
式。 2021/3/26
8
§6.1.4 数组的输入与输出
数组必须先定义后使用,本节讨论中提到的 数组假定已经定义如下:
DIMENSION A(10),M(12),D(5,6)
允许用数组名来I/O整个数组 例: READ(*,*) A,M,D
输出结果为:
1.0 2.0 3.0 4.0 5.0 6.0 1.0 3.0 5.0 2.0 4.0 6.0 1.0 5.0 4.0 3.0
Do I=1பைடு நூலகம்5
do j=1,6
read*,d(I,j)
enddo
Enddo
2021/3/26
10
用DO循环对数组进行输入/输出不方便,为 此,提供了针对I/O的隐含DO循环方式。 例: read(*,*) (A(I),I=4,10,2)
read(*,*) (M(K),K=1,12) WRITE(*,*) ((D(L,N),N=1,6),L=1,5)
用数组名(下标[,下标])指定所要引用的数 组元素。例:a(12),B5(3,6),c3b4(I,J,K)
数组元素的下标可以是算术表达式,系统计 算此表达式的值并自动取整。表达式中所涉 及到的不是常量的量必须要先行算出。
例:a(I+1), b5(b5(3)+a(2))
例:c3b4(I,I+5,c3b4(a(b5(c3b4(1,4,2),6)),3,2))
2021/3/26
7
如果作为数组元素的下标的算术表达式中存 在没有赋值的变量,系统一般自动将它按零处 理,可能会导致计算结果不正确,或者不稳定 (时对时错)。这类错误很难发现,是许多程序 存在bug的原因。
必须确保数组元素的下标的值不超过下标界 限。如果下标越界,系统一般会对存储于数组 之前(后)的存储单元进行操作(引用或者赋值), 导致错误。
例: real,dimension(3,4)::b,m(-5:10)
定义二维实型数组B,3行4列,12个元素;定义一 维实型数组M,下标从-5到10,16个元素。
例: character c(100)*20
定义一维字符数组C,有100个字符串,每个可容
纳20个字符 2021/3/26
4
§6.1.2 数组的逻辑结构与存储结构
用类型说明结合DIMENSION属性进行定 义:
类型,dimension(维数说明[,维数说明])::数组 名[,数组名]
2021/3/26
2
维数说明:由下标界限说明组成,有几个下标 界限说明就表示数组是几维的。多于一维的 数组称多维数组,下标界限说明之间用逗号(,) 分隔。
下标界限说明的写法:下标下限:下标上界 下标界限为整数,上界必须大于下界 下标下界为1时可以连同后面的冒号一起省 略;但是,上界是不可省略的。
隐含DO循环方式输出/输入多维数组时要 用到多重循环,注意其书写方式。
2021/3/26
11
§6.1.5 数组的操作 数组赋值:可以给所有元素赋同一个值
例: DIMENSION A(10),M(12),D(5,6)
A=1.2;M=3;D=4.5 数组构造器:(/取值列表/)
取值列表:标量、隐DO表、向量。隐DO表 和向量整体作为一个标量。标量之间用逗号。
一维数组:数列、向量 二维数组:矩阵、行列式、表格 三维数组:帐簿 对更多维数的数组,可以从概念上理解。
在学习程序设计语言时, 一般只要求熟练掌 握二维数组的应用,作为理解和应用多维数组 的基础。
2021/3/26
5
数组元素在内存中连续存放,下标数值小的 排在前面。存储多维数组时,下标变化速度依 次为第一个,第二个…
real a(2,3),b(2,3),c(3,2) a(1,:)= (/1,2,3/);a(2,:)= (/4,5,6/) b=reshape((/1,2,3,4,5,6/),(/2,3/)) do i = 1,2 print 1,(a(i,j),j=1,3) enddo
2021/3/26
13
do i = 1,2 print 1,(b(i,j),j=1,3) enddo c = reshape(a,(/3,2/)) do i = 1,3 print 1,(c(i,j),j=1,2) enddo 1 format(8(3x,f4.1)) end
数组构造器可给多维数组的某一维赋值:
Real,Dimension (2,3)::A,B A(1,:)=(/1,2,3/) ! 给第1行赋值
2021/3A/26(2,:)=(/4,5,6/) ! 第2行
12
§6.1.5 数组的操作 通过Reshape()函数可以把数组构造器的数 据赋给某种形状的数组
§6 数组 §6.1 数组的定义与操作 §6.2 动态数组 §6.3 数组在函数和子程序中的应用
§6.4 数组的应用举例
2021/3/26
1
§6.1 数组的定义与操作 数组:相同类型数据组成的有序的有限集合
§6.1.1 数组的定义
数组必须先定义后使用。定义数组时,要对 数组的名称、类型、数组的维数和元素的数 量加以说明。
定义数组时,下标界限必须为整型常量。
2021/3/26
3
例:DIMENSION A(12), IW(4,5) 定义一维实型数组A,下标从1到12,12个元素;定 义二维整型数组IW,4行5列,20个元素。
例:INTEGER,DIMENSION(-2:10):: P 定义一维整数组P,下标从-2到10,13个元素。
例:A(10),依次存储A(1),A(2),A(3), …A(10) B(8,9),依次存B(1,1),B(2,1),…B(8,1), B(1,2),B(2,2),…B(8,2), ……………………. B(1,9),B(2,9),…B(8,9)
特别提示:二维数组是按列存储的。
2021/3/26
6
§6.1.3 数组元素的引用
WRITE(*,*) A,D
多维数组I/O时,按其元素在内存中存储的
顺序依次I/O各元素,遵守的原则是:最左边的
2021下/3/26标变化最快。
9
特别提示:二维数组是按列存储的,在输入/ 输出时也按列进行。
在程序中可以输入/输出指定的元素,作为 特例,可用DO循环对数组全体元素或部分 元素进行输入/输出。
相关文档
最新文档