您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > Fortran-95-程序设计-第三章
五、选择结构程序设计中山大学环境科学与工程学院陆希♦算法和流程图♦关系运算和逻辑运算♦选择结构♦算法和流程图为解决一个问题而采取的方法和步骤,称为“算法”。“计算方法”(computationalmethod):求数值解的近似方法“算法”(algorithm):解决问题的一步一步的过程。(有人称之为程序的灵魂,它是对操作的描述,即操作步骤)在解一个数值计算问题时,除了要选择合适的计算方法外,还要根据这个计算方法写出如何让计算机一步一步执行以求解的算法。对同一个问题,可以有不同的解题方法和步骤,有效地进行解题,不仅需要保证算法正确,还要考虑算法的质量,选择合适的算法。例如:计算1×2×3×4×5步骤1:先求1×2,得到结果2;步骤2:再将步骤1的结果,乘以3,得到结果6步骤3:……步骤4:……改进的算法S1:t=1S2:i=2S3:t=t*iS4:i=i+1S5:算法的特性:有穷性:应包含有限的操作步骤而不能是无限的;确定性:每一个步骤是确定的,不能是含糊的、模棱两可的;有效性:算法中每一个步骤应当能有效地执行,并能得到确定的结果怎么表示算法?用自然语言;用流程图流程图用图表示的算法。流程图是用一些图框来表示各种类型的操作,在框内写出各个步骤,然后用带箭头的线把它们连接起来,以表示执行的先后顺序。用图形表示算法,直观形象,易于理解。例:对一个大于或等于3的正整数,判断它是不是一个素数。所谓素数,是指除1和该数本身之外,不能被其它任何整数整除的数。例如,13是素数,因为它不能被2,3,4,…,12整除。判断一个数N(N>3)是否素数的方法是很简单的:将N作为被除数,将2到(N—1)各个整数轮流作为除数,如果都不能被整除,则N为素数。这样的算法是否最优,计算量是否可以减少?一个计算问题的解决过程通常包含下面几步:1、确立所需解决的问题以及最后应达到的要求。必须保证在任务一开始就对它有详细而确切的了解,避免模棱两可和含混不清之处。2、分析问题构造模型。在得到一个基本的物理模型后,用数学语言描述它,例如列出解题的数学公式或联立方程式,即建立数学模型。3、选择计算方法。如定积分求值问题,可以用矩形法、梯形法或辛普生法等不同的方法。因此用计算机解题应当先确定用哪一种方法来计算。4、确定算法和画流程图。在编写程序之前,应当整理好思路,设想好一步一步怎样运算或处理,即为“算法”。把它用框图画出来,用一个框表示要完成的一个或几个步骤,它表示工作的流程,称为流程图。它能使人们思路清楚,减少编写程序中的错误。5、编写程序。6、程序调试,即试算。一个复杂的程序往往不是一次上机就能通过并得到正确的结果的,需要反复试算修改,才得到正确的可供正式运行的程序。7、正式运行得到必要的运算结果。三种基本机构顺序结构:如图所示的框内,A和B两个框是顺序执行的。顺序结构是最简单的一种基本结构:三种基本机构选择结构:如图所示的框内,包含一个判断:三种基本机构循环结构,重复结构,即反复执行某一部分的操作N-S流程图♦关系运算关系运算符关系运算符就是关系比较符。Fortran中有六个关系运算符:关系运算符英语含义所代表的数学符号.GT..GE..LT..LE..EQ..NE.====/=GreaterThanGreaterthanorEqualtoLessThanLessthanorEqualtoEQualtoNotEqualto>(大于)≥(大于或等于)<(小于)≤(小于或等于)=(等于)≠(不等于)关系表达式:关系表达式是最简单的一种逻辑表达式。其一般形式为:算术表达式关系运算符算术表达式字符表达式关系运算符字符表达式♦逻辑运算逻辑运算符Fortran有5个逻辑运算符,每个操作符两边都有一点,不可省略:逻辑运算符含义逻辑运算例例子含义.AND..OR..NOT..EQV..NEQV.逻辑与逻辑或逻辑非逻辑等价逻辑不等价A.AND.BA.OR.B.NOT.AA.EQV.BA.NEQV.BA,B为真时,则A.AND.B为真A,B之一为真,则A.OR.B为真A为真,则.NOT.A为假A和B值为同一逻辑常量时,A.EQV.B为真A和B的值为不同的逻辑常量,则A.NEQV.B为真A:TrueB:TrueA:TrueB:FalseA:FalseB:FalseA.AND.BA.OR.B.NOT.AA.EQV.BA.NEQV.BA:TrueB:TrueA:TrueB:FalseA:FalseB:FalseA.AND.BTFFA.OR.BTTF.NOT.AFTA.EQV.BTFTA.NEQV.BFTF只判断一个条件A逻辑运算,其顺序是:.NOT.>.AND.>.OR.>.EQV.和.NEQV.如果有括弧,则先进行括弧内的运算逻辑表达式举例:1(A.LT.B).AND.(A.GT.C)2(X.LT.0.).OR.(X.GT.100.)3.NOT.(X.LE.O.)4(A.GT.B).EQV.(C.GT.D)5L1.NEQV.L2当A<B和A>C时表达式值为真当X<0或X>100时,表达式值为真当X≤0时,表达式值为假当两个括弧内的值都为真或都为假时,表达式的值为真当L1与L2的逻辑值不相同时,表达式的值为真各种运算符的优先级别:运算类别运算符优先级括号()1算术运算**2*/3+-4关系运算.GT..GE..LT..LE..EQ..NE.5逻辑运算.NOT.6.AND.7.OR.8.EQV..NEQV.9逻辑表达式举例:逻辑IF语句IF语句不是一种选择结构,只是一条语句,它在算法较简单的场合下,可以灵活地完成二分叉选择算法。其一般形式为:IF(逻辑表达式)执行语句逻辑IF语句当条件为“真”时只能执行一个执行语句而不能执行若干个语句因此它又称“行IF语句”以与块IF区别例:打印学生考试成绩,大于等于80分的为“A”,大于等于60分而小于80分的为“B”,小于60分的为“C”:READ*,GRADEIF(GRADE.GE.80)PRlNT*,”A”IF(GRADE.GE.60.AND.GRADE.LT.80)PRlNT*,”B”IF(GRADE.LT.60)PRlNT*,”C”♦选择结构---块IF块IF的一般形式可写成:IF(逻辑表达式)THEN←块IF语句块1←then块ELSE块2←else块ENDIF其中,ELSE和else块可以省略♦选择结构IF-ELSEIF(多重判断)IF(逻辑表达式1)THEN…ELSEIF(逻辑表达式2)THEN…ELSE…ENDIF…………试以输入95、85、75、65看执行结果……♦选择结构嵌套IFIF(逻辑表达式1)THEN…IF(逻辑表达式2)THEN…IF(逻辑表达式2)THEN…ELSEIF(逻辑表达式3)THEN…ELSE…ENDIFENDIFENDIFIF构造的任一语句块中(then块、elseif块、else块)都可以嵌入另一个构造,被嵌入的构造可以是另一IF构造,也可以是另一些形态、功能不同的构造,如CASE构造、DO构造,前提是必须把整个构造完整地嵌在IF构造的某一块中,不允许一部分嵌在一个块中,另一部分嵌在另一个块中,即被嵌入的任何构造不可跨越两块。在某些场合IF构造嵌套是必需的,但嵌套过多,阅读时要一层层地记住前面各层的条件,容易出错,也不易维护,应尽量减少嵌套。可以将条件分细,列成多句ELSEIF语句。练习1解:02CBxAx练习2输入实数x,求下面的三角波脉冲函数F(x)的值。0.320.300.165.00.300.280.145.00.32,0.280.0)(xxxxxxxF下次课交上作业,程序如何写的注意:使用浮点数来做逻辑判断时,避免使用“等于”的判断,通常用其差值小于一个足够小的数来替代。♦选择结构SELECTCASEF90增加了SELECTCASE语句,提供从几个可选项中选取一个执行的手段,在某些多种条件的选择情况下使用IF语句显得比较繁琐,使用CASE构造可使程序显得直观、简短。其一般形式为:SELECTCASE(case表达式)CASE(case选择符)…块[CASEDEFAULT…块]ENDSELECTcase表达式是整型、字符型或逻辑型表达式,不能是实型和复型表达式。case选择符是case值范围表,它有以下四种形式:(值表)表示等于该值,各值之间用逗号分开(下界:)表示大于或等于该值(:上界)表示小于或等于该值(下界:上界)表示在这两个值之间(包括等于)上面的四种表示方法可以混用,如CASE(2:5,9)等价于CASE(2,3,4,5,9)字符型SELECTCASE举例设要编一程序,把学生按专业划分以便检索,专业分为天体物理、应用物理、理论物理三种,把每个专业应修的课程依次编成语句块1、块2、块3,构造名为DEPARTMENT_22_MAJOR,专业变量名为MAJOR,则CASE构造为:SELECTCASE(MAJOR)CASE(‘AstronomicalPhysics’)语句块1CASE(‘AppliedPhysics’)语句块2CASE(‘TheoreticalPhysics’)语句块3ENDSELECTDEPARTMENT_22_MAJOR逻辑型SELECTCASE举例设有一个关系表达式X=3,当成立时打印‘YES’,否则打印印‘NO’。SELECTCASE(X=3)CASE(.TRUE.)PRINT*,‘YES’CASE(.FALSE.)PRINT*,‘NO’ENDSELECT♦其它流程控制GOTOIF与GOTO联用PAUSECONTINUESTOP
本文标题:Fortran-95-程序设计-第三章
链接地址:https://www.777doc.com/doc-4876961 .html