3756c26a2857ead9aedd5d927a467b2e.ppt
- Количество слайдов: 33
第四章 选择结构
教学目标 • 掌握IF…THEN…Else语句 • 熟悉组合框、列表框、检查列表框( Checked. List. Box) • 掌握Select Case语句
4. 1 If语句 4. 1. 1 If…Then语句 If-Then语句用来当条件满足时执行某些语 句,反之则不执行。If-Then语句的格式如下: If <条件表达式> Then 语句块 End If If-Then语句亦称为单分支结构。其中条件表 达式的值为Boolean型,用<>将条件表达式括 起来表示它在IF语句中是必须具有的一项,即 IF语句中的条件表达式不可缺少。
例如,对输入的数值进行判断。输入 大于25的数值时,在Message. Box内显示“ 大于25”。否则将不显示任何信息。 If int. Number > 25 Then Message. Box. Show( "大于25") End If
4. 1. 2 If…Then…Else语句 当条件表达式的值为True时,程序执行一些语句, 其值为False时,程序执行另一些语句,此时可以使 用If-Then-Else语句。If-Then-Else语句的格式如下: If <条件表达式> Then <语句块 1> Else <语句块 2> End If 该语句的作用是当条件表达式的值为True时,程 序执行语句块 1,当条件表达式的值为False时,程序 将执行语句块 2。
例如对int. Sex变量进行判断,为 0时是男性; 否则是女性: If int. Sex=0 Then Message. Box. Show(“You are a man!”) Else Message. Box. Show(“You are a woman!”) End If
创建一新的项目,对输入的数值进行判断。在其中的一 个Text. Box中输入数值,如果输入的数据为 7的整倍数,在另一 个Text. Box文本框内显示“是 7的倍数”,反之则显示“不能被 7整 除”。在窗体上放置 2个Text. Box控件,分别用来接受输入和显 示结果,Name属性分别为Txt. Input和Txt. Result。再添加一个按 钮,并为这个按钮的Click事件编写如下代码: Private Sub Btn. Go_Click(By. Val sender As System. Object, _ By. Val e As System. Event. Args) Handles Btn. Go. Click Dim lng. In As Long lng. In = Convert. To. Int 64(Txt. Input. Text) If lng. In Mod 7 = 0 Then Txt. Result. Text = "是 7的倍数" Else Txt. Result. Text = "不能被 7整除" End If End Sub 程序中使用了显示的转换Convert. To. Int 64,当然也可以直接赋 值,由Visual Basic作隐式转换。
4. 1. 3 If…Then…Else. If语句 分支超过2个的情况,此时可以在If…Then…End If结构中 使用Else. If 语句,格式如下: If <条件表达式 1> Then <语句块 1> Else. If <条件表达式 2> Then <语句块 2> … [Else [语句块n+1] End If 该语句的作用是根据不同的条件表达式的值确定执行哪个语 句块,Visual Basic测试条件的顺序为条件表达式 1、条件表达 式 2、……,每当遇到某个条件表达式值为True时,就执行该 条件下的语句块。
例如在下面一段代码中根据Caller的值不同而执行不同的语句。 If Caller = "Joe" Then Message. Box. Show( "Yes!") Else. If Caller = "Matt" Then Message. Box. Show("Okay, but if you buy. ") Else. If Caller = "Jeff" Then Message. Box. Show("I’m washing my hair tonight. ") Else. If Caller = "Robby" Then Message. Box. Show( "This is a recording. ") End If 注意: 1. 的是不管程序有几个分支,在执行了一个分支后,其余 分支不再执行。 2. Else. If不要写成Else If。
4. 1. 4嵌套If…Then语句 If语句可以嵌套,既可在If语句当中可以包含另外一个If语句。 If语句的嵌套语句格式如下: If <条件表达式 1> Then If <条件表达式 2> Then … End If … End If 例如只有当n=3并且x=6时显示“n=3 & x=6”。 If n = 3 Then Message. Box. Show("n=3") If x = 6 Then Message. Box. Show("x=6 & n=3") End If If语句对于嵌套的多少是没有限制的。但是嵌套的层数越多,代码执 行起来就会越困难,越容易出错。所以,应尽量把嵌套层数减少。
例: 在两个文本框中任意输入两个数字,按下Max按钮后将较大的一个显示在第 三个文本框中。创建新的 程起名为Biger,在窗体上放置 3个Text. Box控件 和一个按钮,清除 3个Text. Box控件的Text属性,将3个Text. Box控件的name属 性分别设置为Txt. Op 1,Txt. Op 2,Txt. Biger;将Txt. Biger的Read. Only属性设置 为True;按钮的name属性为Btn. Biger,Text的name属性为Max。采用快速添 加事件代码的方法,双击按钮添加代码如下: Private Sub Btn. Biger_Click(By. Val sender As System. Object, _ By. Val e As System. Event. Args) Handles Btn. Biger. Click Dim dbl. Op 1 As Double Dim dbl. Op 2 As Double dbl. Op 1 = Txt. Op 1. Text dbl. Op 2 = Txt. Op 2. Text If dbl. Op 1 >= dbl. Op 2 Then Txt. Biger. Text = dbl. Op 1 Else Txt. Biger. Text = dbl. Op 2 End If End Sub
4. 1. 5 Select Case语句(情况语句) Select Case语句是实现选择结构程序设计的另一种语句。它的 使用有时比If语句更加简单直观。 Select Case语句的格式如下: Select Case 变量名或表达式 Case 表达式列表 1 语句块 1 [Case 表达式列表 2 语句块 2 …] [Case Else 语句块n+1] End Select
其中变量名或表达式可以是所有基本数据类型;表达式列 表与“变量名或表达式”的类型必须相同,可以取下面四 种形式: 表达式 一组枚举表达式(用逗号分隔) 表达式值的范围(如:表达式 1 To 表达式 2) Is 关系运算符表达式 例如: Case 1 To 8 ‘表示测试表达式的值在 1到 8之间 Case 1, . 3, 5, 7, Is>11 ‘表示测试表达式的值为 1, 3, 5, 7或大 于11 该语句的作用是根据<变量名与表达式>中的结果与各Case 子句中的表达式的值进行比较,以决定执行哪一组语句 块。
在Visual Basic. NET中,可以把所有基本数据类型运用到 Select Case语句中。当有多个Case表达式的值与测试值 匹配时,系统执行第一个与之匹配的语句。采用Select Case语句改写前面If…Then…Else. If的例子,如下所示: Select Case Caller Case “Joe” Message. Box. Show( "Yes!") Case “Matt” Message. Box. Show("Okay, but if you buy. ") Case “Jeff” Message. Box. Show("I’m washing my hair tonight. ") Case “Robby” Message. Box. Show( "This is a recording. ") End Select 比较两程序段,显然,使用Select Case语句使代码变得更 加清晰直观,不再重复出现Else. If和Then 语句。
4. 2 END语句 End语句用于结束一个程序的运行,它可以放在任 何事件过程中。End语句格式如下: End 以上在顺序结构、选择结构的代码中,都用到End 与对应结构的关键词复合的语句。其实,以后介绍的 情况语句、循环结构、子程序、过程等等的程序代码 中,也必须以End与关键词复合语句结尾。这是Visual Basic代码编写时的规则,即作为一个完整的结构(顺 序、选择(情况)、循环)、子程序、程序块,最后 一个语句必须用End的关键词复合语句,以示该程序到 此结束。否则,系统将会提示出错信息。例如End If、 End Select、End Sub、End With等等。
4. 3 List. Box、Checked. List. Box、Combo. Box控件 List. Box(列表框)、Checked. List. Box (复选列表框)和Combo. Box(组合列表框), 向用户提供选项。它们均可显示多个选项, 而且比多个单选按钮或检查框占据的空间要 少一些。
4. 3. 1 List. Box控件 List. Box控件用来显示选项 列表,用户可从中进行选择一 项或选择多项的操作。在窗体 创建一个列表框时,单击 List. Box小图标。鼠标箭头变为 十字形状,将鼠标移至窗体上 适当位置,按住鼠标左键,拖 动鼠标绘制列表框。 右图为添加了选项的List. Box。
4. 3. 1. 1 List. Box的属性 在设计的时候为List. Box添加选项,可以使用属性窗口中的Items 属性(位于Data类别中)。打开List. Box的属性窗口,单击Items属 性项右边的带有三个小黑点的按钮。Visual Studio. NET将打开一 个字符串集合编辑器。将相应的选项内容输入到字符串集合编辑 器中。. 每输入一个选项后,按回车键换行。全部选项输入完毕后, 单击OK按钮结束,如图 4 -3所示的List. Box。如果项总数超出可以 显示的项数,则自动向 List. Box 控件添加滚动条。 常用属性: • Selection. Mode属性。 • Selected. Index属性。 • Selected. Item属性获取或设置 List. Box 中的当前选定项。 • Selected. Indices 属性,获取一个集合 。 • Selected. Items 属性,对于多重选择 List. Box,此属性返回一个集合。 • Sorted属性,该属性决定列表框中的项目在程序运行期间是否按 字母顺序排列显示。 • Text属性,该属性值是被选中的列表项的内容 。
4. 3. 1. 2 程序运行时改变List. Box项 List. Box的Item属性本身是一个集合对象,可以利用Item的 方法在程序运行期间给List. Box添加新的项目或删除某一项。 Ø 用Add方法在List. Box后添加一项: List. Box. Name. Item. Add(“新的表项”) Ø 要将某一项插入到指定位置,可以使用Insert方法: List. Box. Name. Item. Insert(n, “新的表项”) Ø 其中n表示要插入的位置。需要删除一项时,可以使用 Remove方法: List. Box. Name. Item. Remove. At(n) List. Box. Name. Item. Remove(“要删除的项”) Ø 使用项目的索引值,用Remove. At 方法;用Remove方法通过 删除项目本身的值来删除它。还可以使用Clear方法一次将所 有项全部删除。
右边是一个关于List. Box的 完整的例子。在List. Box中选 中一项,可以通过单击删除按 钮将它删去;也可以在 Text. Box中输入新项,单击加 入按钮将此项添加到List. Box中。 3个按钮的Name属性分别 为Btn. Add、Btn. Remove和 Btn. Exit。List. Box的Name属性 为Lstbox. Course。Text. Box的 Name属性为Txt. New。 在程序的设计阶段,已经 使用Item的字符串集合编辑器 添加了一些项。
下面分别为 3个按钮添加Click事件处理代码如下: Private Sub Btn. Add_Click(By. Val sender As System. Object, _ By. Val e As System. Event. Args) Handles Btn. Add. Click If Txt. New. Text <> "" Then Lstbox. Course. Items. Add(Txt. New. Text) End If End Sub Private Sub Btn. Remove_Click(By. Val sender As System. Object, _ By. Val e As System. Event. Args) Handles Btn. Remove. Click If Lstbox. Course. Selected. Index >= 0 Then Lstbox. Course. Items. Remove. At(Lstbox. Cours e. Selected. Index) End If End Sub Private Sub Btn. Exit_Click(By. Val sender As System. Object, _ By. Val e As System. Event. Args) Handles Btn. Exit. Click End Sub 程序运行结果如下,删除 了一些项,添加了3项
4. 3. 2 Checked. List. Box (复选列表框)的使 用在本质上与List. Box 是一样的,只是选项 在列表中显示的样式 稍有不同,即在每个 选项前有一个方框, 当要选该项时,单击 前面的方框即可。 Checked. List. Box控件
可以看到,在每一项的前面有一个方框。方框里面 有对号的表示已经选中的项。另外还有一项有一个蓝色 的条(上图是马克思主义哲学项)表示目前突出显示的 项。 需要注意: 属性Selected. Items 和 Selected. Indices 并不确定 哪些项已选中,它们确定哪些项为突出显示的项。如果 要确定那些项被选中,则需要对每一项分别调用方法 Get. Item. Checked,若调用结果为True,表示被选中;反 之,则未被选中。调用时,采用索引号指定某一项。若 有: Check. List. Box. Name. Get. Item. Checked(0) Check. List. Box. Name. Get. Item. Checked(1) 则由于第一项被选中所以第一个式子的结果为True; 而第二项未被选中,因此结果为False。Cheecked. List. Box 控件的添加项、删除项等的方法与List. Box是一样的。
4. 3. 3组合框(Combo. Box)的使用 Combo. Box (组合框)控 件结合了文本框和列表框二 者的特点。Combo. Box 控件 用于在下拉组合框中显示数 据。 默认情况下, Combo. Box 控件分两个部分 显示:顶部是一个允许用户 键入列表项的文本框。第二 个部分是列表框,它显示用 户可以从中进行选择的项的 列表。 与List. Box控件一样,可 以在Items属性中输入选项。 程序运行后可以单击 Combo. Box控件的下拉箭头 看到供选择的项。 默认状态下的Combo. Box控件 程序运行时通过单击下拉箭头来选择需要的项
Drop. Down模式 可以通过设置 Drop. Down. Style属性使得 Checked. List. Box控件有3种 不同的外观和运行方式, 3种方式分别是Drop. Down 、 Simple和Drop. Down. List如 右图所示: 其他方面,和List. Box 控件的用法基本相同。 Drop. Down. List模式 Simple模式 Combo. Box的3种模式
4. 3. 4 一个综合的例子 下面是一个查看课程的例子。用户首先通过一个Combox控 件选择专业,一旦用户选择完毕,该专业的课程将出现在 List. Box中。随后在List. Box中选择一个课程,单击课程详细信息 按钮,显示一个Message. Box对话框。对话框中显示有任课教师 姓名和课时数的信息。 创建该程序:新建一个项目取名为Course. Select,在窗体上放置 一个Combo. Box控件、一个List. Box控件和一个按钮控件。分 别设置他们的属性 。
在框架中添加代码如下: Private Sub Cmbox. Skill_Selected. Index. Changed(By. Val sender As Object, _ By. Val e As System. Event. Args) Handles Cmbox. Skill. Selected. Index. Changed Lstbox. Course. Items. Clear() Select Case Cmbox. Skill. Selected. Index Case 0 Lstbox. Course. Items. Add("离散数学(" Lstbox. Course. Items. Add("数据结 构(" Lstbox. Course. Items. Add("编译 原理(" Case 1 Lstbox. Course. Items. Add("电 力系统 (" Lstbox. Course. Items. Add("高电压 技术 (" Lstbox. Course. Items. Add("继电 保护 (" Case 2 Lstbox. Course. Items. Add("排队论 (" Lstbox. Course. Items. Add("管理信息系统 (" Case 3 Lstbox. Course. Items. Add("会计 学(" Lstbox. Course. Items. Add("国际 金融(" End Select End Sub
为Button控件的Click事件编写如下代码: Private Sub Btn. Detail_Click(By. Val sender As System. Object, _ By. Val e As System. Event. Args) Handles Btn. Detail. Click If Lstbox. Course. Selected. Index >= 0 Then Select Case Cmbox. Skill. Selected. Index Case 0 If Lstbox. Course. Selected. Index = 0 Then Message. Box. Show("任课 教师 :陈 明;课时 数: ("64 Else. If Lstbox. Course. Selected. Index = 1 Then Message. Box. Show("任课 教师 :王虎;课时 数: ("64 Else Message. Box. Show("任课 教师 :李博;课时 数: ("72 End If Case 1 If Lstbox. Course. Selected. Index = 0 Then Message. Box. Show("任课 教师 :李延;课时 数: ("48 Else. If Lstbox. Course. Selected. Index = 1 Then Message. Box. Show("任课 教师 :张讯 ;课时 数: ("64 Else Message. Box. Show("任课 教师 :钱 云;课时 数: ("72 End If Case 2 If Lstbox. Course. Selected. Index = 0 Then Message. Box. Show("任课 教师 :叶开;课时 数: ("96 Else Message. Box. Show("任课 教师 :郭靖;课时 数: ("32 End If Case 3 If Lstbox. Course. Selected. Index = 0 Then Message. Box. Show("任课教师:叶云;课时数:("48 Else Message. Box. Show("任课教师:黄容;课时数:("64 End If End Select Else Message. Box. Show("请选择课程(" End If End Sub 程序的运行结果,一旦选择了专业,List. Box会立即作出反应
用户选择了课程后的结果
用户未选择课程的结果
补充阅读 4. 4. NET 框架简介 . NET的最终目的是提供一个平台,以简单、安全、协调的方式来 开发和基于Web的服务。. NET框架则是. NET的重心。. NET 框架是一种 新的计算平台,它简化了在高度分布式 Internet 环境中的应用程序开发。. NET 框架旨在实现下列目标: • 提供一个一致的面向对象的编程环境,而无论对象代码是在本地存储和 执行,还是在本地执行但在 Internet 上分布,或者是在远程执行的。 • 提供一个将软件部署和版本控制冲突最小化的代码执行环境。 • 提供一个保证代码(包括由未知的或不完全受信任的第三方创建的代码) 安全执行的代码执行环境。 • 提供一个可消除脚本环境或解释环境的性能问题的代码执行环境。 • 使开发人员的经验在面对类型大不相同的应用程序(如基于 Windows 的应用程序和基于 Web 的应用程序)时保持一致。 • 按照 业标准生成所有通讯,以确保基于. NET 框架的代码可与任何其 他代码集成。
小结 Ø IF语句 üIF…THEN…Else语句 üIF…THEN…Else. If语句 ü嵌套IF…THEN语句 Ø Select Case语句(情况语句) Ø 组合框(Combo. Box) 、列表框( List. Box )、检查列表 框(Checked. List. Box)
作业 P 61: 第 5,6,7题
3756c26a2857ead9aedd5d927a467b2e.ppt