- 1、本文档共36页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Fortran-第三讲(含习题课与实验一)
Fortran程序设计
第三讲 循环控制
回顾第二讲
逻辑运算
逻辑常量:
.TRUE. .FALSE.
关系运算符:
== = = /=
组合逻辑运算符:
.AND. .OR. .EQV. .NEQV. .NOT.
IF结构
CASE结构
简单IF结构
IF … ELSE …结构
IF … ELSEIF … ELSE… 结构
逻辑IF语句
选择子只能是整数、字符或逻辑表达式
第三讲 内容
DO循环
DO WHILE循环
迭代或计数循环
CYCLE和EXIT语句
习题课
循环结构
在程序设计中,总是会遇到一些重复执行的代码,显然,我们不可能将一段重复N次代码的代码书写N次,解决这一问题的方法是在程序中使用循环结构
结构化程序设计中的三种基本结构
顺序结构
分支结构
循环结构
3.1 DO 循环
一般形式:
DO
…
IF (逻辑表达式) EXIT
…
END DO
在DO和END DO之间的语句块重复执行,直到逻辑表达式为真的时候,执行EXIT,EXIT的执行会控制程序转到END DO之后的第一条语句处
例3.1.1:计算S=1+2+3+…+100的值
INTEGER ::i=1,s=0
DO
s=s+i
IF (i==100) EXIT
i=i+1
END DO
例3.1.2:令s=1+2+3+…+n,求满足s5000的最小n值:
INTEGER ::i=1,s=0
DO
s=s+i
IF (s5000) EXIT
i=i+1
END DO
WRITE (*,*) i,s
3.2 DO WHILE循环
一般形式:
DO WHILE(逻辑表达式)
…
…
…
…
END DO
例3.2.1:用DO WHILE形式实现例3.1.1
INTEGER ::i=1,s=0
DO WHILE(i=100)
s=s+i
i=i+1
END DO
3.3 迭代或计数循环
通常,以特定次数执行一个语句块可以采用这样的形式:
DO index=istart,iend,incr
…
…
…
END DO
index是整型变量,称为循环计数器或循环控制变量
如果incr是1,也就是每循环一次,计数器加1的话,incr可以省略
详解
三个循环参数istart,iend和incr可以是常量、变量或表达式。如果是变量或表达式,其值是在循环开始前进行计算,产生的数值用于控制循环
循环过程:
在DO循环执行的开始处,程序将数值istart赋给控制变量index,如果index*incr≤iend*incr,程序执行循环体内的语句
在循环体内的语句被执行后,控制变量重新计算为:
index=index+incr
如果index*incr≤iend*incr,程序再次执行循环体内的语句
只要index*incr≤iend*incr,第二步就反复执行,当该条件不满足时,就跳到DO循环的结尾处执行其后面的第一条语句
循环次数的计算
DO i=1,10
…
END DO
DO i=1,10,2
…
END DO
DO i=1,10,-1
…
END DO
DO i=3,-3,-2
…
END DO
3.3 计数循环的使用细节
循环体内的语句缩进以提高程序的可读性
控制变量不能在循环体内修改
计数器递增计数和递减计数都是可以的
循环控制变量和参数,应该总是整数
在循环体内,也可以采用IF () EXIT 语句随时退出循环
如果循环正常结束,循环控制变量的值并不是确定的(依编译器而定),所以,不要依赖这个值
3.3 例程
用计数循环的方法来计算s=1+2+...+100
!例程3_3_1.f90
PROGRAM example3_3_1
INTEGER :: i,s=0
DO i=1,100
s=s+i
END DO
WRITE(*,*) i,s
END PROGRAM example3_3_1
3.4 CYCLE语句
如果CYCLE语句在循环体内执行,那么当前循环马上会被中止,控制器将返回循环的顶部,继续下一个循环
PROGRAM test_cycle
INTEGER ::i
DO i=1,5
IF (i==3) CYCLE
WRITE (*,*) i
END DO
WRITE (*,*) ‘End of loop!’
END PROGRAM test_cycle
CYCLE常用来在循环中跳过某些特定的数,比如下面是跳过所有偶数:
PROGRAM test_cycle
INTEGER ::i
DO i=1,10
IF (MOD(i,2)=0) CYCLE
WRITE (*,*)
文档评论(0)