




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章选择结构程序设计关系表达式和逻辑表达式用行IF语句实现选择结构用块IF实现选择多分支选择结构多分支转移语句选择结构程序设计2020/12/111问题的提出在实际问题中,要求计算机进行逻辑判断,即给出一个条件,让计算机判断是否满足条件,并按照判断的结果来做不同的处理。从键盘输入一个数,如果是正数则打印出来,否则不做任何处理;将学生中成绩不合格者打印出来;将职工工资低于300元者打印出来;根判别式b2-4ac<0,则终止程序执行,否则求解。2020/12/112关系运算符关系运算符含义相当于数学符号举例>大于>a>b<小于<x<y=等于=c=d>=大于等于≥e>=-1<=小于等于≤h<=I<>不等于≠u<>v2020/12/113关系表达式用一个关系运算符把两个运算量(数值量或字符串)联结起来称关系表达式;每个关系表达式都有一个值,这个值称作逻辑值(即“真”或“假”);在QBASIC中,如果表达式不成立,即“假”,则此表达式的值为“0”,否则为“-1”;举例:PRINT15>13,13>15运行结果:-102020/12/114逻辑运算符问题的提出:如果需要判断一个数是否满足0≤x≤10,语句IF0=<x<=10THEN语句1ELSE语句2是错误的,因为在QB中只能使用简单的关系表达式。IFx>=0ANDx<=10THEN语句1ELSE语句2(正确)QB的逻辑运算符:
AND(与):所联结的关系表达式必须同时成立才为真;
OR(或):所联结的关系表达式只要有一个为真,即为真;
NOT(非):将原来的逻辑值取反。2020/12/115逻辑运算符的运算规则ABAANDBAORBNOTANOTB真真真真假假真假假真假真假真假真真假假假假假真真2020/12/116逻辑表达式的预算次序一个逻辑表达式一般包括逻辑运算符、关系表达式或其他运算量;算术运算→关系运算→逻辑运算(NOT→AND→OR)如以下表达式,其中a=5,b=3,c=-2,d=8a-c>b+dORc>dANDABS(c)=aORNOTc>d+57>11ORc>dAND2=aORNOTc>13假OR假AND假ORNOT假假OR假OR真真2020/12/117IF语句语法:IF关系表达式THEN语句1[ELSE语句2]在IF语句中,实际是判别关系表达式的逻辑值是零还是非零。如果是非零(即条件成立),则执行THEN后的语句,否则执行ELSE后的语句(有ELSE语句!)。IF5>3THENPRINT“Thisistrue.”ELSEPRINT“Thisisfalse”IF3>5THENPRINT“Thisistrue.”ELSEPRINT“Thisisfalse”IF2THENPRINT“Thisistrue.”ELSEPRINT“Thisisfalse”IF0THENPRINT“Thisistrue.”ELSEPRINT“Thisisfalse”表达式的逻辑值可以赋值给变量:x=5>3x=5=32020/12/118用行IF语句实现选择结构行IF语句有二种形式:(1)IF条件THEN语句例如:IFx>0THENPRINTx(2)IF条件THEN语句1ELSE语句2例如:IFx>0THENPRINTxELSEPRINT–x一般形式:IF条件THEN语句1[ELSE语句2]求解一元二次方程ax2+bx+c=0(参见SAMP4-2.BAS)输入a,b,cd=b2-4acp=-b/2ad≥0是否x1=p+qx2=p-qx1=p+q”i”x2=p-q”i”2020/12/119选择结构的嵌套在一个选择结构中包含另外一个选择结构,就称为选择结构的嵌套y=0(x=0)1(x>0)-1(x<0)举例:输入xx>0是否y=1x=0是否y=0y=-1INPUT“Pleaseinputx”IFx>0THENy=1ELSEIFx=0THENy=0ELSEy=-1PRINT“y=“;y:END
2020/12/1110对选择结构的嵌套的理解选择结构的嵌套实际上是把一个IF结构的语句作为它外层IF结构的THEN或ELSE子句中应该执行的语句。对比:IF逻辑表达式THEN语句1ELSE语句2IFx>0THENy=1ELSEIFx=0THENy=0ELSEy=-1IFx>=0THENIFx>0THENy=1ELSEy=0ELSEy=-1内层IF-ELSE外层IF-ELSEIFx>=0THENIFx>0THENy=1ELSEy=-1IFx>=0THENIFx>0THENy=1ELSEy=-1内层IF-ELSEIFx>=0THENIFx>0THENy=1ELSEy=-1内层IF-ELSE√规定:ELSE与离它最近的IF配对2020/12/1111关于选择结构嵌套的两点说明将内层的THEN子句和ELSE子句写全,即使不需要ELSE子句,也应写上ELSE子句,后面不跟任何语句。内层IF-ELSE外层IF-ELSEIFx>=0THENIFx>0THENy=1
ELSEELSEy=-1尽量将内嵌的IF结构放在外层IF的ELSE子句中,而不放在THEN子句中,由于内层IF出现在外层IF的ELSE子句中,内层的ELSE只能与其前面的IF配对,而IF是在外层的ELSE右边,由于有外层IF的ELSE隔开,所以内层的ELSE绝不会越过外层的ELSE与外层的IF配对。IFx>0THENy=1ELSEIFx=0THENy=0ELSEy=-1内层IF-ELSE外层IF-ELSE2020/12/1112利用块IF实现选择结构语法:IF条件THEN
语句组1ELSE
语句组2ENDIFy=0(x=0)1(x>0)-1(x<0)举例:INPUT“Pleaseinputx:”;xIFx>0y=1ELSE
IFx=0y=0
ELSEy=-1
ENDIFENDIFPRINT“x=”;x,”y=”;yEND2020/12/1113块IF实现选择结构举例举例(P108,sam4-6.bas):d=0.05(250≤m<500)0(m<250)0.075(500≤m<1000)0.1(1000≤m<2000)0.15(2000≤m)2020/12/1114ELSEIF语句实现选择结构语法:IF条件THEN
语句组1ELSEIF条件2THEN
语句组2ELSEIF条件2THEN
语句组3……..ELSEIF条件2THEN
语句组nELSE
语句组n+1
ENDIFINPUT“Pleaseinputyourmoneyforbuying:”,mIFm<250THENd=0ELSEIFm<500THENd=0.05ELSEIFm<1000THENd=0.075ELSEIFm<2000THENd=0.1ELSEd=0.15ENDIamout=m*(1-d)PRINT“amount=”;amountEND2020/12/1115基本要求掌握逻辑运算的基本概念掌握行IF语句和块IF结构的使用2020/12/1116多分支选择结构(SELECTCASE结构)语法:SELECTCASE表达式
CASE条件1
语句组1CASE条件2
语句组2……CASEELSE
语句组nENDSELECTy=0(x=0)1(x>0)-1(x<0)举例:INPUT“Pleaseenterx:”,xSELECASExCASEIS>0y=1CASEIS=0y=0CASEIS<0y=-1ENDSELECTPRINT“x=”;x,”y=”;yEND2020/12/1117SELECTCASE结构举例有一笔款欲存银行,三年后取出,可以采取几种方案之一:活期3年;3次一年定息(每年到期后取出,在重新存入);先存一次2年定期,在存一次1年定期;先存一次1年定期,在存一次2年定期;3年定期。假设存款年利率为: 活期:1.5% 1年期:4% 2年期:4.5% 3年期:5.1%求本、利和的公式:p=p0*(1+r)n(其中:r为年利率,n为存款年数)(参见samp4-9.bas)2020/12/1118关于SELECTCASE结构的几点说明(I)SELECTCASE行后的表达式称“CASE表达式”,又可称“测试表达式”,它可以是一个变量或表达式,如a+b,sin(x)CASE后的条件有如下三种形式:常量;用“TO”指定一个范围,如3 TO4,8TO23;用“IS”指定一个条件,其一般形式为:IS<关系运算符><表达式>,当“条件”为一个关系条件时,不能包含逻辑运算符,如IS<6(正确),ISNOT<6(错误,不能包含逻辑运算符)。可以在一个CASE中使用多个条件,多个条件时,各个条件之间的关系是“逻辑或”的关系,如CASE1,3,5,7CASE1TO5,8TO10,IS>100CASEIS>=0,IS<=100(各个条件之间的关系是“逻辑或”的关系,所以-∞<x<∞)2020/12/1119关于SELECTCASE结构的几点说明(II)不同CASE子句中的“条件”不应当重复,重复虽然不会报告错误,只是出现操作上的矛盾,例如:
SELECTCASEa CASE1,2,3 PRINT“1-3” CASEIS>0 PRINT“>0” CASE2TO10 PRINT“2-10”ENDSELECT除了CASEELSE
子句外,其他CASE子句的顺序对执行结果没有影响,如果把CASEELSE子句放在最前,则首先执行的是CASEELSE子句,而认为前面的CASE子句均不符合条件,例如:
SELECTCASEINT(m) CASEELSE d=0.15 CASEIS<250 d=0 CASE250TO499 d=0.05ENDSELECT2020/12/1120多分支转移语句(ONGOTO
语句)语法:ON算术表达式GOTO行号或行标号1,行号或行标号2,行号或行标号3……
例如:ONxGOTOa,b,c,d当x=1时,执行行标号为a的语句行;当x=2时,执行行标号为b的语句行;当x=3时,执行行标号为c的语句行;当x=4时,执行行标号为d的语句行。y=0(x=0)1(x>0)-1(x<0)举例:INPUT“Enterx:”,xs=SGN(x)ONs+2GOTOa,b,ca:y=-1:GOTOdb:y=0:GOTOdc:y=1:GOTOdd:PRINT“x=”;x,”y=”;yEND2020/12/1121选择结构程序设计举例例1:输入一个年份(例如1999),要求判断它是否是闰年。
分析: 判断闰年的条件是:能被4整除但不能被100整除的是闰年,如1992年;能被4整除又能被400整除的是闰年,如2000年;其他为非闰年。
(参见:s4-11-1.bas,s4-11-2.bas,s4-11-3.bas,s4-11-4.bas)2020/12/1122INPUT"Pleaseinputyear:";yearPRINTyear;"is";IF(yearMOD4=0ANDyearMOD100<>0)ORyearMOD400=0THENPRINT"aleapyear!"ELSEPRINT"NOTaleapyear!"ENDs4-11-1.bas用行IF语句实现选择2020/12/1123
s4-11-2.bas用块IF结构实现选择INPUT"Pleaseinputyear:";yearPRINTyear;"is";IF(yearMOD4=0ANDyearMOD100<>0)ORyearMOD400=0THENPRINT"aleapyear!"ELSEPRINT"NOTaleapyear!"ENDIFEND2020/12/1124s4-11-3.bas逐个条件判断INPUT"Pleaseinputyear:";yearIFyearMOD4=0THENIFyearMOD100=0THEN
IFyearMOD400=0THENleap=1ELSEleap=0ENDIFELSEleap=1ENDIFELSEleap=0ENDIFIFleap=1THENPRINTyear;"isaleapyear!"ELSEPRINTyear;"isNOTaleapyear!"ENDIFEND2020/12/1125s4-11-4.bas在块IF结构使用ELSEIF语句实现选择INPUT"Pleaseinputyear:";yearIFyearMOD4<>0THENleap=0ELSEIFyearMOD100<>0THENleap=1ELSEIFyearMOD400=0THENleap=1ELSEleap=0ENDIFIFleap=1THENPRINTyear;"isaleapyear!"ELSEPRINTyear;"isNOTaleapyear!"ENDIFEND2020/12/1126选择结构程序设计举例例2有一城市,规划建设1个中心城和4个卫星城。中心城的边长20公里,卫星城边长为5公里,均为正方形,中心城的地价为每公顷10万,卫星城为5万,其他地区1万。编程序,输入任意一点的位置,确定该点的地价。-10-20ⅡⅠⅣⅢ-202020-101010中心城的范围:|x|≤10AND|y|≤10卫星城的范围:20≤|x|≤25AND20≤|y|≤252020/12/1127s4-12-1.bas在块IF结构使用ELSEIF语句实现选择INPUT"Pleaseinputyourcoordinate:";x,yIFABS(x)<=10ANDABS(y)<=10THENprice=10ELSEIF(ABS(x)>=20ANDABS(x)<=25)AND(ABS(y)>=20ANDABS(y)<=25)THENprice=5ELSEprice=1ENDIFPRINT"Price=";priceEND2020/12/1128s4-12-2.bas用3个行IF语句实现选择INPUT"Pleaseinputyourcoordinate:";x,yIFABS(x)<=10ANDABS(y)<=10THENprice=10IF(ABS(x)>=20ANDABS(x)<=25)AND(ABS(y)>=20ANDABS(y)<=25)THENprice=5IFNOT(ABS(x)<=10ANDABS(y)<=10)ANDNOT(ABS(x)>=20ANDABS(x)<=25ANDABS(y)>=20ANDABS(y)<=25)THENprice=1PRINT"Price=";priceEND2020/12/1129s4-12-3.bas用2个行IF语句实现选择INPUT"Pleaseinputyourcoordinate:";x,yprice=1IFABS(x)<=10ANDABS(y)<=10THENprice=10IFABS(x)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论