280 likes | 455 Views
第三章 选择结构程序设计. 第一节关系表达式和逻辑表达式. 关系运算符 关系表达式 用一个关系运算符把两个数值或字符串连接起来的式子 a*a+b*b=2*a*b x/y<>x*y abs(x-y)<1e-06 “a”> “b”. 关系表达式的值是逻辑值真或假 以 0 表示假 以非 0 表示真 print 3>4 print “a”> “b”. Let a=b=3 print a end. ?. 逻辑运算符 AND , OR , NOT 逻辑表达式
E N D
第一节关系表达式和逻辑表达式 • 关系运算符 • 关系表达式 • 用一个关系运算符把两个数值或字符串连接起来的式子 a*a+b*b=2*a*b x/y<>x*y abs(x-y)<1e-06 “a”> “b”
关系表达式的值是逻辑值真或假 • 以0表示假 • 以非0表示真 print 3>4 print “a”> “b” Let a=b=3 print a end ?
逻辑运算符 • AND,OR,NOT • 逻辑表达式 • 由逻辑运算符把若干个取值为逻辑值的关系表达式连接起来的式子 • 逻辑表达式的值仍然是逻辑值 x>0 and x<1 x<0 or x>1 not x<=0
A B A AND B A OR B NOT A 真 1 真 1 真 1 真 1 假 0 真 1 假 0 假 0 真 1 假 0 真 1 真 1 假 0 真 1 假 0 真 1 假 0 假 0 假 0 假 0
逻辑表达式中逻辑运算、关系运算和算术运算的优先级逻辑表达式中逻辑运算、关系运算和算术运算的优先级 算术运算 高 低 关系运算 (NOT AND OR ) 逻辑运算
当x=5,y=2时,求下面逻辑表达式的运算顺序和结果。当x=5,y=2时,求下面逻辑表达式的运算顺序和结果。 X<5 and x>0 or not x>y and x*2>5 1 1 0 10 1 0 0 0 0 所以该题的计算结果是逻辑假,输出结果是0
一定要在一行内写完 • 格式 IF 条件 THEN 语句1 [ELSE 语句2] 例:IF X>0 THEN PRINT X IF X THEN PRINT “X<>0” • 行IF语句的作用 执行完语句1或语句2后,接着执行IF下一条语句 P P Y N Y N 语句1 语句2 语句1
行IF语句应用举例 • 输入三个a,b,c,输出其中最大数 设将最大数放在max • 将a,b,c三个数按由大到小的顺序排列 可使用交换语句swap a,b形式 • 商店购货,按购买货物的款数多少分别给予不同优惠折扣。 用复合条件语句或IF嵌套 QB5-0
三个零件的重量分别为a,b,c,已知其中有一个不合格,比其他两个重或轻,打印出不合格的。三个零件的重量分别为a,b,c,已知其中有一个不合格,比其他两个重或轻,打印出不合格的。 Input “ a,b,c:”,a,b,c if a=b then print c else if a=c then print b else print a end 输入a,b,c a=b N Y a=c 输出 c Y N 输出b 输出a
用程序实现符号函数 输入x 输入x x>=0 x>0 Y N Y N input “x=“;x if x>0 then y=1 else if x=0 then y=0 else y=-1 print “x=“;x,”y=“;y:end if x>=0 then if x>0 then y=1 else y=0 else y=-1 x>0 x=0 N N Y Y Y=1 y= -1 y=0 Y=1 y=0 y=-1 输出x,y 输出x,y
ELSE与它前面的、距它最近的 且未配对的IF-THEN配对 一般将IF嵌套放在ELSE的后面
格式 IF 条件 THEN 语句组1 [ ELSE 语句组2] END IF • 说明 • END IF是块IF的出口 • IF 条件 THEN 必须写在一行上 • 语句组1和语句组2可以为空 • 块IF以IF-THEN开头,以END IF结束
求方程ax2+bx+c=0的根 输入a,b,c a=0 N Y x=-c/b d=b^2-4ac P=-b/(2a) , q=sqr( |d| )/(2a) d=0 Y N x1=x2=p d>0 N Y x1=p+q x1=p+qi x2=p-q x2=p-qi
Input “a,b,c=“;a,b,c if a=0 then x=-c/b print “x=“;x : end end if d=b*b-4*a*c p=-b/(2*a) : q=sqr(abs))/(2*a) if d=0 then x=p print “x1=x2=“;x : end end if
If d>0 then x1=p+q x2=p-q print “x1=“;x1, “x2=“;x2 :end else print “x1=“;p; “+ “;q; “i “, “x2=“;p; “- “;q; “i “ end if end
最基本的SELECT CASE 变量的值可以 是数值型或字符型 • 格式 SELECT CASE 变量 CASE 值1 语句组 …… [CASE ELSE 语句组] END SELECT 当某一CASE子句的指定值与CASE变量的值相同时则执行该子句中的语句组,之后从END SELECT处做出口 在SELECT CASE与第一个CASE子句之间不允许有任何语句
例:输入一个整数,输出对应的用英文表示的月份 QB5-1 n=0 0 m<250 n=1 0.04 250≤m<500 d= 0.06 500 ≤m<1000 n=2,3 0.075 1000 ≤m<2000 n=4,5,6,7 0.1 2000 ≤m n≥8 设n=int(m/250) QB5-2 QB5-22
用CASE……TO指定值的范围 Input m n=int(m/250) select case case 0 d=0 case 1 d=.04
case 2 to 3 d=.06 case 4 to 7 d=.75 case else d=.1 end select end
用CASE IS指定条件 • 格式 CASE IS 关系表达式 例: 0 x≤0 0.15x 0<x ≤10 y= 1.5+0.3(x-10) 10<x ≤20 1.5+0.45(x-10) 10<x ≤20 QB5-3
在CASE子句中使用多个条件 • 条件之间用逗号分开 • 如: CASE 2,3 CASE 4,5,6,IS>9 CASE 2 TO 4 , 7 TO 12 , IS>90
多分支转移语句ON GOTO • 格式 ON 算术表达式 GOTO 行号或标号1,……,行号或标号n • 作用 按四舍五入取整原则,先计算术表达式的值。如果表达式的值为n,就转去执行行号或标号n所标识的语句行。 当表达式值小于1或大于n时,接着执行ON GOTO语句的下一语句
修改前面的程序 Input m n=int(m/250) if n>8 then n=8 on n goto a,b,b,c,c,c,c,d d=0:goto e a: d=0.04:goto e b: d=0.06:goto e c: d=0.075:goto e d: d=0.1 e: p=m*(1-d)
本章小结 n 1.三种表达式及运算顺序 n 2.行IF, 块IF及ELSEIF n 3.多分支选择, 重点掌握SELECT CASE P89 1-8, 10 习题