文档详情

5Fortran程序设计5_数组.ppt

发布:2017-05-02约5.18千字共57页下载文档
文本预览下载声明
七、数组;数组是科学和工程计算问题中常见的向量和矩阵的反映和概括。数组在FORTRAN程序中有着重要的意义,在批量大的情况下,如果不利用数组就失去了计算机的优越性 。;数组是类型相同的一组标量数据的有序集合,即要求这些数据都必须类型相同,并按某种确定方式排列。 向量是一维数组,矩阵可看成是二维数组。 类型可以是整型、实型、双精度型、逻辑型等任何一种。 ;组成数组的每一个元素称为数组元素 数组的维数称为秩(rank),F90规定数组最多可以有7维; 在某一维中元素的个数称为该维的长度(extent); 数组中所有元素的个数称为数组的大小(size),它等于各维的长度的乘积,数组的大小可以为0。 数组的形状(shape)取决于秩和每一维的长度;声明方法(严谨): DATATYPE ARRAYNAME (下界 : 上界,…) 如:real : : uwnd (1:359, 1:180, 1: 9, 1:12) real : : stat (1: 99, 1:2) , integer : : statnum (99) integer : : stanum(0:98);数组(元素)的引用:;数组片段:; 数组赋值与运算;2、在声明变量时直接赋值(必须一次给齐所有初值);其它赋值举例:;数组的运算;使用数组名作为参数的内在函数称为基本内在函数,例 :;数组与数组 ;相当于?;数组与标量 ;数组内在函数 ;;do j=1,2 do i=1,2 b(i,j)=a(2-i+1,2-j+1) end do end do;p136:;WHERE 命令 (95新添);;多重判断;;FORALL 命令 (95新添);;;练习 设数组 ;数组的保存规则;逻辑结构 存储结构;数组说明:INTEGER a(3,4)。 逻辑结构、存储结构、相互关系:;数组说明:INTEGER a(3,2,4)。 逻辑结构、存储结构、相互关系:;数组说明:INTEGER a(L1:U1,L2:U2,…,Ln:Un) 。 逻辑结构: 逻辑结构可看成是由Un-Ln+1个n-1维数组构成,每个n-1维数组又可看成是由Un-1-Ln-1+1个n-2维数组构成,依次类推,直到每个二维数组又可看成是由U1-L1+1个一维数组构成。 数组元素的下标a(i,j,k,…,r,s)决定该数组元素在逻辑结构中的位置。 存储结构: 存储结构是在计算机内存中分配的一串连续的存储单元,从第一个数组元素(如:a(L1,L2,…,Ln))开始,按照数组逻辑结构以列为主依次将数组元素分配在连续的存储单元中。多维数组的存储结构是一维线性表,多维数组的元素在存储结构中从左向右排列时,其下标变化如同加油站计数器反向变化,先从1维开始变化,最后到n维变化,由此可得到多维数组的存储结构。 相互关系:一一对应关系。;所以,应尽量避免使用高维数的数组;并在应用中充分考虑计算机存储和提取数据的方式、原则,尽量编写效率较高的程序。;real uwnd(360,180,17,365);F90的赋值语句考虑到了在并行机上计算的功能,即使不是用的并行计算机,在形式上也是按并行化处理的。这与F77中的串行赋值是不同的,由此造成了数组的F90赋值结果与采用DO循环方式进行赋值的差异 ;如果用DO循环的话 DO i=1,9 a(i)=a(i-1) END DO A的元素是逐一处理的,结果是(/0,0,0,0,0,0,0,0,0/): |a(0)|a(1)|a(2)|a(3)|a(4)|a(5)|a(6)|a(7)|a(8)|a(9)| → → → → → → → → → ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨;要用DO循环达到和上面同样的效果,需要数组的拷贝: INTEGER :: a(0:9)=(/0,1,2,3,4,5,6,7,8,9/), b(0:9) b=a DO i=1,9 a(i)=b(i-1) END DO;可变大小的数组(动态数组);;错误状态可以由ALLOCATE语句中的STAT值获得。如果指定STAT选项,语句的成功执行时将返回0,否则返回正值。若未指定STAT选项且出现错误时,程序将中止执行 ;;;DEALLOCATE语句用来释放已分配数组的内存 ;用内在函数ALLOCATED来判断一个数组是否已被分配。它的形式为: ALLOCATED(数组名) 返回值是逻辑标量,已被分配时为真,现在还未被分配时为假,当数组的分配状态未定义时它也是未定义的 。;应用举例:;;;[例]计算N个测试数据的平均值和标准偏差。测试
显示全部
相似文档