1 / 31

Visual Basic

Visual Basic. 程序设计教程. 第八讲. VB 数组. 本讲教学内容. 4.4 数组与控件数组. 4.4 数组与控件组 1. 引入数组的目的 在实际应用中经常要处理具有相同性质的成批数据,如果要用变量来命名保存就需要很多个变量,处理时使用也不方便。  如果把这些变量作为一组,并用统一的名字来处理会非常方便,因此引入了数组。. 2. 数组的基本概念 (1) 数组: 具有相同类型的一组变量的集合。 (2) 数组名: 命名方式与变量命名相同,但代表一个集合。

lecea
Download Presentation

Visual Basic

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Visual Basic 程序设计教程

  2. 第八讲 VB数组

  3. 本讲教学内容 4.4 数组与控件数组

  4. 4.4 数组与控件组 1. 引入数组的目的 在实际应用中经常要处理具有相同性质的成批数据,如果要用变量来命名保存就需要很多个变量,处理时使用也不方便。  如果把这些变量作为一组,并用统一的名字来处理会非常方便,因此引入了数组。

  5. 2. 数组的基本概念 (1) 数组:具有相同类型的一组变量的集合。 (2) 数组名:命名方式与变量命名相同,但代表一个集合。 (3) 数组元素:变量名后带有(下标)形式的变量,作为整体通过下标的变化而改变。也可称为下标变量。

  6. 3. 数组的类型 (1) 一维数组 例如:A(下标) (2) 多维数组 例如:A(下标1,下标2,…下标n)

  7. 二、数组的定义 1. 作用 定义数组是为了确定数组的类型并给数组分配所需的存储空间,定义数组包括定义数组的名称、维数、大小和类型。 2. 定义格式: Dim <数组名>[维数定义][As 数据类型]

  8. Dim:定义变量和数组的关键字 • 数组名:用户为数组起的名字,必须是合法的标识符。 • 维数定义:它是用来确定数组是几维的,并确定每一维的最大值。下标个数决定维数。 • As 数据类型:说明数组元素的类型,如果省略,则数组默认为Variant类型。

  9. 3. 数组的数据类型 • 数组数据类型指的是数组能存放什么类型的数据。 • 数组数据类型可以用<As 数据类型>子句说明。 • 数组数据类型可以是任何基本数据类型。 • 数组数据定义了什么类型,那么其所有的元素都有相同的数据类型。

  10. 4. 下标变量 • 下标变量就是数组元素,它是数组处理的基本单位。 • 下标变量的表示方法:数组名(下标1,[下标2]) • 说明: (1) 下标用于指明数组元素在数组中的位置。 (2) 下标可以是常数、变量或表达式。 (3) 下标值必须是整数,若为非整数则自动取整 (4) 下标的个数必须与定义数组的维数相同。 (5) 下标不能超界。

  11. 例1:Dim S(2) As Integer 定义一维数组S, 有3个元素,分别为S(0), S(1), S(2),它们都是整型的。 例2:Dim M(2,3) As Single 定义二维数组M,数组有3*4个元素,分别为: M(0,0) M(0,1) M(0,2) M(0,3) M(1,0) M(1,1) M(1,2) M(1,3) M(2,0) M(2,1) M(2,2) M(2,3)

  12. 5. 数组的上、下界 • 数组下标的下界一般默认为0,而用户也可以根据需要自行定义上、下界。 • 格式1:Option Base n 说明: (1) 该语句功能指定数组下标的默认下界。 (2) n的取值只能是0或1,即只能定义下界为0或1。 (3) 该语句必须放在数组定义之前,只能出现在窗体模块或标准模块层,不能出现在过程中。

  13. 格式2:Dim 数组名([下界 To] 上界) 说明: (1) 其中下界和上界表示该维的最小值和最在下标值。 (2) 下界如省略,则按0或1处理,具体由格式1的语句决定。 例如:Dim Ab(-1 To 2) 定义了一个一维数组Ab,其下标的下界为-1,上界为2,数组元素为: Ab(-1), Ab(0), Ab(1), Ab(2)。共四个元素。

  14. 例如:Dim A3(3, 1 To 6) 定义二维数组,第1维的下标为0-3,第2维的下标为1-6。 例如: Dim A3(1 To 3, 2 To 6) 定义二维数组,第1维的下标为1-3,第2维的下标为2-6。

  15. 三、静态数组与动态数组 1. 静态数组:指需要在编译时就分配内存区的数组。 2. 动态数组:指需要在运行时才分配内存区的数组。 3. 定义时用数值常数或符号常量作为下标定维的数组是静态数组;定义时用变量作为下标定维的数组是动态数组。

  16. 4. 动态数组的定义 动态数组的定义分两步: (1) 用Public或Dim声明一个空数组,即没有下标的数组,但数组名后的括号不能省略。 (2) 在过程中有Redim语句声明带下标的数组。 Redim语句的格式: Redim [Preserve] 数组名(下标) As <数据类型> 功能:重新定义动态数组,按定义的下标重新分配存储单元,并可为定义的变量改变存储类型。

  17. 例如: Dim Test1( ) As Integer Sub pro1( ) s=8 ReDim Test1(s) …… End Sub

  18. 说明: (1) 定义没有下标的数组应在窗体层、标 准模块或过程中完成。而ReDim语句只能出现在窗体的事件过程或模块的通用过程中。 (2) 用ReDim定义的数组是在程序运行过程中才获得一定的内存空间,当过程结束时,数组所占的内存被释放。 (3) 即使没有预先定义数组,也可用ReDim语句直接定义数组。 (4) 如果使用Preserve子句,则重新定义数组时原有内容不清除 (5) ReDim语句只能改变数组元素的个数,不能改变数组的维数,也不能改变数组的类型。

  19. 5. 清除数组 (1) 作用:重新初始化静态数组的元素,或释放动态数组的存储空间。 (2) 格式:Erase <数组名>,[<数组名>]…… (3) 说明: • 在该语句中,只写数组名,不写括号和下标。 • 处理静态数组时,如果是数值型,则所有元素置为0,字符型则置为空串。 • 处理动态数组时,将删除数组的结构并释放其内存空间.

  20. 四、数组的基本操作 1. 给数组元素赋值 (1) 如果数据有规律,直接用循环结构完成。 For i = 1 To 20 iA(i) = i * 2 Next i

  21. 给数组a(1 to 3,1 to 3)赋成右侧矩阵的值。 Dim a(1 To 3, 1 To 3) For i = 1 To 3 For j = 1 To 3 a(i, j) = 3 - Abs(i - j) Next j Next i 321 232 123

  22. (2) 利用Array( )函数。 VB中提供的函数Array( )可以一次性给一个数组赋固定的值。例如: Dim a, b, k As Integer a = Array(1, 2, 3, 4, 5, 6, 7, 8) b = Array("a", "b", "c", "d", "e") For k = 0 To UBound(a) Print "a("; k; ")="; a(k) Next k Print For k = 0 To UBound(b) Print "b("; k; ")="; b(k) Next k

  23. 2. 用输入方式给数组元素赋值 (1) 使用InputBox函数 (2) 使用文本框给数组赋值 本来文本框一次只能给输入一个数据,但如果应用Split()函数,就一次可以给多个数组元素赋值。 Dim a, k As Integer a = Split(Text1, ",") For k = 0 To UBound(a) Print "a("; k; ")="; a(k) Next k

  24. 3. 数组的输出    数组的输出通常都是以循环的方式实现的,一维数组是用单循环,二维数组用双重循环。   如果输出的数组元素过多,需要考虑每行输出的元素个数及在合适的位置上换行等,需要使用Tab( )函数和适当地增加Print空语句。

  25. 五、数组应用举例 1. 生成数组并求和,找最大值及所在位置。 【例4-17】随机产生30个三位正整数,对这组数据求和并找出最大值及所在位置。 2. 统计字母出现次数。 【例4-18】输入一个字符串,统计英文字母出现的次数,不区分大小写。

  26. 3. 数组排序   把一组没有次序的数据,按照从小到大(升序)或从大到小(降序)重新排列的算法称为排序算法。   常见的排序算法有选择法、交换法、插入法、合并排序等。 【例4-19】随机产生6个三位正整数,对这组数据按照升序排序(使用选择法排序)。

  27. 4. 数组元素逆序排列   如果给定一组数据,希望把这组数据的头尾对换,这样的处理方法称为逆序排列。 【例4-20】随机产生10个两位正整数,把这组数据逆序排列。

  28. 六、控件数组 1. 控件数组就是一些类型相同且功能相近的控件所组成的数组。 2. 特点 (1) 控件数组中的所有控件都有一个相同的控件名称,拥有相同的Name属性设置。 (2) 数组中的每一个控件都有一个惟一的下标索引号作为标识,下标值由Index属性决定 (3) 控件数组可以共享同样的事件过程,利用下标索引号可以判断事件是由哪个控件引发的。 (4) 控件数组可用于命令按钮、标签组、单选及复选框组等常用控件。

  29. 3. 控件数组的建立 (1) 设计时建立控件组 方法1:通过改变控件名称添加控件数组元素 方法2:通过复制已有控件添加控件数组元素 方法3:通过指定控件的索引值创建控件数组 (2) 运行时添加控件组 例4-21,例4-22

  30. 例4-21 控件组设计实例

  31. 例4-22 运行时生成控件组设计实例

More Related