选择结构程序设计课件

上传人:风*** 文档编号:241975331 上传时间:2024-08-08 格式:PPT 页数:42 大小:187.70KB
返回 下载 相关 举报
选择结构程序设计课件_第1页
第1页 / 共42页
选择结构程序设计课件_第2页
第2页 / 共42页
选择结构程序设计课件_第3页
第3页 / 共42页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第四章 选择结构程序设计,关系表达式和逻辑表达式,用行,IF,语句实现选择结构,用块,IF,实现选择,多分支选择结构,多分支转移语句,选择结构程序设计,第四章 选择结构程序设计关系表达式和逻辑表达式,1,问题的提出,在实际问题中,要求计算机进行逻辑判断,即给出一个条件,让计算机判断是否满足条件,并按照判断的结果来做不同的处理。,从键盘输入一个数,如果是正数则打印出来,否则不做任何处理;,将学生中成绩不合格者打印出来;,将职工工资低于300元者打印出来;,根判别式,b,2,-4ac,大于,ab,小于,x=,大于等于,e=-1,=,小于等于,h大于ab13,1315,运行结果:,-1 0,关系表达式用一个关系运算符把两个运算量(数值量或字符串)联结,4,逻辑运算符,问题的提出:如果需要判断一个数是否满足0,x10,语句,IF 0=x=0 AND x b+d OR cd AND ABS(c)=a OR NOT c d+5,7 11,OR cd AND 2=a OR NOT c13,假,OR,假,AND,假,OR NOT,假,假,OR,假,OR,真,真,逻辑表达式的预算次序一个逻辑表达式一般包括逻辑运算符、关系表,7,IF语句,语法:,IF,关系表达式,THEN,语句1,ELSE,语句2,在,IF,语句中,实际是判别关系表达式的逻辑值是零还是非零。如果是非零(即条件成立),则执行,THEN,后的语句,否则执行,ELSE,后的语句(,有,ELSE,语句!,)。,IF 53 THEN PRINT“This is true.”ELSE PRINT“This is false”,IF 35 THEN PRINT“This is true.”ELSE PRINT“This is false”,IF 2 THEN PRINT“This is true.”ELSE PRINT“This is false”,IF 0 THEN PRINT“This is true.”ELSE PRINT“This is false”,表达式的逻辑值可以赋值给变量:,x=53,x=5=3,IF语句语法:IF 关系表达式 THEN 语句1 ELSE,8,甲、乙、丙、丁四个人中有一个人是小偷,请根据四个人的谈话判断谁是小偷。已知四人中有一个人说假话。,甲:我不是小偷。,乙:丙是小偷。丙:丁是小偷。,丁:丙说谎。,分析:可以采用枚举法,依次假设甲、乙、丙、丁是小偷,再根据他们的谈话找到关系式。由于有一个人说谎,所以四个关系式相加值为-3时即可找到小偷。,(,X1)+(X=3)+(X=4)+(X4)=-3,甲、乙、丙、丁四个人中有一个人是小偷,请根据四个人的谈话判断,9,四大湖问题(湖南省1986年青少年程序设计竞赛试题)。上地理课时,四个学生回答我国四大淡水湖的大小时说:甲:洞庭湖最大,洪泽湖最小,鄱阳湖第三。乙:洪泽湖最大,洞庭湖最小,鄱阳湖第二,太湖第三。丙:洪泽湖最小,洞庭湖第三。丁:鄱阳湖最大,太湖最小,洪泽湖第二,洞庭湖第三。对于每个湖的大小,每人仅答对了一个。,请判断四个湖的大小。,四大湖问题(湖南省1986年青少年程序设计竞赛试题)。上地,10,问题分析:,可以设洞庭湖、洪泽湖、鄱阳湖、太湖分别用变量,A、B、C、D,表示。每个变量的取值是14。因为每个只答对了一个,所以,他们的叙述可以表示为:,甲:(,A=1)+(B=4)+(C=3)=-1,乙:(,B=1)+(A=4)+(C=2)+(D=3)=-1,丙:(,B=4)+(A=3)=-1,丁:(,C=1)+(D=4)+(B=2)+(A=3)=-1,只有以上条件都满足时,才能找到正确答案。,问题分析:,11,用行IF语句实现选择结构,行,IF,语句有二种形式:,(1),IF,条件,THEN,语句,例如:,IF x0 THEN PRINT x,(2),IF,条件,THEN,语句1,ELSE,语句2,例如:,IF x0 THEN PRINT x ELSE PRINT x,一般形式:,IF,条件,THEN,语句1,ELSE,语句2,求解一元二次方程,ax,2,+bx+c=0(,参见,SAMP4-2.BAS,),输入,a,b,c,d=b,2,-4ac,p=-b/2a,d0,是,否,x1=p+q,x2=p-q,x1=p+q”i”,x2=p-q”i”,用行IF语句实现选择结构行IF语句有二种形式:求解一元二次方,12,INPUT Please enter the value of a,b,c:,a,b,c,d=b*b-4*a*c,p=-b/(2*a),q=SQR(ABS(d)/(2*a),IF d=0 THEN x1=p+q:x2=p-q:PRINT x1=;x1,x2=;x2 ELSE,PRINT x1=;p;+;q;i,x2=;p;-;q;i,END,INPUT Please enter the value,13,选择结构的嵌套,在一个选择结构中包含另外一个选择结构,就称为选择结构的嵌套,y=,0(,x=0,),1(,x0,),-1(,x0,是,否,y=1,x=0,是,否,y=0,y=-1,INPUT“Please input x”,IF x0 THEN y=1 ELSE,IF x=0 THEN y=0 ELSE y=-1,PRINT“y=“;y:END,选择结构的嵌套在一个选择结构中包含另外一个选择结构,就称为选,14,对选择结构的嵌套的理解,选择结构的嵌套实际上是把一个,IF,结构的语句作为它外层,IF,结构的,THEN,或,ELSE,子句中应该执行的语句。,对比:,IF,逻辑表达式,THEN,语句1,ELSE,语句2,IF x0 THEN,y=1,ELSE,IF x=0 THEN y=0 ELSE y=-1,IF x=0 THEN,IF x0 THEN y=1 ELSE y=0,ELSE,y=-1,内层,IF-ELSE,外层,IF-ELSE,IF x=0 THEN IF x0 THEN y=1 ELSE,y=-1,IF x=0 THEN,IF x0 THEN y=1 ELSE,y=-1,内层,IF-ELSE,IF x=0 THEN,IF x0 THEN y=1,ELSE,y=-1,内层,IF-ELSE,规定:,ELSE,与离它最近的,IF,配对,对选择结构的嵌套的理解选择结构的嵌套实际上是把一个IF结构的,15,关于选择结构嵌套的两点说明,将内层的,THEN,子句和,ELSE,子句写全,即使不需要,ELSE,子句,也应写上,ELSE,子句,后面不跟任何语句。,内层,IF-ELSE,外层,IF-ELSE,IF x=0 THEN,IF x0 THEN y=1,ELSE,ELSE,y=-1,尽量将内嵌的,IF,结构放在外层,IF,的,ELSE,子句中,而不放在,THEN,子句中,由于内层,IF,出现在外层,IF,的,ELSE,子句中,内层的,ELSE,只能与其前面的,IF,配对,而,IF,是在外层的,ELSE,右边,由于有外层,IF,的,ELSE,隔开,所以内层的,ELSE,绝不会越过外层的,ELSE,与外层的,IF,配对。,IF x0 THEN y=1 ELSE,IF x=0 THEN y=0 ELSE y=-1,内层,IF-ELSE,外层,IF-ELSE,关于选择结构嵌套的两点说明将内层的THEN子句和ELSE子句,16,利用块IF实现选择结构,语法:,IF,条件,THEN,语句组1,ELSE,语句组2,END IF,y=,0(,x=0,),1(,x0,),-1(,x0,THEN,y=1,ELSE,IF,x=0,THEN,y=0,ELSE,y=-1,END IF,END IF,PRINT“x=”;x,”y=”;y,END,利用块IF实现选择结构语法:y=0(x=0)1(x0),17,块IF实现选择结构举例,举例(,P108,sam4-6.bas):,d=,0.05(250,m500),0(,m250),0.075(500,m1000),0.1(1000,m2000),0.15(2000,m),块IF实现选择结构举例举例(P108,sam4-6.bas),18,INPUT Please input your money for buying:,m,IF m 250 THEN,d=0,ELSE,IF m 500 THEN,d=.05,ELSE,IF m 1000 THEN,d=.075,ELSE,IF m 2000 THEN,d=.1,ELSE,d=.15,END IF,END IF,END IF,END IF,amount=m*(1-d),PRINT amount=;amount,END,INPUT Please input your money,19,amount=m*(1-d),PRINT amount=;amount,END,INPUT Please input your money for buying:,m,IF m 2000 THEN,ELSE,d=.15,END IF,IF m 1000 THEN,ELSE,d=0.1,END IF,IF m 500 THEN,ELSE,d=0.75,END IF,IF m 250 THEN,d=0,ELSE,d=.05,END IF,amount=m*(1-d)INPUT Ple,20,ELSEIF语句实现选择结构,语法:,IF,条件1,THEN,语句组1,ELSEIF,条件2,THEN,语句组2,ELSEIF,条件3,THEN,语句组3,.,ELSEIF,条件4,THEN,语句组,n,ELSE,语句组,n+1,END IF,INPUT“Please input your money for buying:”,m,IF m250 THEN,d=0,ELSEIF m500 THEN,d=0.05,ELSEIF m1000 THEN,d=0.075,ELSEIF m0,),-1(,x0,y=1,CASE IS=0,y=0,CASE IS 0,y=-1,END SELECT,PRINT“x=”;x,”y=”;y,END,多分支选择结构(SELECT CASE结构)语法:y=0(,24,SELECT CASE结构举例,有一笔款欲存银行,三年后取出,可以采取几种方案之一:,活期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),SELECT CASE结构举例有一笔款欲存银行,三年后取出,,25,REM program for bank savings,r0=.01:r1=.04:r2=.045:r3=.051,INPUT Please input your deposit:,p0,INPUT Please input scheme:,c,SELECT CASE c,CASE 1,p=p0*(1+r0)3,CASE 2,p=p0*(1+r1)3,CASE 3,p=p0*(1+r2)2,p=p*(1+r1),CASE 4,p=p0*(1+r1),p=p*(1+r2)2,CASE 5,p=p0*(1+r3)3,END SELECT,PRINT p=;p,END,REM program for bank savings,26,关于SELECT CASE结构的几点说明(I),SELECT CASE,行后的表达式称“,CASE,表达式,”,又可称“,测试表达式,”,它可以是一个变量或表达式,如,a+b,sin(x),CASE,后的条件有如下三种形式:,常量;,用“,TO”,指定一个范围,如3,TO 4,8 TO 23(,闭区间,);,用“,IS”,指定一个条件,其一般形式为:,IS ,当“条件”为一个关系条件时,不能包含逻辑运算符,如,IS 6(,正确,),,IS,NOT,6(,错误,不能包含逻辑运算符,)。,表示0=,x=0 AND IS 100,CASE IS=0,IS=100 (,各个条件之间的关系是“逻辑或”的关系,所以-,x0,PRINT“0”,CASE 2 TO 10,PRINT“2-10”,END SELECT,除了,CASE ELSE,子句外,其他,CASE,子句的顺序对执行结果没有影响,如果把,CASE ELSE,子句放在最前,则首先执行的是,CASE ELSE,子句,而认为前面的,CASE,子句均不符合条件,例如:,SELECT CASE INT(m),CASE ELSE,d=0.15,CASE IS 0,),-1(,x0,),举例:,INPUT“Enter x:”,x,s=SGN(x),ON s+2 GOTO,a,b,c,a,:y=-1:GOTO d,b,:y=0:GOTO d,c,:y=1:GOTO d,d:PRINT“x=”;x,”y=”;y,END,多分支转移语句(ON GOTO 语句)语法:ON 算术表达式,29,选择结构程序设计举例,例1:输入一个年份(例如1999),要求判断它是否是闰年。,分析:判断闰年的条件是:能被4整除但不能被100整除的是闰年,如1992年;能被4整除又能被400整除的是闰年,如2000年;其他为非闰年。,(,参见:,s4-11-1.bas,s4-11-2.bas,s4-11-3.bas,s4-11-4.bas),选择结构程序设计举例例1:输入一个年份(例如1999),要求,30,INPUT Please input year:;year,PRINT year;is;,IF(year MOD 4=0 AND year MOD 100 0)OR year MOD 400=0 THEN,PRINT a leap year!,ELSE,PRINT NOT a leap year!,END,s4-11-1.bas,用行,IF,语句实现选择,INPUT Please input year:;ye,31,s4-11-2.bas,用块,IF,结构实现选择,INPUT Please input year:;year,PRINT year;is;,IF(year MOD 4=0 AND year MOD 100 0)OR year MOD 400=0 THEN,PRINT a leap year!,ELSE,PRINT NOT a leap year!,END IF,END,s4-11-2.bas用块IF结构实现选择INPUT P,32,s4-11-3.bas,逐个条件判断,INPUT Please input year:;year,IF year MOD 4=0 THEN,IF year MOD 100=0 THEN,IF year MOD 400=0 THEN,leap=1,ELSE,leap=0,END IF,ELSE,leap=1,END IF,ELSE,leap=0,END IF,IF leap=1 THEN,PRINT year;is a leap year!,ELSE,PRINT year;is NOT a leap year!,END IF,END,s4-11-3.bas逐个条件判断INPUT Please,33,s4-11-4.bas,在块,IF,结构使用,ELSEIF,语句实现选择,INPUT Please input year:;year,IF year MOD 4 0 THEN,leap=0,ELSEIF year MOD 100 0 THEN,leap=1,ELSEIF year MOD 400=0 THEN,leap=1,ELSE,leap=0,END IF,IF leap=1 THEN,PRINT year;is a leap year!,ELSE,PRINT year;is NOT a leap year!,END IF,END,s4-11-4.bas在块IF结构使用ELSEIF语句实现选,34,选择结构程序设计举例,例2 有一城市,规划建设1个中心城和4个卫星城。中心城的边长20公里,卫星城边长为5公里,均为正方形,中心城的地价为每公顷10万,卫星城为5万,其他地区1万。编程序,输入任意一点的位置,确定该点的地价。,-10,-20,-20,20,20,-10,10,10,中心城的范围:,|,x|10 AND|y|10,卫星城的范围:,20|,x|25 AND 20|y|25,选择结构程序设计举例例2 有一城市,规划建设1个中心城和4个,35,s4-12-1.bas,在块,IF,结构使用,ELSEIF,语句实现选择,INPUT Please input your coordinate:;x,y,IF ABS(x)=10 AND ABS(y)=20 AND ABS(x)=20 AND ABS(y)=25,)THEN,price=5,ELSE,price=1,END IF,PRINT Price=;price,END,s4-12-1.bas在块IF结构使用ELSEIF语句实现选,36,s4-12-2.bas,用3个行,IF,语句实现选择,INPUT Please input your coordinate:;x,y,IF ABS(x)=10 AND ABS(y)=20 AND ABS(x)=20 AND ABS(y)=25,)THEN price=5,IF NOT(,ABS(x)=10 AND ABS(y)=20 AND ABS(x)=20 AND ABS(y)=25),THEN price=1,PRINT Price=;price,END,s4-12-2.bas用3个行IF语句实现选择INPUT,37,s4-12-3.bas,用2个行,IF,语句实现选择,INPUT Please input your coordinate:;x,y,price=1,IF ABS(x)=10 AND ABS(y)=20 AND ABS(x)=20 AND ABS(y)=25 THEN price=5,PRINT Price=;price,END,s4-12-3.bas用2个行IF语句实现选择INPUT,38,s4-12-4.bas,通过标志变量实现选择,INPUT Please input your coordinate:;x,y,price=1,IF ABS(x)=10 AND ABS(y)=20 AND ABS(x)=20 AND ABS(y)=25 THEN price=5,flag=2,IF,flag 1 AND flag 2,THEN price=1,PRINT Price=;price,END,s4-12-4.bas通过标志变量实现选择INPUT Pl,39,找出剩余2个数中的最大者,放在,c,中,找出4个数中的最大者,放在,a,中,找出剩余3个数中的最大者,放在,b,中,ab,真,假,a,与,b,互换,ac,真,假,a,与,c,互换,ad,真,假,a,与,d,互换,bc,真,假,b,与,c,互换,bd,真,假,b,与,d,互换,cd,真,假,c,与,d,互换,找出剩余2个数中的最大者,放在c中找出4个数中的最大者,放在,40,INPUT Please input a,b,c,d:;a,b,c,d,IF a b THEN SWAP a,b,IF a c THEN SWAP a,c,IF a d THEN SWAP a,d,IF b c THEN SWAP b,c,IF b d THEN SWAP b,d,IF c d THEN SWAP c,d,PRINT a,b,c,d,END,程序设计,参见:,Samp4-14.bas,INPUT Please input a,b,c,d:;,41,基本要求,掌握多分支选择结构和多分支转移语句的使用。,基本要求掌握多分支选择结构和多分支转移语句的使用。,42,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!