林卓然VB教程数组教案课件

上传人:cl****1 文档编号:569505405 上传时间:2024-07-30 格式:PPT 页数:46 大小:449.50KB
返回 下载 相关 举报
林卓然VB教程数组教案课件_第1页
第1页 / 共46页
林卓然VB教程数组教案课件_第2页
第2页 / 共46页
林卓然VB教程数组教案课件_第3页
第3页 / 共46页
林卓然VB教程数组教案课件_第4页
第4页 / 共46页
林卓然VB教程数组教案课件_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《林卓然VB教程数组教案课件》由会员分享,可在线阅读,更多相关《林卓然VB教程数组教案课件(46页珍藏版)》请在金锄头文库上搜索。

1、主页主页 数组是程序设计中广泛数组是程序设计中广泛使用的数据结构,它可以方便灵使用的数据结构,它可以方便灵活地组织数据。活地组织数据。 数组与循环语句结合使数组与循环语句结合使用,可使程序结构简洁、清晰。用,可使程序结构简洁、清晰。通常数组应先声明后使用。通常数组应先声明后使用。林卓然VB教程数组教案主页主页 利用数组可以有效地存储和处理成批数据利用数组可以有效地存储和处理成批数据 本章主要内容 第第6 6章章 数数 组组数组的概念数组的概念数组的声明和应用数组的声明和应用动态数组动态数组For Each.Next循环语句循环语句控件数组控件数组程序举例程序举例退出退出林卓然VB教程数组教案主

2、页主页 处理成批的数据时,必须使用数组来处理。处理成批的数据时,必须使用数组来处理。 例如,表示例如,表示100个学生的成绩,采用简单变量来表示:个学生的成绩,采用简单变量来表示: s1,s2,s3, s99,s100 采用数组来表示:采用数组来表示:t(0), t(1), t(2), t(98), t(99) t(k) (k=0,1,2,99)为数组元素为数组元素(或称或称下标变量下标变量),它表示,它表示第第k个学生的成绩个学生的成绩, k称为下标变量的称为下标变量的下标下标(默认情况下,默认情况下,下标从下标从0开开始始) 由三行四列组成的二维数组由三行四列组成的二维数组y,其,其12个

3、下标变量可表示为个下标变量可表示为 y(0,0) y(0,1) y(0,2) y(0,3) y(1,0) y(1,1) y(1,2) y(1,3) y(2,0) y(2,1) y(2,2) y(2,3) 只要有规则地改变下标值,就可以很方便地使下标变量只要有规则地改变下标值,就可以很方便地使下标变量(如如t(k)成为所需要的具体下标变量成为所需要的具体下标变量 6.1 数组的概念数组的概念林卓然VB教程数组教案主页主页 6.2.1 数组声明语句数组声明语句 使用数组之前,一般需要定义数组,以便让系统分配相应使用数组之前,一般需要定义数组,以便让系统分配相应的存储单元。格式为:的存储单元。格式为

4、: Dim Dim 数组名数组名(下界下界1 to1 to上界上界1,1,下界下界2 to2 to上界上界2)2) As As 数据类型数据类型 功能:指定数组的维数、各维的上下界和数据类型功能:指定数组的维数、各维的上下界和数据类型 举例:举例:Dim Sum(10) As Long 下标号从下标号从010,共,共11个元个元素素Dim Ary(1 to 20) As Integer 下标号从下标号从120,共,共20个元个元素素Dim d(1 to 5,1 to 10) As Double 定义二维数组定义二维数组 还可以使用还可以使用Public、Static、Private等语句来声明

5、数组等语句来声明数组 6.2 6.2 数组的声明和应用数组的声明和应用林卓然VB教程数组教案主页主页 设定下界的方法设定下界的方法 Option Base 1 设定下界为设定下界为1 Dim Data(10) As Single 下标号从下标号从110 6.2.2 Array函数函数 使用使用Array函数可以为数组元素赋值函数可以为数组元素赋值 示例示例 Dim D As Variant 定义数组名定义数组名(变体类型变体类型) D = Array(1, 2, 3, 4) 执行结果:执行结果:1D(0),2D(1), 3D(2), 4D(3)林卓然VB教程数组教案主页主页 例例6.1 输入某

6、小组输入某小组5个同学的成绩,计算总分和个同学的成绩,计算总分和平均分平均分(取小数后一位取小数后一位) 本例利用本例利用InputBox函数来输入成绩,输入完毕后函数来输入成绩,输入完毕后经过计算,再采用经过计算,再采用Print直接在窗体上输出结果直接在窗体上输出结果 6.2.36.2.3 数组的应用数组的应用林卓然VB教程数组教案主页主页 Private Sub Form_Load() Dim d(5) As Integer Dim i As Integer, total As Single, average As Single Show For i = 1 To 5 输入成绩输入成绩

7、d(i) = Val(InputBox(请输入第请输入第 & Str(i) & _ 个学生的成绩个学生的成绩, 输入成绩输入成绩) Next i total = 0 For i = 1 To 5 计算总分和平均分计算总分和平均分 total = total + d(i) Next i average = total / 5 Print 总分:总分: & total Print 平均分:平均分: & Format(average, #.0)End Sub 例例6.1林卓然VB教程数组教案主页主页 (1)创建应用程序的用户界面和设置对象属性创建应用程序的用户界面和设置对象属性例例6.26.2 输入

8、输入1010名学生的成绩,求出最高分和最低分名学生的成绩,求出最高分和最低分例例6.2林卓然VB教程数组教案主页主页 功能要求:功能要求:通过通过Array函数输入函数输入10个分数;单击个分数;单击“查找查找”按按钮钮(Command2)后,开始查找最高分和最低分,找到后显示在标签后,开始查找最高分和最低分,找到后显示在标签Label1上上 Option Base 1 Dim score As Variant Private Sub Form_Load() Label1.Caption = 单击单击“查找查找”按钮开始查找最高分和最低按钮开始查找最高分和最低分分 score = Array(

9、89, 96, 81, 67, 79, 90, 63, 85, 95, 83) End Sub (2) 编写程序代码编写程序代码林卓然VB教程数组教案主页主页 Private Sub Command1_Click() Dim max As Integer, min As Integer max = score(1) 设定初值设定初值 min = score(1) For i = 2 To 10 与后面的数据逐一比较与后面的数据逐一比较 If max score(i) Then 找最低分找最低分 min = score(i) End If Next i Chr(13)起换行作用起换行作用 Lab

10、el1.Caption = 最高分:最高分: + Str(max) + _ Chr(13) + 最低分:最低分: + Str(min) End Sub林卓然VB教程数组教案主页主页 例例6.3 6.3 分别计算分别计算5 5个学生和个学生和3 3门课的平均分门课的平均分 某学习小组有某学习小组有5名学生,成绩如表名学生,成绩如表6.1所示所示 分析:分析:用一个用一个二维数组二维数组a(5, 3)来描述。程序中设置两重循来描述。程序中设置两重循环,用以环,用以实现每行和每列上的累加实现每行和每列上的累加。本例采用赋值语句来输。本例采用赋值语句来输入学生成绩,并采用入学生成绩,并采用Print直

11、接在窗体上输出结果直接在窗体上输出结果 Option Base 1 Private Sub Form_Load() Dim a(5, 3) As Integer Dim r As Integer, c As Integer, s As Integer k = Array(数学数学, 英语英语, 计算机计算机) 输入课程名输入课程名 a(1, 1) = 69: a(1, 2) = 89: a(1, 3) = 74 输入学生成绩输入学生成绩 a(2, 1) = 94: a(2, 2) = 80: a(2, 3) = 90 a(3, 1) = 57: a(3, 2) = 62: a(3, 3) =

12、73 a(4, 1) = 98: a(4, 2) = 94: a(4, 3) = 90 a(5, 1) = 73: a(5, 2) = 76: a(5, 3) = 63林卓然VB教程数组教案主页主页 ShowShow Print Print 学生学生, , 平均分平均分 Print String(20, -) Print String(20, -) 输出输出2020个减号个减号“-”“-” For r = 1 To 5 For r = 1 To 5 s = 0 s = 0 累加前清累加前清0 0 For c = 1 To 3 For c = 1 To 3 累加同一行数据累加同一行数据 s =

13、s + a(r, c) s = s + a(r, c) Next c Next c Print r, Format(s / 3, #.0) Print r, Format(s / 3, #.0) Next r Next r Print Print r=1 c=1, 2, 3r=2 c=1, 2, 3r=3 c=1, 2, 3r=4 c=1, 2, 3r=5 c=1, 2, 3求求5个学生的平均分个学生的平均分 a(r, c)下标使用情况下标使用情况林卓然VB教程数组教案主页主页 Print 课程课程, 平均分平均分 Print String(20, -) For c = 1 To 3 s =

14、0 For r = 1 To 5 累加同一列数据累加同一列数据 s = s + a(r, c) Next r Print k(c), Format(s / 5, #.0) Next cEnd Sub林卓然VB教程数组教案主页主页 程序运行结果程序运行结果 例例6.3林卓然VB教程数组教案主页主页1. 执行下列程序段后,输出的结果是执行下列程序段后,输出的结果是_。 Dim a(1 To 3, 1 To 3) For j = 1 To 3 For k = 1 To 3 a(j, k) = j Print a(j, k); Next k Print Next j A. 3 2 1 B. 0 1 2

15、 C. 1 2 3 D. 1 1 1 2 3 2 1 0 1 2 1 2 2 2 2 1 2 3 2 1 0 3 2 1 3 3 3 下列程序的运行结果?下列程序的运行结果?想一想想一想思考题思考题D林卓然VB教程数组教案主页主页1. 执行下列程序段后,输出的结果是执行下列程序段后,输出的结果是_。 Dim a(1 To 4, 1 To 4) For j = 1 To 4 For k = 1 To 4 a(j, k) = Abs(j - k) Print a(j, k); Next k Print Next j A. 3 2 1 0 B. 0 1 2 3 C. 0 1 1 1 D. 3 3 3

16、 3 2 1 0 3 1 0 1 2 1 0 1 1 2 2 2 2 1 0 3 2 2 1 0 1 1 1 0 1 1 1 1 1 0 1 2 3 3 2 1 0 1 1 1 0 0 0 0 0 下列程序的运行结果?下列程序的运行结果?想一想想一想思考题思考题B林卓然VB教程数组教案主页主页 两种形式的数组:两种形式的数组:静态数组静态数组和和动态数组动态数组 静态数组静态数组(前面介绍的前面介绍的)是指数组元素的个数固定不变;动是指数组元素的个数固定不变;动态数组的元素个数,在程序运行时可以改变态数组的元素个数,在程序运行时可以改变 动态数组可以在运行过程中改变数组的大小,提高存储区动态数

17、组可以在运行过程中改变数组的大小,提高存储区的使用效率的使用效率 6.3.1 建立动态数组建立动态数组 用用ReDim语句重新定义带下标的动态数组语句重新定义带下标的动态数组 6.3.2 数组刷新语句数组刷新语句 Erase语句用来清除静态数组的内容,或者释放动态数组占用语句用来清除静态数组的内容,或者释放动态数组占用的内存空间的内存空间 6.36.3 动态数组动态数组林卓然VB教程数组教案主页主页 Dim t() As Integer 声明一个动态数组声明一个动态数组 ReDim t(100) 用用ReDim语句重新定义语句重新定义 ReDim t(200) 用用ReDim语句重新定义语句重

18、新定义静态数组静态数组和和动态数组动态数组 Dim t(200) As Integer 声明一个静态数组声明一个静态数组 For k=1 To 200 t(k) = Next k 使用使用静态数组静态数组个数固定不变个数固定不变使用使用动态数组动态数组个数可以改变个数可以改变林卓然VB教程数组教案主页主页Private Sub Form_Load() Dim a() As Integer 声明一个整型动态数组声明一个整型动态数组 Show ReDim a(800) 用用ReDim语句重新定义语句重新定义 k = 0 For x = 100 To 600 Step 7 If x Mod 8 =

19、0 Then k = k + 1 a(k) = x End If Next x ReDim Preserve a(k) Preserve 能保留数组中原有的数据能保留数组中原有的数据 For J= 1 To k Print a(J) Next iEnd Sub 例例6.46.4 ReDim ReDim语句应用示例语句应用示例例例6.4林卓然VB教程数组教案主页主页 与前面的循环语句与前面的循环语句For.Next类似,都是用来执行指定重类似,都是用来执行指定重复次数的循环。但复次数的循环。但For Each.Next语句专门作用于数组或对语句专门作用于数组或对象集合中的每一成员。语法格式:象集

20、合中的每一成员。语法格式: For Each 成员成员 In 数组名数组名 循环体循环体 Exit For Next 成员成员 “成员成员”是一个是一个Variant变量,它实际上代表数组中每一变量,它实际上代表数组中每一个元素个元素 本语句可以对数组元素进行读取、查询或显示,它所重本语句可以对数组元素进行读取、查询或显示,它所重复执行的次数由数组中元素的个数确定复执行的次数由数组中元素的个数确定 在不知道数组中元素的数目时非常有用在不知道数组中元素的数目时非常有用 6.46.4 For Each.Next For Each.Next循环语句循环语句林卓然VB教程数组教案主页主页 6.5 6.

21、5 控件数组控件数组 两类数组:两类数组:一般数组一般数组和和控件数组控件数组 6.5.1 控件数组的概念控件数组的概念 控件数组是一组具有相同名称、类型和事件过程的控件控件数组是一组具有相同名称、类型和事件过程的控件 例如,例如,Label1(0)Label1(0),Label1(1)Label1(1),Label1(2)Label1(2), 但但Label1, Label2, Label3, Label1, Label2, Label3, 不是控件数组不是控件数组 控件数组具有以下特点:控件数组具有以下特点: (1)(1)相同的控件名称相同的控件名称( (即即NameName属性属性) )

22、; (2) (2)控件数组中的控件具有相同的一般属性;控件数组中的控件具有相同的一般属性; (3) (3)所有控件共用相同的事件过程。所有控件共用相同的事件过程。 以下标索引值以下标索引值(Index)(Index)来标识各个控件,第一个下标索引号默来标识各个控件,第一个下标索引号默认为认为0 0林卓然VB教程数组教案主页主页6.5.2 控件数组的建立控件数组的建立 建立控件数组有三种方法:建立控件数组有三种方法: (1)给控件起相同的名称给控件起相同的名称 (2)将现有的控件复制并粘贴到窗体等上面将现有的控件复制并粘贴到窗体等上面 (3)将控件的将控件的Index属性设置为非属性设置为非Nu

23、ll数值数值 6.5.3 控件数组的使用控件数组的使用 例例6.6 建立一个文本框控件数组建立一个文本框控件数组Text1和一个文本框和一个文本框Text2,在控件数组在控件数组Text1中输入一组数后,把累加值存放在中输入一组数后,把累加值存放在Text2。林卓然VB教程数组教案主页主页 通过通过“复制复制”方法方法控件数组控件数组Text1Text1。第一次。第一次 单击工具栏上的单击工具栏上的“粘贴粘贴”按钮按钮(或按或按Ctrl+V),此时系统弹出一个如下的对话框,此时系统弹出一个如下的对话框文本框文本框控件数组控件数组Text1Text1Text2Text2Text1(0)Text1

24、(0)Text1(1)Text1(1)Text1(2)Text1(2)Text1(3)Text1(3)Command1Command1例例6.6林卓然VB教程数组教案主页主页 控件数组控件数组Text1Text1的的4 4个元素为:个元素为:Text1(0)Text1(0)Text1(3)Text1(3) Private Sub Command1_Click()Private Sub Command1_Click() s = 0 s = 0 For i = 0 To 3 For i = 0 To 3 s = s + Val(Text1(i).Text) s = s + Val(Text1(i)

25、.Text) Next i Next i Text2.Text = s Text2.Text = s End Sub End Sub林卓然VB教程数组教案主页主页 注意:控件数组元素的表示方法与列表框表项有所不同注意:控件数组元素的表示方法与列表框表项有所不同 列表框列表框List1List1的表项内容为:的表项内容为:List1.List(0)List1.List(0)、 List1.List(1)List1.List(1)、。下标规定为顺序号。下标规定为顺序号0 0,1 1,2 2,。 一个列表框控件,其一个列表框控件,其ListList属性是一个数组。属性是一个数组。 控件数组控件数组T

26、ext1Text1的元素内容为:的元素内容为:Text1(0).TextText1(0).Text、Text1(1).TextText1(1).Text、。下标可由用户指定,不一定为顺序号。下标可由用户指定,不一定为顺序号。 多个控件组成一个数组,相同名称。使用这些控件的多个控件组成一个数组,相同名称。使用这些控件的TextText属性。属性。林卓然VB教程数组教案主页主页 例例6.7 按图按图6.56.5设计窗体,其中一组设计窗体,其中一组( (共共3 3个个) )单选按钮单选按钮构成控件数组,要求当单击某个单选按钮时,能够改变文构成控件数组,要求当单击某个单选按钮时,能够改变文本框中文字的

27、大小本框中文字的大小例例6.7控件控件数组数组林卓然VB教程数组教案主页主页设计步骤:设计步骤: (1)设计控件数组设计控件数组Option1,其中包含,其中包含3个单选按钮对象个单选按钮对象 设置控件数组各元素设置控件数组各元素(从上而下从上而下)的的Caption属性分别为属性分别为12,20和和28 (2)建立一个文本框建立一个文本框Text1,其,其Text属性设置为属性设置为“控件数组的控件数组的使用使用”。再建立一个标签再建立一个标签,其,其Caption属性为属性为“字号控制字号控制” (3)编写程序代码编写程序代码林卓然VB教程数组教案主页主页 Private Sub Form

28、_Load() Option1(0).Value = True 选定第一个单选按钮选定第一个单选按钮 Text1.FontSize = 12 设定文本框中的字号设定文本框中的字号 End Sub Private Sub Option1_Click(Index As Integer) Select Case Index 系统自动返回系统自动返回Index值值 Case 0 Text1.FontSize = 12 Case 1 Text1.FontSize = 20 Case 2 Text1.FontSize = 28 End Select End Sub控件数组的事件过程控件数组的事件过程林卓然

29、VB教程数组教案主页主页 数组是程序设计中广泛使用的一种数据结构,它可以方便数组是程序设计中广泛使用的一种数据结构,它可以方便灵活地组织数据。灵活地组织数据。 数组应用的一个重要内容:排序与查找数组应用的一个重要内容:排序与查找 排序:将一组数按递增或递减的次序排列排序:将一组数按递增或递减的次序排列 查找:从数组中查找所需的数据查找:从数组中查找所需的数据 6.6 程序举例程序举例排序排序查找查找顺序查找顺序查找折半查找折半查找 选择法排序选择法排序冒泡法排序冒泡法排序 林卓然VB教程数组教案主页主页 随机产生十个随机产生十个1010100100的整数,用的整数,用“选择排序法选择排序法”按

30、值从小到按值从小到大顺序排序,最后输出结果。大顺序排序,最后输出结果。 解题方法:解题方法: (1)利用利用Int(91*Rnd+10)产生值为产生值为10到到100的随机整数的随机整数 使用使用Randomize得到不同的随机数序列得到不同的随机数序列 (2)按值从小到大进行排序。排序方法:按值从小到大进行排序。排序方法: 将将10个数放入数组个数放入数组a中,对下列下标变量进行排序处理:中,对下列下标变量进行排序处理: a(1), a(2), a(3), , a(8) , a(9) , a(10) 从这从这10个下标变量中,选出最小值,通过交换把该值存入个下标变量中,选出最小值,通过交换把

31、该值存入a(1)中中 除除a(1)之外之外(a(1)已存放最小值已存放最小值),从其余,从其余9个下标变量中选出最小值个下标变量中选出最小值(即即10个数中的次小值个数中的次小值),通过交换把该值存入,通过交换把该值存入a(2)中中 选出选出a(3)a(10)中的最小值,通过交换,把该值存入中的最小值,通过交换,把该值存入a(3)中中 重复上述处理,重复上述处理,至至a(8),可使,可使a(1)a(8)按小到大排列按小到大排列 第第9次处理,选出次处理,选出a(9)及及a(10)中的最小值,通过交换把该值存入中的最小值,通过交换把该值存入a(9)中,中,此时此时a(10)存放的就是最大值存放的

32、就是最大值例例6.8 选择排序法选择排序法林卓然VB教程数组教案主页主页排列要求排列要求 小小 大大 示例:示例: a(1) a(2) a(3) a(4) 90 64 61 59 1. a(1)与与a(2) a(4)比较,选出最小值,结果比较,选出最小值,结果 59 64 61 90 2. a(2)与与a(3) a(4)比较,选出次小值,结果比较,选出次小值,结果 59 61 64 90 3. a(3)与与a(4)比较,选出较小值,结果比较,选出较小值,结果 59 61 64 90 i=1 j=2, 3, 4 i=2 j=3, 4 i=3 j=4For i=1 to 3 For j=i+1 t

33、o 4 Next jNext i程程序序结结构构循环体循环体比较比较a(i)a(i)与与a(j)a(j)若若a(i)a(i)大于大于a(j)a(j)则则a(i)a(i)与与a(j)a(j)交换值交换值假设要对假设要对4 4个数排序个数排序两重循环两重循环对对4个数排序个数排序外循环外循环 i 次数为次数为3内循环内循环 j 次数为次数为i+14林卓然VB教程数组教案主页主页 完成上述比较及排序处理过程,可以采用两重循环结构,完成上述比较及排序处理过程,可以采用两重循环结构,外循环的循环变量外循环的循环变量i从从1到到9,共循环九次;内循环的循环变量,共循环九次;内循环的循环变量j从从i+1到到

34、10。 本例采用默认的用户界面,所需数据由随机函数产生,处本例采用默认的用户界面,所需数据由随机函数产生,处理后结果信息通过理后结果信息通过Print方法直接输出在窗体上。方法直接输出在窗体上。 Private Sub Form_Load() Show Randomize Dim a(1 To 10) As Integer Print 原始数据:原始数据: For i = 1 To 10 产生产生10个随机数个随机数 a(i) = Int(91 * Rnd + 10) Print a(i); Next i (3) 程序结构程序结构林卓然VB教程数组教案主页主页 Print: Print For

35、 i = 1 To 9 For j = i + 1 To 10 If a(i) a(j) Then t = a(i): a(i) = a(j): a(j) = t 交换位置交换位置 End If Next j Next i Print 排序结果:排序结果: For i = 1 To 10 Print a(i); Next i End Sub例例6.8林卓然VB教程数组教案主页主页 改写中间程序段改写中间程序段“For i=1 To 9”“Next i”(共共7个程序个程序行行) For i = 1 To 9 k = i k用来记录每次选择的最小值的下标用来记录每次选择的最小值的下标 For j

36、 = i + 1 To 10 If a(k) a(j) Then k = j End If Next j t = a(k): a(k) = a(i): a(i) = t 交换位置交换位置 Next i 变量变量k记录每一次选出的最小值的下标,在本次比较结束后,记录每一次选出的最小值的下标,在本次比较结束后,使使a(i)与与a(k)一次换位即可一次换位即可例例6.8a林卓然VB教程数组教案主页主页 例例6.9 查找考场教室号查找考场教室号 某课程统考凭准考证入场,考场教室安排如表某课程统考凭准考证入场,考场教室安排如表6.2。编制。编制程序,查找准考证号码所对应的教室号码程序,查找准考证号码所对

37、应的教室号码 (1)分析分析:为便于查找,通过二维数组:为便于查找,通过二维数组rm建立这两种号码建立这两种号码对照表。对照表。 数组数组rm由由Form_Load事件过程来建立,它的每一行存放事件过程来建立,它的每一行存放了一个教室资料了一个教室资料(包含准考证号码范围和教室号码包含准考证号码范围和教室号码)。当判断。当判断到某个给定准考证号码落在某一行的准考证号码范围内时,到某个给定准考证号码落在某一行的准考证号码范围内时,则该行中的教室号码为所求则该行中的教室号码为所求林卓然VB教程数组教案主页主页Rm(1,1)Rm(1,1) Rm(1,2)Rm(1,2) Rm(1,3) Rm(1,3)

38、Rm(2,1)Rm(2,1) Rm(2,2)Rm(2,2) Rm(2,3) Rm(2,3)Rm(3,1)Rm(3,1) Rm(3,2)Rm(3,2) Rm(3,3) Rm(3,3)先用给定号码与第先用给定号码与第1 1行行的的Rm(1,1)Rm(1,1)及及Rm(1,2)Rm(1,2)比较比较 若在此范围内,则若在此范围内,则Rm(1,3)Rm(1,3)为所求为所求若不是第若不是第1 1行,则与行,则与第第2 2行的行的Rm(2,1)Rm(2,1)及及Rm(2,2)Rm(2,2)比较比较 若在此范围内,若在此范围内,则则Rm(2,3)Rm(2,3)为所求为所求依此类推依此类推 顺序比较顺序比较

39、林卓然VB教程数组教案主页主页 (3)编写程序代码编写程序代码 功能要求:功能要求:用户在文本框用户在文本框Text1中输入准考证号码,单击中输入准考证号码,单击“查找查找”按钮按钮(Command1)后,则查找出对应的教室,并将教室号后,则查找出对应的教室,并将教室号码输出在文本框码输出在文本框Text2中中 Dim rm(6, 3) As Integer Private Sub Form_Load() 输入数组数据,一行存放输入数组数据,一行存放1个教室信息个教室信息 rm(1, 1) = 2101: rm(1, 2) = 2147: rm(1, 3) = 102 rm(2, 1) = 1

40、741: rm(2, 2) = 1802: rm(2, 3) = 103 rm(3, 1) = 1201: rm(3, 2) = 1287: rm(3, 3) = 114 rm(4, 1) = 3333: rm(4, 2) = 3387: rm(4, 3) = 209 rm(5, 1) = 1803: rm(5, 2) = 1829: rm(5, 3) = 305 rm(6, 1) = 2511: rm(6, 2) = 2576: rm(6, 3) = 306 End Sub例例6.9 (2)创建用户界面创建用户界面和设置对象属性和设置对象属性林卓然VB教程数组教案主页主页 Private S

41、ub Command1_Click() Dim no As Integer, flag As Integer flag = 0 查找标记,查找标记,0表示未找到表示未找到 no = Val(Text1.Text) For i = 1 To 6 If no = rm(i, 1) And no = rm(i, 2) Then Text2.Text = rm(i, 3) 显示教室号码显示教室号码 flag = 1 1表示找到表示找到 Exit For End If Next i If flag = 0 Then Text2.Text = 无此准考证号码无此准考证号码 End If Text1.Set

42、Focus 设置焦点设置焦点 End Sub林卓然VB教程数组教案主页主页 某学习小组某学习小组10名学生的成绩情况如表名学生的成绩情况如表6.3所示,现要求采用所示,现要求采用折半查找法,通过学号查询学生成绩折半查找法,通过学号查询学生成绩 (1)分析:分析:折半查找法也称对半查找法,是一种效率较高的折半查找法也称对半查找法,是一种效率较高的查找方法。对于大型数组,它的查找速度比顺序查找法查找方法。对于大型数组,它的查找速度比顺序查找法(例例6.8采用的是顺序查找法采用的是顺序查找法)快得多快得多 假设要查找的数据个数为假设要查找的数据个数为n=1000 顺序查找的平均次数为顺序查找的平均次

43、数为500,即,即1000/2 折半查找的最大次数为折半查找的最大次数为x=10, 即即 2x = 1000 在采用折半查找法之前,要求将数组按查找关键字在采用折半查找法之前,要求将数组按查找关键字(如本如本例的学号例的学号)排好序排好序(从大到小或小到大从大到小或小到大) 例例6.10 采用折半查找法查询学生成绩采用折半查找法查询学生成绩林卓然VB教程数组教案主页主页 先从数组中间开始比较,先从数组中间开始比较, 判别中间的那个元素是不判别中间的那个元素是不是要找的数据:是要找的数据: 是,则查找成功是,则查找成功 否,若被查找的数据是在该数组的上半部,则从上半否,若被查找的数据是在该数组的

44、上半部,则从上半部的中间继续查找,否则从下半部的中间继续查找部的中间继续查找,否则从下半部的中间继续查找 照此进行下去,不断缩小查找范围照此进行下去,不断缩小查找范围 至最后,因找到或找不到而停止查找至最后,因找到或找不到而停止查找 对于对于n个数据,若用变量个数据,若用变量Top、Bott分别表示每次分别表示每次“折半折半”的首位置和末位置,则中间位置的首位置和末位置,则中间位置M为为 M=Int(Top+Bott)/2)这样就将这样就将Top, Bott分成两段分成两段,即,即Top, M-1和和M+1, Bott, 若要找的数据小于由若要找的数据小于由M指示的数据,则该数据在指示的数据,

45、则该数据在Top,M-1范围内,反之,则在范围内,反之,则在M+1,Bott范围内范围内 折半查找法的过程折半查找法的过程林卓然VB教程数组教案主页主页 折半查找法的过程折半查找法的过程学号学号 h()1201120212031205120612071209121012111215先排好序先排好序数学数学 d( x ,1) 语文语文 d( x ,2)92 8678 7183 7467 7571 5562 8098 8399 8057 6780 78m=Int(Top + Bott)/2)要找的学号要找的学号No h(m) = m为所求为所求 m Top = m + 1 Top=1Bott=10

46、 林卓然VB教程数组教案主页主页 (2) 创建应用程序的用户界面和设置对象属性创建应用程序的用户界面和设置对象属性 (3)编写程序代码编写程序代码例例6.10林卓然VB教程数组教案主页主页 Dim h(10) As Integer, d(10, 2) As Integer 模块级变量模块级变量 Private Sub Form_Load() 学号存放在数组学号存放在数组h()中中 h(1) = 1201 : h(2) = 1202: h(3) = 1203 h(4) = 1205 : h(5) = 1206: h(6) = 1207 h(7) = 1209 : h(8) = 1210: h(9

47、) = 1211: h(10) = 1215 成绩存放在数组成绩存放在数组d(,)中中 d(1, 1) = 92 : d(1, 2) = 86 d(2, 1) = 78 : d(2, 2) = 71 d(3, 1) = 83 : d(3, 2) = 74 d(4, 1) = 67 : d(4, 2) = 75 d(5, 1) = 71 : d(5, 2) = 55 d(6, 1) = 62 : d(6, 2) = 80 d(7, 1) = 98 : d(7, 2) = 83 d(8, 1) = 99 : d(8, 2) = 80 d(9, 1) = 57 : d(9, 2) = 67 d(10

48、, 1) = 80 : d(10, 2) = 78 End Sub林卓然VB教程数组教案主页主页 Private Sub Command1_Click() Dim no As Integer, flag As Integer Dim m As Integer, top As Integer, bott As Integer flag = -1 置未找到标志置未找到标志 top = 1: bott = 10 设定范围设定范围 no = Val(Text1.Text) 取学号取学号 If no h(bott) Then flag = -2 若超出学号范围若超出学号范围, 置特殊标志置特殊标志-2

49、End If林卓然VB教程数组教案主页主页 Do While flag = -1 And top = bott m = (top + bott) / 2 取中点取中点 Select Case True Case no = h(m) 找到找到 flag = m 置找到标志置找到标志 Text2.Text = h(m) Text3.Text = d(m, 1) Text4.Text = d(m, 2) Text5.Text = (d(m, 1) + d(m, 2) / 2 Case no h(m) 大于中间数据大于中间数据 top = m + 1 下半部下半部 End Select Loop 林卓然VB教程数组教案主页主页 If flag 0 Then 判是否找不到判是否找不到 Text2.Text = Text3.Text = Text4.Text = Text5.Text = MsgBox 无此学生无此学生! End If Text1.SetFocus End Sub林卓然VB教程数组教案

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号