office办公软件实训2010版原材料-教材编写-第3章 选择结构
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第3章选择结构
程序代码由语句构成,默认情况下程序执行总是按语句的排列顺序自上而下逐句执行,就是顺序结构。
很多情况下,程序需要对一些条件进行判断,有选择地执行哪些语句,就是选择结构。
选择结构就是根据给定“条件”从两条或多条可能的分支中选择一个分支执行。
3.1 引例:字号变大系统登录
【例3-1】“字号变大系统登录”项目:创建标题为“系统登录”窗体,输入用户名和密码,单击“确定”按钮,出现相应的信息提示。
1)如果输入用户名错误,出现“用户名错误,请重新输入!”提示,如图3-1所示。
2)如果输入用户名正确,密码错误,出现“密码错误,请重新输入!”提示,如图3-2
所示。
用户名和密码输错了3次,退出系统。
3)如果用户名和密码都正确,出现“输入正确,欢迎使用系统!”提示。
同时原窗体
中除“退出”按钮外,其他控件全部隐藏,显示标签Label3,标签显示“字号”+
字号大小,如图3-3所示。
Label3控件字号大小会自动递增,一直到100。
窗体大
小设置为自动变化,窗体标题设置为“字号逐渐变大”。
图3-1 用户名错误提示
图3-2 密码错误提示
图3-3 进入字号逐渐变大系统
分析:将密码文本框的PasswordChar属性设置设置为“*”;用于显示字号和字号大小的标签一开始设置隐藏。
定时器一开始设置关闭。
部分代码如下:
Sub Button1_Click(…) Handles Button1.Click
Static n As Integer = 0 '静态变量控制输入次数
If TextBox1.Text <> "ymq" Then
MsgBox("用户名错误,请重新输入!", MsgBoxStyle.Exclamation, "警告") TextBox1.Text = ""
TextBox2.Text = ""
TextBox1.Focus() '文本框1获得焦点,光标移到用户名文本框
n = n + 1
Else '用户名正确
If TextBox2.Text <> "123456" Then
MsgBox("密码错误,请重新输入!", MsgBoxStyle.Exclamation, "警告") TextBox2.Text = ""
TextBox2.Focus() '光标移到密码文本框
n = n + 1
Else '密码也正确
MsgBox("输入正确,欢迎使用系统!", rmation, "提示") Label1.Visible = False : Label2.Visible = False
TextBox2.Visible = False : TextBox1.Visible = False
Button1.Visible = False : Label3.Visible = True
Timer1.Enabled = True : Me.AutoSize = True
Me.Text = "字号逐渐变大"
End If
End If
If n > 2 Then
MsgBox("输入超过三次, 退出程序!", MsgBoxStyle.Critical, "错误")
End
End If
End Sub
Sub Timer1_Tick(…) Handles Timer1.Tick
Static i% = 10 '静态变量控制字号大小
If i > 100 Then i = 100: Timer1.Enabled = False
Label3.Font = New Font(, i) '字号变化
Label3.Text = "字号" & i
i = i + 5
End Sub
条件满足?
达式 语句块 T F 3.2 If 语句
3.2.1 单分支结构(If…Then 语句)
单分支选择结构根据条件是否成立决定某语句执行还是不执行,包括块状和行式两种形式。
1. 单分支块状If 语句 语句形式: If <条件表达式> Then 语句块 End If
说明:
1) 条件表达式:用来描述某个条件,如果其值为True ,则表示条件满足,否则为不满足。
一般为关系表达式、逻辑表
达式,也可以算术表达式(表达式值按非零为True ,零为False 进行判断)。
2) 语句块:可以是一条或多条语句。
3) 作用:当条件表达式的值为True 时,也就是条件满足时,执行Then 后面的语句块,否则不做任何操作,执行End If 后续语句。
其流程参见图3-4。
【例3-2】“两个数比大小”项目:单击窗体,产生两个0~100之间的随机整数a 和b ,比较两者大小,使得a 大于b 。
运行结果如图3-5所示。
分析:两个数比较使用一个块If 语句。
代码如下:
Sub Form1_Click(…) Handles Me.Click
Dim a, b, t As Integer
a = Int(Rnd() * 101)
b = Int(Rnd() * 101)
Label1.Text = "原始值: a=" & a & ", b=" & b & vbCrLf If a < b Then '如果a 比b 小,则互换
t = a
a = b
b = t
End If
Label1.Text &= "降序后: a=" & a & ", b=" & b
End Sub
2. 单分支行式If 语句
语句形式:
If <条件表达式> Then <语句>
说明:
1) 该语句形式为单分支行If 语句,无End If 。
2) Then 后语句只能写在一行上,若要写多条语句,这些语句必须用冒号分隔。
只能是一条语句或语句间用冒号分隔,而且必须在一行上书写。
3) 作用:计算条件表达式的值,如果结果为True ,则执行Then 后面的语句(或语句块),否则跳过本语句,执行后续语句。
图3-4 单分支结构流程图 图3-5 两个数比大小
改写【例3-2】中的单分支块状If语句为单分支行If语句:
If a < b Then t = a:a = b:b = t
【例3-3】“三个数比大小”项目:单击窗体,产生三个0~100之间的随机整数a 、b 和c,比较三个数大小,使得a>=b>=c。
运行结果如图3-6所示。
图3-6 三个数比大小
分析:三个数比较使用三个块IF语句。
代码如下:
Sub Form1_Click(…) Handles Me.Click
Dim a, b, c, t As Integer
a = Int(Rnd() * 101)
b = Int(Rnd() * 101)
c = Int(Rnd() * 101)
Label1.Text = "原始值:a=" & a & ", b=" & b & ", c=" & c & vbCrLf
If a < b Then t = a : a = b : b = t
If a < c Then t = a : a = c : c = t
If b < c Then t = b : b = c : c = t
Label1.Text &= "降序后:a=" & a & ", b=" & b & ", c=" & c End Sub。