第 4 章 控制结构

42
Visual Basic Visual Basic 程程程程 程程程程 程 4 程 程程程程 4.2 程程程程 4.3 程程程程 4.4 程程程程程程程程 4.1 程程程程程程

description

第 4 章 控制结构. 4.1 顺序控制结构. 4.2 选择结构. 4.3 循环结构. 4.4 其他辅助控制语句. 4.1 顺序控制结构. 一、赋值语句 形式: 变量名=表达式 对象 . 属性=表达式(或属性值) 作用: 将表达式的值赋值给变量名。 一般用于给变量赋值或对控件设定属性值。 例: x=0.1 Text1.Text = " 欢迎使用 Visual Basic 6.0 " 当表达式的类型与变量的类型不一致时,强制转换成左边的精度,如 - PowerPoint PPT Presentation

Transcript of 第 4 章 控制结构

Visual Basic Visual Basic 程序设计程序设计

第 4 章 控制结构

4.2 选择结构4.3 循环结构4.4 其他辅助控制语句

4.1 顺序控制结构

Visual Basic Visual Basic 程序设计程序设计

4.1 顺序控制结构一、赋值语句 形式:变量名=表达式 对象 . 属性=表达式(或属性值) 作用: 将表达式的值赋值给变量名。 一般用于给变量赋值或对控件设定属性值。 例: x=0.1 Text1.Text = " 欢迎使用 Visual Basic 6.0 " 当表达式的类型与变量的类型不一致时,强制转换成左边的精度,如 a% = 10 / 3 iA 中的结果为 3 注意:虽然赋值号与关系运算符等于号都用“ =” 表示, VB系统会根据所处的位置自动判断是何种意义的符号。

Visual Basic Visual Basic 程序设计程序设计

二、与用户交互函数和过程 1. InputBox 函数InputBox ()函数可以产生一个对话框,这个对话框作为输入数据的界面 , 等待用户输入数据,当用户单击“确定“按钮或回车时,函数返回输入的值,类型为字符型。函数格式如下:变量 = InputBox( 提示 [,标题 ][ ,缺省 ][, x 坐标位置 ][,y坐标位置 ])

Visual Basic Visual Basic 程序设计程序设计

2. MsgBox 函数和 MsgBox 过程 函数形式:变量 [%] = MsgBox( 提示 [, 按钮 ][ ,标题 ]) 按钮值如下: 函数返回所选按钮整数值:

Visual Basic Visual Basic 程序设计程序设计

若不需要返回值,则可以使用 MsgBox 过程形式:MsgBox 〈信息内容〉 [, 〈对话框类型〉 [, 标题〉 ]]

Visual Basic Visual Basic 程序设计程序设计

学习要点 :

• If…Then 结构 • If…Then…Else 结构• 多分支 If 结构 :If…Then…ElseIf

• Select Case 结构

4.2 选择结构

Visual Basic Visual Basic 程序设计程序设计

1. If…Then 语句 (单分支结构 ) If < 表达式 > Then 语句块 End If 或 If < 表达式 > Then < 语句 >

注:如果表达式的值为真( True ),执行 Then 后的语句块内容;否则不执行语句块内容。说明:表达式可以是:关系表达式、逻辑表达式、算术表达式。若为算术表达式,值为 0 则为 False ,非0 则为 True 。

If 结构

Visual Basic 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 Visual Basic 程序设计程序设计

2. If…Then…Else 语句 (双分支结构 ) If < 表达式 > Then < 语句块 1> Else < 语句块 2> End If If < 表达式 > Then < 语句 1> Else < 语句 2>

Visual Basic Visual Basic 程序设计程序设计

例:编写一个程序,实现当用户输入的用户名和口令都正确时显示 " 欢迎登录 " 的消息对话框,当用户名或口令有错误时显示消息对话框报告错误。– 界面设计:

If…Then…Else 结构示例

Visual Basic Visual Basic 程序设计程序设计

– 编写代码:Private Sub Command1_Click()

Dim user As String Dim psw As String user = Text1.Text psw = Text2.Text

End Sub

T F用户名和口令正确吗?显示 " 欢迎 "消息框 显示 " 错误 "消息框

If user ="SYL" And psw = "123456" Then MsgBox " 欢迎您登录本系统! " Else MsgBox “ 您的用户名或口令有误,请重新输入!” End If

If…Then…Else 结构示例

Visual Basic Visual Basic 程序设计程序设计

例: 编写一医生工作站的登录检验程序,运行界面如图。对登录名(医生工号)和密码的规定如下:( 1 )医生工号不超过 6 位数字,密码为 6 位字符,密码输入时显示为“ *” 。本题假设密码为“ cljuan” 。( 2 )当医生工号输入非数字字符,密码不正确时,显示相关信息。 ( 3 )若单击“重试”按钮,则清除原来输入的内容,焦点定位在原输入文本框,等待用户输入。若单击取消按钮,程序停止运行。

Visual Basic 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 Visual Basic 程序设计程序设计

Private Sub Text1_LostFocus() ‘ 焦点离开文本框 1 时触发 LostFocus事件IF Not IsNumeric(Text1) Then ‘利用 IsNumeric ()函数判断文本框中输入的是否为数字字符 MsgBox " 医生工号必须是数字字符 " Text1 = "" Text1.SetFocusEnd IFEnd Sub

Visual Basic Visual Basic 程序设计程序设计

3. If…Then…ElseIf 语句 (多分支结构 ) 形式: If < 表达式 1> Then

< 语句块 1> ElseIf < 表达式 2>Then

< 语句块 2> …

[Else 语句块 n+1 ] End If

Visual Basic Visual Basic 程序设计程序设计

例:编写一个程序,根据用户输入的某个学生的成绩评出优、良好、中等、及格和不及个五个等级。判断标准如下:

等级

不及格 score<60

及格 60≤score<70

中等 70≤score<80

良好 80≤score<90

优 score≥90

多分支 If 结构示例

Visual Basic Visual Basic 程序设计程序设计

– 分析:• 本题要解决的问题是根据输入学生的成绩来判断该学生的成绩等级。有一个输入量(学生的成绩)和一个输出量(判断结果),所以用一个文本框来接受用户输入,一个文本框来进行输出。再添加一个 " 判断 " 按钮,和一个 "退出 " 按钮。

– 界面设计:

Visual Basic Visual Basic 程序设计程序设计

– 编写代码:Private Sub Command1_Click()

Dim score As Single Dim s As String score = Val(Text1.Text)

End Sub

T

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

Visual Basic Visual Basic 程序设计程序设计

4 . If 语句的嵌套 If 语句的嵌套是指 If 或 Else 后面的语句块中又包含 If 语句。 形式如下: If < 表达式 1> Then If < 表达式 11> Then … End If … End If

If 语句的嵌套注意事项:书写锯齿型; If 与 End If 配对。

Visual Basic Visual Basic 程序设计程序设计

例 4-6 在文本框中输入 1-1000之间的数字,如果输入非数值,或数值超出范围,给予提示,并重新输入。运行效果及程序代码如下:Private Sub Form_Load() Text1.Text = "" Text2.Text = ""End Sub

Visual Basic 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 Visual Basic 程序设计程序设计

< 表达式列表 > :与 < 变量或表达式 >同类型的下面四种形式之一: 表达式 例 : "A"

一组枚举表达式 ( 用逗号分隔 ) 2,4,6,8

表达式 1 To 表达式 2 60 To 100

Is 关系运算符表达式 Is < 60

5. Select Case 语句 (情况语句 )Select Case 变量或表达式

Case 表达式列表 1 语句块 1Case 表达式列表 2 语句块 2

…[Case Else 语句块 n+1]

End Select

数值型或字符串表达式

Visual Basic 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 Visual Basic 程序设计程序设计

4.3 循环结构 学习要点 :

•掌握 For循环控制结构•掌握 DO循环结构•循环的嵌套•常用算法

Visual Basic Visual Basic 程序设计程序设计

1. For 循环语句 ( 一般用于循环次数已知 ) ,形式如下: For 循环变量=初值 to 终值 [Step 步长 ] 语句块

[Exit For] 语句块 Next 循环变量

循环体

>0 初值 <终值 =1 时 , 可省略<0 初值 >终值=0 死循环

循环次数 )1( 步长

初值终值Int

步长

Visual Basic Visual Basic 程序设计程序设计

例 4-8 求 100 以内所有数的和。程序块如下:Sum = 0 ‘sum 为累加和变量,设初值为 0For i = 1 To 100 Sum = Sum+ iNext i 又如:求 10 的阶乘。T = 1 ‘T 为连乘积的变量,设初值为 1For i = 1 To 10 T = T*iNext i

Visual Basic Visual Basic 程序设计程序设计

例: 计算 1~ 100 的奇数和,程序段如下: Dim i %, s% s=0 For i = 1 To 100 step 2 s = s + i Next i

Visual Basic Visual Basic 程序设计程序设计

2. Do…Loop 循环语句 ( 用于控制循环次数未知 )形式 1 : Do { While|Until }< 条件 > 语句块 [Exit Do 语句块 ] Loop形式 2 :

Do 语句块 [Exit Do 语句块 ]Loop { While|Until} < 条件 >

Visual Basic 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, xEnd Sub

Visual Basic 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 Visual Basic 程序设计程序设计

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 结束一个程序的运行;其余表示某个结构的结束,与对应的结构语句配对出现。

4.4 其他辅助控制语句

Visual Basic 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 Visual Basic 程序设计程序设计

例:求 100 以内的素数 素数也成质数,就是大于 2且只能被 1 和本身整除的整数。我们从素数的定义来求解:从 i = 2 , 3 , 4,…, m- 1依次判断 m能否被 i 整除,只要有一个能整除 m就不是素数,否则 m 为素数。运行结果如图

常用算法

Visual Basic 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 Visual Basic 程序设计程序设计

例:利用随机函数产生 20 个 50~ 100范围内的随机数,显示最大值和最小值。运行界面如图:

在若干个数中求最大值,一般先假设一个较小的数为最大值的初值,若无法估计较小的值,则取第一个数为最大值的初值;然后将每一个数与最大值比较,若该数大于最大值,将该数替换为最大值;依次逐一比较。

Visual Basic 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 iPrintPrint "最大值为 "; maxa Print "最小值为 "; minaEnd Sub

Visual Basic Visual Basic 程序设计程序设计

例:使用循环语句在窗体上输出第 2章中例 2-2 中的图形。程序运行界面如图

Visual Basic Visual Basic 程序设计程序设计

程序代码如下:Private Sub Command1_Click()Dim n As IntegerClsn = 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 iEnd IfEnd Sub

Visual Basic Visual Basic 程序设计程序设计

例:使用循环语句在窗体上输出如下图形。程序运行界面如图

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 IEnd Sub

Visual Basic Visual Basic 程序设计程序设计

例:使用循环语句在窗体上输出 n (文本框输入)个随机大写字母,每行显示 5个。程序运行界面如图

Visual Basic 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 iEnd Sub