




已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
FORTRAN90语言程序设计 计算机中心 楚红 2006.12 第3部分 循环结构程序设计 l带循环变量的DO循环结构 l不带循环变量的DO循环结构 lDO-WHILE控制的循环结构 l循环的嵌套 l循环结构程序设计举例 有循环变量的DO循环结构 l有循环变量DO结构的格式 DO V = E1 , E2 , E3 循环体 ENDDO DO循环语句由三部分组成:DO语句、循环体和ENDDO语句。 DO语句是DO循环的开始语句,指定用于控制循环执行的有关参数 (初始值、终止值和步长),决定是否执行循环体。 DO是关键词,表示DO循环结构的入口语句。 V是循环变量,循环变量的类型可以为整型或实型,E1,E2,E3可 以是整型或实型常数、变量、表达式。 E1称为循环变量的初始值;E2称为循环变量的终止值; E3称为循 环变量的步长,当步长为1时,该项可以省略。 在循环开始时,E1,E2,E3应有确定的值。 由于实型数据在进行数据转换时,可能出现误差,因此,在使用循 环变量、E1、E2和E3时,最好定义为整型。 有循环变量的DO循环结构 l循环体是DO循环结构的主体,给出用于处理数据的有关 语句,决定DO循环语句的执行结果。 lENDDO语句是DO循环结构的终端语句,表明DO循环 语句到此结束,控制返回到DO语句执行。 l下面给出一些合法的DO结构: DO I = 1, 10, 2!输出1、3、5、7、9 PRINT * , I ENDDO DO I = 10, 1, -2!输出10、8、6、4、2 PRINT * , I ENDDO 有循环变量的DO循环结构 lDO循环结构的执行过程为: (1) 先计算E1、E2、E3的值,然后转换为与循环控制变量相同 的类型; (2) 给循环控制变量赋初值V=E1; (3) 计算循环次数,计算公式为: R = MAX ( INT ( ( E2 - E1 + E3 ) / E3 ), 0 ) 例如,若DO语句为“DO L = 2, 20, 2”,循环次数为:R = MAX ( INT ( ( 20 2 + 2 ) / 2 ) , 0 ) = 10; (4) 检查循环次数,当R 0时,执行循环体;当 R0时,跳过 循环体,循环结构执行结束; (5) 当执行到循环终端语句时,循环变量按步长增值,循环变量 = 循环变量 + E3; (6) 循环次数减1:R = R 1 ;返回 (4) 继续执行。 注意事项 (1) E3的缺省意味着循环步长为1,此时E3前面的逗号也必须省略。例如: DO I = 1 , 10 , 1 DO I = 1 , 10 两者含义相同。 (2) 若循环次数R= 100 ) GOTO 100 ENDDO 100 PRINT * , I * 3 (7) DO循环和其它结构 ( 如块IF结构、CASE结构 ) 可以相互嵌 套使用,但结构的嵌套必须是完整嵌套,不允许结构的交叉 。 有循环变量的DO循环结构 lDO循环结构的命名 DO循环结构名: DO V = E1 , E2 , E3 循环体 ENDDO DO循环结构名 例3.1 求N!的值 因为N!= 1 * 2 * 3 * * N。该题显然是一个累积问题 的计算,存放累积的变量的初值应为1。源程序 PROGRAM CALCULATE_FACTORIAL IMPLICIT NONE INTEGER : N, T, I READ *, N T = 1 DO I = 1, N T = T * I END DO PRINT *, T END PROGRAM CALCULATE_FACTORIAL 引申 例如求解如下表达式。 有循环变量的DO循环结构 l例3.3 求FIBONACCI数列:1,1,2,3,5, 的前40个数。 分析:FIBONACCI数列的递推公式为:F1=1,F2=1 , ( N3 ) 根据递推公式可知,FIBONACCI数列从第3顶开始,等 于前2顶之和。因而程序只需一个DO循环,采取辗转赋 值法即可。 有循环变量的DO循环结构 l例3.4 判断一个整数N是否为素数。 所谓素数,是一个正整数,该数只能被1和它本身整除 。那么判断一个数N是否为素数就是将其被2到(N 1) 之中的所有整数整除,如果都不能整除,则N为素数。 实际上根据数论知识,判断N是否为素数,不必将N被2 到(N 1)整除,只要被2到 (若 不是整数,取其 整数部分)整除即可。 PROGRAM EXAM IMPLICIT NONE INTEGER : N , I , J, SWITCH READ * , N J = SQRT ( REAL ( N ) ) SWITCH = 1 DO I = 2 , J IF ( MOD ( N , I ) = = 0 ) SWITCH = 0 END DO IF ( SWITCH = = 1 ) THEN PRINT * , N , IS A PRIME NUMBER ELSE PRINT * , N, IS NOT A PRIME NUMBER END IF END 无循环变量DO结构 l在DO循环结构中,当DO语句中仅包含关键词DO而无循 环变量控制或条件控制时,称为无循环变量的重复DO结 构。它的形式为: DO结构名 : DO 循环体 ENDDO DO结构名 方括号内的DO结构名是可选项,作用是给DO结构命名。 l重复DO结构是一个无休止的死循环。尽管在语法上没有错误 ,但程序却不能正常结束。 l因此,必须在循环体中加入能在满足某种条件时停止循环的 语句。 中断语句( EXIT、CYCLE ) l中断语句包括EXIT语句和CYCLE语句,用来强行控制 或改变程序的执行顺序。 l1.EXIT语句 lEXIT语句功能:在循环体执行过程中强制性终止循环, 将执行控制转移到当前循环之外的第一条语句执行。 EXIT语句的一般格式为: EXIT DO循环结构名 EXIT语句使用说明: (1) EXIT语句通常是作为逻辑 IF语句的内嵌语句来使用,其作用是有条件中断, 形式为: IF (逻辑表达式) EXIT 结构名 (2) 当EXIT语句中没有指定结构名时,则跳出当前结构。 (3) 结构化程序设计方法不提倡使用EXIT语句,但在某些情况,使用EXIT语句可 简化程序。 中断语句( EXIT、CYCLE ) l2.CYCLE语句 lCYCLE语句功能:用于终止执行本次循环中剩余的语句 ,重新执行下一轮循环。 CYCLE语句的一般格式为: CYCLE DO循环结构名 l CYCLE语句通常是作为逻辑IF语句的内嵌语句来使用,其作 用是有条件转移,形式为: IF ( 逻辑表达式 ) CYCLE DO循环结构名 中断语句( EXIT、CYCLE ) l例3.5 输入一组整数,求这组数的正数的个数及正数的 总和。当输入数据等于0时终止循环。 PROGRAM MAIN IMPLICIT NONE INTEGER : K , SUM = 0 , NUM = 0 DO READ * , K IF ( K = =0 ) EXIT IF ( K 3 ) EXIT LOOP1! 当I 3时时,跳出外层层循环环 PRINT ( 11X , I2 ) , I LOOP2 : DO J = 1, N! 中层层循环环,结结构名LOOP1 IF ( J 2) CYCLE LOOP2 IF (I = = 2 .AND. J 1 ) EXIT LOOP2 PRINT ( 21X , I2 ) , J LOOP3: DO K = 1, N! 内层层循环环,结结构名LOOP1 IF ( K 2 ) CYCLE LOOP3 IF (I = = 1 .AND. J 1) EXIT LOOP2 ! 跳出内层层和中层层循环环 PRINT ( 31X , I2) , K END DO LOOP3 END DO LOOP2 END DO LOOP1 DO-WHILE结构 lDO-WHILE循环的一般形式为: 结构名: DO WHILE ( 逻辑表达式 ) 循环体 ENDDO 结构名 结构名是为DO-WHILE结构的命名,用法同前面对块IF 、CASE等结构的命名类似,可以缺省。 关键词DO WHILE称为DO WHILE语句,是循环的入口 。关键词ENDDO称为ENDDO语句,是循环的出口。 DO WHILE中的逻辑表达式是判断循环体是否被执行的 条件,书写时应放在括号内。 DO-WHILE结构 lDO-WHILE结构的执行过程为: (1) 计算逻辑表达式的值; (2) 当逻辑表达式的值为“真”时,执行循环体,遇到 ENDDO语句后返回到 (1) 继续。当逻辑表达式的值为“ 假”时,退出循环结构。 假 真 逻辑表达式 循环体 结束 DO-WHILE结构 l例3.9输入两个正数M、N,求最大公约数和最 小公倍数。 l例3.10 用下面的级数计算的近似值,精度要 求第N项的值小于10-5时结束。 l , l使用DO-WHILE语句来判断,当某一项的值小 于精度要求时,退出循环。 循环的嵌套 l在一个DO循环中又完整地包含一个DO循环,称为DO循环的 嵌套或多重循环。例如,打印一个99的乘法表,可用下面的 程序实现: INTEGER:I,J DO I = 1, 9 DO J = 1, 9 K = I * J PRINT * , I , * , J , = , K ENDDO ENDDO END 嵌套DO循环的说明 l(1) 三种DO循环都可以相互嵌套。但在嵌套时,内循环必须 完整地包含于外循环之中,不得交叉,即遵循“完全包含”原则 。如: DO WHILE ( AST = 0 ) DO J = 1, 10 内层嵌套外层嵌套 ENDDO ENDDO l(2) 循环嵌套时,内外层不能使用相同的循环变量。但同一层 并列的循环结构可以使用相同的循环变量。因为内外层若使 用相同变量名,执行内循环时要对内循环变量赋值,这就相 当于对外层循环变量重新赋值。 嵌套DO循环的说明 l(3)在执行嵌套的循环时,可以将执行控制从循环体 内转到本循环体内某个位置,或DO结构以外。但不能从 DO结构外转到循环体内,也不能从外循环体转到内循环 体。 (a)不允许转移 (b)不允许转移 (c)允许转移 (d)允许转移 循环的嵌套 l例3.13 求四个阶乘之和2!+4!+6!+8! 的值。 l可以用两重循环实现这个阶乘之和的计算。外层循环计算四个阶 乘的和,里层循环计算一个阶乘。程序如下: PROGRAM EXAM IMPLICIT NONE REAL : S = 0.0, T INTEGER : I, J DO I = 2, 8, 2 T = 1.0 DO J = 1, I T = T * J ENDDO S = S + T ENDDO PRINT * , S = , S END 循环结构程序设计举例 l例3.15 求 的前N项之和。这里,X 和N从键盘输入。 l解决此类问题的关键是找出多项式的通项式。我们发现 从第二项开始,每项等于前一项乘以 ,因此只需一个 单重循环,程序即可写出。 循环结构程序设计举例 l例3.16 用梯形法求定积分 的值。 l首先将积分区间(A,B) N等分,每个小区间的长度为H = ( B A ) / N。 l第一个小梯形的下底为 ;上底为; l第I个小梯形的下底为 ;上底为 。 l每个小区间的面积为 : 。 0 a a + ih b x y 循环结构程序设计举例 l例3.17 求三位数的水仙花数 。所谓“水仙花数”是 指一个三位数,其各位数字的立方和等于该数本身 。例如,407=43+03+73,所以407是水仙花数 。 l方法一 该题可将100999之间的三位数的各位数字求出,然后再判 断各位数字的立方和是否等于它本身。 l方法二 该题采用穷举法也非常方便。所谓穷举法:即将所有可能的 数字组合全部找到,然后选出符合条件的组合。 循环结构程序设计举例 l例3.18 验证哥德巴赫猜想。哥德巴赫提出:一个不小 于6的偶数必定能表示为两个素数之和。例如:6=3+3、 8=3+5等。要求将650之间的全部偶数表示成两个素数 之和。 l分析:对于一个偶数N可以表示成任意两个数A、B之和 (A为较小的数)。我们只需先判断A是否为素数,若A 是素数,再判断B(B=N-A)是否为素数,若B是素数, 则找到了答案。因为作为较小数的A最终必然为素数, 所以判断它的范围可以从3开始,到N/2,步长为2。 练习题 l1、阅读下列FORTRAN90程序段 INTEGER:I,J,K DO I = 1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025中国葛洲坝集团勘测设计有限公司招聘12人笔试题库历年考点版附带答案详解
- 2025年医疗健康行业智能医疗设备与健康服务研究报告
- 2025年文化创意行业数字化文化产品推广策略研究报告
- 2025年智能家居安全系统市场趋势与竞争分析研究报告
- 校园环境应急安全培训课件
- 税务 合作协议书
- 2026年国家能源投资集团有限责任公司高校毕业生统招笔试备考试题及答案解析
- 2026年度内蒙古自治区事业单位公开招聘工作人员10710人笔试模拟试题及答案解析
- 2025年肝胆胰外科胆囊切除手术操作规范模拟考试答案及解析
- 2025年传染病科结核病患者隔离与防护知识考核模拟试卷答案及解析
- 吸入一氧化氮治疗在急危重症中的临床应用专家共识解读
- 煤炭供应方案投标文件(技术方案)
- HZS60混凝土搅拌站的技术改造及重油改造
- NB-T10859-2021水电工程金属结构设备状态在线监测系统技术条件
- 《电力行业数字化审计平台功能构件与技术要求》
- 医院培训课件:《和谐医患关系的建构与医疗纠纷的应对》
- 《肺癌基础知识课件》
- 水泥行业发展的现状分析
- 会计继续教育《政府会计准则制度》专题题库及答案
- 安全生产应急处置卡模板(常见事故)
- 学校食堂食材配送服务方案(肉类、粮油米面、蔬菜水果类)
评论
0/150
提交评论