版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章结构化程序设计—控制结构第四章结构化程序设计—控制结构结构化程序设计:按照顺序结构、选择〔分支〕结构和循环结构进行程序设计,称为结构化程序设计。任何复杂的算法都可以由以上三种根本结构来实现。早期的Fortran程序只有顺序结构和以IF语句为代表的选择结构,由于没有循环结构,需要在程序中添加GOTO无条件转移语句,程序的可读性和可维护性差。IF块〔条件转移〕的添加和循环结构,使得Fortran程序设计真正跨入结构化阶段。本章着重讲解选择结构和循环结构。第一节IF语句IF语句是最早的选择结构,构造形式为:IF〔逻辑判断式〕Then…………EndIf流程说明:逻辑成立时,才会执行IF块里面的程序代码例4-1警告车速过快的程序
PROGRAMEX0401IMPLICITNONEREAL(KIND=4)::SPEEDWRITE(*,*)"SPEED:"!信息提示
READ(*,*)SPEED!读入车速
IF(SPEED>100.0)THEN!SPEED>100时才会执行下面这一行程序
WRITE(*,*)"SLOWDOWN."ENDIFSTOPEND
IF语句IF命令还可以搭配上ELSE,用来赋值当判断式不成立时,会去执行某一段程序代码。IF(逻辑判断式)THEN…………逻辑成立时,执行这一段程序代码……ELSE…………逻辑不成立时,那么执行这一段程序代码……ENDIF例4-2PROGRAMEX0402IMPLICITNONEREAL(KIND=4)::HEIGHT!记录身高
REAL(KIND=4)::WEIGHT!记录体重
WRITE(*,*)"HEIGHT:"READ(*,*)HEIGHT!读入身高
WRITE(*,*)"WEIGHT:"READ(*,*)WEIGHT!读入体重
IF(WEIGHT>HEIGHT-100)THEN!如果体重大于身高减去100,会执行下面的程序
WRITE(*,*)"TOOFAT!"ELSE!如果体重不大于身高减去100,会执行下面的程序
WRITE(*,*)"UNDERCONTROL."ENDIF
STOPEND二.逻辑运算选择结构中的条件判别式由逻辑表达式组成。逻辑表达式中的运算符,包括算术运算符、关系运算符和逻辑运算符。*算术运算符:在第2章介绍过;*关系运算符:==(.EQ.);/=(.NE.);>(.GT.);>=(.GE.);<(.LT.);<=(.LE.)*逻辑运算符:.NOT.;.AND.;.OR.;.EQV.;.NEQV.;.XOR.优先级由高到低依次为:算术运算符,关系运算符和逻辑运算符。例4-3PROGRAMEX0403IMPLICITNONEINTEGERRAIN,WINDSPEEDWRITE(*,*)"RAIN:"READ(*,*)RAINWRITE(*,*)"WIND:"READ(*,*)WINDSPEED
IF(RAIN>=500.OR.WINDSPEED>=10)THENWRITE(*,*)"停止上班上课"ELSEWRITE(*,*)"照常上班上课"ENDIFSTOPEND
运算符的使用逻辑A逻辑BA.AND.BTrueTrueTrueTrueFalseFalseFalseTrueFalseFalseFalseFalse逻辑A逻辑BA.OR.BTRUETRUETRUETRUEFALSETRUEFALSETRUETRUEFALSEFALSEFALSE逻辑A.NOT.ATRUEFALSEFALSETRUE逻辑A逻辑BA.EQV.BTRUETRUETRUETRUEFALSEFALSEFALSETRUEFALSEFALSEFALSETRUE三.多重判断IF-ELSEIFIF(条件1)THEN……条件1成立时,执行这个模块程序
……ELSEIF(条件2)THEN……条件2成立时,执行这个模块程序
……ELSEIF(条件3)THEN……条件3成立时,执行这个模块程序
…………ELSEIF(条件4)THEN……条件4成立时,执行这个模块程序
……ELSE!ELSE这个模块可以省略
……每个条件都不成立时,才执行这个模块程序
……ENDIF例4-5PROGRAMEX0405IMPLICITNONEINTEGERSCORECHARACTERGRADEWRITE(*,*)"SCORE:"READ(*,*)SCORE
IF(SCORE>=90.AND.SCORE<=100)THENGRADE='A'ELSEIF(SCORE>=80.AND.SCORE<=90)THENGRADE='B'ELSEIF(SCORE>=70.AND.SCORE<=80)THENGRADE='C'ELSEIF(SCORE>=60.AND.SCORE<=70)THENGRADE='D'ELSEIF(SCORE>=0.AND.SCORE<=60)THENGRADE='E'ELSE!SCORE<0或SCORE>100的不合理情况
GRADE='?'ENDIF
WRITE(*,"('GRADE:',A1)")GRADESTOPEND
例4-6PROGRAMEX0406IMPLICITNONEINTEGERSCORECHARACTERGRADEWRITE(*,*)"SCORE:"READ(*,*)SCORE
IF(SCORE>100)THENGRADE='?'ELSEIF(SCORE>=90)THEN!会执行到此,代表SCORE<=100GRADE='A'ELSEIF(SCORE>=80)THEN!会执行到此,代表SCORE<=90GRADE='B'ELSEIF(SCORE>=70)THEN!会执行到此,代表SCORE<=80GRADE='C'ELSEIF(SCORE>=60)THEN!会执行到此,代表SCORE<=70GRADE='D'ELSEIF(SCORE>=0)THEN!会执行到此,代表SCORE<=60GRADE='E'ELSEGRADE='?'ENDIF
WRITE(*,"('GRADE:',A1)")GRADESTOPEND
四.嵌套IF语句IF语句的嵌套IF(……)THEN第1层IF开始IF(……)THEN第2层IF开始IF(……)THEN第3层IF开始ELSEIF(……)THENELSEENDIF第3层IF结束
ENDIF第2层IF结束ENDIF第1层IF结束例4-8判断象限
PROGRAMEX0408IMPLICITNONEREALX,YINTEGERANS
WRITE(*,*)"INPUT(X,Y)"READ(*,*)X,Y
IF(X>0)THENIF(Y>0)THEN!X>0,Y>0ANS=1ELSEIF(Y<0)THEN!X>0,Y<0ANS=4ELSE!X>0,Y=0ANS=0ENDIFELSEIF(X<0)THENIF(Y>0)THEN!X<0,Y>0ANS=2ELSEIF(Y<0)THEN!X<0,Y<0ANS=3ELSE!X<0,Y=0ANS=0ENDIF
续ELSE!X=0,Y=任意数ANS=0ENDIF
IF(ANS/=0)THEN!ANS不为0时,代表有解WRITE(*,"('第',I1,'象限')")ANSELSEWRITE(*,*)"落在轴上"ENDIF!STOPEND第二节浮点数及字符的逻辑运算浮点数的逻辑判断例4-9PROGRAMEX0409IMPLICITNONEREAL::AREAL::B=3.0
A=SQRT(B)**2-B!理论上A应该要等于0
IF(A==0.0)THEN
WRITE(*,*)"A等于0"ELSEWRITE(*,*)"A不等于0"ENDIFSTOPEND
例4-10PROGRAMEX0410IMPLICITNONEREALAREAL::B=4.0REAL,PARAMETER::E=0.0001!设置误差范围
A=SQRT(B)**2-B!理论上A应该要等于0
IF(ABS(A-0.0)<=E)THEN
WRITE(*,*)"A等于0"ELSEWRITE(*,*)"A不等于0"ENDIFEND二、字符的逻辑判断比较字符大小的依据是:比较它们的字符码,因为在保存字符时,事实上就是保存它的字符码。‘a’<‘b’!因为a的ASCII码为97,b的ASCII码为98‘A’<’a’!因为A的ASCII码为65,a的ASCII码97其他流程控制GOTO命令例4-14PROGRAMEX0414IMPLICITNONEREALHEIGHT!记录身高
REALWEIGHT!记录体重
WRITE(*,*)"HEIGHT:"READ(*,*)HEIGHT!读入身高
WRITE(*,*)"WEIGHT:"READ(*,*)HEIGHT!读入体重
IF(WEIGHT>HEIGHT-100)GOTO200!上面不成立,没有跳到200才会执行这里
WRITE(*,*)"UNDERCONTROL."GOTO300!下一行不能执行所以要跳到300200WRITE(*,*)"TOOFAT!"300STOPENDPAUSE,CONTINUE,STOPPAUSE的功能就跟它的字面意义相同,程序执行到PAUSE时,会暂停执行,直到用户按下Enter键才会继续执行。这可以应用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年兴业银行厦门分行社会招聘备考题库及完整答案详解1套
- 2025年卫生健康局招聘备考题库含答案详解
- 2025年建始县自然资源和规划局所属事业单位公开选聘工作人员备考题库及1套参考答案详解
- 2025年双溪乡人民政府关于公开选拔重点公益林护林员备考题库及答案详解一套
- 2025年国家知识产权局专利局专利审查协作四川中心公开招聘工作人员40人备考题库及参考答案详解
- 2024年广州市海珠区社区专职人员招聘考试真题
- 2025年甘肃电器科学研究院聘用人员招聘备考题库及答案详解1套
- 玻璃钢水箱课程设计三
- 2025重庆市沙坪坝区歌乐山社区卫生服务中心招聘医师2人备考核心题库及答案解析
- 2025福建三明市某机关单位招聘外包人员3人考试核心试题及答案解析
- 2025年齐齐哈尔市总工会工会社会工作者招聘39人考试笔试模拟试题及答案解析
- 中北大学2025年招聘编制外参编管理人员备考题库(一)及一套完整答案详解
- 教育学课件教学课件
- 学堂在线 雨课堂 学堂云 科研伦理与学术规范 章节测试答案
- 纪录片《苏东坡》全6集(附解说词)
- GB/T 43824-2024村镇供水工程技术规范
- AI对抗性攻击防御机制
- DRBFM的展开详细解读2
- 四环素的发酵工艺课件
- 泥浆护壁钻孔灌注桩的施工
- 征信调研报告3篇
评论
0/150
提交评论