《Visual Basic程序设计教程(第二版)》-郭清溥-电子教案 5

上传人:E**** 文档编号:89401696 上传时间:2019-05-24 格式:PPT 页数:50 大小:1.02MB
返回 下载 相关 举报
《Visual Basic程序设计教程(第二版)》-郭清溥-电子教案 5_第1页
第1页 / 共50页
《Visual Basic程序设计教程(第二版)》-郭清溥-电子教案 5_第2页
第2页 / 共50页
《Visual Basic程序设计教程(第二版)》-郭清溥-电子教案 5_第3页
第3页 / 共50页
《Visual Basic程序设计教程(第二版)》-郭清溥-电子教案 5_第4页
第4页 / 共50页
《Visual Basic程序设计教程(第二版)》-郭清溥-电子教案 5_第5页
第5页 / 共50页
点击查看更多>>
资源描述

《《Visual Basic程序设计教程(第二版)》-郭清溥-电子教案 5》由会员分享,可在线阅读,更多相关《《Visual Basic程序设计教程(第二版)》-郭清溥-电子教案 5(50页珍藏版)》请在金锄头文库上搜索。

1、第5章 数组,第5章 数组,【本章导读】 在现实生活中,存在着各种各样的数据。有些数据之间没有太多的内在联系,用简单变量就可以进行存取和处理。第四章中我们用到的变量都属于这种情况。但是,在实际工作中,常常会遇到大批的有着内在联系的数据需要处理,例如,学生成绩的统计、人口普查的数据处理、农业实验观测值等等。如果仍然用简单变量来存取和处理,不仅很不方便,几乎没有办法处理,有时甚至是不可能处理的。针对这个问题,我们需要引入一个重要的概念数组来解决。,第5章 数组,【本章要点】 数据数组 控件数组 常用算法,5.1 数组的概念,5.1.1 数组和数组元素 数组由下标变量名和圆括号组成。 括号中有一个下

2、标时,叫做一维下标变量, 例如:S(1), S(10) 括号中有两个下标时,叫做二维下标变量, 例如:A(1,2)。 括号中有三个下标时,叫做三维下标变量, 例如:C(1,2,2)等。,5.1 数组的概念,5.1.2 数组说明语句 1. 数组说明语句的格式 Dim (a1 To a2 , b1 To b2 ,) As 或者 Dim (a1 To a2 , b1 To b2 ,) Visual Basic还允许用Option Base 来指明下界是 0 还是 1。 具体的格式为: Option Base 0 数组的下界是 0 Option Base 1 数组的下界是 1,5.1 数组的概念,5.

3、1.2 数组说明语句 2. 功能 该语句能为数组定义维数、每维的上界值、下界值和数组的类型。,5.1 数组的概念,5.1.3 数组赋值函数 函数Array()被叫做数组赋值函数。 1.格式为: 数组变量名Array(常量列表) 2. 功能 该函数的功能就是将常量列表中的常量依次赋给一个一维数组的对应元素。 3. 说明: 格式中的数组变量应该被定义为变体变量; 数组的上下界值可以通过LBound和UBound函数得到。,5.1 数组的概念,5.1.4 动态数组 创建动态数组,可以按照以下步骤执行: (1)和普通数组的声明一样使用Dim语句给数组赋予一个空维数表。 (2)使用时用ReDim语句重新

4、分配数组的实际元素个数。 ReDim语句的具体语法格式如下: ReDim Preserve () As 类型,5.1 数组的概念,5.1.4 动态数组 说明: 1)ReDim语句用来定义或重定义动态数组的大小。 2)在执行ReDim语句时,如果使用了Preserve关键字,则在重定义数组最末维的大小同时仍保留数组中的原有内容;如果未使用Preserve关键字,则数组中存放的所有当前值就会消失。,5.1 数组的概念,例5.2 编写程序,将输入的10个数据按照输入的顺序逆向输出。 分析:假定输入的是数值型数据。按照其输入的顺序,分别用D(1),D(2),D(3),D(10)表示。输出时,反过来D(

5、10),D(3),D(2),D(1)即可。,5.1 数组的概念,例5.2 编写程序,将输入的10个数据按照输入的顺序逆向输出。,5.1 数组的概念,例5.2 编写程序,将输入的10个数据按照输入的顺序逆向输出。 程序源代码如下: Option Explicit Option Base 1 Dim D(1 To 10) As Single Private Sub cmdInput_Click() Dim I% For I = 1 To 10 D(I) = Val(InputBox(“, “输入数据“) txtInput.Text = txtInput.Text & D(I) & “ “ Next

6、 I End Sub,5.1 数组的概念,例5.2 编写程序,将输入的10个数据按照输入的顺序逆向输出。 程序源代码如下: Private Sub cmdOutput_Click() Dim I% For I = 10 To 1 Step -1 txtOutput.Text = txtOutput.Text & D(I) & “ “ Next I End Sub,5.2 控件数组,5.2.1 控件数组的概念 特点: 1.具有相同的控件名(即控件数组名),并按照下标索引号(Index,相当于一般数组的下标)来识别各个控件。 2.控件数组中的控件具有相同的一般属性。 3.所有控件共用相同的事件过程

7、。,5.2 控件数组,5.2.2 控件数组的建立 建立控件数组有三种方法: 1. 给控件起相同的名称。 2. 将现有的控件复制并粘贴到窗体、框架或图片框上。 3. 将控件的Index属性值改为一个整数(032 767)。,5.2 控件数组,5.2.3 控件数组的使用 例5.1 按下图设计窗体,其中单选按钮(共5个)构成控件数组,要求当单击某个单选按钮时,能够改变文本框中文字的大小。,5.2 控件数组,5.2.3 控件数组的使用 例5.1 (1)在窗体中设计控件数组Option1,其中包含5个单选按钮对象。,5.2 控件数组,5.2.3 控件数组的使用 例5.1 Private Sub Form

8、_Load() 窗体加载时,选定第一个单选按钮 optFont(0).Value = True 设定文本框中的字号 txtResult.FontSize = optFont(0).Caption End Sub Private Sub optFont_Click(Index As Integer) txtResult.FontSize = optFont(Index).Caption End Sub,5.3 程序举例,例5.3 产生10个互相不等的在0,50之间的随机整数。 分析:若只产生10个随机整数,只需用循环控制即可。而现在要求10个数据互不相等,因此对每产生的一个数据都要与前面已产生过

9、的数据一一比较,只有当该数据与前面所有数据全部不等时,该数据才能被保留下来。 我们可以利用随机函数产生0,50之间的随机整数。 产生A,B区间的随机整数的公式为: Int(A+(B-A+1)*Rnd),5.3 程序举例,例5.3 解法1: Private Sub cmdStart_Click() Dim A(1 To 10) As Integer Dim I%, J% For I = 1 To 10 Re: A(I) = Int(10 + (50 - 10 + 1) * Rnd) For J = 1 To I - 1 If A(I) = A(J) Then GoTo Re Next J Nex

10、t I For I = 1 To 10 lblResult.Caption = lblResult.Caption & A(I) & “ “ Next I End Sub,5.3 程序举例,例5.3 解法2: Private Sub cmdStart_Click() Dim A(1 To 10) As Integer Dim I%, J% For I = 1 To 10 A(I) = Int(10 + (50 - 10 + 1) * Rnd) For J = 1 To I - 1 If A(I) = A(J) Then I = I - 1 Exit For End If Next J Next

11、 I For I = 1 To 10 lblResult.Caption = lblResult.Caption & A(I) & “ “ Next I End Sub,5.3 程序举例,例5.4 有数据:3,7,2,9,5,1,6。编写程序,将其按升序排列。 解法1:直接排序法 分析:直接排序法的具体方法是,先用第1个数据与剩下第2到第N这N-1个数据分别比较:用第1个数据与第2个数据比较,如果它们之间的关系不符合升序要求,就交换它们的值。接下来,第1个数据与第3个数据比较,直到第一个数据与第N数据比较完为止。这时,第一个数据就是该序列中最小的一个数据。然后再用第2个数据与剩下第3到第N这N

12、-2个数据分别比较。一直下去,直到用第N-1个数据与第N个数据比较完为止。,5.3 程序举例,例5.4 有数据:3,7,2,9,5,1,6。编写程序,将其按升序排列。 解法1:直接排序法 初始: 第一轮:用D(1)与D(2)D(7)分别比较:,5.3 程序举例,例5.4 有数据:3,7,2,9,5,1,6。编写程序,将其按升序排列。 解法1:直接排序法 第二轮:用D(2)与D(3)D(7)分别比较: 以此类推,一直到第六轮:用D(6)与D(7)比较完成,此时全部数据也就排序完成了。,5.3 程序举例,例5.4 解法1:直接排序法的程序源代码如下: Option Explicit Option

13、Base 1 Dim D() As Single Dim N As Integer Private Sub Form_Load() N = 0 End Sub Private Sub cmdInput_Click() N = N + 1 ReDim Preserve D(N) As Single D(N) = Val(InputBox(“, “输入数值“) lblInput.Caption = lblInput.Caption & “ “ & D(N) End Sub,5.3 程序举例,例5.4 解法1:直接排序法的程序源代码如下: Private Sub cmdOK_Click() Dim

14、I%, J%, X! For I = 1 To N - 1 For J = I + 1 To N If D(I) D(J) Then X = D(I): D(I) = D(J): D(J) =X End If Next J Next I For I = 1 To N lblOutput.Caption = lblOutput.Caption & “ “ & D(I) Next I End Sub,5.3 程序举例,例5.4 解法2:选择排序法 分析:选择排序法的具体方法是(假定N个数据已经存放到D数组中):在D(1)与D(N)中选择一个最小的元素,放在D(1)中;再在D(2)与D(N)中选择一

15、个最小的元素,放在D(2)中;一直下去,直到将在D(N-1)与D(N)中选择最小的元素,放在D(N-1)中为止。,5.3 程序举例,例5.4 解法2:选择排序法 初始: 第一轮:将1记入最小位置号W,用D(W)与D(2)D(7)分别比较 : 第一轮操作完成,数组中最小的数据在第W个位置上,令第W个与第一个数据交换,数组中的数据变为:,5.3 程序举例,例5.4 解法2:选择排序法 第二轮:将2记入最小位置号W,用D(W)与D(2)D(7)分别比较: 第二轮操作完成,数组中最小的数据在第W个位置上,令第W个与第二个数据交换,数组中的数据变为: 以此类推,一直到第六轮比较完成,此时全部数据也就排序

16、完成了。,5.3 程序举例,例5.4 解法2:选择排序法 Private Sub cmdOK_Click() Dim I%, J%, W%, X! For I = 1 To N - 1 W = I For J = I + 1 To N If D(W) D(J) Then W = J Next J X = D(W): D(W) = D(I): D(I) = X Next I For I = 1 To N lblOutput.Caption = lblOutput.Caption & “ “ & D(I) Next I End Sub,5.3 程序举例,例5.4 解法3:冒泡排序法 分析:冒泡排序法的具体方法是(假定N个数据已经存放到D数组中):比较D(1)与D(2),若D(1)D(2),交换D(1)与D(2),否则继续比较D(2)与D(3),若D(2)D(3),交换D(2)与D(3),一直下去,比较D(n-1)与D(n),若D(n-1)D(n),交换D(

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

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