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