第3章VisualBasic语言进阶.ppt
《第3章VisualBasic语言进阶.ppt》由会员分享,可在线阅读,更多相关《第3章VisualBasic语言进阶.ppt(95页珍藏版)》请在三一文库上搜索。
1、1,第3章 Visual Basic语言进阶,3.1 基本控制结构 3.2 数组 3.3 用户定义类型 3.4 算法及举例,2,3.1 基本控制结构,3.1.1 顺序结构 3.1.2 分支结构 3.1.3 循环结构,3,3.1.1 顺序结构,顺序结构就是整个程序按书写顺序依次自上而下执行。前面两章设计和编写的程序都是顺序结构的。 顺序结构如图所示,先执行A,再执行B,即自上而下依次运行。图(左)图为框式流程图,图(右)为N-S流程图,又称为盒图。,4,3.1.2 分支结构,分支结构用于判断并分支,又称为选择结构。,如图所示,E代表条件,当E条件成立(True)时执行A,否则(False)执行B
2、,两条分支汇合在一起为一个出口。 分支结构有几种形式:If.Then.Else结构、Select Case结构和IIf函数。,5,3.1.2 分支结构,1If.Then.Else结构 If.Then.Else结构表示 “如果.就.否则”。 语法: If 条件 Then 语句 或者: If 条件1 Then 语句块1 ElseIf 条件2 Then 语句块2 . . Else 语句块n End If,条件可以为各种表达式,都要转换为Boolean型,即所有非零的数值、字符等都转换为True,而0、“0“值则转换为False。 当If.Then.Else结构只有单独的If语句时,可以没有End I
3、f语句。 首先测试条件1,如果为 False,就测试条件2,依此类推,直到找到一个为 True 的条件就执行Then后面的语句块。当只有一个条件而且执行的是单个语句时,If.Then.Else结构可以简化成If.Then语句。,6,3.1.2 分支结构,【例3-1】使用If.Then语句查询学生的成绩,大于等于60分的为及格,其余为不及格。 界面设计:在窗体界面中创建两个文本框(Text1、Text2)、两个标签(Label1、Label2)和一个按钮(Command1)。文本框Text1输入分数,单击按钮Command1则在文本框Text2中显示成绩。,7,3.1.2 分支结构,程序代码如下
4、: Private Sub Command1_Click() 单击按钮显示成绩 Dim x As Single Dim y As String x = Val(Text1.Text) y = “不及格“ If x = 60 Then y = “及格“ Text2.Text = y End Sub 程序分析:使用If.Then语句,当满足条件“x=60”就执行Then后面的语句“y = “及格“”,否则就执行If.Then语句后面的语句。,8,3.1.2 分支结构,【例3-2】使用If.Then.Else结构查询学生的成绩,大于等于60分的为及格,其余为不及格。 界面设计和功能要求与【例3-1】
5、相同,程序流程图如图所示。 程序代码如下:,Private Sub Command1_Click() 单击按钮显示成绩 Dim x As Single Dim y As String x = Val(Text1.Text) If x = 60 Then y = “及格“ Else y = “不及格“ End If Text2.Text = y End Sub,9,3.1.2 分支结构,【例3-3】使用多个条件的If.Then.Else结构查询学生的成绩,将成绩分成优、良、中、及格和不及格,90100为优,8090为良,7080为中,6070为及格,60以下为不及格。,10,3.1.2 分支结构
6、,程序代码如下: Private Sub Command1_Click() 单击按钮显示成绩 Dim x As Single Dim y As String x = Val(Text1.Text) If x = 90 Then y = “优“ ElseIf x = 80 Then,y = “良“ ElseIf x = 70 Then y = “中“ ElseIf x = 60 Then y = “及格“ Else y = “不及格“ End If Text2.Text = y End Sub,程序分析: 使用有多个条件的If.Then.Else结构,判断的顺序是“x=90” “x=80” “x
7、=70” “x=60”剩下的就是“x60”。,11,3.1.2 分支结构,2Select Case结构 Select Case 结构与 If.Then.Else 结构类似,但对多条件选择时,有时用Select Case 语句代码效率更高,更易读。 语法: Select Case 变量 | 表达式 Case 值1 语句块1 Case 值2 语句块2 . Case Else 语句块n End Select,12,3.1.2 分支结构,说明: (1)Select Case只计算一次变量或表达式的值,然后与每个Case的值1、值2等进行比较,如果相等,就执行该case后对应的语句块;如果没有相匹配的,
8、则执行Case Else中的语句块。 (2)值1、值2等可以取以下几种形式: 具体常数。例如,1、2、“a”等。 连续的数据范围。例如,1 to 100、a to z等。 满足某个条件的表达式。例如,I0等。 也可以 是几种不同形式的组合,用逗号(,)将它们分隔开。例如,-10,1 to 100。 (3) Select Case和End Select 必须成对出现。,13,3.1.2 分支结构,【例3-4】使用Select Case 结构实现学生成绩的查询,将 成绩分成优、良、中、及格和不及格,90100为优,8090为良,7080为中,6070为及格,60以下为不及格。,Case 70 To
9、 79 y = “中“ Case 60 To 69 y = “及格“ Case Else y = “不及格“ End Select Text2.Text = y End Sub,Private Sub Command1_Click() 单击按钮显示成绩 Dim x As Single Dim y As String x = Int(Text1.Text) Select Case x Case 90 To 100 y = “优“ Case 80 To 89 y = “良“,程序分析: x = Int(Text1.Text)用来将分数取整,因为分数可能是小数。 “Case 90 To 100”后面
10、的值使用连续的范围表示90100。,14,3.1.2 分支结构,3. IIf函数 If.Then.Else 结构当只有一个条件时还可以使用IIf函数来实现,用IIf函数语句可以说是If.Then.Else 结构的简写版本。 语法: 变量 = IIF(条件,真部分,假部分) 说明: IIf函数的步骤是先判断条件,当条件为True时执行真部分,否则就执行假部分。 在【例3-2】中当分数=60为及格,否则为不及格的关系可以用IIf函数表示为:y = IIf( x = 60,“及格“,“不及格“),15,3.1.2 分支结构,4嵌套 嵌套是指把一个结构嵌入另一个结构之内。即If和End If、Sele
11、ct Case和End Select对都嵌入,不能有交叉,因此在读程序时,与If或Select Case匹配的是最近的End If或End Select。 如图所示为三层If嵌套的结构,If与最近的End If匹配成对,而且在书写时应养成每层缩进的习惯便于程序的阅读。,16,3.1.2 分支结构,例3-5,解一元二次方程ax2+bx+c=0。一元二次方程的解的情况有下列几种可能: a=0,不是二次方程; b2-4ac=0,有两个相等实根: b2-4ac0,有两个不等实根: b2-4ac0,有两个共轭虚根。,17,3.1.2 分支结构,18,3.1.3 循环结构,1DoLoop结构,Do 循环有
12、两种形式。即“当型”循环( While结构)和“直到型”( Do While 结构)循环。,19,3.1.3 循环结构,“当型”循环的语法: Do While|Until 条件 语句块 Exit Do 语句块 Loop,“直到型”循环的语法: Do 语句块 Exit Do 语句块 Loop While|Until 条件,20,3.1.3 循环结构,说明: “直到型”循环与“当型”循环所不同的是先执行语句块,然后测试条件,只要条件为 True 就循环语句块;如果条件为 False,则跳过循环体。这种“直到型”循环保证语句块至少被执行一次。 注意:在Do.Loop结构中Until和While不同,
13、判断条件正好相反。Until结构是只要条件为False(而不是 True),就执行循环的语句块,否则跳出循环体。,21,3.1.3 循环结构,【例 3-6】 用“当型”循环计算1到100的和。 界面设计:在窗体界面中放置一个文本框Text1、一个标签和一个按钮Command1,单击按钮Command1开始计算1100的和。,22,3.1.3 循环结构,序代码如下: Private Sub Command1_Click() 单击按钮开始计算 Dim i As Integer, Sum As Integer Sum = 0: i = 1 Do While i = 100 Sum = Sum + i
14、 i = i + 1 Loop Text1.Text = Sum End Sub,23,3.1.3 循环结构,【例3-7】用“直到型”循环While计算1到100的和。 界面设计与【例3-6】相同,程序代码如下: Private Sub Command1_Click() 单击按钮开始计算 Dim i As Integer, Sum As Integer Sum = 0: i = 1 Do Sum = Sum + i i = i + 1 Loop While i = 100 Text1.Text = Sum End Sub,(自学),24,3.1.3 循环结构,如果将循环体外的置初始值语句由“i
15、 = 1”改为“i = 101”,则两种不同的Do.Loop结构结果就不同了: 【例 3-6】判断条件后直接跳出循环,Sum的结果是0; 【例 3-7】进入循环体一次后判断条件跳出循环,Sum的结果是101。,(自学),25,3.1.3 循环结构,2ForNext结构 如果已经知道了循环的次数,使用ForNext循环比 DoLoop循环更方便。 语法: For 计数器 = 初始值 To 终止值 Step 步长 语句块 Exit For Next 计数器,26,3.1.3 循环结构,ForNext循环的步骤: (1)设置计数器等于初始值。 (2)如果步长(缺省值为1)为正值,则判断计数器是否大于
16、终止值,如果大于则跳出循环。如果步长为负数则判断计数器是否小于终止值。 (3)执行语句块。 (4)计数器=计数器步长。 (5)循环执行步骤(2)(5)。,ForNext循环步长为正值的程序流程图,27,3.1.3 循环结构,【例3-8】用ForNext循环结构来计算1到100的和,步长为1。 Private Sub Command1_Click() 单击按钮开始计算 Dim i As Integer, Sum As Integer Sum = 0 For i = 1 To 100 步长默认为1 Sum = Sum + i Next i Text1.Text = Sum End Sub,28,3
17、.1.3 循环结构,【例3-9】 ForNext循环结构计算1到100的和,步长-1。 Private Sub Command1_Click()单击按钮开始计算 Dim i As Integer, Sum As Integer Sum = 0 For i = 100 To 1 Step -1 步长为-1 Sum = Sum + i Next i Text1.Text = Sum End Sub,(快讲),29,3.1.3 循环结构,3退出循环结构 用 Exit 语句可以直接退出ForNext循环和DoLoop循环。“Exit For”为退出ForNext循环,“Exit Do”为退出DoLoo
18、p循环。 程序执行时遇到 Exit 语句,就不再执行循环结构中的任何语句立即跳出循环,跳转到循环结构的下一句执行。 Exit 语句几乎总是出现在循环体内嵌套的If 语句或 Select Case 语句中。 注意:当运行程序进入死循环时,按Ctrl+break 键可以终止程序的运行。,30,3.1.3 循环结构,【例3-10】 用ForNext循环结构来计算1到100的和,当和大于等于3000时终止循环。运行界面如图所示。,Private Sub Command1_Click() 单击按钮开始计算 Dim i As Integer, Sum As Integer Sum = 0 For i =
19、1 To 100 Sum = Sum + i If Sum = 3000 Then Exit For Next i Text1.Text = Sum End Sub,31,3.1.3 循环结构,4. 嵌套 各种循环结构中都可以嵌套其他任何循环结构,也可以嵌套 分支结构。各种结构在嵌套时必须是完整地嵌入,不能交叉。 【例3-11】计算九九乘法表。 创建一个空白的窗体,在单击窗体时计算并显示九九乘法表。,32,3.1.3 循环结构,程序代码如下: Private Sub Form_Click() 单击窗体显示乘法表 Dim i As Integer, j As Integer For i = 1
20、To 9 For j = 1 To i Print Tab(j - 1) * 10 + 1); j Next j Next i End Sub,程序分析: 由于九九乘法表有九行,每行不同列,因此必须使用双重循环来实现。 外循环为九九乘法表的行循环,内循环为每行的列循环。 内循环的次数每次都不同为1i。 使用Print语句在窗体上显示,使用Tab格式每列间隔10个字符。,33,3.2 数组,3.2.1 声明数组 3.2.2 数组的操作 3.2.3 静态数组和动态数组 3.2.4 多维数组,34,3.2.1 声明数组,1. 数组的概念 (1)数组 数组是同类变量的一个有序集合。数组名的命名规则与变
21、量相同,但数组名代表的是一组变量,而不是一个变量。 (2)数组元素 数组中的元素称为数组元素,数组元素具有相同名字和数据类型,通过下标来识别它们。 数组元素的表示: 数组名(下标1,下标2,) 说明: 下标表示数组元素在数组中的位置。 数组的运算是对数组中的元素进行运算,可以使用变量的地方都可以使用数组,数组元素可以进行赋值、运算等操作。,35,3.2.1 声明数组,2. 声明数组 在使用数组前必须声明数组,是用来指明数组的数据类型和每一维的上下界。 语法:Private|Public|Dim 数组名(第一维上下界,) As 数据类型 说明: 数组元素每一维的上下界表示为“下界 To 上界”,
22、上下界不得超过 Long 数据类型的范围,省略下界时取值为0,下界上界,当上下界为小数时会自动进行四舍五入。,36,3.2.1 声明数组,数组元素的个数为(第一维上界-下界+1)*(第二维上界-下界+1)*。 数组中所有元素具有相同的数据类型。但当数据类型为Variant型时,各元素能够包含不同类型的数据,例如数值型、字符串型等。 例如:dim a(10) as integer dim a(-2 to 3) as integer dim a(2,3) as integer dim a(-3 to 3,4) as integer,37,3.2.1 声明数组,3Option Base 语句 当声明
23、数组时下界省略,则表示从0开始,如果用户希望数组下标从1开始,就可以使用Option Base 语句来声明数组下标的默认下界。 语法: Option Base 0 | 1 说明: Option Base 语句必须在代码编辑器窗口的“通用”部分声明,表示本模块的所有数组的默认下界。 可以声明数组的默认下界为0或1。,38,3.2.1 声明数组,例如,在模块中使用Option Base 语句: Option Base 1 将的数组下标默认设为 1 Private Sub Command1_Click() Dim a(5) As Integer 从a(1)到a(5)共5 个元素 Dim b(-1 t
24、o 5) As Integer 从b(-1)到b(5)共7 个元素 Dim c(2, 3) As Integer 从c(1,1)到c(2,3)共2*3为6 个元素 End Sub 一个模块中只能出现一次Option Base语句,而且必须位于本模块的“通用”部分。,39,3.2.2 数组的操作,数组元素的赋值 由于数组是一组有序的元素组成,因此赋值时有三种方法:象变量一样一个个赋值,通过循环赋值和使用Array函数赋值。 (1) 用赋值语句对每个元素赋值 用赋值语句对每个元素赋值,就是用赋值语句对数组中的每个元素分别赋值。,(快讲),40,3.2.2 数组的操作,【例3-12】对数组a(5)的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VisualBasic 语言 进阶
链接地址:https://www.31doc.com/p-2526146.html