vb第五章数组
vb第05章
a11 a 21 a 31
a12 a 22 a 32
a13 a 23 a 33
a( 1,1) a(1,2) a(1,3)
a( 2,1) a(2,2) a(2,3)
a( 3,1) a(3,2) a(3,3)
用二维数组A表示该矩阵的所有元素,用第 1个下标表示元素所在的行号,用第2个下标 表示元素所在的列号,则A(I,J)表示第I 行第J列的元素 A。
22
(3)引用第i个学生的信息: Score(1).StudNumber = "01" Score(1).StudName = "张三" Score(1).Math = 89 Score(1).English = 90
或写成: With Score(1)
.StudNumber = "01" .StudName = "张三" .Math = 89 .English = 90 End With
8
5.2 数组的定义
数组在使用之前必须先定义(声明) ,定 义数组的主要目的是为数组分配存储空间。 数组名:存储空间的名称; 数组元素:存储空间的每一个单元。每 个单元的大小与数组的类型有关。 按数组占用存储空间的方式不同,Visual Basic有两种数组: 静态数组 动态数组 两种数组的定义方法不同,使用方法也略 有不同。
13
数组元素的个数:
数组元素的个数等于每一维的大小之积, 即n维数组元素个数为: (上界1-下界1+1)× (上界2-下界2+1) ×…× (上界n-下界n+1)
14
5.2.2 动态数组的定义
动态数组是指在程序执行过程中数组元素 的个数可以改变的数组。 使用动态数组就可以在任何时候改变其大 小,并且可以在不需要时清除动态数组所占 的存储空间。
vb课件——第五章-数组
第五章数组5.1 数组的概念在VB 中,把一组相互关系密切的数据放在一起并用一个统一的名字作为标志数据放在一起并用一个统一的名字作为标志,,这就是数组数组。
数组元素下标为数组名,2是下标。
在使用数组元素时,52一维数组5.2 维数组对于固定大小的维数组用如下格式进行定义对于固定大小的一维数组对于固定大小的一维数组,,用如下格式进行定义:说明符数组名数组名((下标下标))[As 类型]数组名的命名遵守标识符规则(2)“数组名”的命名遵守标识符规则。
如果不指定下界,下界默认为0。
为Variant 类型类型。
数组名数组名((下标下标))【例】Next i【例】40:该问题可分三部分处理:是输入40:该问题可分三部分处理:一是输入:该问题可分三部分处理:一是输入40分析是输入aver =aver +score aver aver score (i )【例】随机产生随机产生1515个不重复的个不重复的A A -Z 。
Dim found As BooleanNext jjE d If End If【例】冒泡法第1轮:先将A(1)与A(2)比较,若A(1)>第2轮10个数中的第二小的数。
第1轮第2轮Next i【例】For i =1To 10For i 1 To 10Next i维数组5.3 二维数组]上界][A 说明符数组名([下界to]上界,[下界to]上界)[As 类型]的存储空间的存储空间。
数组名数组名((下标1,下标2)【例】入个维字符串数组xm(4)和个二维数值数组a 入一个一维字符串数组和一个二维数值数组Print Tab """"Print Tab(35);法律;Tab (45);平均分For j =1To 3For j 1 To 31、dim intA(dim intA(--3 to 5) as integer如何给数组元素赋初值?2、如何给数组元素赋初值?利用循环结构3、求数组中最大元素及所在下标=For i 1To 8Then4、程序运行后,按回车键,其输出结果为A) 484B) 2371C)498C) 4985D)498D) 4984545.4动态数组di (10)i tdim a(10) as integer一直占据这块内存区域这样一直占据这块内存区域,这样╳一是二是第一步第二步n =Val "input n"n Val (InputBox (input n ))以是有了确定值的变量以是有了确定值的变量。
VB第5章 数组、结构与集合
其中的“变量名”表示一个用于依次存放各数组元素的变量, 其类型必须与数组元素的类型一致。在需要遍历所有数组元素时, 特别是在数组长度不易确定的环境中,使用这种For Each…Next语 句就很方便。
5.1 数组
5.1.1 声明和访问数组 3. 多维数组 下标数量大于等于2的数组称为“多维数组”。在多维数组中, 比较常用的是二维数组,其数据组织形式与常见的二维表格十分相 似。声明二维数组与声明一维数组的语法格式类似,例如: Dim ary1(3, 4) As Integer '声明一个4行5列的数组 '声明一个两索引最大值不确定的二维数组 Dim ary2(,) As Integer
第5章 数组、结构与集合
本章讲述的主要内容
5.1 数组数组
在现实生活中有着各种各样的数据,这些数据在所讨论的问 题中可分为两类:一类是仅与其取值有关,而与其所在的位置无 关;更常见的另一类是不仅与其取值有关,并且与其所在的位置 也密切相关,如二维表格中的数据与其所在行列坐标有着密切的 关系。 前面我们所讲过的变量都是简单变量,利用简单变量可以解 决不少问题,但是如果在程序设计中仅使用简单变量,势必受到 简单变量单独性和无序性的限制,而难于或无力解决那些数据不 仅与取值有关,而且与其所在位置也有关的较复杂的问题,如学 生成绩就隐含着名次和成绩。要想方便地解决这些问题,通常需 要借助于复杂数据类型即数组。数组是一些具有相同类型的数据 按一定顺序组成的序列,数组中的每一个数据都可以通过数组名 及唯一索引号(下标)来存取。
声明多维数组时,用逗号表示维数,一个逗号表示二维数组, 两个逗号表示三维数组,依次类推。
5.1 数组
5.1.2 Array类 Visual Studio提供的Array类中包含了一些适用于数组常用操 作的方法,使用这些方法能完成数组清零、复制、排序、反转等常 用操作。Array类的常用方法见表5-2。
VB程序设计第五章 数组
5. 求数组中最大元素和所在下标及各元素之和
方法:先假设第一个元素及下标为所求结 果,然后依次比较。 利用循环结构进行
Dim Max As Integer, iMax As Integer, sum As Integer Max=iA(1):iMax=1: sum=iA(1) For i = 2 To 10 sum = sum + iA(i) If iA(i) > Max Then Max = iA(i) iMax = i End If 求最小值同样方法进行 Next i
(a) 利用Array()函数,可以直接给数组赋值; (b) 数组的声明必须是动态数组或者省略圆 括号,且其类型必须为 Variant (c) 数组的下界默认为0,也可以通过 Option Base 语句确定 (d) 上界由 Array() 函数括号内参数个数确定, 或者由 UBound() 函数确定。
赋值时注意: (1) 赋值号两边的上界类型必须一致 (2) 如果赋值号左边是一个动态数组,则赋值后数组 大小与右边一致。 (3) 如果左边是静态数组,则数组赋值出错!
4. 数组的输出
数组的输出,采用循环输出即可 例:输出方阵sC中的下三角元素
For i = 0 To 4
For j = 0 To i sc(i, j) = i * 5 + j Print sc(i, j); " "; Next j Print ' 换行 Next I (参见P93的代码。)
下标可以是整型的常数、变量、表达式, 也可以是又一个数组元素。 数组元素的使用规则和同类型的简单变量 相同。 一般情况下,数组元素类型必须相同。 但当数组类型定义为 “variant” 时,可以包 含不同类型的元素。
vb教程5
数组的引用
引用数组元素的格式为: 数组名(下标) 数组名(下标) 说明: (1) 在程序中,凡是能用变量的地方,都可用数组 元素来替换。 (2) 引用数组元素时,要注意数组名、类型及维数 要与定义的一致。 (3) 数组元素的下标要在定义的范围之内。
第5章 数组
例 5-3 定义一个可存放不同类型数据的一维数组 并输出。
第5章 数组
例5-4
用LBound函数和UBound函数改写例5-3。
第5章 数组
静态数组
静态数组的二种形式: 静态数组的二种形式: 用Dim语句所定义的数组。 Dim语句所定义的数组。 用Static语句定义的数组。 Static语句定义的数组。 两者的区别: (1) Static语句只能出现在过程中,Dim 语句不仅可 Static语句只能出现在过程中,Dim 以出现在过程中,还可以出现在通用声明中。 (2) 在过程中用Dim语句定义的数组,过程执行结束 在过程中用Dim语句定义的数组,过程执行结束 后将释放内存空间。 (3) 在过程中用Static语句定义的数组,过程执行结 在过程中用Static语句定义的数组,过程执行结 束后将不会释放内存空间。
第5章 数组
例5-6
随机产生n 个学生的一门课成绩,在图片框 中输出,求其平均成绩,用文本框输出,学生人数 由文本框输入。
第5章 数组
例5-6 代码
第5章 数组
数组的基本操作
数组是一种构造类型,数组名通常是整个数组 的标识,对数组的操作实际上是对数组元素的操作。 基本操作一般是指对数组元素所进行的输入和输出, 即如何给数组元素赋值,又如何将数组元素的值显 示在窗体上或控件上。
第5章 数组
数组元素的输入(方法一)
VB第5章 数组
5.4 数组的基本操作
4. 求数组中最大元素及其下标
Dim Max As Integer,iMax As Integer Dim A (1 to 10) as Integer Max=A(1):iMax=1 ‘置初值 For i = 2 To 10 If A(i)>Max Then Max=A(i) iMax=i End If Next i
注意:(1)区分数组的声明和赋值:
5.4 数组的基本操作
2. 数组元素的赋初值
用循环 Dim a(10) as long For i = 0 To 10
A(i)=0 A(i)=inputbox(…….)
Next i
5.4 数组的基本操作
3. 数组的输出
例如:输出矩阵sC中的下三角元素 Dim sc (4,4) as Integer For i = 0 To 4 For j = 0 To i sc(i, j) = i * 5 + j Print sc(i, j); " "; Next j Print ' 换行 Next i
5.3 动态数组及其声明
动态数组指在声明数组时未给出数组的大小 (即省略括号中的下标),当要使用它时,随时用 ReDim语句重新指出数组大小。
定义: Dim sArray() as integer 改变大小:ReDim sArray(n)、ReDim sArray(m,n)
注意: (1)只有动态数组才可以使用Redim在程序中改变其大小和维数;
第5章 数 组
主要内容
1、静态数组的定义
2、动态数组的定义
3、ห้องสมุดไป่ตู้定义类型的定义
5.2 静态数组及其声明
vb第五章 数组
第五章数组一、教学内容本章讨论数组的知识,一维数组,多维数组和动态数组,以及使用数组编写程序。
二、目的要求1.熟悉使用一维数组编写程序;2.熟悉使用多维数组编写程序;3.熟悉动态数组的使用方法。
三、教学重点与难点教学重点:一维数组和多维数组。
教学难点:动态数组。
四、教学方法多媒体教学为主。
适当提问,加深学生对概念的理解。
本章6课时。
第一讲一维数组(2学时)一、教学内容单选框和复选框。
二、目的要求熟悉一维数组的概念、使用方法。
三、教学重点与难点教学重点:一维和多维数组。
教学难点:动态数组。
四、教学方法多媒体教学。
五、教学过程5.1 概述数组就是很多元素的变量名相同,在内存中是连续存储的若干个存储单元,每个数组元素的类型一样,为了区分这些元素,为每个元素赋予不同的下标值。
数组的声明(也叫做定义):[Public|Private|Dim|Static] 数组名(下标1[,下标2[…]])[as 数据类型]。
数组的定义举例:Dim a(5) As IntegerDim b(3 to 8) As IntegerDim c(8)说明:a(5)共有6个元素,分别是a(0)、a(1)、a(2)、a(3)、a(4)和a(5),b数组共有6个元素分别是b(3)、b(4)…b(8),c数组共有c(0)、c(1)…c(8)共9个元素。
如果不习惯以0为下标起点,可以设置下标为1,Option Base 1,该语句有只有两个值,分别是Option Base 1和Option Base 0,其中Option Base 0是默认值。
程序举例:1.下面的程序可以求一维数组的最大元素以及最大元素的下标。
编写代码Option Base 1Private Sub Command1_Click()Dim a(10) As IntegerDim xb As IntegerFor i = 1 To 10a(i) = Val(InputBox("输入数组元素"))Next ixb = 1: zuida = a(1)For i = 2 To 10If a(i) > zuida Thenzuida = a(i): xb = iEnd IfNext iPrint zuida, xbEnd Sub六、小结一维数组的概念;一维数组的编程方法。
第5章vb数组
5.2.1 一维数组的定义
3.引用格式:数组名(下标) • 说明:
(1)下界≤下标≤上界 (2)下标可以是整型变量、常量或表达式,例如: Dim i=2, A(10), B(20) A(l)=5:A(2)=B(i):B(i+1)=A(i+2)
• 注意:引用数组元素时下标不能越界 分析下列程序的错误:
算法:把n个数中最小的数选择出来与a(1)对换,再将a(2)到a(n-1)中最小 的数与a(2)对换。每一轮选择,找出一个未经排序的数中最小的一个, 共选择n-1轮。 程序结构:需要双重循环,外循环是用来控制总共选择的次数,内循环是用 来查找在剩余的序列中最小的数。 选择法排序
5,
2, 2, 2, 2, 2,
For i = 1 To 50 score(i) = InputBox("请输入学生的成绩") sum = sum + score(i) Next i ave = sum / (i - 1) Print ave For i = 1 To 50 If score(i) > ave Then n = n + 1 Next i Print n
第5章 数组
本章内容
• • • • • • 数组的概念与分类 一维数组 二维数组 动态数组 控件数组 控件
5.1 数组的概念与分类
5.1.1 相关概念 数组:就是具有相同性质的多个个体数据的总称。 数组元素:数组中的每一个个体数据,称为数组元素。 数组的本质:是在内存中一片连续的存储空间。 数组下标:数组元素在该数组中的位置。 例如:score(i) 注:数组不是一种数据类型,而是一组相同类型的变 量的集合。
2.数组的输出
(2)For Each...Next语句 • 格式: For Each 成员 In 数组 循环体 [Exit For] …… Next [成员]
VB第5章详细介绍
2. 用ReDim语句分配实际的元素个数 语句分配实际的元素个数
动态数组声明后还不能立即使用,要先用 动态数组声明后还不能立即使用,要先用ReDim 语句来指定数组的大小。语法是: 语句来指定数组的大小。语法是:
ReDim <数组名 数组名>([<下界 To ] <上界 ,[<下界 To ] 下界1> 上界1>, 下界 下界2> 数组名 下界 上界 <上界 , [,… ]) [ As <数据类型 上界2>, , 数据类型>] 上界 数据类型
5.3 动态数组及其声明
注意事项
(1) 在 ReDim语句中的下标可以是常量, 也可以是 语句中的下标可以是常量, 语句中的下标可以是常量 有确定值的变量; 有确定值的变量; (2) 在过程中可以多次使用 在过程中可以多次使用ReDim来改变数组的大 来改变数组的大 也可改变数组的维数; 小,也可改变数组的维数; (3) 每次使用 每次使用ReDim语句都会使原来数组中的值丢 语句都会使原来数组中的值丢 可以在ReDim语句后加 语句后加Preserve参数来保 失 , 可以在 语句后加 参数来保 留数组中的数据, 但使用Preserve只能改变最 留数组中的数据 , 但使用 只能改变最 后一维的大小,前面几维大小不能改变。 后一维的大小,前面几维大小不能改变。
5.2 静态数组及其声明
个整数, 【例5-2】 从键盘输入 个整数,输出所有输 】 从键盘输入5个整数 入的数据和其中的最大数。 入的数据和其中的最大数。
查看代码
5.2 静态数组及其声明
5.2.2 多维数组
中可以声明多维数组。 在Visual Basic中可以声明多维数组。多维数组 中可以声明多维数组 的声明形式如下: 的声明形式如下: <定义词 <数组名 定义词> 数组名 数组名>([<下界 下界1> To ]<上界 , 上界1>, 定义词 下界 上界 [<下界 To ] <上界 [, … ]) [ As <数据类型 下界2> 上界2> 数据类型>] 下界 上界 数据类型 说明: 说明: (1)下标个数决定数组的维数,最多可为 维。 )下标个数决定数组的维数,最多可为60维 上界– (2)每一维的大小 上界–下界 + 1;数组的大小 )每一维的大小=上界 ; =每一维大小的乘积。 每一维大小的乘积。 每一维大小的乘积
VB第5章 数组
第5章 数组
2013-7-4
2013-7-4
10
下界范围:[-2,147,483,648,2,147,483,647],若省略下 界,则默认值为0。 一维数组的大小为:下界-上界+1。 数组类型一般都在As子句中给出,若省略As子句,则定 义是默认数组。另外,也可通过类型说明符来指定数组的 数据类型。如:Dim a%(10), b!(2 to 6), c#(8)。 定义数组时,下界必须小于上界。可通过LBound和 UBound来测试数组上界值和下界值。其格式为: LBound(数组[,维数]) UBound(数组[,维数])
2013-7-4
7
5.2.1 一维静态数组
声明一维静态数组的方法与声明一般变量类似,不同的是 声明数组时,要在数组名后面加一对括号,括号里面用数字 或 “下界 to上界”的方式指明数组的大小。
2013-7-4
8
1、数组定义的格式
第一种格式: Dim 数组名(下标上界) [As 数据类型] 如:Dim a(5) As Integer 数组a包含6个元素:a(0),a(1),…,a(5)
2013-7-4
12
3、数组操作
一般针对数组中的各个元素进行,多结合循环语句,通过 引用数组的下标实现。 例如: Dim a(9) As Integer '声明数组a For i = 0 To 9 a(i) = 2 * i + 1 '给数组中元素赋值 Print a(i) '打印出数组中元素 Next i
vb第五章 数组
5.2 数组的基本操作
VB不允许对数组整体操作,例如: Dim A(2,3) As Integer A=2 不允许! 只能对数组元素进行操作,例如: A(1,1)=1 A(1,3)=2 A(2,2)=A(1,1)*2+A(1,3)
25
一、数组元素的赋值
1、用赋值语句给数组元素赋值 例如:A(1,1)=1 A(1,2)=5 2、通过循环语句给数组元素赋值 例如: For I=1 To 10 A(I)=Int(100*Rnd)+1 Next I 该循环语句产生10个100以内的随机整数,存 入数组A中。
22
For Each –Next举例(一维数组的使用) P90例
运行结果: Option base 1 14 21 28 35 42 49 Private Sub Form_Click() 56 63 Dim A(12) As Integer, V As Variant 70 77 84 91 Dim I%, Js% Js = 0 Js = 14 For Each V In A For I = 1 To 12 Js = Js + 1 A(I) = Js Print V; If Js Mod 6 = 0 Then Print Js = Js + 7 输出每行 Next V Next I 6个元素 Print End Sub
数组是具有相同数据类型的多个 值的集合,数组的所有元素按一定顺 序存储在连续的存储单元中。
14
一维数组的结构
逻辑结构 内存的存 放次序
StrA(0) StrA(1) StrA(2) StrA(3) StrA(4) StrA(5) StrA(6) StrA(7) StrA(8)
存储结构
第5章 VB数组
1.定长数组的声明
【说明】
① 模块级数组变量的作用范围是在整个模块的任何事件过 程中都可以使用的数组变量;而过程级数组变量只在定 义它的过程中有效,即谁定义谁使用。
② <维数定义>是指数组的维数以及各维数组的大小,其格 式:[<下标下界1> To ] <下标上界1> [, [<下标下界2> To ] <下标上界2>]…
(2)数据已知且数据量很大
【例5-6】使用Split()函数给一维数组元素赋值。编程求任意个 数中的最大数和最小数,并给出它们在数组中的位置。
Private Sub Command1_Click() Cls Dim a, max As Single, min As Single a = Split(Text1.Text, ",") For i = LBound(a) To UBound(a) Print a(i) & " "; Next Print max = Val(a(0)) min = Val(a(0))
【说明】
① 有关Split()函数和Ubound()及Lbound()函数的 使用及注意事项参见本节的“3.与数组操作有关 的3组函数的——Split()函数的应用、Ubound() 和Lbound()函数的应用”。
② 由于使用文本框输入数据,所以用户可以输入 任意数据,因此程序是通用的。
③ 在程序中当用户不好确定数组的上下界时,即 用户在无法准确给出数组的上下界时,可用系统 提供的UBound和LBound函数,就可非常方便 准确地给出数组的上下界。
vb程序设计第05章数组
Private Sub Form_Click() 2.数组的赋值 Dim a(4) As Integer, b() As Integer, 在VB6.0中,提供了数组直接对数组的赋值。例如: i% a(0) = 3: a(1) = 6: a(2) = 13 Dim a(4) As Integer, b() As Integer,i% = 34 a(3) = 23: a(4) b=a a(0)=3: a(1)=6: a(2)=13 For i = 1 To 4 ReDim b(UBound(a)) a(3)=23: a(4)=34 Print b(i);
例将数组中各元素交换 1 2 9 10 3 4 5 6 7 8 9 10 11 12 1 2 3 4 5
11 12 6 7 8
第一步:将前面的5个数倒置; 5 4 3 2 1 6 7 8 9 10 11 12
第二步:将中间的3个数倒置;
5 4 3 2 1 8 7 6 9 10 11 12 12 11 10 9 第三步:将后面的4个数倒置; 5 4 3 2 1 8 7 6 第四步:将所有的12个数倒置;
?在编程时通过load方法添加其余的若干个元素也可以通过unload方法删除某个添加的元素?每个新添加的控件数组通过left和top属性确定其在窗体的位置并将visible属性设置为true
第五章 数组(4+2学时)
5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 数组的概念 静态数组及声明 动态数组及声明 数组的基本操作 控件数组 自定义数据类型 常用算法(二) 常见错误
第5章 VB数组
5.3 动态数组
• 动态数组在程序运行时,可以重定义数组的维数。 动态数组也称可重定义数组。使用动态数组可以 根据数据多少灵活地改变数组大小。与固定维数 的数组相比,使用动态数组能够有效地管理内存。 动态数组使用方法和维数固定的数组一样,也可 以使用Private、Static和Public定义其作用域。 • 声明动态数组的时候,可以指明其数据类型,但 不能指明其维数大小。在程序运行时,可以使用 关键字ReDim随时重新定义数组的大小,并为该数 组分配内存。
读者需要注意的是动态数组在定义的时候不能指明其维数第一次重定义的时候就确定了数组的维数后面重定义的时候不能改变
第5章 数组
• 数组是具有相同变量名,通过不同的下标来访问或修改的 一组变量。数组在VB程序设计中应用十分广泛。使用数组, 既可以简化程序结构,又可以完成一些特殊的操作。VB提 供了一维数组、多维数组、动态数组和数组控件等数组形 式。本章包括以下知识点。 • 数组的声明和应用。 • 多维数组的使用方法。 • 一维数组、二维数组与循环程序结构的结合应用。 • 动态数组的使用方法,动态数组的定义、重定义的要求。 • 控件数组的创建和使用。 • 通过本章的学习,读者可以快速掌握各种数组的定义和使 用方法,以及数组和循环程序控制结构的结合使用组赋值的顺序。
•
2 判断下列数组声明或重定义是否正确。
•
3 说明下列代码的功能。
5.1.1 数组声明
• 数组和变量一样,通常先声明再使用。数组的声明格式如 下。 • Dim arrayname (length) As type • 其中,arrayname为数组名;length为数组长度;type为数 组的数据类型,声明数组的数据类型以后,数组中的所有 元素的数据类型都是type。 • 数组的命名规则和变量相同。数组的长度是数组元素下标 的上限,使用下标引用数组元素时,下标值不能大于该上 限值,否则,系统提示下标越界出错。上述声明的数组, 元素有length+1个,第一个元素的下标为0,第length+1个 元素的下标为length。 • 数组也可以使用To语句显式地声明其上下界,声明格式如 下。 • Dim arrayname (lower To upper) As type
vb5
5.1 数组 5.2 数组 自定义类型及其数组 5.5 综合应用
5.1 数组
数组并不是一种数据类型,而是一组相同类型变量 数组并不是一种数据类型, 的集合,数组必须先声明后使用。数组又分为静态( 的集合,数组必须先声明后使用。数组又分为静态(定 长)数组和动态(可变长)数组两类。 数组和动态(可变长)数组两类。
For i=0 to UBound(b) b(i);” ; Picture1.Print b(i); ”; Next i 注意:(1)利用 函数对数组各元素赋值 数组各元素赋值, 注意:(1)利用 Array 函数对数组各元素赋值,声明的数 组是可调数组或连圆括弧都可省略的数组, 组是可调数组或连圆括弧都可省略的数组,并且 其类型只能是Variant. 其类型只能是Variant. (2)数组的下界为0 (2)数组的下界为0,上界由 Array 函数括号内的参 数组的下界为 数个数决定, 获得, 数个数决定,也可通过函数 Ubound 获得, 也可改变数组的维数。 也可改变数组的维数。 2、数组的输入 可以通过文本控件输入, InputBox函数输入 函数输入。 可以通过文本控件输入,也可通过 InputBox函数输入。
5.2 数组的基本操作
1、给数组元素赋初值 (1)利用循环结构 For i=1 to 10 A(i)=0 Next i (2)利用 Array 函数 Dim a As Variant, b As Variant, i% a=Array(1,2,3,4,5) b=Array(“abc” b=Array(“abc”,“def”,“67”) def” 67” For i=0 to UBound(a) a(i);” ; Picture1.Print a(i); ”; Next i
vb 第五章 数组
b(0) b(1) b(2)
Print各元素赋值
Visual Basic程序设计/第5章 数组
23/52
3. 数组的输入和输出
(1)一维数组的输入和输出
Option base 1 Dim a(10) As Integer For i=1 To 10
• 在使用动态数组时,用ReDim语句指
出该数组的大小
保持
ReDim 数组名(下标1[,下标2…]) [As 类型]
一致
• ReDim语句中,下标可以是常量也可以是有 了确定值的变量
Visual Basic程序设计/第5章 数组
14/52
引例: 求一个班全体学生的平均成绩
Dim mark!(), n As Integer n=Val(InputBox(“请输入该班的学生人数"))
Visual Basic程序设计/第5章 数组
12/52
• 数组下标测试函数
Lbound(数组名[, 维]): 返回数组中指定维的下界 Ubound(数组名[, 维]): 返回数组中指定维的上界
Dim y(1 To 12, 5 To 20, -3 To 6)
Print Lbound (y, 1), Ubound (y, 1)
2. 多维数组 Dim 数组名(下标1,下标2 [,下标3,…] ) [ As 类型 ]
[ 说明 ]
•下标:必须为常数,不可以为表达式或变量 •下标个数决定了数组的维数。在VB中允许最多有60维的
数组 • 每一维的大小: 上界 - 下界 + 1 • 数组的大小为每一维大小的乘积
Visual Basic程序设计/第5章 数组
Next i For Each x In a
VB数组——精选推荐
‘ 将数组声明中缺省<下界>下标
4.<下界>和<上界>不能使用变量,必须是常量,常 量可以是直接常量、符号常量,一般是整型常量。
Const Num As Integer =10 Dim N As Integer N=Val(InputBox(“Enter N=?”))
Dim A9(N) As Integer
‘ 一维数组 ‘ 二维数组 ‘ 三维数组
数组中的每一个数据称为数组元素,用 数组名和该数据在数组中的序号来标识。序 号又称为下标,数组元素又称为下标变量。 例如,S(2)是一个数组元素,其中的S称为 数组名,2是下标。在使用数组元素时,必 须把下标放在一对紧跟在数组名之后的括号 中。S(3)是一个数组元素,而S3是一个简单 变量。
一维数组形式:
Dim 数组名([<下界>To]<上界>)[As <数据类型>] 或: Dim 数组名[<数据类型符>]([<下界>To]<上界>) 例:Dim a(1 to 10) As Integer
1是下标的下界
10是下标的上界
与上面声明等价形式:
数组元数的数 据类型
Dim a% (1 to 10)
Dim X(Num) As Long
5.如果省略As子句,则数组的类型为变体类型。
Dim B(10)
6.数组中各元素在内存占一片连续的存储空间。
A(0) A(1) A(2) ….
A(n)
一维数组在内存中存放的顺序
5.2.2.一维数组的引用
使用形式: 数组名(下标)
其中:下标可以是整型变量、常量或表达式。
冒泡算法示意
VB语言程序设计教程第05章 数组与过程
12
5.1 数组
2.选择法排序。其思路是:
第一轮:将第1个数与其后的每个数进行比较,若第1个数大, 则将两数对调。经过第一轮比较对调后,所有数中的最小数被 放到了第一个位置; 第二轮:将第2个数与其后的每个数进行比较,若第2个数大, 则将两数对调。经过第二轮比较对调后,将所有数中第2小的 数放到了第二个位置; ……
a(i) = 2 * i - 1
Next i
6
5.1 数组
(3)用Array( )函数为数组整体赋值。 格式:Array(元素值列表)。 例如: Dim a '定义变体型变量a a = Array(3,4,7,2,5,9) '将变量a转变成具有6个元素的数组a,并赋值 数组元素a(0)、a(1)、...a(5)的值分别为:3、4、7、2、5、9。 (4)整个数组的复制。需要用循环来实现。例如,可以将数组a 的所有元素赋给另一个数组b:
Dim a(1 To 10) As Integer, i As Integer For i = 1 To 10
a(i) = Val(InputBox("请输入第" & i & "个数", "数组输入"))
Next i
(2)将数组元素赋值为有规律的数列。例如,
Dim a(1 To 10) As Integer, i As Integer For i = 1 To 10
Dim a%(1 To 10),b%(1 To 10) For i = 1 To 10 b(i) = a(i) Next i
7
5.1 数组
4.一维数组元素的输出
例如:在窗体上输出数组元素的值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4. 通过文本框控件获得值
Option Base 1 Private Sub Command1_Click()
Dim A(5) As Integer, i As Integer, str1 As String Dim k As Integer, s As Integer str1 = Trim(Text1) For i = 1 To 5
Dim A(5) As Integer, B(8) As Integer,i As Integer For i=1 To 5
பைடு நூலகம்A(i)=1 Next i For i=1 To 8
B(i)=i + 9 Next i End Sub
2. 通过InputBox函数获得值
Option Base 1 Private Sub Form_Click()
1. 在窗体上输出(一维数组)
Option Base 1 Private Sub Command1_Click()
Dim A(5) As Integer, i As Integer Randomize For i = 1 To 5
A(i) = Int(Rnd * 90) + 10 Next i For i = 1 To 5
A( i ) = InputBox ("请输入第" & i & "个整数", "用户输入", 0 ) List1.AddItem A( i ) Next i End Sub
二维数组的定义
定义二维数组的一般形式如下:
Dim 数组名 (下标1,下标2) As 数据类型
说明行数 说明列数
例如:Dim A(2,3) As Integer
For j = 1 To 5 A(i, j) = Int(Rnd * 90) + 10 Picture1.print A(i, j) ;
Next j Picture1.print ‘换行 Next i End Sub
3. 在立即窗口上输出(一维数组)
Option Base 1 Private Sub Command1_Click()
Dim A(10) As Integer,i As Integer For i=1 To 10
A(i)= InputBox(“输入A(” & Str(i) & “)的值” , “应用举例”, 1) Next i End Sub
3. 通过Array函数获得值
Array函数是将一个数据集合一次赋值给一个变体型变量或变 体型动态数组而形成一维数组。
(1)对少量数组元素的赋值 (2)数组元素值的随机生成 (3)按某种规律生成数组元素值
(1)对少量数组元素的赋值
Option Base 1 Private Sub Form_Click()
Dim A(10) As Integer A(2)=3 A(5)=8 A(10)=1 End Sub
(2)数组元素值的随机生成
A(0,0) A(1,0) A(2,0) …… A(0,3) A(1,3) A(2,3)
按列存储
?Dim C(-3 to 2) As String *3
二维数组举例
分别使用二维数组存储以下矩阵并在窗体上输出
1 1111 1 1111 1 1111 1 1111
11111 22222 33333 44444
Option Base 1 Private Sub Form_Click()
Dim A(10) As Integer,i As Integer Randomize For i=1 To 10
A(i)=Int(Rnd*90)+10 Next i End Sub
(3)按某种规律生成数组元素值
Option Base 1 Private Sub Form_Click()
列
Dim B( 1 to 2 , 3 ) As Integer
行
Dim C(4 , -3 to 2 ) As String * 3
?试分析以上二维数组的大小
二维数组元素
二维数组元素的表示:
数组名(下标1,下标2)
行号 列号
例如:Dim Score(2,3) As Integer 数组元素分别表示为
命名规则与变
量一样
必须是常量
如缺省则为变体类型
一维数组的定义
定义一维数组的一般形式如下:
Dim 数组名 (下标) As 数据类型
例如:Dim A(6) As Integer
Dim B( 1 to 6 ) As Integer
下界
上界
Dim C( -3 to 2 ) As String * 3
一维数组定义举例
Dim A(2,3) As Integer
Score(0,0) Score(1,0) Score(2,0)
Score(0,1) Score(0,2) Score(1,1) Score(1,2) Score(2,1) Score(2,2)
Score(0,3) Score(1,3) Score(2,3)
Print A(i), Next i Print For i = 1 To 5
Print A(i); Next i End Sub
1. 在窗体上输出(二维数组)
Option Base 1 Private Sub Command1_Click()
Dim A(5, 5) As Integer, i As Integer, j As Integer Randomize For i = 1 To 5
一维数组元素
一维数组元素的表示: 数组名(下标)
例如:Dim Score(10) As Integer 数组元素分别为Score(0), Score(1),……, Score(10), 它们的初始值均为0
注意
1、下标可以是常量、变量或算术表达式 2、当下标的值为非整数时,VB会按照CInt函数的处理方式将 其转换为整数。
For j = 1 To 5 A(i, j) = Int(Rnd * 90) + 10 print A(i, j) ;
Next j print ‘换行 Next i End Sub
2. 在图片框上输出(一维数组)
Option Base 1 Private Sub Command1_Click()
Dim A(5) As Integer, i As Integer Randomize For i = 1 To 5
例如:Score(3.5)转换为Score(4) Score(6.5)转换为Score(6)
一维数组存储方式
Dim A(6) As Integer
A(0) A(1) A(2) A(3)
默认下界为0,也可通过语 句Option Base n设定默认 下界为n
A(4) A(5) A(6)
Dim B(1 to 6) As Integer
一般应用形式是:
<变体变量名>|< Variant类型动态数组名>=Array([数据列表])
注:1、<数据列表>为用逗号分隔开的数据集合 2、函数创建的数组的长度与列表中的数据的个数相同。 若缺省<数据列表>,则创建一个长度为0的数组。
3、不可以用Array函数给非Variant类型的变量赋值
Dim A(5) As Integer, i As Integer Randomize For i = 1 To 5
A(i) = Int(Rnd * 90) + 10 Next i
示例程序
Option Base 1 Private Sub Form_Click()
Dim A As Variant, B() As Variant A = Array(5, 4, 3, 2, 1) Print A(1); A(2); A(3); A(4); A(5) A = Array(1.5!, 2.3!, 3.6!, 4.1!) Print A(1); A(2); A(3); A(4) A = "NO Array" Print A B = Array(1, 2, 3, 4, 5, 6) Print B(1); B(2); B(3); B(4); B(5); B(6)
判断以下一维数组定义是否正确,如正确分析其大小
Dim M As integer Const N As Integer = 5 Dim A(N) As Integer √ Dim B(1 To 6.6) As Integer √ Dim C(1 To 2 + 3) As Integer √
Dim D(0 To M) As Integer ×
依次将每个一维数 组元素的值添加至 列表框内
思考
使用一维数组保存用户连续输入的十个整数,并将它们 依次添加至列表框中(注:要求使用InputBox函数)
Option Base 1 Private Sub Command1_Click()
Dim A(10) As Integer,i As Integer For i = 1 To 10
Score(0,0) Score(1,0) Score(2,0)
Score(0,1) Score(0,2) Score(0,3) Score(1,1) Score(1,2) Score(1,3) Score(2,1) Score(2,2) Score(2,3)
注:它们的初始值均为0
二维数组存储方式
k = InStr(str1, ",") ‘确定逗号位置 A(i) = Left(str1, k - 1) s = s + A(i) str1 = Right(str1, Len(str1) - k) Next i Text2 = s End Sub