数组与自定义数据类型教学教材
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Dim a(1 to 10) as Single For i=1 to 10 a(i)=0
Next i
2020/7/11
5.1 数组
3 数组的赋值 1)静态数组元素赋值
对于静态数组,不能将数组名作为被赋值对象,而只能将数 组元素作为赋值对象,利用数组元素是有序存储和静态数组元 素个数在声明时已经确定的特点,采用循环结构,逐一为数组 元素赋值。通常,采用循环次数固定的For…Next结构。一维 数组可通过单循环实现,二维数组可通过双层循环实现。
5.1 数组
1 数组的基本概念 在表示数组元素时,应注意以下几点: (1) 用圆括号把下标括起来,不能使用中括号或大括号代替,
圆括号也不能省略。 (2) 下标可以是常量、变量或表达式,其值为整数,如常量、
变量或表达式的值为小数时,将自动“四舍五入”。 (3) 下标的最小取值称为下界,下标的最大取值称为上界。在
Dim a(1 to 10) as Single For i=1 to 10 a(i)=0
Next i
2020/7/11
5.1 数组
3 数组的赋值 2)动态数组赋值
动态数组赋值时,既可以将数组元素做为被赋值的对象,也 可以将数组名作为被赋值的对象。这是因为:
尽管动态数组在执行声明(Dim语句)时,数组大小没有确 定,但是当执行ReDim语句后,动态数组元素个数和下标的上 下限也就确定了,即数组元素下标的下界可由LBound(数组名) 函数得到(默认为0),下标上界可由UBound(数组名)函 数得到,元素的个数可由表达式UBound(数组名)- LBound(数组名)+1得到,因此,所有对静态数组元素的赋值 方法同样适合于动态数组元素。
2020/7/11
5.1 数组
例5-2 输入某门课n个同学的成绩,输出高于平均分的成绩。
Dim aver!, i%, x!() '这里先声明一个空数组
n = Val(InputBox("请输入统计人数", "输入框", 1))
ReDim x(1 to n)
'根据实际人数声明数组大小
aver = 0
2020/7/11
5.1 数组
2 数组的声明 3)动态数组声明
说明: (1) 维说明 通常包含变量或表达式,但其中的变量或表达式
应有明确的值。 (2) 关键字Preserve 如果省略,重定义前数组元素的值全部
丢失,VB系统重新对数组元素进行初始化;如果使用了 Preserve,重定义前数组元素的值不丢失,VB系统保留原 数组元素的值。 在使用Redim语句时请注意: Redim语句只能改变数组的大小,不允许改变数组的数据类 型。
<数组名>=Split(<字符串表达式>[,分隔符]) 其中:<字符串表达式>是一组为数组赋值的数据,数据之间 用固定的分隔符分隔,默认为“ ”(一个空格字符)。
2020/7/11
5.1 数组
3 数组的赋值 2)动态数组赋值 使用Split()函数为动态数组赋值 注意:
Split()函数要求所赋值的数组必须是动态数组,可以不提前 声明,如果提前声明则必须声明为字符型。该方法通常和文本 框配合使用解决大量数据处理问题。
例如:Option Base 1 Dim x(4) 声明数组x下标下界为1,因此x具有x(1)、x(2)、x(3)、x(4) 4个数组元素,数组元素为变体类型数据。
2020/7/11
5.1 数组
2 数组的声明 静态数组声明的注意事项: (2) 静态数组在同一个过程只能声明一次,否则会出现“当前 范围内声明重复”的提示信息。 例如:Private Sub Form_Click()
不加任何说明的情况下,数组元素下标的下界默认为0。
2020/7/11
5.1 数组
2 数组的声明 1)一维静态数组 格式:Dim 数组名(下界 To 上界)[As <数据类型>] 作用:声明数组具有“上界-下限+1”个数组元素,这些元 素
按照下标由小到大的顺序连续存储在内存中。其中: 数组名 命名要符合变量命名规则。 下界 To 上界 称为维说明,确定数组元素下标的取值范围 (下标下界最小为-32768,上界最大值为32767)。下界默 认值为0。下界和上界只能取直接常量或直接常量表达式、符 号常量或符号常量表达式,不能为变量或包含变量的表达式。 [As <数据类型>] 指明数组元素的类型,默认为变体数据 类型。
2020/7/11
5.1 数组
3 数组的赋值 2)动态数组赋值 使用Split()函数为动态数组赋值 Split函数和Array函数使用时应注意的问题: ① Split函数只能给字符型数组赋值;而Array函数只能给变
体类型数组赋值。 ② Split和Array函数均只能为一维数组赋值,如果要为二维
2020/7/11
5.1 数组
2 数组的声明 2)二维静态数组 格式:Dim 数组名(下界1 To 上界1,下界2 To 上界2[As <数据类型>] 作用:声明(上界1-下限1+1)*(上界2-下限2+1)个连续的单元。 例如: Dim Larray(0 to 3,0 to 4) As Long或 Dim Larray( 3, 4) As Long
声明了长整型的二维数组Larray,第1维下标范围为0~3, 第2维下标范围为0~4,数组元素个数为4*5个,每个元素占4 个字节的存储空间,元素排列如表所示。
2020/7/11
5.1 数组
2 数组的声明 静态数组声明的注意事项: (1) 用“Option Base 1”可设定数组元素下标下界值为1, 以改变下界默认值为0。该语句必须放在窗体或模块的通用声 明段中,否则会出现“无效内部过程”的错误。
2020/7/11
5.1 数组
1 数组的基本概念 数组是VB提供的一种数据结构。用统一的名称来代表具有
相同性质的一组数,该名称为数组名。数组中的每一个元素称 为数组元素。为了区分数组中的每一个元素,需要用一个索引 号区别,该索引号称为下标。数组中的每一个元素可以用数组 名和下标惟一表示。每个数组元素和一个普通变量一样能存放 一个数据。
2020/7/11
5.1 数组
2 数组的声明 3)动态数组声明
第1步,在标准模块、窗体的通用程序段或过程,声明一个 省略维说明的数组,格式为: Dim 数组名()[As <数据类型>] 第2步,根据应用需要,用ReDim重新确定数组元素的个数, 格式为: ReDim [Preserve] 数组名(维说明)[As <数据类型>]
2020/7/11
5.1 数组
1 数组的基本概念 数组的特点: (1) 数组由若干个数组元素组成。数组元素的表示方法为:数
组名后跟圆括号和下标, 如a(3)就表示数组a的元素。 (2) 数组元素在内存中有次序存放,下标代表它在数组中的位
置。如数组元素a(3)表示数组a中的第3个元素(若下标从 0开始则为第4个元素,下同),而数组元素b(3,4)则表示 数组b的第3行第4列的那个元素。 (3) 数组元素数据类型相同,在内存中存储是有规律的,占连 续的一段存储单元。例如一个整型数组a,有3个元素 a(1)、a(2)和a(3),那么a(1)、a(2)和a(3)的数据类型均 为整型,若已知a(1)在内存中的存储单元地址编号为 3001H, a(2)在内存中的存储单元地址必然为3003H(因 为一个整型数据占两个字节),a(3)在内存中的存储单元 地2020址/7/11为3005H。
2020/7/11
5.1 数组
2 数组的声明 3)动态数组声明
动态数组是指在程序执行过程中,数组元素的个数可以改变 的数组。和静态数组类似,也分为一维动态数组、二维动态数 组和三维动态数组。
动态数组在用Dim语句声明数组时不给出数组的大小,程序 执行到ReDim语句时才确定大小。创建动态数组通常分两步:
2020/7/11
5.1 数组
使用Array()函数为动态数组赋值举例 a = Array(1,3,4,5,-6) b = Array("abc","def","67","5","-6") For i = 0 To UBound(a) Print a(i); " "; Next i Print For i = 0 To UBound(b) Print b(i); " "; Next i
第5章 数组与自定义数据类 型
前面章节中所用的数值型、字符型、布尔类型等数据类型称 为VB的标准数据类型,通过一个变量存取一个数据,该类变量 称为简单变量。例如求3名同学的平均身高时,就可定义同类 型的变量a1、a2和a3表示3名同学的身高,但如果要求100名 同学的平均身高,采用100个简单变量表示100名同学的身高, 在数据存储与处理时就比较繁琐。又如, 在描述一个人的基本 情况时,可能会涉及到“姓名、性别、出生日期、电话号码、 身高、婚姻状况”等数据,这些数据类型不同,但却相互关联, 如果使用不同类型的简单变量,在数据存储和处理时也会带来 诸多的不便。通常,简单变量用于解决一些数据量小且处理简 单的问题,对于那些描述具有某种关联的批量数据时,应采用 VB提供的数组和用户自定义数据类型两种数据结构。
注意:Array函数只能对一维动态数组赋值。若提前声明了数 组,类型必须为变体类型。
2020/7/11
5.1 数组
3 数组的赋值 2)动态数组赋值 使用Split()函数为动态数组赋值
Split()函数为数组元素赋值的基本方法是:将要赋值的数据 组成字符串,且数据之间用固定的分隔符(如“,”)分隔; 再通过Split()函数将其分离成逐个的数据后,赋给数组各元素, Split()函数格式为:
Print "=========以下成绩高于平均分========="
For i = 1 To n
If x(i) > aver Then
Print "第" & i & "个学生成绩为:" & x(i)
End If
N2e02x0/7t/11i
5.1 数组
3 数组的赋值 1)静态数组元素赋值
对于静态数组,不能将数组名作为被赋值对象,而只能将数 组元素作为赋值对象,利用数组元素是有序存储和静态数组元 素个数在声明时已经确定的特点,采用循环结构,逐一为数组 元素赋值。通常,采用循环次数固定的For…Next结构。一维 数组可通过单循环实现,二维数组可通过双层循环实现。
2020/7/11
5.1 数组
3 数组的赋值 2)动态数组赋值 使用Array()函数为动态数组赋值 对于变体类型的一维动态数组,还可采用Array()函数为数组 各元素赋值。格式为:
数组名=Array(<数组元素值表>) 其中:<数组名>可以是已经声明过的变体类型的动态数组, 也可以是未声明过的数组。数组元素的个数由<数组元素值表 >中数据个数决定,数组元素下标的下界可由LBound(数组名) 函数得到(默认为0),下标上界可由UBound(数组名)函 数得到。例如,以下程序段可以自动定义两个动态数组a和b, 并为各数组元素赋值。
For i = 1 To n
x(i) = InputBox("请输入第" & i & "个学生成绩", "录入窗口", 0)
Print "第" & i & "个学生成绩为:" & x(i)
aver = aver + x(i)
Next i
aver = aver" & aver
数组赋值,需要先将数据存储在一维数组中,再通过程序 的方法将一维数组的值赋值给二维数组。 ③ 用Array函数赋值时,数组元素的最小下标受Option Base 语句影响,当“Option Base 0”或默认情况下,数组元素 下标最小值为0;当“Option Base 1”时,数组元素下标 最 小值为1;用Split函数为数组赋值时,数组元素的最小下 标202与0/7/1O1 ption Base 语句无关,不管Option Base 语句设置
Dim x(5) As Integer …… Dim x(5) As Single End Sub 在该过程中两次声明了静态数组x。
2020/7/11
5.1 数组
2 数组的声明 静态数组声明的注意事项: (3) 声明数组和声明变量一样,数组也有作用范围。如建立公 用数组,在标准模块的通用声明段用Public语句声明;建立模 块级数组,在窗体的声明段用Private或Dim语句声明;建立 过程级数组,在过程中用Dim或Static声明。详细内容请看第8 章变量的作用域。 (4) 声明数组后,各数组元素的初值与声明普通变量相同。
Next i
2020/7/11
5.1 数组
3 数组的赋值 1)静态数组元素赋值
对于静态数组,不能将数组名作为被赋值对象,而只能将数 组元素作为赋值对象,利用数组元素是有序存储和静态数组元 素个数在声明时已经确定的特点,采用循环结构,逐一为数组 元素赋值。通常,采用循环次数固定的For…Next结构。一维 数组可通过单循环实现,二维数组可通过双层循环实现。
5.1 数组
1 数组的基本概念 在表示数组元素时,应注意以下几点: (1) 用圆括号把下标括起来,不能使用中括号或大括号代替,
圆括号也不能省略。 (2) 下标可以是常量、变量或表达式,其值为整数,如常量、
变量或表达式的值为小数时,将自动“四舍五入”。 (3) 下标的最小取值称为下界,下标的最大取值称为上界。在
Dim a(1 to 10) as Single For i=1 to 10 a(i)=0
Next i
2020/7/11
5.1 数组
3 数组的赋值 2)动态数组赋值
动态数组赋值时,既可以将数组元素做为被赋值的对象,也 可以将数组名作为被赋值的对象。这是因为:
尽管动态数组在执行声明(Dim语句)时,数组大小没有确 定,但是当执行ReDim语句后,动态数组元素个数和下标的上 下限也就确定了,即数组元素下标的下界可由LBound(数组名) 函数得到(默认为0),下标上界可由UBound(数组名)函 数得到,元素的个数可由表达式UBound(数组名)- LBound(数组名)+1得到,因此,所有对静态数组元素的赋值 方法同样适合于动态数组元素。
2020/7/11
5.1 数组
例5-2 输入某门课n个同学的成绩,输出高于平均分的成绩。
Dim aver!, i%, x!() '这里先声明一个空数组
n = Val(InputBox("请输入统计人数", "输入框", 1))
ReDim x(1 to n)
'根据实际人数声明数组大小
aver = 0
2020/7/11
5.1 数组
2 数组的声明 3)动态数组声明
说明: (1) 维说明 通常包含变量或表达式,但其中的变量或表达式
应有明确的值。 (2) 关键字Preserve 如果省略,重定义前数组元素的值全部
丢失,VB系统重新对数组元素进行初始化;如果使用了 Preserve,重定义前数组元素的值不丢失,VB系统保留原 数组元素的值。 在使用Redim语句时请注意: Redim语句只能改变数组的大小,不允许改变数组的数据类 型。
<数组名>=Split(<字符串表达式>[,分隔符]) 其中:<字符串表达式>是一组为数组赋值的数据,数据之间 用固定的分隔符分隔,默认为“ ”(一个空格字符)。
2020/7/11
5.1 数组
3 数组的赋值 2)动态数组赋值 使用Split()函数为动态数组赋值 注意:
Split()函数要求所赋值的数组必须是动态数组,可以不提前 声明,如果提前声明则必须声明为字符型。该方法通常和文本 框配合使用解决大量数据处理问题。
例如:Option Base 1 Dim x(4) 声明数组x下标下界为1,因此x具有x(1)、x(2)、x(3)、x(4) 4个数组元素,数组元素为变体类型数据。
2020/7/11
5.1 数组
2 数组的声明 静态数组声明的注意事项: (2) 静态数组在同一个过程只能声明一次,否则会出现“当前 范围内声明重复”的提示信息。 例如:Private Sub Form_Click()
不加任何说明的情况下,数组元素下标的下界默认为0。
2020/7/11
5.1 数组
2 数组的声明 1)一维静态数组 格式:Dim 数组名(下界 To 上界)[As <数据类型>] 作用:声明数组具有“上界-下限+1”个数组元素,这些元 素
按照下标由小到大的顺序连续存储在内存中。其中: 数组名 命名要符合变量命名规则。 下界 To 上界 称为维说明,确定数组元素下标的取值范围 (下标下界最小为-32768,上界最大值为32767)。下界默 认值为0。下界和上界只能取直接常量或直接常量表达式、符 号常量或符号常量表达式,不能为变量或包含变量的表达式。 [As <数据类型>] 指明数组元素的类型,默认为变体数据 类型。
2020/7/11
5.1 数组
3 数组的赋值 2)动态数组赋值 使用Split()函数为动态数组赋值 Split函数和Array函数使用时应注意的问题: ① Split函数只能给字符型数组赋值;而Array函数只能给变
体类型数组赋值。 ② Split和Array函数均只能为一维数组赋值,如果要为二维
2020/7/11
5.1 数组
2 数组的声明 2)二维静态数组 格式:Dim 数组名(下界1 To 上界1,下界2 To 上界2[As <数据类型>] 作用:声明(上界1-下限1+1)*(上界2-下限2+1)个连续的单元。 例如: Dim Larray(0 to 3,0 to 4) As Long或 Dim Larray( 3, 4) As Long
声明了长整型的二维数组Larray,第1维下标范围为0~3, 第2维下标范围为0~4,数组元素个数为4*5个,每个元素占4 个字节的存储空间,元素排列如表所示。
2020/7/11
5.1 数组
2 数组的声明 静态数组声明的注意事项: (1) 用“Option Base 1”可设定数组元素下标下界值为1, 以改变下界默认值为0。该语句必须放在窗体或模块的通用声 明段中,否则会出现“无效内部过程”的错误。
2020/7/11
5.1 数组
1 数组的基本概念 数组是VB提供的一种数据结构。用统一的名称来代表具有
相同性质的一组数,该名称为数组名。数组中的每一个元素称 为数组元素。为了区分数组中的每一个元素,需要用一个索引 号区别,该索引号称为下标。数组中的每一个元素可以用数组 名和下标惟一表示。每个数组元素和一个普通变量一样能存放 一个数据。
2020/7/11
5.1 数组
2 数组的声明 3)动态数组声明
第1步,在标准模块、窗体的通用程序段或过程,声明一个 省略维说明的数组,格式为: Dim 数组名()[As <数据类型>] 第2步,根据应用需要,用ReDim重新确定数组元素的个数, 格式为: ReDim [Preserve] 数组名(维说明)[As <数据类型>]
2020/7/11
5.1 数组
1 数组的基本概念 数组的特点: (1) 数组由若干个数组元素组成。数组元素的表示方法为:数
组名后跟圆括号和下标, 如a(3)就表示数组a的元素。 (2) 数组元素在内存中有次序存放,下标代表它在数组中的位
置。如数组元素a(3)表示数组a中的第3个元素(若下标从 0开始则为第4个元素,下同),而数组元素b(3,4)则表示 数组b的第3行第4列的那个元素。 (3) 数组元素数据类型相同,在内存中存储是有规律的,占连 续的一段存储单元。例如一个整型数组a,有3个元素 a(1)、a(2)和a(3),那么a(1)、a(2)和a(3)的数据类型均 为整型,若已知a(1)在内存中的存储单元地址编号为 3001H, a(2)在内存中的存储单元地址必然为3003H(因 为一个整型数据占两个字节),a(3)在内存中的存储单元 地2020址/7/11为3005H。
2020/7/11
5.1 数组
2 数组的声明 3)动态数组声明
动态数组是指在程序执行过程中,数组元素的个数可以改变 的数组。和静态数组类似,也分为一维动态数组、二维动态数 组和三维动态数组。
动态数组在用Dim语句声明数组时不给出数组的大小,程序 执行到ReDim语句时才确定大小。创建动态数组通常分两步:
2020/7/11
5.1 数组
使用Array()函数为动态数组赋值举例 a = Array(1,3,4,5,-6) b = Array("abc","def","67","5","-6") For i = 0 To UBound(a) Print a(i); " "; Next i Print For i = 0 To UBound(b) Print b(i); " "; Next i
第5章 数组与自定义数据类 型
前面章节中所用的数值型、字符型、布尔类型等数据类型称 为VB的标准数据类型,通过一个变量存取一个数据,该类变量 称为简单变量。例如求3名同学的平均身高时,就可定义同类 型的变量a1、a2和a3表示3名同学的身高,但如果要求100名 同学的平均身高,采用100个简单变量表示100名同学的身高, 在数据存储与处理时就比较繁琐。又如, 在描述一个人的基本 情况时,可能会涉及到“姓名、性别、出生日期、电话号码、 身高、婚姻状况”等数据,这些数据类型不同,但却相互关联, 如果使用不同类型的简单变量,在数据存储和处理时也会带来 诸多的不便。通常,简单变量用于解决一些数据量小且处理简 单的问题,对于那些描述具有某种关联的批量数据时,应采用 VB提供的数组和用户自定义数据类型两种数据结构。
注意:Array函数只能对一维动态数组赋值。若提前声明了数 组,类型必须为变体类型。
2020/7/11
5.1 数组
3 数组的赋值 2)动态数组赋值 使用Split()函数为动态数组赋值
Split()函数为数组元素赋值的基本方法是:将要赋值的数据 组成字符串,且数据之间用固定的分隔符(如“,”)分隔; 再通过Split()函数将其分离成逐个的数据后,赋给数组各元素, Split()函数格式为:
Print "=========以下成绩高于平均分========="
For i = 1 To n
If x(i) > aver Then
Print "第" & i & "个学生成绩为:" & x(i)
End If
N2e02x0/7t/11i
5.1 数组
3 数组的赋值 1)静态数组元素赋值
对于静态数组,不能将数组名作为被赋值对象,而只能将数 组元素作为赋值对象,利用数组元素是有序存储和静态数组元 素个数在声明时已经确定的特点,采用循环结构,逐一为数组 元素赋值。通常,采用循环次数固定的For…Next结构。一维 数组可通过单循环实现,二维数组可通过双层循环实现。
2020/7/11
5.1 数组
3 数组的赋值 2)动态数组赋值 使用Array()函数为动态数组赋值 对于变体类型的一维动态数组,还可采用Array()函数为数组 各元素赋值。格式为:
数组名=Array(<数组元素值表>) 其中:<数组名>可以是已经声明过的变体类型的动态数组, 也可以是未声明过的数组。数组元素的个数由<数组元素值表 >中数据个数决定,数组元素下标的下界可由LBound(数组名) 函数得到(默认为0),下标上界可由UBound(数组名)函 数得到。例如,以下程序段可以自动定义两个动态数组a和b, 并为各数组元素赋值。
For i = 1 To n
x(i) = InputBox("请输入第" & i & "个学生成绩", "录入窗口", 0)
Print "第" & i & "个学生成绩为:" & x(i)
aver = aver + x(i)
Next i
aver = aver" & aver
数组赋值,需要先将数据存储在一维数组中,再通过程序 的方法将一维数组的值赋值给二维数组。 ③ 用Array函数赋值时,数组元素的最小下标受Option Base 语句影响,当“Option Base 0”或默认情况下,数组元素 下标最小值为0;当“Option Base 1”时,数组元素下标 最 小值为1;用Split函数为数组赋值时,数组元素的最小下 标202与0/7/1O1 ption Base 语句无关,不管Option Base 语句设置
Dim x(5) As Integer …… Dim x(5) As Single End Sub 在该过程中两次声明了静态数组x。
2020/7/11
5.1 数组
2 数组的声明 静态数组声明的注意事项: (3) 声明数组和声明变量一样,数组也有作用范围。如建立公 用数组,在标准模块的通用声明段用Public语句声明;建立模 块级数组,在窗体的声明段用Private或Dim语句声明;建立 过程级数组,在过程中用Dim或Static声明。详细内容请看第8 章变量的作用域。 (4) 声明数组后,各数组元素的初值与声明普通变量相同。