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

  1. 1、本文档共57页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
5Fortran程序设计5_数组

七、数组;数组是科学和工程计算问题中常见的向量和矩阵的反映和概括。数组在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个测试数据的平均值和标准偏差。测试

文档评论(0)

wuyoujun92 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档