FORTRAN90程序设计.ppt

上传人:自*** 文档编号:124084894 上传时间:2020-03-11 格式:PPT 页数:32 大小:86.52KB
返回 下载 相关 举报
FORTRAN90程序设计.ppt_第1页
第1页 / 共32页
FORTRAN90程序设计.ppt_第2页
第2页 / 共32页
FORTRAN90程序设计.ppt_第3页
第3页 / 共32页
FORTRAN90程序设计.ppt_第4页
第4页 / 共32页
FORTRAN90程序设计.ppt_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《FORTRAN90程序设计.ppt》由会员分享,可在线阅读,更多相关《FORTRAN90程序设计.ppt(32页珍藏版)》请在金锄头文库上搜索。

1、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可 以

2、是整型或实型常数 变量 表达式 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

3、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时 执行循环体 当 R 0时 跳过 循环体 循环结构执行结束 5 当执行到循环终端语句时 循环变量按步长增值 循环变量 循环变量 E3 6 循环次数减1 R

4、 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 该题显然是一个累积问题 的计算 存放累积的变量的初值应为

5、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 N 3 根据递推公式可知 FIBONACCI数列从第3顶开始 等 于前2顶之和 因而程序只需一个DO循环 采取辗转赋 值法即可 有循环变量的D

6、O循环结构 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

7、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语句 用来

8、强行控制 或改变程序的执行顺序 l1 EXIT语句 lEXIT语句功能 在循环体执行过程中强制性终止循环 将执行控制转移到当前循环之外的第一条语句执行 EXIT语句的一般格式为 EXIT DO循环结构名 EXIT语句使用说明 1 EXIT语句通常是作为逻辑 IF语句的内嵌语句来使用 其作用是有条件中断 形式为 IF 逻辑表达式 EXIT 结构名 2 当EXIT语句中没有指定结构名时 则跳出当前结构 3 结构化程序设计方法不提倡使用EXIT语句 但在某些情况 使用EXIT语句可 简化程序 中断语句 EXIT CYCLE l2 CYCLE语句 lCYCLE语句功能 用于终止执行本次循环中剩余的语句

9、 重新执行下一轮循环 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 0 CYCLE NUM NUM 1 SUM SUM K ENDDO PRINT NUM NUM SUM SUM

10、END 中断语句 EXIT CYCLE l 例3 6 运用重复DO结构编写一个程序 求两个 正数M和N的最大公约数及最小公倍数 用辗转相除法来求最大公约数 例如 若输入49和35两 个数 先用49除以35 余数为14 再用35为被除数 14为除数做除法 余数为7 再将14为被除数 7为除 数做除法 此时余数为零 最后为除数的7就是最大公 约数 最小公倍数则等于M乘以N 再除以最大公约数 PROGRAM EXAM IMPLICIT NONE INTEGER M N T P R K READ M N P M N IF M 3 EXIT LOOP1 当I 3时时 跳出外层层循环环 PRINT 11X

11、 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

12、结构名 结构名是为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 求最大

13、公约数和最 小公倍数 l 例3 10 用下面的级数计算 的近似值 精度要 求第N项的值小于10 5时结束 l l使用DO WHILE语句来判断 当某一项的值小 于精度要求时 退出循环 循环的嵌套 l在一个DO循环中又完整地包含一个DO循环 称为DO循环的 嵌套或多重循环 例如 打印一个9 9的乘法表 可用下面的 程序实现 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

14、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可以用两重循

15、环实现这个阶乘之和的计算 外层循环计算四个阶 乘的和 里层循环计算一个阶乘 程序如下 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首先将积分区

16、间 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方法一 该题可将100 999之间的三位数的各位数字求出 然后再判 断各位数字的立方和是否等于它本身 l方法二 该题采用穷举法也非常方便 所谓穷举法 即将所有可能的 数字组合全部找到 然后选出符合条件的组合 循环结构程序设计举例 l 例3 18 验证哥德巴赫猜想 哥德巴赫提出 一个不小 于6的偶数必定能表示为两个素数之和 例如 6 3 3 8 3 5等 要求将6 50之间的全部偶数表示成两个素数 之和 l分析 对于一个偶数N可以表示成任意两个数A B之和 A为较小的数 我们只需先判断A是否为素数 若A 是素数 再判断B B N A 是否为素数 若B是素数 则找到了答案 因为作为较小数的A最终必然为素数 所以判断它的范围可以从3开始 到N 2

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号