fortran循环结构及基本语句.ppt

上传人:小** 文档编号:21948458 上传时间:2021-05-16 格式:PPT 页数:20 大小:351KB
收藏 版权申诉 举报 下载
fortran循环结构及基本语句.ppt_第1页
第1页 / 共20页
fortran循环结构及基本语句.ppt_第2页
第2页 / 共20页
fortran循环结构及基本语句.ppt_第3页
第3页 / 共20页
资源描述:

《fortran循环结构及基本语句.ppt》由会员分享,可在线阅读,更多相关《fortran循环结构及基本语句.ppt(20页珍藏版)》请在装配图网上搜索。

1、第 五 讲 循 环 结 构 及 基 本 语 句 5.1 循 环 结 构 概 述对 于 问 题 规 模 较 大 的 重 复 问 题 适 宜 采 用 循 环 结 构 。如 : 从 键 盘 输 入 50个 数 , 求 50个 数 之 和 , 并 输 出 。求 解 算 法 : 求 解 程 序 :(1)初 始 化 : 0.0sum。(2)1I。(3)如 果 I50,则 执 行 步 骤 (7)。(4)输 入 一 个 数 x,并 累 加 到 sum中 。(5)I+1I。(6)转 步 骤 (3)。(7)输 出 结 果 sum。 (8)结 束 。对 于 上 述 算 法 和 程 序 , 不 管 程 序 规 模 多

2、 大 , 长 度 不 变 。Program ex1 sum=0.0 DO I=1,50,1 READ(*,*) x sum=sum+x ENDDO WRITE(*,*)sum=, sumEND 循 环 结 构 分 为 两 类 : l 循 环 体 的 循 环 次 数 事 先 确 定 (如 例 5.1中 循 环 结 构 ),这 类 循 环 结构 称 为 确 定 性 循 环 ,或 称 “ 计 数 型 ” 循 环 ,使 用 计 数 型 循 环 语 句(如 DO循 环 语 句 )实 现 这 类 循 环 结 构 。 循 环 次 数 为 : MAX(终 值 -初 值 )/步 长 +1,0)。 l 循 环 体

3、 的 循 环 次 数 事 先 不 确 定 (如 例 5.2中 循 环 结 构 ),这 类 循 环结 构 称 为 非 确 定 性 循 环 ,或 称 “ 条 件 型 ” 循 环 ,使 用 条 件 型 循 环 语句 (如 DO WHILE循 环 语 句 )实 现 这 类 循 环 结 构 。 条 件 型 循 环 又 分“ 当 型 ” 循 环 和 “ 直 到 型 ” 循 环 。初 值 循 环 变 量 vv 终 值 v+步 长 v 假真计 数 型 判 定 条 件判 定 条 件循 环 体 假真 循 环 体假 真当 型 直 到 型 例 5.1 求 S=1+2+3+N的 值 (N由 键 盘 输 入 ,N2)。

4、编 写 程 序 。解 : 求 解 这 一 问 题 ,将 执 行 N-1次 加 法 运 算 。如 果 将 等 式 写 成 S=0+1+2+N,则 执 行 N次 加 法 运 算 。重 复 问 题 易 采 用 循 环 结 构 实 现 。用 S保 存 和 ,用 N保 存 最 大 求 和 值 ,用 I作 计 数 器 。 编 写 程 序 如 下 : Program ex2 INTEGER S,N,I READ(*,*)N S=0 DO I=1,N,1 S=S+I EDNDO WRITE(*, *) S=,S END 例 5.2 读 入 某 班 级 考 试 成 绩 (人 数 不 定 ),计 算 其 平 均

5、成 绩 ,并 输 出 。解 : 由 于 学 生 人 数 不 定 ,所 以 输 入 的 学 生 成 绩 个 数 不 确 定 ,以 输 入 -1作为 结 束 标 志 (因 为 成 绩 不 可 能 为 负 数 ),从 而 动 态 确 定 学 生 人 数 n。平 均 成 绩 计 算 公 式 是 : av=(x1+x2+xn)/n Program ex3 INTEGER sum,n,x REAL av sum=0 n=0 READ(*,*)x DO WHILE (x/=-1) n=n+1 sum=sum+x READ(*,*)x ENDDO av=sum/n WRITE(*, *) 平 均 成 绩 为

6、: ,av END 5.2 使 用 DO循 环 语 句 实 现 计 数 型 循 环 : DO =, ENDDO 说 明 : v为 循 环 变 量 , 一 般 为 整 型 变 量 , 用 来 控 制 循 环 次 数 。 e1、 e2和 e3为 表 达 式 ,其 类 型 与 循 环 变 量 类 型 相 同 。 e1代 表 循 环 变 量 v的 初 值 , e2代 表 循 环 变 量 v的终 值 , e3代 表 循 环 变 量 v的 步 长 , e3可 缺 省 , e3缺 省 指 e3为 1。 循 环 次 数 计 算 公 式 是 : MAX(e2-e1)/e3 + 1 , 0)。 如 果 e30,

7、则 一 般 要 求 e1 e2, 否 则 循 环 次 数 为 0, 即 循 环 体 一 次 也 不 执 行 。 如 果 e30, 则 一 般 要 求 e1 e2, 否 则 循 环 次 数 为 0, 即 循 环 体 一 次 也 不 执 行 。 在 循 环 体 中 可 引 用 循 环 变 量 v的 值 , 但 不 能 赋 值 , 即 修 改 它 的 值 。 DO循 环 语 句 执 行 过 程 说 明 : 下 面 DO循 环 语 句 的 循 环 次 数 为 5: M=1;N=5;L=1 DO I=M,N+5,L+1 !输 出 1、 3、 5、 7、 9 write(*,*)I,M,N,L M=M+1

8、;N=N*I;L=2*L+I ENDDO程 序 运 行 后 ,输 出 结 果 为 : 1 1 5 1 3 2 5 3 5 3 15 9 7 4 75 23 9 5 525 53 计 算 表 达 式 e1, e2, e3e1 v计 算 循 环 次 数 r:MAX(INT(e2-e1)/e3+1), 0)rr 0执 行 循 环 体v+e3 vr-1 rDO循 环 语 句 下 面 一 条 语 句真 假 5.3 使 用 DO WHILE循 环 语 句 实 现 循 环 : DO WHILE () ENDDO 说 明 : 循 环 条 件 可 以 是 关 系 表 达 式 , 也 可 以 是 逻 辑 表 达

9、式 , 但 不 能 是 算 术表 达 式 或 字 符 表 达 式 。 使 用 DO WHILE语 句 时 要 特 别 注 意 死 循 环 的 产 生 , 要 保 证 循 环 体 中 至 少有 一 条 对 循 环 控 制 条 件 有 影 响 的 语 句 , 否 则 将 产 生 死 循 环 。循 环 体 DO WHILE循 环 语 句 在 每 次 循 环 体 执 行 前 都 要 计 算 表 示 循 环 控 制条 件 的 逻 辑 表 达 式 ,其 计 算 结 果 决 定 循 环 体 是 否 继 续 执 行 ,循 环 体 的执 行 过 程 必 须 对 循 环 控 制 条 件 产 生 影 响 。计 算

10、表 示 循 环 控 制 条 件 的 逻 辑 表 达 式结 果 赋 予 loglog=.TRUE. 循 环 语 句 下 面 一 条 语 句真 假执 行 循 环 体 PROGRAM cycle2sum=0READ(*,*)xDO WHILE (0=x .AND. x=9) EXITENDDOEND!示 例 程 序 二 : 输 出 奇 数 1,3,5,7,9I=1DO WHILE (I=9) EXIT I=I+2 ENDDOEND !示 例 程 序 三 : 输 出 奇 数 1,3,5,7,9I=1DO write(*,*)I IF (I=9) EXIT I=I+2ENDDOEND CYCLE功 能

11、: 在 循 环 体 执 行 过 程 中 强 制 性 终 止 本 次 循 环 的 执 行 ,转 循 环 开始 语 句 (DO语 句 )执 行 。 只 能 在 DO和 DO WHILE循 环 语 句 内 使 用 CYCLE语 句 。 DO I=2,5 write(*,(1X, I3)I IF (I3) CYCLE write(*,(1X,I3)IEND DOWrite(*,*)结 束 ! END! 执 行 结 果 : 2 2 3 3 4 5 5.6 特 殊 DO循 环 语 句 与 EXIT语 句 : DO ENDDO 说 明 : 特 殊 DO循 环 语 句 必 须 与 EXIT语 句 配 合 使

12、用 。 使 用 特 殊 DO循 环 语 句 可 使 循 环 变 得 短 小 、 简 洁 、 清 晰 。执 行 过 程 : (1)按 顺 序 依 次 执 行 循 环 体 语 句 。(2)循 环 执 行 过 程 中 ,若 满 足 循 环 结 束 条 件 ,则 执 行 EXIT语 句 退 出 循 环 。(3)无 条 件 转 (1)。 循 环 体循 环 体 : DO ENDDO 说 明 : 特 殊 DO循 环 语 句 必 须 与 EXIT语 句 配 合 使 用 。 使 用 特 殊 DO循 环 语 句 可 使 循 环 变 得 短 小 、 简 洁 、 清 晰 。执 行 过 程 :(1)按 顺 序 依 次

13、执 行 循 环 体 语 句 。 (2)循 环 执 行 过 程 中 ,若 满 足 循 环 结 束 条 件 ,则 执 行 EXIT语 句 退 出 循 环 。(3)无 条 件 转 (1)。 ( 示 例 ) 循 环 体ProgramINTEGER M, N, R1, R2, R3, gcd, lcmWrite(*,*)输 入 两 个 自 然 数 : READ(*,*)M,NR1=M;R2=NDO IF (R2=0) EXIT R3=MOD(R1,R2) !求 R1除 以 R2的 余 数 R1=R2;R2=R3END DOgcd=R1;lcm=M*N/gcdWrite(*,(1X,I3,和 ,I3,的

14、最 大 公 约 数 为 : ,I3)M,N,gcdWrite(*,(1X,I3,和 ,I3,的 最 小 公 倍 数 为 : ,I3)M,N,lcmEND 5.7 循 环 嵌 套l 前 面 介 绍 的 循 环 结 构 和 循 环 语 句都 是 一 层 循 环 ,许 多 实 际 问 题 的求 解 算 法 和 程 序 往 往 具 有 多 重 循环 结 构 。l 多 重 循 环 结 构 称 为 循 环 嵌 套 ,循环 嵌 套 是 指 在 一 个 循 环 结 构 或 循环 语 句 的 循 环 体 中 又 含 有 循 环 结构 或 循 环 语 句 。 对 于 n层 循 环 嵌套 称 为 n重 循 环 。

15、嵌 套 的 循 环 层数 原 则 上 不 限 ,但 不 易 太 多 。 l 计 数 型 、 当 型 、 直 到 型 循 环 结 构都 可 相 互 嵌 套 ,DO语 句 、 DO WHILE语 句 、 特 殊 DO循 环 语 句 都可 相 互 嵌 套 。 根 据 实 际 问 题 的 求解 需 要 决 定 循 环 嵌 套 的 形 式 和 层数 。l 如 果 有 n重 循 环 ,且 循 环 次 数 分 别为 r1、 r2、 、 rn,则 一 般 最 内 层循 环 体 的 循 环 总 次 数 为 :r1r2rn。 一 层 循 环二 层 循 环二 层 循 环三 层 循 环三 层 循 环四 层 循 环 例

16、 5.8求 。 解 : 求 解 这 一 问 题 的 算 法 结 构 具 有 “ 计 数 型 ” 循 环 结 构 与 “ 计 数 型 ” 循环 结 构 嵌 套 的 二 重 循 环 结 构 。 程 序 中 用 两 个 DO循 环 语 句 嵌 套 来 实 现 二 重循 环 结 构 。 101n !nProgramINTEGER : i, j, fac,fac_sum=0! 循 环 嵌 套DO i=1,10 ! 用 外 层 循 环 控 制 求 和 次 数 fac=1 DO j=1,i ! 用 内 层 循 环 控 制 阶 乘 fac=fac*j ENDDO fac_sum=fac_sum+fac END

17、DOWrite(*,*)前 10个 自 然 数 的 阶 乘 和 =, fac_sumEND ! 赋 值 语 句 fac=fac*j被 执 行 55次! 赋 值 语 句 fac_sum=fac_sum+fac被 执 行 10次 例 5.12根 据 下 面 泰 勒 级 数 求 x的 正 弦 值 。解 : 我 们 已 经 熟 悉 FORTRAN 90提 供 的 SIN(x)、 COS(x)、 EXP(x)等 内 部 函 数 ,我 们 可 直 接 使 用 这 些 内 部 函 数 计 算 正 弦 、 余 弦 、 指 数 等 值 。 那 么 这 些 函 数是 如 何 计 算 的 呢 ? 一 般 都 是 通

18、 过 其 泰 勒 级 数 计 算 。 下 面 我 们 不 用 内 部 函 数 ,自 己 编 写 程 序 计 算 正 弦 值 ,然 后 与 内 部 函 数 计 算 值 进 行 比 较 。 遇 到 这 类 问 题 ,必 须 将 泰 勒 级 数 用 通 项 公 式 表 示 ,然 后 得 出 迭 代 公 式 。其 中 : n=1,2,3,。设 : T n=(-1)n+1x2n-1/(2n-1)!=Tn-1(-1)x2/(2n-2)(2n-1), n=1,2,3, sinxT1+T2+Tn, Tn+1 10-7,10-7决 定 了 计 算 精 度 。上 述 计 算 问 题 变 成 了 一 个 求 和 问

19、 题 ,可 用 一 个 DO WHILE语 句 实 现 。根 据 分 析 , 设 计 算 法 , 编 写 程 序 。 !7x!5x!3xxxsin 753 )!1n2/(x)1(xsin 1n21n 1n PROGRAM Sin_xPARAMETER(pi=3.14159278, eps=1E-7)INTEGER : : n=1, maxterms=10REAL x, T, sinxWRITE(*, “ (A)”, ADVANCE=NO) 输 入 一 个 度 数 值 : READ(*,*)xx=x*pi/180 ! 转 换 为 弧 度 值T=x;sinx=TDO WHILE(ABS(T)eps

20、).AND.(neps)THEN write(*,*)发 散 级 数 , 不 能 得 到 结 果 。 ELSE write(*,*)程 序 计 算 得 到 的 正 弦 值 : , sinx write(*,*)FORTRAN 90内 部 函 数 值 : , SIN(x)END IFEND 计 算 T和 sinx将 x转 换 为 弧 度 开 始 不 满 足 精 度 吗 ?真 假 结 束 输 入 xn+1n初 始 化 T和 sinx 判 定 收 敛 或 发 散 , 并 输 出 相 应 结 果输 入 数 据 : 输 入 一 个 度 数 值 : 45输 出 结 果 为 : 程 序 计 算 得 到 的 正 弦 值 : 0.7071068 Fortran 90内 部 函 数 值 : 0.7071068 1 输 入 x值 (x1),按 下 列 公 式 计 算 s。 精 度 要 求 5位 有 效 数 字 ,最 后 一 项 10-5。 编写 程 序 实 现 之 。 2 输 入 x,用 迭 代 法 按 下 列 迭 代 公 式 求 的 值 。 初 始 值 y0=x,精 度 要 求 4位 有 效数 字 。 编 写 程 序 实 现 之 。 P194页 9, 10题 4x3x2xxs 432 2nn1n y3xy32y 5.8 习 题

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!