FORTRAN90第三节 循环结构程序设计.ppt

  1. 1、本文档共39页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
§3 循环结构程序设计 §3.1有循环变量的DO循环结构 Do 循环执行过程 DO循环结构的命名 Do循环的例题 §3.2 重复Do循环结构 §3.4 循环的嵌套 §3.5 循环结构程序设计举例 程序举例 选择结构和循环结构部分 * §3.1 有循环变量的DO循环结构 §3.2 重复DO循环结构 §3.3 DO_WHILE控制的循环结构 §3.4 循环的嵌套 §3.5 循环结构程序设计举例 重复执行一组操作称为循环。算法中构成循环的结构称为循环结构 。 在FORTRAN中,实现循环结构的最直接方法就是用GOTO语句,但这种方法不符合结构化程序设计的思想,并不值得提倡。 FORTRAN 90一般有两种方法实现循环控制:DO_ENDDO语句和do While_ENDDO语句。 格式:DO 循环变量v= e1,e2[,e3] 循环体statements ENDDO 功能:对于变量v的值从初值e1按增量e3增加到终值e2,反复执行循环体。e1,e2,e3都是算术表达式,e3的缺省值为1。循环变量v是代数量(整型/实型)。 例: DO I=10,2,-2 print *,I,I*I ENDDO 循环次数r=INT((e2-e1+e3)/e3),如果初始值表达式e1,终止值表达式e2,增量表达式e3中有实型表达式,循环就可能少做一次。循环次数至少为零。 例: E3 = 0.1 Do x = 0,50.1,E3 print *,X ENDDO 0.1不能精确表示,50.1/0.1得到500.9几,被INT()直接截断,循环次数=500。 返回 最好用整型变量来控制循环,以避免少做一次的问题。 例: X = 0 Do K = 0,500 print *,X X = X+0.1 EndDO END S1: 求表达式e1,e2,e3的值,编译系统分别用三个与循环变量v相同类型的临时变量(不妨记为v1,v2,v3)来存放其值。 S2:循环变量v=v1 S3: 计算循环次数r=INT((v2-v1+v3)/v3) S4: 若r ≯0,则转S9 S5: 执行循环体 S6: 循环变量v增加增量v3 S7: 循环次数r减1 S8:转S4 S9:循环终端语句后第一条可执行语句。 注意: (1)循环变量的值在循环体中可以引用,不能被重新赋值.例: DO I=1,20 J=I*I PRINT*,I,J END 是可以的. 而 DO I=1,20 I=I*I PRINT*,I END 非法. (2)E1,E2,E3的类型与V的类型可以相同,也可以不同,当类型不同时,系统自动将E1,E2,E3的类型转换成V的类型. 例: DO I=2,5,1的循环次数为4. DO X=2.2,5.4,1.1的循环次数为3. DO I=2.2,5.4,1.1的循环次数为4. (3)正常出口:从循环的ENDDO语句脱离循环的称为正常出口,否则称为非正常出口.脱离循环后循环变量保留脱离时的值.例: DO I=1,5 J=I*I END DO PRINT*,I,J END DO I=1,5 IF(I3)GOTO100 J=I*I END DO 100 PRINT*,I,J END 输出6,25 输出 4,9 DO循环结构命名方式与块IF结构相仿: DO循环结构名: DO 循环变量v= e1,e2[,e3] 循环体statements ENDDO[循环结构名] 例:计算n! read(*,*) N f = 1 do I = 2,N f = f*I ENDO Write(*,*) n,f END 例:前n个自然数之和 read(*,*) N S = 0 do I = 1,N S = S+I ENDDO Write(*,*) N,S END 例:输入100个数,求其中正数的个数及其平均值。 S = 0;N = 0 Do K = 1,100 Read(*,*) A IF(A0) Then N = N+1 S = S+A End If ENDDO If(N0) Print *, N,S/N End 例:求Fibonacci数列:1,1,2,3,5,8,……的前40个数. 1 1 2 3 5 8 13 F1 +F2= F F1 +F2 =

文档评论(0)

0520 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档