第四章选择结构程序设计关系表达式和逻辑表达式用行IF语句实现选择结构用块IF实现选择多分支选择结构多分支转移语句选择结构程序设计问题的提出在实际问题中,要求计算机进行逻辑判断,即给出一个条件,让计算机判断是否满足条件,并按照判断的结果来做不同的处理。1.从键盘输入一个数,如果是正数则打印出来,否则不做任何处理;2.将学生中成绩不合格者打印出来;3.将职工工资低于300元者打印出来;4.根判别式b2-4ac<0,则终止程序执行,否则求解。关系运算符关系运算符关系运算符含义含义相当于数学符号相当于数学符号举例举例>>大于>a>b<<小于<x=>=大于等于≥e>=-1<=<=小于等于≤h<=I<><>不等于≠u<>v关系表达式用一个关系运算符把两个运算量(数值量或字符串)联结起来称关系表达式;每个关系表达式都有一个值,这个值称作逻辑值(即“真”或“假”);在QBASIC中,如果表达式不成立,即“假”,则此表达式的值为“0”,否则为“-1”;举例:PRINT15>13,13>15运行结果:-10逻辑运算符问题的提出:如果需要判断一个数是否满足0≤x≤10,语句IF0==0ANDx<=10THEN语句1ELSE语句2(正确正确)QB的逻辑运算符:AND(与):所联结的关系表达式必须同时成立才为真;OR(或):所联结的关系表达式只要有一个为真,即为真;NOT(非):将原来的逻辑值取反。逻辑运算符的运算规则ABAANDBAORBNOTANOTB真真真真假假真假假真假真假真假真真假假假假假真真逻辑表达式的预算次序一个逻辑表达式一般包括逻辑运算符、关系表达式或其他运算量;算术运算→关系运算→逻辑运算(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真真IF语句语法:IFIF关系表达式关系表达式THENTHEN语句语句11[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=3用行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)qipxacbDqpxacbDaDqabpaDbaacbbx2,122,1222,1,04,042,2224则若则若令输入a,b,cd=b2-4acp=-b/2aaDq2d≥0是否x1=p+qx2=p-qx1=p+q”i”x2=p-q”i”选择结构的嵌套在一个选择结构中包含另外一个选择结构,就称为选择结构的嵌套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对选择结构的嵌套的理解选择结构的嵌套实际上是把一个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配对关于选择结构嵌套的两点说明1.将内层的THEN子句和ELSE子句写全,即使不需要ELSE子句,也应写上ELSE子句,后面不跟任何语句。内层IF-ELSE外层IF-ELSEIFx>=0THENIFx>0THENy=1ELSEELSEy=-12.尽量将内嵌的IF结构放在外层IF的ELSE子句中,而不放在THEN子句中,由于内层IF出现在外层IF的ELSE子句中,内层的ELSE只能与其前面的IF配对,而IF是在外层的ELSE右边,由于有外层IF的ELSE隔开,所以内层的ELSE绝不会越过外层的ELSE与外层的IF配对。...