Visual Basic 程序设计

Download Report

Transcript Visual Basic 程序设计

第4章 控制结构
4.1 顺序控制结构
4.2 选择结构
4.3 循环结构
4.4 其他辅助控制语句
Visual Basic 程序设计
4.1 顺序控制结构
一、赋值语句
形式:变量名=表达式
对象.属性=表达式(或属性值)
作用: 将表达式的值赋值给变量名。
一般用于给变量赋值或对控件设定属性值。
例: x=0.1
Text1.Text = "欢迎使用Visual Basic 6.0 "
当表达式的类型与变量的类型不一致时,强制转换成左边
的精度,如
a% = 10 / 3
iA中的结果为3
注意:虽然赋值号与关系运算符等于号都用“=”表示,VB系统
会根据所处的位置自动判断是何种意义的符号。
Visual Basic 程序设计
二、与用户交互函数和过程
1. InputBox函数
InputBox()函数可以产生一个对话框,这个对话框作为输入数
据的界面,等待用户输入数据,当用户单击“确定“按钮或回
车时,函数返回输入的值,类型为字符型。函数格式如下:
变量 = InputBox(提示[,标题][,缺省][,x 坐标位置][,y坐
标位置])
Visual Basic 程序设计
2. MsgBox函数和MsgBox过程
函数形式:变量[%] = MsgBox(提示[,按钮][,标题])
按钮值如下:
函数返回所选按钮整数值:
Visual Basic 程序设计
若不需要返回值,则可以使用MsgBox过程形式:
MsgBox〈信息内容〉[,〈对话框类型〉[,标题〉]]
Visual Basic 程序设计
4.2 选择结构
学习要点:
• If…Then结构
• If…Then…Else结构
• 多分支If结构:If…Then…ElseIf
• Select Case结构
Visual Basic 程序设计
If结构
1. If…Then语句(单分支结构)
If <表达式> Then
语句块
End If
或 If <表达式> Then <语句>
注:如果表达式的值为真(True),执行Then后的语
句块内容;否则不执行语句块内容。
说明:表达式可以是:关系表达式、逻辑表达式、算
术表达式。若为算术表达式,值为0则为False,非0
则为True。
Visual Basic 程序设计
例:已知两个数x和y,比较它们的大小,
使得x大于y.
If x<y Then
t=x
‘将变量x中的值暂时存放于变量t中
x=y
‘用变量y中的值替代变量x中的值
y=t
‘再将原变量x中的值替代变量y中的值
End If
或 If x<y Then t=x: x=y: y=t
Visual Basic 程序设计
2. If…Then…Else语句(双分支结构)
If <表达式> Then
<语句块1>
Else
<语句块2>
End If
If <表达式> Then <语句1> Else <语句2>
Visual Basic 程序设计
If…Then…Else结构示例
例:编写一个程序,实现当用户输入的用户
名和口令都正确时显示"欢迎登录"的消息对话
框,当用户名或口令有错误时显示消息对话框
报告错误。
– 界面设计:
Visual Basic 程序设计
If…Then…Else结构示例
– 编写代码:
Private Sub Command1_Click()
Dim user As String
Dim psw As String
user = Text1.Text
T = Text2.Text
psw
F
用户名和口
令正确吗?
If user ="SYL" And psw = "123456" Then
显示"欢迎"
显示"错误"
MsgBox
"欢迎您登录本系统!"
消息框
消息框
Else
MsgBox “您的用户名或口令有误,请重新输入!”
End If
End Sub
Visual Basic 程序设计
例: 编写一医生工作站的登录检验程序,运行界面如图。对登录名
(医生工号)和密码的规定如下:
(1)医生工号不超过6位数字,密码为6位字符,密码输入时显示
为“*”。本题假设密码为“cljuan”。
(2)当医生工号输入非数字字符,密码不正确时,显示相关信息。
(3)若单击“重试”按钮,则清除原来输入的内容,焦点定位在
原输入文本框,等待用户输入。若单击取消按钮,程序停止运
行。
Visual Basic 程序设计
• Private Sub Command1_Click()
• Dim i As Integer
• IF Not Text2 = "cljuan" Then
• i= MsgBox("密码错误", 5 +64+ 0 + VBSystemModel, "登录
密码")
•
IF i = 2 Then End Else Text2 = ""
•
‘用户单击“取消”按钮返回按钮值
•
‘用户单击”重试”按钮文本框置空,等待用户重新
输入
•
Text2.SetFocus
‘将焦点设置在文本框2上,方便用户输入
• End IF
• End Sub
Visual Basic 程序设计
Private Sub Text1_LostFocus()
‘ 焦点离开文本框1时触发LostFocus事件
IF Not IsNumeric(Text1) Then
‘利用IsNumeric()函数判断文本框中输入的
是否为数字字符
MsgBox "医生工号必须是数字字符"
Text1 = ""
Text1.SetFocus
End IF
End Sub
Visual Basic 程序设计
3. If…Then…ElseIf语句(多分支结构)
形式:
If <表达式1> Then
<语句块1>
ElseIf <表达式2>Then
<语句块2>
…
[Else
语句块 n+1 ]
End If
Visual Basic 程序设计
多分支If结构示例
例:编写一个程序,根据用户输入的某个学生的
成绩评出优、良好、中等、及格和不及个五个
等级。判断标准如下:
不及格 score<60
及格 60≤score<70
等级
中等 70≤score<80
良好 80≤score<90
优
score≥90
Visual Basic 程序设计
– 分析:
• 本题要解决的问题是根据输入学生的成绩来判断
该学生的成绩等级。有一个输入量(学生的成绩)
和一个输出量(判断结果),所以用一个文本框
来接受用户输入,一个文本框来进行输出。再添
加一个"判断"按钮,和一个"退出"按钮。
– 界面设计:
Visual Basic 程序设计
– 编写代码:
Private Sub Command1_Click()
Dim score As Single
Dim s As String
score = Val(Text1.Text)
If score < 60 Then
s = "不及格"
ElseIf score < 70 Then
s = "及格"
ElseIf score < 80 Then
s = "中等"
ElseIf score < 90 Then
s = "良好"
Else
s = "优"
End If
Text2.Text = s
End Sub
Visual Basic 程序设计
T
4.If语句的嵌套
If语句的嵌套是指If或Else后面的语句块中又包含
If语句。
形式如下:
If <表达式1> Then
If <表达式11> Then
…
End If
…
End If
If 语句的嵌套注意事项:书写锯齿型; If 与End If 配对。
Visual Basic 程序设计
例4-6在文本框中输入1-1000之间的数字,如果输入非数值,或
数值超出范围,给予提示,并重新输入。运行效果及程序代码
如下:
Private Sub Form_Load()
Text1.Text = ""
Text2.Text = ""
End Sub
Visual Basic 程序设计
Private Sub Text1_KeyPress(KeyAscii As Integer)
•If KeyAscii = 13 Then
'回车键的ASCII码值为13
• If IsNumeric(Text1.Text) Then
'判断是否是数值
•
x = Val(Text1.Text)
•
If x < 0 Or x > 1000 Then
•
Text1.Text = ""
•
Text1.SetFocus
'焦点回到文本框
•
Text2.Text = "数值超出范围,再输入!"
•
'文本框中显示提示信息
•
Else
•
Text2.Text = "输入正确!"
•
End If
• Else
•
Text1.SetFocus
•
Text2.Text = "请输入数字!"
• End If
•End If
•End Sub
Visual Basic 程序设计
5. Select Case语句(情况语句)
Select Case 变量或表达式
Case 表达式列表1
语句块1
Case 表达式列表2
语句块2
…
[Case Else
语句块n+1]
End Select
数值型或字符串表达式
<表达式列表>:与<变量或表达式>同类型的下面四种形式之一:
表达式
例: "A"
一组枚举表达式(用逗号分隔)
2,4,6,8
表达式1 To 表达式2
60 To 100
Is 关系运算符表达式
Is < 60
Visual Basic 程序设计
6.条件函数
(1)IIf函数形式是:
IIf(表达式,当表达式为True时的值,当表达式为False时的值)
例如,求x,y中大的数,放入Tmax变量中,语句如下:
Tmax=IIf(x > y,x,y)
(2)Choose函数形式是:
Choose(数字类型变量,值为1的返回值,值为2的返回值……)
例如,Nop是1-4的值,转换成 + 、-、×、÷运算符的语句如下:
Op= Choose(Nop,"+","-","×","÷")
当值为1,返回字符串“+”,然后放入Op变量中,值为2,返回字
符串“-”,依次类推;当Nop是1-4的非整数,系统自动取Nop的整
数办法在判断;若Nop不在1~4之间,函数返回Null值。
Visual Basic 程序设计
4.3 循环结构
学习要点:
• 掌握For循环控制结构
• 掌握DO循环结构
• 循环的嵌套
• 常用算法
Visual Basic 程序设计
1. For循环语句 (一般用于循环次数已知),形式如下:
For 循环变量=初值 to 终值 [Step 步长]
语句块
循环体
[Exit For]
语句块
Next 循环变量
步长
>0 初值<终值 =1 时,可省略
<0 初值>终值
=0 死循环
循环次数
 Int(
终值初值
步长
1)
Visual Basic 程序设计
例4-8求100以内所有数的和。
程序块如下:
Sum =0
For i= 1 To 100
Sum=Sum+i
Next i
‘sum 为累加和变量,设初值为0
又如:求10的阶乘。
T=1
‘T为连乘积的变量,设初值为1
For i=1 To 10
T=T*i
Next i
Visual Basic 程序设计
例: 计算1~100的奇数和,程序段如下:
Dim i %, s%
s=0
For i = 1 To 100 step 2
s = s + i
Next i
Visual Basic 程序设计
2. Do…Loop循环语句(用于控制循环次数未知)
形式1:
Do { While|Until }<条件>
语句块
[Exit Do
语句块]
Loop
形式2:
Do
语句块
[Exit Do
语句块]
Loop { While|Until} <条件>
Visual Basic 程序设计
例:我国有13亿人口,按人口年增长0.8%计算,多少年后我
国人口超过26亿。
分析:解此问题两种方法,可根据公式:26=13*(1+0.008)n
直接利用标准对数函数求得;也可利用循环求得,程序如下:
Private Sub Command1_Click()
x = 13
n=0
Do While x < 26
x = x * 1.008
n=n+1
Loop
Print n, x
End Sub
Visual Basic 程序设计
3.循环的嵌套
在一个循环体内又包含了一个完整的循环结构称为循环的
嵌套。循环的嵌套对For循环语句和Do…Loop语句均适用。对
于循环的嵌套,需要注意以下事项:
内循环变量与外循环变量不能同名。
外循环必须完全包含内循环,不能交叉。
以下程序段是错误的:
• (1)内外循环变量同名错误:
•
For i=1 To 10
•
For i =1 To 20
•
….
•
Next i
•
Next i
• (2)内外循环交叉
•
For i = 1 To 10
•
For j=1 To 10
•
…
•
Next i
•
Next j
Visual Basic 程序设计
4.4 其他辅助控制语句
1. Go To 语句
形式: Go To {标号|行号}
作用:无条件地转移到标号或行号指定的那行语句.
标号是一个字符序列,行号是一个数字序列.
2.Exit语句
多种形式: Exit For、Exit Do、Exit Sub、Exit Function等。
作用:退出某种控制结构的执行。
3. End语句
多种形式: End、 End If、 End Select、 End With、 End Type、
End Sub、 End Function、
作用:End结束一个程序的运行;其余表示某个结构的结束,与
对应的结构语句配对出现。
Visual Basic 程序设计
4.With 语句
形式如下:
With 对象
语句块
End With
作用:对某个对象执行一系列的操作,而不用重复指出对象的
名称。
With Label1
.Height = 2000
等价
.Width = 2000
.FontSize=22
.Caption = "MyLabel"
End With
Label1.Height = 2000
Label1.Width = 2000
Label1.FontSize=22
Label1.Caption = "MyLabel"
Visual Basic 程序设计
常用算法
例:求100以内的素数
素数也成质数,就是大于2且只能被1和本身整除的整数。
我们从素数的定义来求解:从i=2,3,4,…,m-1依次判断
m能否被i整除,只要有一个能整除m就不是素数,否则m为素数。
运行结果如图
Visual Basic 程序设计
• Private Sub Command1_Click()
• Dim i As Integer, m As Integer, Flag As Boolean, n As
Integer
• Print "100以内的素数有"
• For m = 3 To 100
•
Flag = True
•
For i = 2 To m - 1
•
IF (m Mod i) = 0 Then Flag = False
•
Next i
•
IF Flag = True Then
•
n=n+1
•
Print Spc(3 - Len(Str(m))); m;
•
IF n Mod 10 = 0 Then Print
•
End IF
• Next m
• End Sub
Visual Basic 程序设计
例:利用随机函数产生20个50~100范围内的随机数,显示最
大值和最小值。运行界面如图:
在若干个数中求最大值,一般先假设一个较小的数为最大值
的初值,若无法估计较小的值,则取第一个数为最大值的初值;
然后将每一个数与最大值比较,若该数大于最大值,将该数替换
为最大值;依次逐一比较。
Visual Basic 程序设计
Private Sub Command1_Click()
Dim maxa As Integer, mina As Integer, x As Integer, i%
Form1.Cls
‘每单击一次清除原来内容
maxa = 50
‘假设较小的数为最大
mina = 100
‘假设较大的数为最小
Randomize
For i = 1 To 20
x = Int(Rnd * 51 + 50)
Print x;
IF i Mod 10 = 0 Then Print
IF x > maxa Then maxa = x
IF x < mina Then mina = x
Next i
Print
Print "最大值为"; maxa
Print "最小值为"; mina
End Sub
Visual Basic 程序设计
例:使用循环语句在窗体上输出第2章中例2-2中的图形。
程序运行界面如图
Visual Basic 程序设计
程序代码如下:
Private Sub Command1_Click()
Dim n As Integer
Cls
n = Val(Text1.Text)
If n > 0 Then
For i = 1 To n
Print Tab(2 * i); String(n + 1 - i, "★"); spc(1);
String(i, "★")
Next i
End If
End Sub
Visual Basic 程序设计
例:使用循环语句在窗体上输出如下图形。程序运行界面如图
Visual Basic 程序设计
Private Sub Command1_Click()
Dim n As Integer
Cls
n = Val(Text1.Text)
For i = 1 To n
Print Tab(15 - i); String(2 * i - 1, Chr(48 + i))
Next I
End Sub
Visual Basic 程序设计
例:使用循环语句在窗体上输出n(文本框输入)个随机大写字
母,每行显示5个。程序运行界面如图
Visual Basic 程序设计
Private Sub Command3_Click()
Dim n%, i%, m%, x As String
Cls
n = Val(Text1.Text)
For i = 1 To n
x = Chr(Int(Rnd * 26 + 65))
Print x; Spc(2);
m = m + 1
If m Mod 5 = 0 Then Print
Next i
End Sub
Visual Basic 程序设计