资源预览内容
第1页 / 共48页
第2页 / 共48页
第3页 / 共48页
第4页 / 共48页
第5页 / 共48页
第6页 / 共48页
第7页 / 共48页
第8页 / 共48页
第9页 / 共48页
第10页 / 共48页
亲,该文档总共48页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第八讲 分支结构,分支结构(一)IF结构,本讲要求: 行IF结构及其嵌套 块IF结构及其嵌套 IFELSEIF结构 三个控件:框架、单选钮、复选框,引言:什么是分支结构?(选择结构、条件结构) 选择结构(分支结构) 根据一定的条件,选择进行不同的操作(二选一、多选一) 4-1 qiugen2.vbp 例:一元二次方程求根、密码验证、三角形面积等 条件结构 根据一定的条件,决定是否执行某种操作 例:倒计时中是否终止考试2-6 定时器.vbp 实现手段:分支结构(If结构、SelectCase结构),一、 行 If 语句 例1:求任意实数x的绝对值 Dim x!, y! x=Val ( InputBox (“请输入x的值“ ) ) If x=0 Then y=x Else y=-x Print “x= “; x, “ y= “; y 格式: If Then Else 语句组1、2: 一条语句、多条语句(冒号分隔)、无语句 整个语句必须书写在同一行,2. 语句功能及运行过程 (实现二选一) 7-17 行IF.vbp 条件满足(强调非零), 则执行 Then 后面的语句组, 然后退出行If,顺序执行行If 后面的语 条件不满足时,若有Else部分,则执行Else后面的语句,然后退出行If , 否则直接退出行If,顺序执行后面的语句。 注意: (条件定义域一分为二,Else的隐含条件) Dim x!, y! x=Val ( InputBox (“请输入x的值“ ) ) If x=0 Then y=x Else y=-x Print “ x= “; x, “y= “; y,例: Dim x% x=Val ( InputBox (“请输入x的值“) ) If x Then Print 1 Else Print 0 问: 当输入x=3、x=0时,输出结果是什么? 例: Dim f As Boolean f=False If f Then Print “成立“ Else Print “不成立“ 问:输出结果? 相当于 If f=True Then Print “成立“ Else Print “不成立“,例 输入两数x和y,比较大小,使得x大于y. Dim x!, y!, t! 7-17 行IF.vbp x=Val(InputBox(“请输入x 的值“) y=Val(InputBox(“请输入y 的值“) If xy Then t=x: x=y: y=t 多条语句 Print “ x= “; x, “y= “; y 作业: 通过InputBox任意输入三个数x、y、z,然后将他们按从小到大排列,即xyz。,行If 语句的嵌套 (用于解决多分支结构问题) 嵌套: Then或Else后面的语句又是行If 结构 例: 符号函数问题(三分支问题) Dim x!, y! (先一分为二, 配对原则) x=Val ( InputBox ( “请输入x 的值“) ) If x=0 Then Else Print “x=“; x, “y=“; y 可否写成: If x0 Then y=1 Else If x=0 Then y=0 Else y=-1,说明: 行If 语句通常用于简单的二选一分支结构.,If x0 Then y=1 Else y=0,y=-1,行If 语句嵌套时, Else 的配对原则 (选讲),例:Dim x!, y! x=Val(InputBox(“请输入x 的值“) y=0 If x=0 Then If x0 Then y=1 Else y=-1 Print “x= “ ;x, “y= “ ;y 问: x=0、5、-4,y的数值分别为多少?7-17,说明: 行If 语句通常用于简单的二选一分支结构.,结论:每一个Else 部分都与它前面的, 距它最近的,且未被配对的 If-Then 配对。,二、块If 结构 行IF的局限 行内容量有限 嵌套层次太多, 使结构不清晰; 行If 语句通常用于简单的二分支结构. 对于较复杂的二分支结构或多分支结构, 适宜采用块If 结构。 块IF由行IF变形而来,例:求一个数的绝对值,用块If 实现。7-17 VB例题4-1 qiugen2.vbp,块If: If x=0 Then y=x Else y=-x End If,行If: If x=0 Then y=x Else y=-x,格式:7-17 If Then Else End If,必须换行 错1 ELSE没有IF,结束标志,必不可少。 错2 块 IF没有 END IF,2. 运行过程: 同于行If 语句 VB例题4-1 qiugen2.vbp,例:两数比较大小,使X=Y,Dim x!, y!, t! x=Val ( InputBox(“请输入x 的值“) ) y=Val ( InputBox(“请输入y 的值“) ) If xy Then t=x: x=y: y=t Print “x= “; x, “y= “; y,块If: If xy Then t=x x=y y=t End If,3. 块If 的嵌套(多分支) 块If 中Then或Else后面的语句组又是一个行If 结构或块If 结构.(完整嵌套),Dim x!, y! x=Val(InputBox(“请输入x 的值“) If x=0 Then If x0 Then y=1 Else y=0 Else y=-1 Print “x= “; x, “y=“; y,块If 与行If 之间的嵌套: If x=0 Then If x0 Then y=1 Else y=0 Else y=-1 End If,注意: 写代码时, 尽量显示出层次结构 完整嵌套、IF /END IF 一一对应,Dim x%, a%, b%8-7 块IF嵌套.vbp Dim ok1 As Boolean, ok2 As Boolean x = 100: a = 10: b = 20: ok1 = True: ok2 = False If a 15 Then 条件之间互为前提 If Not ok1 Then x = 1 Else If ok2 Then x = 10 x = -1 End If End If End If Print x,三、在块If 中使用ElseIf Then 结构,多分支问题: 块If 多重嵌套实现, 结构复杂, 容易出错; 用ElseIf Then 结构取代。,例:设成绩为S, 等级为G, S与G之间的关系是:,例:见前面等级与成绩之间的关系。7-17,Dim S As Single,G As String S=Val(InputBox(“输入成绩(0100) “) If S=85 And S=70 And S=60 And S70 Then G=“合格“ Else 余下的所有情况(本题指哪些?) G=“不合格“ End If Print “S=“; S; “, G=“; G,上述各种情况之外的所有情形,格式 If Then ElseIf Then ElseIf Then Else End If,开始标志,ElseIf (连在一起),结束标志,注意: 实质是块If 结构, 只是条件划分成了若干简单条件,2. 执行过程7-17(演示) 自上而下, 依次检测各条件表达式, 直到满足其中的一个条件, 则执行对应的语句组, 然后不再考虑后面分支,直接退出块If; 若所有条件均不满足, 则执行Else后面的语句组,然后退出块If;若无 Else子句,则直接退出块If。 注意:各分支之间相互排斥,正确划分 幻灯片 23,If S=85 Then G=“优秀“ ElseIf S=70 Then G=“良“ ElseIf S=60 Then G=“合格“ Else G=“不合格“ End If,注意:进入后一分支以前一分支不满足为前提,问:程序可否改写如上?(设0S 100),If S=85 Then G=“优秀“ ElseIf S=70 Then G=“良“ ElseIf S=60 Then G=“合格“ Else G=“不合格“ End If,If S=85 Then G=“优秀“ ElseIf S=60 Then G=“合格“ ElseIf S=70 Then G=“良“ Else G=“不合格“ End If,是否等价?,注意: 后者以前者为隐含条件, 对顺序排列有严格要求.,假设S=80或-20,G的值分别为多少?,方法二 If S=85 Then G=“优秀“ ElseIf S=70 Then G=“良“ ElseIf S=60 Then G=“合格“ Else G=“不合格“ End If,Dim S As Single,G As String S=InputBox( “输入成绩(0100)“) If S=85 And S=70 And S=60 And S70 Then G=“合格“ Else G=“不合格“ End If,方法三 If S=85 And S=70 And S=60 And S70 Then G=“合格“ If S60 Then G=“不合格“,并列关系,执行过程不同,7-17,IF结构的关键: 合理完整地划分条件定义域 正确构造条件表达式 行IF及其嵌套、块IF及其嵌套均先将定义域一分为二,再逐步细分 IFELSEIF 则将整个定义域划分成若干小区间 (用完整条件) 弄清ELSE的隐含条件,慎用ELSE分支 2-6 定时器.vbp 4-1 qiugen2.vbp 6-2 SanJiaoXing.vbp 7-11 鸡兔同笼问题.vbp 7-9 MiM.vbp 6-9 分离数位.vbp 上机作业,四、 条件函数 IIf 函数(选讲) IIf (条件, 条件成立时的函数值, 条件不成立时的函数值) 例1:绝对值函数 行If:If x=0 Then y=x Else y=-x IIf函数:y=IIf ( x=0, x, -x ) 例2: 将x、y中较大的数放入变量Tmax中。 行If:If xy Then Tmax=x Else Tmax=y IIf函数:Tmax=IIf (xy, x, y) 用途: 代替行If , 用于简单的二选一场合,上机作业,编程判断任意年份是否是闰年 判断某一年是否是闰年的条件: 能被4整除,但不能被100整除; 能被100整除,又能被400整除。 8-4 RUNNIAN.VBP 要求:用文本框输入年份,用MsgBox语句输出结果。,上机作业,任意输入点的坐标,判断该点的位置。(坐标原点、纵轴、横轴、一象限、二象限、三象限、四象限) 要求:用InputBox输入坐标,用Print方法在图片框内输出结果。 VB例题7-18 坐标判断.vbp,上机作业,4. 三个数x、y、z按从小到大排列。(三个变量中的数据从小到大排列) VB例题8-5 VB例题6-9 分离数位.vbp 7-11(鸡兔同笼) 7-13 (打印通讯录),分支结构(二)Select Case结构,本讲要求: Select Case结构 Select Case结构与IF结构的对比 三个控件:框架、单选钮、复选框,五、Select Case 结构 (多分支选择结构),格式 Select Case Case Case Case Case Else End Select,开始标志,结束标志,单一变量或常量,条件可以以三种方式给出:(必须常数) 枚举式: Case 1, 3, 8, 10 (或逻辑) 范围式: Case 2 To 5 (前者必须小于后者) 关系式: Case Is50 它们之间为或逻辑关系。,例:同于上例,请用Select Case 结构实现。,D
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号