您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > Fortran-95-程序设计-第四章
中山大学环境科学与工程学院陆希六、循环结构程序设计♦DO♦DOWHILE♦DO循环的嵌套♦隐含DO循环♦循环的流程控制♦DO循环结构用于实现重复的算法。具有重复执行某一段语句的功能。以DO作为关键字,又称DO构造也称“循环变量”也称“步长”,缺省为1下面的DO语句都是合法的:DO语句的一些特点是:1、当循环变量的增量(步长值)为1时增量式可不写。2、循环变量初值、终值和步长可以分别是常数、变量或表达式。如果是变量则它应预先被赋值。如果是表达式,则先计算出表达式的值。循环次数可以从循环初值、终值和步长计算出来:次数=INT((终值-初值+增量)/增量)。如果计算出的循环次数<0时,则按0处理,即一次也不执行循环。3、循环变量的初值、终值和步长可以为正或负。初值、终值可以为零。但步长不应为0,否则循环变量的值永远不会超过终值,从而陷入死循环。4、如果循环变量的类型和初值、终值和步长的类型不一致,则按赋值的规则处理,即需先将初值、终值和步长的类型转化成循环变量的类型,然后进行处理。为避免错误,应尽量使循环变量类型与初值、终值和步长的类型一致。5、由于实型数在运算和存储时有一些误差,因而循环次数的理论值与实际值之间会有一些差别。这种情况在程序设计中常有发生,而且比较隐蔽不易发现。所以应该避免使用实型的循环变量,用整型循环变量计算出的循环次数是绝对准确的。DO循环执行步骤:1、计算初值式、终值式、增量式的值,并将它们转换成循环变量的类型。2、将初值赋予循环变量。3、计算应循环的次数。4、检查循环次数,若≤0则跳过循环体,执行循环终端语句下面的一个执行语句。如果>0,则执行循环体。5、执行终端语句时,循环变量增值。6、循环次数减1。7、返回(4),重复执行(4)、(5)、(6)、(7)。循环终端语句:循环终端语句为一般的执行语句。F90规定:循环终端语句可以是除了GOTO、块IF、CASE、CYCLE、DO、ELSE、ELSEIF、ENDIF、END、ENDSELECT、EXIT、SELECTCASE、STOP和RETURN语句以外的任一可执行语句,如打印语句、赋值语句、输入语句、逻辑IF语句等都可以作为终端语句。特殊的循环终端语句是:ENDDO(常用于无语句标号时)和CONTINUE(常用于有语句标号时)。ENDDO语句使老的CONTINUE语句显得没有什么用处了,虽然F90的向下兼容性使CONTINUE语句仍然可用,但新编写的程序应该尽量使用以ENDDO结束的块DO构造练习1用展开式!!3!2132nxxxxenx练习2用展开式222221...3121116n程序是否正确?运行结果?有无多余动作?(比较两个程序)♦DOWHILE用逻辑运算来控制循环的次数练习1用展开式!!3!2132nxxxxenx求其近似值,当第n项小于10-10?时即可。(用DOWHILE控制循环)♦循环的嵌套在一个DO循环中又完整地包含另一个DO循环,称为DO循环的嵌套。嵌套层数可以不限,各层的循环变量不允许同名。注意内循环应当完整地嵌套在外循环之内,即内循环是外循环体中的一部分,内外循环不能交叉例:求两个整数的最大公约数例:打印“九九表”,即1×1=11×2=2……直到9×9=81♦隐DO循环隐DO循环实际上是带控制循环变量的DO循环,但简化成只有DO循环的第一句,且把关键字DO隐去,成为:形式。它不是独立语句,只是用作为读写语句的输入输出表中一个组成部分,用来控制重复读写的次数。隐DO表可以嵌套,如:CYCLE命令♦循环的流程控制EXIT命令(p109)其它:不带循环控制变量,从DO语句下面第一句执行起顺次执行到ENDDO前的最后一句,再返上来从DO语句下面第一句执行起,重复执行整个DO块,则需要用exit跳出循环程序例:guessnumb.f90DO循环规则1、循环变量可以在循环体中被引用,但不应当再被赋值。例:下面写法是不正确的:2、循环的次数是根据循环变量的初值、终值和步长值计算出来的,在执行循环体期间是确定不变的。3、可以用转移语句从循环体内转到循环体外,也可以在循环体内转移,但不允许从循环外转到循环内。(块规则)例:下面写法是合法的(尽管不符合结构化原则):例:以下写法非法:4、多个DO循环可以共享一条循环终端语句,但循环体必须完全包含在外围DO循环体内。5、如果DO循环出现在if,elseif或else块内,则DO循环范围必须完全包含在该块中。6、如果IF语句和SELECTCASE语句出现在DO循环范围内,则相应的ENDIF语句和ENDSELECT语句也必须出现在这个DO循环体内。练习:求级数1111...1*22*33*4(1)ynn的前n项和,但当某项绝对值≤10-5时,虽未满n项,也因满足精度而不再加入下一项练习:验证哥德巴赫猜想。哥德巴赫猜想提出,一个不小于6的偶数必定能表示为两个素数之和。例如:6=3+3,8=3+5,10=3+7,…要求将6~100之间的全部偶数表示为两个素数之和。例:对一个大于或等于3的正整数,判断它是不是一个素数。所谓素数,是指除1和该数本身之外,不能被其它任何整数整除的数。例如,13是素数,因为它不能被2,3,4,…,12整除。判断一个数N(N>3)是否素数的方法是很简单的:将N作为被除数,将2到(N—1)各个整数轮流作为除数,如果都不能被整除,则N为素数。算法可以表示如图:
本文标题:Fortran-95-程序设计-第四章
链接地址:https://www.777doc.com/doc-4876973 .html