- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
forall与do循环的区别
FORTRAN中FORALL与DO的区别 FORTRAN中FORALL与DO的区别: 以下是个人对FORALL与DO的区别的理解,完全基于一些程序【仅列出下面一个程序】和参考国内与国外教材而得出的。如果有不对的地方,请联系我。谢谢! INTEGER :: nn(0:8)=(/0,1,2,3,4,5,6,7,8/), mm(0:7) FORALL(i=0:7)nn(i) = 0mm(i) = nn(i+1)END FORALL ! 等价于 nn(0:7) = 0!??????? mm(0:7) = nn(1:8) write(*,(a,10i2)) nn= : ,nnwrite(*,(a,10i2)) mm= : ,mm nn(0:8)=(/0,1,2,3,4,5,6,7,8/) DO i=0,7nn(i) = 0mm(i) = nn(i+1)END DO write(*,*)write(*,(a,10i2)) nn= : ,nnwrite(*,(a,10i2)) mm= : ,mmEND 程序运行结果:nn= : 0 0 0 0 0 0 0 0 8mm= : 0 0 0 0 0 0 0 8 nn= : 0 0 0 0 0 0 0 0 8mm= : 1 2 3 4 5 6 7 8Press any key to continue 先对DO理解:DO i=0,7nn(i) = 0mm(i) = nn(i+1)END DO 当i为0时,nn(0)=0,并返还到nn,此时数组是nn(0:8)=(/0,1,2,3,4,5,6,7,8/)【nn(0:7)没有完全改变】mm(0)=nn(1),所以mm(0)值为1当i为1时,nn(1)=0,并返还到nn,此时数组是nn(0:8)=(/0,0,2,3,4,5,6,7,8/)【nn(0:7)没有完全改变】mm(1)=nn(2),所以mm(1)值为2以此类推......当i为6时,nn(6)=0,并返还到nn,此时数组是nn(0:8)=(/0,0,0,0,0,0,0,7,8/)【nn(0:7)没有完全改变】mm(6)=nn(7),所以mm(7)值为7当i为7时,nn(7)=0,并返还到nn,此时数组是nn(0:8)=(/0,0,0,0,0,0,0,0,8/)【nn(0:7)完全改变】mm(7)=nn(8),所以mm(7)值为8 最后得出结果是:nn= : 0 0 0 0 0 0 0 0 8mm= : 1 2 3 4 5 6 7 8也就是说是用DO的时候,处理器是按次序来操作每一个连续的迭代,一个接着一个。在一个完成之后才执行下一个。就如同我上面的解释一样,先是0,然后是 1,之后是2....最后是7。只有在i=7结束时,nn(0:7)才完全改变。【具体是不是这样的呢?你可以在nn(i)=0后面添加这2个语句来试一 试write(*,*)nn(,i,)=,nn(i)write(*,*)nn(,i+1,)=,nn(i+1)】 再来看FORALL结构FORALL(i=0:7)nn(i) = 0mm(i) = nn(i+1)END FORALL输出结果是:nn= : 0 0 0 0 0 0 0 0 8mm= : 0 0 0 0 0 0 0 8 很显然是mm(i)中使用的nn(i+1)是已经变化过的nn。 程序开始,对于i=0,7并不是一个一个按次序来的,而是同时进行的,即:没有先后次序。系统识别到nn(i)=0,于是就同时将nn(0)、 nn(1)、nn(2)、nn(3)、nn(4)、nn(5)、nn(6)、nn(7)赋值为0,然后将他们返回给nn,现在数组nn就变成了 nn(0:8)=(/0,0,0,0,0,0,0,0,8/)。【就在这一步nn(0:7)完全改变了,而不像DO要用7步才完成。】 到此nn(i)=0这一个执行语句已经结束了。 接下来是mm(i) = nn(i+1)。同样,系统同时将nn(1)赋给mm(0)、nn(2)赋给mm(1)、nn(3)赋给mm(2)、......nn(8)赋给 mm(7)。【就在这一步mm(0:7)完全改变了,而不像DO要用7步才完成。】于是数组mm就变成了nn(0:7)= (/0,0,0,0,0,0,0,8/)。到此mm(i) = nn(i+1)这一个执行语句已经结束了。 所以这里给出一个结论是 FORALL是同时处理数据,而DO是逐个处理数据的。 【只要系统支持并行的赋值,FORALL语句以及结构,就能够自然地实现对一个庞大的数组的所有元素进行同时赋值,从而充分地利用了系统的并行效能。这个新特征的引入充分显示了FORTRAN在并行运算方面的努力。】 另外给出一个例子:
您可能关注的文档
最近下载
- DBJ51T 140-2020 四川省不透水土层地下室排水卸压抗浮技术标准.pdf VIP
- 中级无机化学(第二版)全书课件电子教案汇总.ppt
- 船舶保安员Z09_5384-航海知识.doc VIP
- 海尔管理案例分析.doc VIP
- DBJ51T 246-2024 四川省岩土工程勘察钻探护壁技术标准.pdf VIP
- (高清版)-B-T 28053-2023 铝合金内胆碳纤维全缠绕气瓶.pdf VIP
- 人教版高中物理必修第二册第8章机械能守恒定律1功与功率课件.ppt VIP
- 2025-2026学年山东省青岛市八年级上学期期中模拟英语试题(含解析).pdf VIP
- IEEE 1188-2005国外国际标准.pdf
- 安装、调试及验收方案,安装、调试及验收方案.doc VIP
有哪些信誉好的足球投注网站
文档评论(0)