版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章结构化程序设计—控制结构第四章结构化程序设计—控制结构结构化程序设计:按照顺序结构、选择〔分支〕结构和循环结构进行程序设计,称为结构化程序设计。任何复杂的算法都可以由以上三种根本结构来实现。早期的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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 石棉在钢结构中的应用考核试卷
- 渔业品牌建设与形象塑造考核试卷
- 游轮管家职责
- DB11T 202-2013 农业企业标准体系种植业
- 液压系统课件教学课件
- 服装厂新员工培训方案
- 企业HR招聘面试技巧培训课件
- 美白护肤品相关行业投资方案
- 用外购和进口钢材、铁合金再加工生产钢材、铁合金相关行业投资方案
- 软件开发团队的测验与练习实施方案
- 高标准基本农田建设监理工作总结
- 机电安装工程技术专业培训
- 7逆合成分析法与合成路线设计
- 工程材料构配件设备报审表
- 《Monsters 怪兽》中英对照歌词
- 华东地区SMT公司信息
- 隧道弃渣及弃渣场处理方案
- 隔代教育PPT课件
- 签证用完整户口本英文翻译模板
- 金属盐类溶度积表
- 社会工作毕业论文(优秀范文8篇)
评论
0/150
提交评论