260 likes | 417 Views
第三章. 逻辑运算 与选择结构. §3.1 关系表达式 §3.2 逻辑表达式 §3.3 算术 IF 语句 §3.4 逻辑 IF 语句 §3.5 块 IF 结构 §3.6 多重选择结构. 70 年代初,人们提出了结构化程序没计的思想。从理论上说,任何一个程序都可以由三种基本的程序结构组成: (1) 顺序控制结构; (2) 选择控制结构; (3) 循环控制结构。 三种控制结构的共同点是: (1) 有一个入口 (2) 有一个出口 (3) 没有死语句 ( 永远执行不到的语句 ) , (4) 没有死循环 ( 无限循环 ) 。
E N D
第三章 逻辑运算 与选择结构
§3.1 关系表达式 §3.2 逻辑表达式 §3.3 算术IF语句 §3.4 逻辑IF语句 §3.5 块IF结构 §3.6 多重选择结构
70年代初,人们提出了结构化程序没计的思想。从理论上说,任何一个程序都可以由三种基本的程序结构组成:70年代初,人们提出了结构化程序没计的思想。从理论上说,任何一个程序都可以由三种基本的程序结构组成: (1)顺序控制结构; (2)选择控制结构; (3)循环控制结构。 三种控制结构的共同点是: (1)有一个入口 (2)有一个出口 (3)没有死语句(永远执行不到的语句), (4)没有死循环(无限循环)。 凡是能满足以上四个特点的程序,都可以表示为三种基本结构所构成的结构化程序。
§3.1 关系表达式 关系运算符(六个)
关系表达式: 用任意一个关系运算符连接两个算术表达式构成的式子 如: B*B-4.0*A*C .GE. 0.0 ABS(Y2-Y1) .LT. EPS 关系表达式的运算过程: 1,分别计算出两个算术表达式的值。 2,将算术表达式的值转换成同一类型。转换规则是将低级类型向高级类型转换。 3,比较两个算术表达式的值。 关系表达式的运算结果: 关系运算的结果是一个逻辑型常量。 做为FORTRAN77六种数据类型之一的逻辑型,共有两个常量: .TRUE. .FALSE.
§3.2 逻辑表达式 逻辑运算符(五个)
逻辑与运算 A.AND.B 为真(.TRUE.) 当且仅当 A、B均为真(.TRUE.) 逻辑或运算 A.OR.B 为假(.FALSE.) 当且仅当 A、B均为假(.FALSE.) 逻辑非运算 .NOT.A为真(.TRUE.) 当且仅当 A为假(.FALSE.) 逻辑等运算 A.EQV.B为真(.TRUE.) 当且仅当 A与B值相同 逻辑不等运算 A.NEQV.B 为真(.TEUE.) 当且仅当 A与B值不同
逻辑表达式 用逻辑运算符将逻辑常量、逻辑变量和关系表达式连接起来构成的式子称为逻辑表达式。 运算结果为逻辑值 .TRUE. 或 .FALSE. 。 1.gt.4 .AND. 5.gt.1 A1 .EQV. Bl W .OR. .FALSE. .NOT. K+2 .LT. N 例:
.FALSE. .OR. A4 .GE. 10.0+3**2 .AND. TRUE. 逻辑表达式的运算顺序
逻辑赋值语句和逻辑型数据的表控输入输出 练习:已知实数A、B、C,试判断能否构成一个三角形的三边。
§3.3 算术IF语句 一般格式:IF(e) N1,N 2,N3 e:算术表达式,其类型可以是整型、实型和双精度型。 NI(I=1,2,3):本程序单位内可执行语句的标号。 例 : IF(W+0.5) 11,21,31 功能: >0 <0 计算e的值 =0 执行N1语句 执行N2语句 执行N3语句
例1:已知分段函数 ,编写程序求y的值。 注:算术IF语句不符合结构化程序设计的原则,建议尽量避免使用。
§3.4 逻辑IF语句 一般格式:IF(e) S e: 逻辑表达式 S: 可执行语句;S不能是以下语句之一: 块IF语句、逻辑IF语句、DO、 ELSE、 ELSEIF、 ENDIF 例如: IF(X.GE.0.0) Y=SQRT(X) 功能: T F 计算e的值 可执行语句S
§3.5 块IF结构 一般格式: IF(e) THEN then块 ELSE else块 ENDIF e: 逻辑表达式 功能: T F 计算e的值 then块 else块
块IF结构与逻辑IF语句的比较 IF(e) S IF(e) THEN then块 ELSE else块 ENDIF 1,都能构成选择结构。都是根据IF后面的条件(逻辑表达式)决定语句的执行顺序。 2,结构不同。逻辑IF语句由一条语句构成,内嵌一条可执行语句;块IF结构由若干条语句组成,内嵌多条可执行语句。 3,块IF语句中,当ELSE块是空块,THEN块只有一条语句时,用逻辑IF语句更方便。
例3 编程检测某年是否为闰年。 (某年能被4整除而不能被100整除;或者某年能被400整除,这年就是闰年) 逻辑IF语句 块IF结构
§3.6 多重选择结构 §3.6.1 块IF嵌套 一个块IF结构中的thcn块、clse块内,又包含另一个(或多个)块IF结构。 例4 求一元二次方程 ax2+bx+c=0 (a≠0) 的根。
流程图: 开始 输入A、B、C D=B2-4AC >0 <0 D0? =0 计算两实 根并打印 计算并 打印重根 计算两复 根并打印 结束
§3.6.2 ELSEIF 语句 T IF(e1)THEN 块1 ELSEIF(e2) 块2 ELSEIF(e3) 块3 ELSEIF(en) 块n ELSE 块n+1 ENDIF e1 F T e2 F … e3 F T 块1 块2 块3 块4
流程图: 开始 输入A、B、C D=B2-4AC >0 <0 D0? =0 计算两实 根并打印 计算并 打印重根 计算两复 根并打印 结束
练习: 有八个小球,其中七个的重量相等.只有一个稍轻,试用天平称两次找出其中的轻球。编程序实现这个过程。 分析:
练习: 数学游戏题:某人上楼梯,若每步跨二阶,最后余一阶;若每步跨三阶.最后余二阶;若每步跨五阶,最后余四阶.若每步跨六阶,最后余五阶;只有每步跨七阶,最后才能刚好走完。问该楼梯共有几阶。 分析: 1.设楼梯有N阶。由每步跨二阶余一所的条件,知N为奇数,设N的初值为3。 2.由每步跨三阶余二阶的条件.用3除N,若不余2,则N+2----N(加2是为保证N为奇数);再用3除N,直到余2便停止对N的累加。 3、由每步跨五阶余四阶的条件、用5除N,若不余4,则N+6----N(加6是为保证N为奇数且除3余2,因6是2和3的最小公倍数);再用5除N,直到余4停止对N的累加。 依此类推。