第3章 分支结构程序设计 3.1 关系、逻辑运算符及其表达式 3.2 If 语句 3.3 Select Case 语句.

Slides:



Advertisements
Similar presentations
1 程式語言 Visual Basic 循序結構、選擇結構 黃瀧輝 老師 Long Hwai,Huang.
Advertisements

10.2.switch语句.
Visual Basic 程序设计 第四讲.
計算機概論 第4章 基本視窗程式應用 4-1 程式語言簡介 4-2 演算法與流程圖 4-3 視窗程式語言設計 4-4 資料結構.
第10章 处理图形 Visual Basic 程序设计教程.
課程名稱:程式設計 授課老師:________
第四章 控制结构.
程式語言(I)- Visual Basic 6.0 第 9 章 結構化程式設計
密码程序设置.
VB教学中游戏化教学案例设计.
网 络 课 程 马 鞍 学 网 络 山 课 程 大 络 网 Visual Basic程序设计 第 一 讲 最容易接受的编程语言
初中数学八年级下册 (苏科版) 10.4 探索三角形 相似的条件(2).
C语言实验 第一课 标题:学号+姓名.
算法和程序设计 第4课 分支结构的算法设计 •.
Visual Basic程序设计.
VB內建函數與應用.
第6章 数 组 6.1 一维数组 6.2 控件数组 6.3 二维数组.
数组 第 6 章.
第5章 数组 Visual Basic程序设计.
Visual Basic 程序设计教程 机械工业出版社同名教材 配套电子教案 2003 年 6月.
过程 第 7 章.
选择结构设计 第 4 章.
第十一讲 VB常用标准控件(2).
Visual Basic程序设计基础 计算机科学学院.
第9章 访问数据库 9.1 数据库的概念与建立 9.2 用Data控件访问数据库.
第4章 程序控制结构与算法基础.
計算機程式 廖文淵 Department of Computer Science and Engineering
新觀念的 VB6 教本 第七章 讓程式轉彎的控制敘述.
Visual Basic 程序设计教程 机械工业出版社同名教材 配套电子教案 2003 年 6月.
第4章 基本的控制结构 4.1 顺序结构 4.2 选择结构程序设计 4.3 循环结构 4.4 综合实例 退出.
走进编程 程序的顺序结构(二).
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
Chap 3 分支结构 3.1 统计输入的一批字符中各类字符的数量 3.2 查询自动售货机中商品的价格 3.3 分支结构程序设计.
新觀念的 VB6 教本 第 6 章 資料型別.
广州市教育局教学研究室编写的 初中《信息技术》第二册第二章 《程序设计初步》
第四章 命令按钮、标签和文本框 大多数应用程序中都有命令按钮CommandButton控件,用户可以单击按钮执行某项操作。
Visual Basic程序设计.
第二章 Java语言基础.
算法与程序设计 周少品.
VB程序设计语言 主讲教师:王 杨.
VB程序设计语言 主讲教师:王 杨.
程式設計 Visual Basic簡介 週次:2 建國技術學院 資管系 饒瑞佶 2003年9月17日.
For x = 0 To 9 For y = 0 To 9 z = *x + 10*y …… Next y
Visual Basic 程序设计 第5章 选择结构设计
第4章 PHP流程控制语句.
现代信息技术 微电子技术 计算机技术 传感技术 通信技术 处理、存储信息的技术 传感、采集技术 传递信息的技术
第二章、第三章错题分析.
第4章 选择结构 本章要点: 单分支IF语句 双分支IF语句 多分支IF语句 SELECT和CASE语句.
C语言程序设计 第一章 数据类型, 运算符与表达式 第二章 顺序程序设计 第三章 选择结构程序设计 第四章 循环控制 第五章 数组.
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
第六章 Excel的应用 一、Excel的单元格与区域 1、单元格:H8, D7, IV26等 2、区域:H2..D8, HS98:IT77
第4章 Excel电子表格制作软件 4.4 函数(一).
实验三 16位算术逻辑运算实验 不带进位控制的算术运算 置AR=1: 设置开关CN 1 不带进位 0 带进位运算;
选择结构设计 第 4 章 程序流程有三种最基本的控制结构,即顺序结构、选择结构和循环结构。
第九节 赋值运算符和赋值表达式.
用穷举法设计程序 南京师范大学 教育技术系 倪佳慧
3.16 枚举算法及其程序实现 ——数组的作用.
第四章 控制结构 1、顺序控制结构 2、选择结构 3、循环结构.
计算机应用基础 潍坊学院 计算机工程学院 主讲人:丁素英.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
第5章 数组 5.1 数组概述 5.2 静态数组和动态数组 5.3 数组的基本操作 5.4 控件数组 5.5 数组在自定义数据类型中的应用.
3.13 选择结构程序设计初步.
复习 标签(label)、文本框(text)控件 按钮:点击事件
解析算法与枚举算法.
算法与Visual Basic程序基础(二)
鸡兔同笼(续) ——选择结构.
1.2.2条件语句.
第六讲 酒店客房管理系统(二) 教育部“十二五”职业教育国家规划教材
顺序结构程序设计 ——关于“字符串”和数值.
第二次课后作业答案 函数式编程和逻辑式编程
Presentation transcript:

第3章 分支结构程序设计 3.1 关系、逻辑运算符及其表达式 3.2 If 语句 3.3 Select Case 语句

3.1 关系、逻辑运算符与表达式 要实现分支结构,一般先需要判断给定的条件,然后再根据判断的结果进行相应的处理。在判断条件时,最常用的运算符是关系运算符和逻辑运算符。

【例3.1】在窗体上添加两个命令按钮。 单击 单击

编写代码: Private Sub cmdNum_Click() Cls Print " 关系运算实例" Print Print " True<>1", True <> 1 Print " 3>1>=0", 3 > 1 >= 0 End Sub   数值型关系表达式实例

Private Sub cmdChar_Click() Cls Print " 关系运算实例" Print   Private Sub cmdChar_Click() Cls Print " 关系运算实例" Print Print " abc=abc", "abc" = "abc“ Print " ade>abcf", "ade" > "abcf“ Print " abcd>ab", "abcd" > "ab" End Sub 字符型关系表达式实例

说明: 关系运算是对运算符左右两边的表达式进行比较,而且比较的结果只能为“真”或“假”; 对于数值型数据按其数值大小比较,在VB中True对应的数值为-1,False对应的数值为0; 对于字符型数据从字符串的第一个字符开始,逐个按其ASCII码值进行比较。

【例3.2】在窗体上添加3个命令按钮。 单击 单击 单击

程序代码: Private Sub cmdAnd_Click() Cls Print Tab(12); "逻辑运算实例" Print Print "3>1 And 1>=0"; Spc(8); 3 > 1 And 1 >= 0 Print "True<>1 And False"; Spc(3); True <> 1 And False End Sub   逻辑与运算

Private Sub cmdOr_Click() Cls Print Tab(12); "逻辑运算实例" Print   Private Sub cmdOr_Click() Cls Print Tab(12); "逻辑运算实例" Print Print "abC<aBC Or ac>AC"; Spc(4); "abc" < "aBC" Or "ac" > "AC" Print " 3>5 Or False=0"; Spc(6); 3 > 5 Or False = 0 End Sub 逻辑或运算

Private Sub cmdNot_Click() Cls Print Tab(12); "逻辑运算实例" Print Print "Not(False=0)"; Spc(7); Not (False = 0) Print "Not(3<5)"; Spc(11); Not (3 < 5) End Sub 逻辑非运算

说明: VB中各种运算符其运算的先后顺序是: 算术运算符 字符串运算符 关系运算符 逻辑运算符

3.2 If语句 3.2.1 单行If语句 3.2.2 多行If语句 3.2.3 If语句的嵌套

3.2.1 单行If语句 分支结构就是利用计算机语言来描述分支现象,即,通过比较和判断来决定采取何种操作。在VB中,通常用If语句、Select Case语句或条件函数解决分支结构问题。

【例3.3】输入一个数,判断该数是奇数还是偶数。在窗体上添加两个文本框、一个标签、三个命令按钮。 判断奇偶性 重新输入 结束运行

程序代码: Private Sub cmdJudge_Click() a = Val(Text1.Text) If a Mod 2 = 0 Then b$ = "偶数" Else b$ = “奇数" Text2.Text = b$ End Sub 根据条件有选择地执行其中一个

Private Sub cmdClear_Click() Text1.Text = "" Text2.Text = "" Text1.SetFocus End Sub Private Sub cmdExit_Click() End 清空文本框,并将焦点定位在Text1中

判断某数是奇数还是偶数的流程图 开始 a=Val(Text1.Text) Yes No a Mod2=0? b$="偶数" b$="奇数" Text2.Text=b$

【例3.4】计算以下分段函数的值。在窗体上添加两个文本框、两个标签和两个命令按钮。 【例3.4】计算以下分段函数的值。在窗体上添加两个文本框、两个标签和两个命令按钮。  2 (0<x≤2) x3+1 (x≤0) 5x (x>2) y= 计算函数值 结束运行 重新输入

程序代码: Private Sub txtInput_Change() Dim x, y As Integer x = Val(txtInput.Text) If x <= 0 Then y = x ^ 3 + 1 If x > 0 And x <= 2 Then y = 2 If x > 2 Then y = 5 * x txtResult.Text = y End Sub 单行If语句

x = Val(textInput.Text) y = 2 x > 0 And x <= 2 ? x <= 0 ? y = x ^ 3 + 1 y = 5 * x txtResult.Text = y 定义x,y Yes No 计算分段函数的流程图

单行If语句的一般格式为: If 表达式 Then 语句1 [Else 语句2]

说明: If、Then、Else是系统保留字; 非0 表达式 语句1 语句2

根据情况可以省略子句“Else 语句2” 语法上要求“语句1”和“语句2”均为一条语句,若要用多条语句,则需用“ :”隔开

【例3.5】在窗体上分别添加一个标签和复选框。 单击复选框,未选中时情况 单击复选框,选中时情况

Private Sub chk1_Click() If chk1.Value=1 Then Label1.Caption= “选中” Else Label1.Caption = "未选中" End Sub 根据Value值,判断是否选中

说明: 复选框有3种状态,其状态用Value属性值表示,0表示没有选中;1表示选中;2表示选中但不可用(复选框呈灰色); 通过If…Then…Else语句实现对复选框不同状态的信息显示。

【例3.6】在窗体上添加一个文本框、一个标签、4个复选框和一个命令按钮。 单击“确定”,改变文本框中数据的字体、字型、大小和颜色

Private Sub cmdOk_Click() If chkFnt.Value Then txt1.FontName = “ 宋体“ Else txt1.FontName = “黑体” If chkItc.Value Then txt1.FontItalic = True Else txt1.FontItalic = False   若选中字体复选框,则文本框中的字体设置为宋体,否则为黑体 若选中斜体复选框,则文本框中的字型设置为斜体,否则为正常字型

If chkCol.Value Then txt1.ForeColor = 未选中大小复选框时 选中大小复选框时   If chkSz.Value Then txt1.FontSize = 18 Else txt1.FontSize = 24   If chkCol.Value Then txt1.ForeColor = QBColor(6) Else txt1.ForeColor=QBColor(0) End Sub  黄色 黑色

说明: 使用4个If语句处理各复选框的选择情况。当If后面表达式的值为非0时,执行Then后面的语句,否则执行Else后面的语句; QBColor是VB提供的函数,它返回不同的颜色,其调用形式是:QBColor(颜色参数) 其中颜色参数是介于0到15之间的整数。

【例3.7】在窗体上添加3个文本框、3个标签、两个单选按钮和两个命令按钮。 单击选择 显示最大或最小数 退出整个程序 重新输入数据

编程点拨 本例涉及到程序算法问题。为了在3个数中求出最大数或最小数,可设计如下流程图(以求最大数为例):

max<Val(Text2.Text)? max<Val(Text3.Text)? Yes max = Val(Text2.Text) max = Val(Text3.Text) Label3.Caption = max No max<Val(Text3.Text)? 求解最大数的流程图

程序代码: Private Sub option1_Click() max = Val(Text1.Text) 程序代码:  Private Sub option1_Click() max = Val(Text1.Text) If max < Val(Text2.Text) Then max = Text2.Text If max < Val(Text3.Text) Then max = Text3.Text Label3.Caption = max End Sub   max中存放第一个数 找前两个数中大者 找三个数中最大者

Private Sub option2_Click() min = Val(Text1.Text) If min > Val(Text2.Text) Then min = Text2.Text If min > Val(Text3.Text) Then min = Text3.Text Label3.Caption = min End Sub

Private Sub cmdClear_Click() Text1.Text = "" : Text2.Text = "": Text3.Text = "" Label3.Caption = "" Text1.SetFocus End Sub Private Sub cmdExit_Click() End

说明: max是为了存放最大数而开辟的变量,min是为存放最小数而开辟的变量; 本例中用到一个新的控件——单选按钮。其特点是在一组单选按钮中只能选中其中的一项。

3.2.2 多行If语句 多行If 语句也称为块 If 语句,在一个分支结构中若使用多条语句,则需用多行If语句实现。

【例3.8】编写验证密码程序。在窗体1上添加一个文本框、一个标签、一个命令按钮。在窗体2上添加一个标签、一个命令按钮。 验证密码是否正确 进入窗体2 退出整个程序

Private Sub cmdCheck_Click() If Text1.Text = "123456" Then 窗体1的代码: Private Sub cmdCheck_Click() If Text1.Text = "123456" Then MsgBox "密码正确,请进入!" frmEx3_8_1.Hide frmEx3_8_2.Show Else MsgBox “密码错,请重新输入!” Text1.Text = "“ Text1.SetFocus End If End Sub 多行IF语句 语句组 完成窗体间的切换

窗体2的代码: Private Sub cmdExit_Click() End End Sub

说明: 多行If语句的一般形式是: If 表达式 Then 语句组1 [Else 语句组2] End If

语句组不能与Then书写在同一行 省略Else子句时的多行If语句形式为: If 表达式 Then 语句组 End If

【例3.9】将输入的3个不同的整数,按小到大的顺序重新排序输出。在窗体上添加3个标签、3个文本框和两个命令按钮。 排序结果 单击时, 按小到大的顺序将数据显示在标签中 单击时, 重新输入数据

三个数排序过程 冒泡法 If a > b Then temp = a: a = b: b = temp End If 345 a 234 b 123 c If a > c Then temp = a: a = c: c = temp End If 234 345 123 a b c 冒泡 冒泡 If b > c Then temp = b: b = c: c = temp End If 123 234 234 123 345 a b c

a > b ? Yes 交换a和b b > c ? 交换b和c 输入a,b,c 3个数 输出a,b,c No 3个数排序的流程图

Private Sub cmdSort_Click() Dim a As Long, b As Long, c As Long, temp As Long a = Val(txtInput1.Text) b = Val(txtInput2.Text) c = Val(txtInput3.Text)

If a > b Then temp = a a = b b = temp End If If a > c Then a = c c = temp If b > c Then temp = b b = c b中存放a和b中较大的数 c中存放3个数中的最大数 b中存放3个数中次大数

lblOuput.Caption = a & Space(2)& b & Space(2) & c End Sub Private Sub cmdNext_Click() txtInput1.Text = "" txtInput2.Text = "" txtInput3.Text = "" lblOuput.Caption = "" txtInput1.SetFocus End Sub 显示排序结果

说明: 为了实现排序算法,使用3个多行If语句。各If语句均省略了Else情况; 定义temp临时变量,借用它完成两数之间的交换。

【例3.10】在窗体上添加4个标签、一个计时器、一个图像框和一个命令按钮。 数值相同,表示中大奖 单击时,不停地显示0到9之间的随机整数

对 象 属性名 属性值 窗 体 Caption 祝你走运中大奖! 图像框 Stretch True Visible False 标签1~3 BorderStyle 1 标签4 计时器 Interval 100 Enabled

Private Sub Command1_Click() Timer1.Enabled = True Dim i As Integer Private Sub Command1_Click() Timer1.Enabled = True Command1.Enabled = False Form1.Height = 2100 End Sub 声明窗体级变量 窗体的高度为2100点

Private Sub Timer1_Timer() Randomize Label1.Caption = Format(Int(Rnd * 10)) Label2.Caption = Format(Int(Rnd * 10)) Label3.Caption = Format(Int(Rnd * 10)) If Label1.Caption = Label2.Caption And Label2.Caption = Label3.Caption Then Image1.Visible = True Label4.Visible = True Timer1.Enabled = False Form1.Height = 3600 Command1.Enabled = True i = 0 Else Image1.Visible = False Label4.Visible = False End If 每隔0.1秒触发一次 产生3个随机数 判断是否相等

计算投币时间 If i >= 50 Then MsgBox “对不起,没有中奖!” Label1.Caption = "" i = i + 1 If i >= 50 Then MsgBox “对不起,没有中奖!” Label1.Caption = "" Label2.Caption = "" Label3.Caption = "" Command1.Enabled = True Timer1.Enabled = False i = 0 End If End Sub 计算投币时间

说明: 使用计时器控制随机数产生的时间间隔。由于每隔0.1秒产生3个随机数,因此将产生随机数的语句写在计时器的Timer事件中。程序中通过If…Then…Else结构实现是否中奖的处理;

程序中变量i是用来判断是否已过5秒钟,因此每次触发Timer事件时,i应代表同一个存储单元,所以本例在“通用”段中使用语句Dim i As Integer声明了变量i(这时称i为窗体级变量)。

3.2.3 If语句的嵌套 在If语句的If或Else后面还可以包含另一If语句,这样结构的If语句称为If语句的嵌套。

【例3.11】查看商品单价。在窗体上添加两个框架(分别在每一个框架中添加两个单选按钮)和一个命令按钮。

Private Sub cmdDisplay_Click() If optBanana.Value=True Then If optWhole.Value=True Then a=MsgBox(“单价是1.8元!”,vbOKOnly,“批发时香蕉单价”) Else a=MsgBox(“单价是2.3元!”,vbOKOnly,“零售时香蕉单价”) End If If optWhole.Value = True Then a=MsgBox(“单价是1.5元!”,vbOKOnly,“批发时葡萄单价”) a=MsgBox(“单价是2.0元!”,vbOKOnly,“零售时葡萄单价”) End Sub

嵌套If语句的一般形式 If 表达式1 Then [语句组1] If 表达式2 Then 语句组2 [Else 语句组3] End If [语句组4] [语句组5] If 表达式3 Then 语句组6 语句组7 [语句组8] ] 外 层 If 语 句 嵌套If语句的一般形式 内层If语句 内层If语句

【例3.12】用计时器控制旋转木马在窗体内摇摆运动。在窗体上添加一个标签、一个计时器、一个图片框和一个直线控件。 程序运行时, 木马摇摆运动

编程点拨 要使木马在窗体内产生摇摆运动,需要做两件事请,一是将木马摇摆状态的三幅图按顺序轮流在一个图片框上显示;二是使图片框不断向左移动。 轮流显示

Dim i As Integer Private Sub Timer1_Timer() If Picture1.Left + Picture1.Width < 10 Then Picture1.Move 3900 Else Picture1.Move Picture1.Left – 100 If i Mod 4 = 1 Then Picture1.Picture=LoadPicture("horse1.gif") ElseIf i Mod 4 = 0 Or i Mod 4 = 2 Then Picture1.Picture=LoadPicture("horse2.gif") Picture1.Picture=LoadPicture("horse3.gif") End If i = i + 1 End Sub 图形向左移动 摇摆状态相当于有4种

If 表达式1 Then 语句组1 ElseIf 表达式2 Then 语句组2 ElseIf 表达式3 Then 语句组3 …… ElseIf 表达式n Then 语句组n [Else 语句组n+1] End If 多分支If语句的一般形式

3.3 Select Case 语句 一个If语句最多只能实现两个分支问题,所以要解决多分支问题时,必须使用嵌套的If语句和上例中用到的If…Then…ElseIf语句。在实际应用中,对于多分支选择,更方便的方法是使用本节将要介绍的Select Case语句来实现。

【例3.13】Select Case语句示例。在窗体上添加1个标签、1个文本框、1个命令按钮和形状控件。 单击时,显示相应的图形

Private Sub Command1_Click() Dim a As Integer a = Val(Text1.Text) Select Case a Case 0 Shape1.Shape = 0 Case 1 Shape1.Shape = 1 Case 2 Shape1.Shape = 2 Case 3 Shape1.Shape = 3 Case 4 Shape1.Shape = 4 Case 5 Shape1.Shape = 5 Case Else MsgBox "Wrong" End Select End Sub 矩形形状 正方形形状 椭圆形形状 圆形形状 圆角矩形形状 圆角正方形形状 对0-5之外,显示出错信息

程序执行的流程图 a=? 1 2 3 4 5 其他 Shape置0 Shape置1 Shape置2 Shape置3 Shape置4 出错信息 1 2 3 4 5 其他

Select Case语句的一般格式: Case 表达式表1 语句组1 Case 表达式表2 语句组2 …… Case 表达式表n 语句组n [Case Else 语句组n+1] End Select

说明: 表达式可以是一个常量或变量,也可以是数值型表达式或字符型表达式; Case后面的“表达式表”用来判断其值是否与测试表达式相匹配,若匹配,则执行该Case后面的语句组后,立即退出本Select Case语句;若所有的Case后面的“表达式表”,其值与测试表达式均不匹配,则执行Case Else后面的语句组。

【例3.14】在窗体上按图所示添加标签、文本框和命令按钮。 单击时,显示对应的成绩等级 单击时,重新输入成绩 单击时,退出程序

Private Sub Form_Activate() txtScore.Text = "" txtResult.Text = "" txtScore.SetFocus End Sub 使用窗体的Activate事件设置文本框的焦点

Private Sub cmdCheck_Click() score = Val(txtScore.Text) If score < 0 Or score > 100 Then MsgBox(“数据超范围!”) Else Select Case score Case Is >= 90 txtResult.Text = "A“ Case Is >= 80 txtResult.Text = "B“ Case Is >= 70 txtResult.Text = "C“ Case Is >= 60 txtResult.Text = "D“ Case Else txtresult.Text = "E“ End Select End If End Sub 判断成绩的5个等级 判断从上而下,直到遇到第一个满足条件的

Private Sub cmdClear_Click() Form_Activate End Sub Private Sub cmdEnd_Click() End 调用Form_Activate过程