收藏 分享(赏)

8 数组与记录.ppt

上传人:hwpkd79526 文档编号:8168072 上传时间:2019-06-12 格式:PPT 页数:33 大小:357.50KB
下载 相关 举报
8 数组与记录.ppt_第1页
第1页 / 共33页
8 数组与记录.ppt_第2页
第2页 / 共33页
8 数组与记录.ppt_第3页
第3页 / 共33页
8 数组与记录.ppt_第4页
第4页 / 共33页
8 数组与记录.ppt_第5页
第5页 / 共33页
点击查看更多>>
资源描述

1、Visual Basic 程序设计,蓝兴望,第8章 数组与记录,数组和记录是结构数据类型,是有序的数据的集合。利用数组和记录,可以方便灵活地组织和使用数据。本章介绍如何在Visual Basic中定义和使用数组和记录。,8.1 数组的概念,8.1.1 数组的定义 格式1 : Dim 数组名(下标上界) As 类型名称 (一维数组) Dim 数组名(第一维下标上界, 第二维下标上界) As 类型名称 (二维数组) 格式2: Dim 数组名(下界To 上界,下界To 上界.),其表示形式:A(1),A(10)X(1,1), X1(1,10), X(2,10)Y(0,0,0), Y(1,2,5),与

2、上面声明等价形式: Dim A%(1 to 10) Dim A%(10) 有11个元素 1数组名的命名规则与变量的命名相同。 2数组的元素个数:上界 -下界+1。 3下界必须小于上界,下标下界最小可为-3276832767。缺省则为0,若希望下标从1开始,可在模块的通用部分使用Option Base语句将设为 1。其使用格式是:Option Base 0 | 1 后面的参数只能取0或1,求数组的上界Ubound( )函数、 下界 Lbound( )函数,Ubound( )函数和Lbound( )函数 分别用来确定数组某一维的上界和下界值。UBound(, )LBound( , ) 其中: :必

3、需的。数组变量的名称,遵循标准变量命名约定。 :可选的;一般是整型常量或变量。指定返回哪一维的上界。1 表示第一维,2 表示第二维,如此等等。如果省略默认是1。,8.1.2 默认数组,数据类型为Variant的数组称为“默认”数组。对于默认数组来说,同一个数组中可以存放不同类型的数据。因此,默认数组可以说是一种“混合数组”,8.2 动态数组,8.2.1 动态数组的定义 通常分为两步:首先在窗体层、标准模块或过程中用Dim或Public声明一个没有下标的数组(括号不能省略),然后在过程中用ReDim语句定义带下标的数组。ReDim语句: ReDim Preserve 变量(下标) As 类型 例

4、:Dim a() As IntegerRedim Preserve A(20),说明: (1)ReDim语句是一个可执行语句,只能出现在过程中,并且可以多次使用,改变数组的维数和大小。 (2)定长数组声时中的下标只能是常量,而动态数组ReDim 语句中的下标是常量,也可以是有了确定值的变量。例: Private Sub Form_Click()Dim N As IntegerN=Val(InputBox(“输入N=?”)Dim a(N) As Integer.End sub,例如:Private Sub Command1_Click()Dim a()As Integer Dim n%n = V

5、al(InputBox(“input n“)ReDim a(n)End Sub,(3)在过程中可以多次使用ReDim来改变数组的大小,也可 改变数组的维数。例:ReDim x(10)ReDim x(20)x(20) = 30Print x(20)ReDim x(20, 5) x(20, 5) = 10 Print x(20, 5) (4)每次使用ReDim语句都会使原来数组中值丢失,可以在ReDim后加Preserve 参数来保留数组中的数据。但此时 只能改变最后一维的大小。,Dim a() As Integer ReDim a(10) For i = 1 To 10a(i) = Int(Rn

6、d * 100)Print a(i) Next i,Dim a() As Integer Dim i As Integer, j As Integer ReDim a(3, 2) Cls For i = 0 To 3For j = 0 To 2a(i, j) = i * 2 + jPrint “a(“; i; “,“; j; “)=“; a(i, j); “ “;Next jPrint Next i ReDim Preserve a(3, 4) 改变二维数组的大小,Print “-“For j = 3 To 4a(3, j) = j + 20Print “a(3,“ ; j 2 ; “)=“

7、; a(3, j - 2),Print “a(3,“ ; j ; “)=“ ; a(3, j)Next j,8.2.2 数组的清除和重定义,用Erase语句清除数组的内容,格式为: Erase数组名, 数组名. Erase释放动态数组所使用的内存。在下次引用该动态数组之前,必须用ReDim语句重新定义该数组变量的维数。,例8.1 实验Erase语句的功能 Static Sub Form_Click()Dim Test(1 To 20) As IntegerFor i = 1 To 20Test(i) = iPrint Test(i);Next iErase TestPrintPrint “Er

8、ase Test()“Print “Now the Test Array is Filled with zeros.“For i = 1 To 20Print Test(i);Next i End Sub,8.3 数组的基本操作,8.3.1 数组元素的输入、输出和复制 1.数组的引用x(8),y(2,3),z%(3) 2.数组元素的输入 option base 1dim stuname( ) as string以上两行在窗体层输入Sub form_click( )redim stuname(4) as stringfor i= 1 to 4temp=inputbox(“Enter Name:”

9、)stuname(i)=temp$nextEnd sub,Stuname(1)=“Zhang” Stuname(2)=“Wang” Stuname(3)=“Li” Stuname(4)=“Zhao”,3.数组元素的输出 Option base 1 Dim a(4,4) as integer For i= 1 to 4for j= 1 to 4a(i,j)=inputbox(“Enter Data:”)next j Next i,38 47 62 53 24 84 92 51 35 52 46 87 97 74 85 92,For i= 1 to 4for j= 1 to 4print a(i,

10、j);next j Next i,4.数组元素的复制For i= 1 to 10 name(i)= name(i) Next I,冒泡法排序(递增)算法思想:(将相邻两个数比较,小的调到前头)1)有n个数(存放在数组a(n)中),第一趟将每相邻两个数比较,小的调到前头,经n-1次两两相邻比较后,最大的数已“沉底”,放在最后一个位置,小数上升“浮起”;2)第二趟对余下的n-1个数(最大的数已“沉底”)按上法比较,经n-2次两两相邻比较后得次大的数;3)依次类推,n个数共进行n-1趟比较,在第j趟中要进行n-j次两两比较。,原 始 数 据 8 6 9 3 2 7 第1趟交换后 6 8 3 2 7

11、9 第2趟交换后 6 3 2 7 8 9 第3趟交换后 3 2 6 7 8 9 第4趟交换后 2 3 6 7 8 9 第5趟无交换 2 3 6 7 8 9,For i = 1 To n - 1For j = 1 To n-iIf a(j) a(j+1) Then t=a(j)a(j)=a(j+1)a(j+1)=tEnd ifNext j Next i,冒泡法排序(升序)的VB程序:,8.3.2 For Each.Next语句,For Each 成员 In 数组循环体Exit For.Next 成员,8.4 数组的初始化,数组变量名 = Array(数组元素值) Array函数用来为数组元素赋值

12、,即把一个数据集读入某个数组。该函数只能对一维数组进行初始化,例如:要将1,2,3,4,5,6,7 这些值赋值给数组a,可使用下面的方法赋值。 Dim a() A=array(1,2,3,4,5,6,7) Dim a A=array(1,2,3,4,5,6,7),Aarry函数Aarry函数可方便地对数组整体赋值,但它只能给声明Variant的变量或仅由括号括起的动态数组赋值。赋值后的数组大小由赋值的个数决定。,8.5 控件数组,8.5.1 基本概念 控件数组由一组相同类型的控件组成,这些控件共用一个相同的控件名字,具有同样的属性设置。数组中的每个控件都有唯一的索引号(Index Number

13、),即下标,其所有元素的Name属性必须相同。 控件数组的名字由Name属性指定,而数组中的每个元素则由Index属性指定。,8.5.2 建立控件数组,方法1:对数组中的每个控件都设置相同的名称(Name属性)方法2:先画出一个控件,然后对其执行“复制”和“粘贴”,例子:创建一个数字键盘。 数字键的name属性为number,index属性为0。,Private Sub Form_Load() Dim i As Integer, numwidth As Integer numwidth = (number(0).Width) For i = 1 To 9 Load number(i) If i

14、 Mod 3 = 1 Then number(i).Top = number(i - 1).Top - number(i - 1).Height - 100 number(i).Left = number(0).Left Else number(i).Top = number(i - 1).Top number(i).Left = number(i - 1).Left + numwidth + 100,End If number(i).Caption = i number(i).Visible = True Next i number(0).Width = number(1).Width *

15、3 + 200 End Sub,8.6 记录,8.6.1 记录类型和记录类型变量1.定义记录类型Private | Public Type 数据类型名元素名(下标) As 类型名元素名(下标) As 类型名End Type 2.定义记录类型变量3.记录的嵌套,Private type studinfointno as integerstrname as string*12strsex as string *2sngmark(1 to 4) as singlesngtotal as singlesngaver as single End type,8.6.2 记录变量的初始化及其引用,1.记录变量的初始化 2.记录变量的引用及操作 (1)成员引用 记录变量.成员名 (2)嵌套引用 3.整体赋值,8.7 记录数组,定义:Dim 数组名(下界 To 上界) As 记录名引用:记录数组名(下标).成员名,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报