FORTRAN语言第3章(共8章).ppt

上传人:max****ui 文档编号:8618819 上传时间:2020-03-30 格式:PPT 页数:26 大小:2.67MB
返回 下载 相关 举报
FORTRAN语言第3章(共8章).ppt_第1页
第1页 / 共26页
FORTRAN语言第3章(共8章).ppt_第2页
第2页 / 共26页
FORTRAN语言第3章(共8章).ppt_第3页
第3页 / 共26页
点击查看更多>>
资源描述
IF结构除了能够单独使用外 结构中的任意一个语句块里都可以再次嵌入另一个结构 被嵌入的结构可以是另一个IF结构 也可以是另一些形态 功能不同的结构 如CASE结构 DO结构等 前提是必须将整个结构完整地嵌入到IF结构的某一个语句块中 不允许被嵌入结构的一部分在一个语句块中 另一部分在别的语句块或是不在被嵌入的IF结构中 即被嵌入的任何结构不允许跨越两个独立的语句块 二 块IF的嵌套 第二节块IF选择结构 IF语句嵌套的形式可以表示如下 构造名1 IF 逻辑表达式1 THEN 构造名2 IF 逻辑表达式2 THEN 构造名3 IF 逻辑表达式3 THEN ENDIF 构造名3 ENDIF 构造名2 ELSE ENDIF 构造名1 第二节块IF选择结构 一个嵌套分支结构可使用若干个块IF语句 相应就有若干个ENDIF语句 每个块IF语句还可能使用一些ELSEIF语句 ELSE语句 这就可能构成一个复杂的IF ELSEIF THEN ELSE结构 当嵌套层次过多时 往往一时难以找到同一层的块IF中的各语句 一般可按以下方法确定 1 从最内层的块IF语句开始 向下找到离它最近的ENDIF语句 将它们用线括起来 这就是同一层次的块IF 2 由内向外重复这一个过程 直到遇见最外层块IF语句和ENDIF语句为止 3 在书写嵌套分支结构时采取缩进方式进行程序书写 程序的嵌套层次就容易确定 例 给定一个年份 判断是否为闰年 分析 闰年的判断条件是能被4整除 但不能被100整除或能被100整除且能被400整除 T F T 打印Y是闰年 F 打印Y是闰年 T F 打印Y不是闰年 例 给定一个年份 判断是否为闰年 分析 闰年的判断条件是能被4整除 但不能被100整除或能被100整除且能被400整除 If MOD y 4 0 ThenIf MOD y 100 0 ThenIf MOD y 400 0 Thena TRUE 既能被100又能被400整除的数Elsea FALSE 能被100整除但不能被400整除的数EndIfElsea TRUE 能被4整除但不能被100整除的数EndIfElsea FALSE 不能被4 100和400整除的数EndIf 使用块IF嵌套应注意以下几点 1 不允许从块IF语句外控制转移到块IF语句的语句体内的任意位置 2 允许通过控制转移语句 如GOTO语句 从块IF语句内控制转移到块IF语句外 3 在嵌套的块IF语句中 内层的块IF不能和外层的块IF相互交叉 第二节块IF选择结构 IF结构除了可以实现二义判断之外 还可以实现多重判断 此时 IF结构中需加入新的元素 ELSEIF语句 方法1 转化为单分支 逻辑IF语句并列方法2 逐次二分 转化为块IF结构嵌套例 将百分制转换成等级制 根据成绩x输出A x 90B 80 x 90C 70 x 80D 60 x 70E x 60 第二节块IF选择结构 方法1 WRITE 请输入成绩 READ XIf X 90 WRITE 优秀 If X 80 AND X 70 AND X 60 AND X 70 WRITE 及格 If X 60 WRITE 不及格 上述代码段中有5个IF语句 一个学生的得分只能是上述5种情况当中的一种 但程序仍然要做5次判断 所以算法效率较低 下面用ELSEIF块重写上述代码段 第二节块IF选择结构 方法2 执行左侧代码段时 一旦发现某个逻辑条件为 真 就不会再去判断其他的逻辑条件 最不利情况下 如50分 系统才要判断4次 此算法效率明显高于前一种 WRITE 请输入成绩 READ aIf a 90 ThenWRITE 优秀 ElseIf a 80 ThenWRITE 良好 ElseIf a 70 ThenWRITE 中等 ElseIf a 60 ThenWRITE 及格 ElseWRITE 不及格 EndIfEndIfEndIfEndIf WRITE 请输入成绩 READ XIf X 90 ThenWRITE 优秀 ElseIf X 80 ThenWRITE 良好 ElseIf X 70 ThenWRITE 中等 ElseIf X 60 ThenWRITE 及格 ElseWRITE 不及格 EndIf 下面给出ELSEIF块更一般的构造形式 三 ELSEIF的语句 有了ELSEIF语句后 IF结构中可以同时存在多个判断条件和多个执行模块 但是只有其中一个条件能够成立 并且只有一个执行模块能够执行 使用IF语句和ELSEIF语句来实现多重判断的基本形式如下 IF e1 THENblock1ELSEIF e2 thenblock2ELSEIF e3 thenblock3 ELSEblockENDIF 第二节块IF选择结构 多分支块IF结构的执行过程为 首先判断条件1是否成立 若条件成立 为 真 则执行块1 再执行ENDIF后面的语句 若条件1不成立 为 假 则判断条件2是否成立 若条件2成立 为 真 则执行块2 再执行ENDIF后面的语句 如果所有的条件都不成立 则执行ELSE块 ELSE语句和块n 1是可选项 再执行ENDIF后面的语句 第二节块IF选择结构 多重判断的IF结构中 判断条件的成立具有唯一性 即一旦有判断条件成立 就去执行相应的模块 如果其后仍有判断条件是成立的 也不会再去执行 这一点同后面的SELECTCASE完全不同 也就是说IF结构中的选择条件是允许重叠的 但SELECTCASE语句不允许选择条件有重叠 第二节块IF选择结构 1 ELSEIF语句其作用相当于将ELSE语句与其后的ELSE块中的块IF语句连接在一起 2 同块IF语句不同 ELSEIF语句与ENDIF语句间不存在一一对应关系 3 在这种IF结构中 允许使用多个ELSEIF语句 在最后一个ELSEIF语句之后 可以有与之对应的ELSE语句 也可以没有 当有ELSE语句在最后时 表示如果前面所有的条件都不成立 执行其后的ELSE块 如果没有ELSE块 则表示如果前面所有的条件都不成立时 流程转到ENDIF语句 第二节块IF选择结构 4 在同一个块IF结构中 只允许有一个ELSE语句和ELSE块 5 ELSEIF是在 条件为假 的分支中再继续进行分支处理的 故在处理多分支的选择时 要把出现几率高的条件写在前面 以提高效率 第二节块IF选择结构 WRITE 请输入成绩 READ aIf a 90 ThenWRITE 优秀 ElseIf a 80 ThenWRITE 良好 ElseIf a 70 ThenWRITE 中等 ElseIf a 60 ThenWRITE 及格 ElseIf a 40 ThenWRITE 补考 ElseWRITE 重修 EndIfEndIfEndIfEndIfEndIf 例输入成绩 显示等级 WRITE 请输入成绩 READ aIf a 90 ThenWRITE 优秀 ElseIf a 80 ThenWRITE 良好 ElseIf a 70 ThenWRITE 中等 ElseIf a 60 ThenWRITE 及格 ElseIf a 40 ThenWRITE 补考 ElseWRITE 重修 EndIf 值得一提 ELSEIF结构要求合理排列逻辑条件 使得一次只能有一个逻辑条件为 真 第二节块IF选择结构 read xif x lt 10 0 theny 0 0elseif x lt 0 0 theny 2 0 x 20 0elseif x lt 20 0 theny 20 0elseif x lt 40 0 theny 30 0 0 5 xelseif x lt 50 0 theny 50 0 xelsey 0 0endifwrite y yend 求函数值 例 计算y f x g x f x x2 161 ex 1 f x 0分析 1 通过表达式计算f注 f与f x 的区别2 计算g3 f g 第二节块IF选择结构 第三节CASE结构 F90 95新增 SELECTCASE语句是Fortran90 95标准中新增加的语句 该语句用于容纳CASE块 为程序员提供了一种从多个备用可执行分支选项中选取一个来执行的手段 尽管多重判断的IF结构也可以实现这一功能 但是在某些多条件选择的应用场合使用IF结构会使代码显得比较繁琐 层次关系比较复杂 使用CASE结构就可以避免这一问题 编写出来的代码也显得更加直观 简洁 第三节CASE结构 F90 95新增 CASE结构的作用和IF构造非常类似 它也用于编写分叉选择算法 即根据判断条件的成立与否来区分操作不同的可执行模块 不同之处在于 CASE结构只能把某个判断条件的可能结果区分成若干个孤立的离散值或片断 这意味着CASE结构中的判断条件不允许出现重叠 按不同的值或片断进行不同的操作 如果遇到判断条件比较复杂或者存在多种判断条件互相交叉的情况时 CASE结构在处理这些判断条件时显得不是很方便 在这种情况下只能考虑使用IF结构来进行处理 第三节CASE结构 F90 95新增 使用范围 多分支结构SELECTCASE 情况表达式 CASE 情况选择器1 block1 块1 CASE 情况选择器2 block 块2 CASE 情况选择器n blockn CASEdefault默认块 ENDSelect 第三节CASE结构 Selectcase后括号里的 情况表达式 用来表示待选择的内容 如成绩 工资 年龄等 它一般为变量名 可以是整型变量 逻辑变量 字符型变量或相应的表达式Case后面括号里的 选择表达式列表 提供了选择表达式可能的取值范围 它只能是一个或多个整型 字符型 逻辑型常量 不能为变量 逗号 分隔符表示分隔单个值的列表 例 case 3 5 7 值不能重复 冒号 分隔符表示值的范围例 case 5 10 case i n 类型与Setectcase中一致 下界 上界可省略 Casedefault 其后的默认块语句 可有可无 如果加入它 则代表前面所有选择表达式的值皆非的情况下执行该块 第三节CASE结构 情况表达式 整型变量 逻辑变量 字符型变量或相应的表达式选择表达式列表提供了选择表达式可能的取值范围 它只能是一个或多个整型 字符型 逻辑型常量 不能为变量 逗号 分隔符表示分隔单个值的列表 例 case 3 5 7 值不能重复 冒号 分隔符表示值的范围例 case 5 10 case i n 类型与Setectcase中一致 下界 上界可省略 Casedefault 只能有一个 第三节CASE结构 执行过程在case列表中顺序查找与之匹配的值1 计算情况表达式的值2 顺序匹配各情况选择器 执行相应的语句块block 每执行完一个CASE块 程序自动跳出CASE选择结构 再到ENDSelect下一个语句3 如果均不匹配 则执行CASEDEFAULT其后默认的语句块 如果没有CASEDEFAULT语句 就跳过CASE选择结构 执行ENDSelect的下一个语句 SelectCASE语句是结构的入口 ENDSelect是结构的出口 第三节CASE结构 例 输入学生的成绩mark 打印学生成绩等级优秀90 100良75 89通过60 74不通过 59输入错误100 WRITE 请输入成绩 READ MARKSelectCase mark Case 90 100 Print 优秀 Case 75 89 Print 良好 Case 60 74 Print 通过 Case 0 59 Print 不通过 CasedefaultPrint 输入错误 EndSelect 第三节CASE结构 阅读程序 READ XSELECTCASE X 0 CASE TRUE Y X 5CASE FALSE Y XENDSELECTPRINT YEND 谢谢观看 更多网络共享资源
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


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

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


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