VB语言第6章教案
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在VB中最多可以使用60维的数组。
只要有规则地改变下标值(如k),就可以很方便地使下标 变量(如t(k))成为所需要的具体下标变量
主页
3. 数组元素的表示方法
数组名(下标,…) s(i) 一维数组 s(i, j) 二维数组 i行j列
下标可以是常数值,也可以是变量(包括数组元素)或数值
表达式,如d(s(3)),若s(3)=2,则d(s(3))就是d(2)。当下标值带有 小数部分时,系统会自动对它四舍五入取整,如x(7.7)将作为 x(8)处理。 数组元素又称为有序的变量——下标变量,其使用方法与
主页
6.6.2 控件数组的建立
建立控件数组有三种方法:
(1)给控件起相同的名称
(2)将现有的控件复制并粘贴到窗体等上面 (3)将控件的Index属性设置为非Null数值
6.6.3 控件数组的使用
例6.6 建立一个文本框控件数组Text1和一个文本框Text2, 在控件数组Text1中输入一组数后,把累加值存放在Text2。
Option Base 1 '声明数组下标的下界默认值为1 Private Sub Form_Load() 例6.2 Dim a As Variant, b(3, 4) As Integer Dim i As Integer, j As Integer a = Array(11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22) For i = 1 To 3 For j = 1 To 4 b(i, j) = a((i - 1) * 4 + j) '用一维数组a()的数据存入二维数组b(,) Next j 文本框Text1 Next i Show For i = 1 To 3 '以矩阵形式输出二维数组b(,) For j = 1 To 4 Print b(i, j); '输出在窗体上 Text1.Text = Text1.Text & Str(b(i, j)) '输出在文本框上 Next j Print '换行 Text1.Text = Text1.Text & vbCrLf '加入换行控制符vbCrLf(或Chr(13)+Chr(10)) Next i End Sub 主页
主页
6.4 动态数组
两种形式的数组:静态数组和动态数组
静态数组(前面介绍的)是指数组元素的个数固定不变;动态 数组的元素个数,在程序运行时可以改变
动态数组可以在运行过程中改变数组的大小,提高存储区 的使用效率
6.4.1 建立动态数组
用ReDim语句重新定义带下标的动态数组
6.4.2 数组刷新语句
Erase语句用来清除静态数组的内容,或者释放动态数组占
简单变量基本相同,也就是说,可以像使用简单变量一样使用
数组中的每一个元素,但数组的功能远远超过简单变量。
主页
6.2 数组的声明
使用数组之前,必须先定义数组,以便让系统分配相应 的存储单元。格式为: Dim 数组名([下界1 to]上界1[,[下界2 to]上界2„]) [As 数据类型] 功能:指定数组的维数、各维的上下界和数据类型
使用 动态数组
个数可以改变
'用ReDim语句重新定义
'用ReDim语句重新定义
主页
例6.4 ReDim语句应用示例
Private Sub Form_Load()
Dim a() As Integer Show ReDim a(800) k=0 For x = 200 To 600 Step 3 If x Mod 8 = 0 Then k=k+1 a(k) = x End If Next x ReDim Preserve a(k) For i = 1 To k Print a(i) Next i
主页
Text2 Text1(0)
文本框 控件数组 Text1
Text1(1) Command1 Text1(2) Text1(3)
通过“复制”方法控件数组Text1。第一次 单击工具栏上的
“粘贴”按钮(或按Ctrl+V),此时系统弹出一个如下的对话框
例6.6
主页
控件数组Text1的4个元素为:Text1(0)~Text1(3) Private Sub Command1_Click() s = 0 For i = 0 To 3
2. 数组的输出
因为每个数组元素都是一个数据,所以输出数组元素同 输出其他数据一样,可以使用Print方法,也可以使用控件, 如标签、文本框、列表框、组合框等。 在使用二重循环输出一个二维数组时,通常内层循环用 于控制列号的变化,外层循环用于控制行号的变化。
主页
【例6.2】使用Array函数给一维数组a()输入数据,再用数组a中的数据存入 二维数组b中,然后将二维数组b(,)以矩阵形式输出到窗体及多行文本框中。
主页
思考题
下列程序的运行结果?
想一想
D 1. 执行下列程序段后,输出的结果是______。 Dim a(1 To 3, 1 To 3) For j = 1 To 3 For k = 1 To 3 a(j, k) = j Print a(j, k); Next k Print Next j A. 3 2 1 2 3 2 1 2 3 B. 0 1 2 1 0 1 2 1 0 C. 1 2 3 2 1 2 3 2 1 D. 1 1 1 2 2 2 3 3 3
主页
6.3 数组的输入和输出
1. 数组的输入
(1) 使用赋值语句。例如: a(2) = 2 a(3) = 10 (2) 使用循环语句。例如: Dim d(100) As Integer For i=0 To 100 d(i)=int(90*Rnd+10) Next i (3) 使用InputBox函数。 使用InputBox函数为数组元素赋值,增强了与用户的交互 性。但不适合大批量的数据输入。
数组是一组按一定顺序排列的数据的集合。 由三行四列组成的二维数组y,其12个下标变量可表示为 y(0,0) y(0,1) y(0,2) y(0,3) y(1,0) y(1,1) y(1,2) y(1,3) y(2,0) y(2,1) y(2,2) y(2,3)
主页
2. 数组的维数
下标标明该下标变量在数组中的位置的。下标可以是常数 值,也可以是变量(包括下标变量)或数值表达式。 数组元素中下标的个数称为数组的维数,上述成绩数组t 只有一个下标,称为一维数组,三元一次方程组的系数数组y有 两个下标,称为二维数组。
举例:
Dim Sum(10) As Long „下标号从0~10,共11个元素 Dim Ary(1 to 20) As Integer „下标号从1~20,共20个元素 Dim d(1 to 5,1 to 10) As Double „定义二维数组
UBound(Sum) LBound(Sum) „Sum的上界结果为10 „Sum的下界结果为0
主页
(4)使用Array函数
Array函数用来为数组元素赋值,即把一组数据读入某个数 组中。 格式:数组变量名 = Array(数组元素值) 例如: Dim d As Variant d = Array(1,2,3,4) 执行上述语句后,将把1,2,3,4这四个数赋值给数组d() 的各个元素,即1→d(0),2→d(1),3→d(2),4→d(3)。
'声明一个整型动态数组 '用ReDim语句重新定义
例6.4
„将能被8整除的据存入数组
'Preserve 能保留数组中原有的数据
End Sub
主页
6.5 For Each...Next循环语句
与前面的循环语句For...Next类似,都是用来执行指定重 复次数的循环。但For Each...Next语句专门作用于数组或对 象集合中的每一成员。语法格式: For Each 成员 In 数组名 循环体 [Exit For] Next 成员 “成员”是一个Variant变量,它实际上代表数组中每一 个元素 本语句可以对数组元素进行读取、查询或显示,它所重 复执行的次数由数组中元素的个数确定 在不知道数组中元素的数目时非常有用
设定下界的方法
Option Base 1 „设定下界为1 Dim Data(10) As Single „下标号从1~10 Option Base指定所有数组下界都为1
主页
例6.1 输入5个同学的成绩,计算总分和平均分(取小数后一位) Dim d(5) As Integer Dim i As Integer, total As Single, average As Single Show 例6.1 For i = 1 To 5 '输入成绩 d(i) = Val(InputBox("请输入第" & Str(i) & _ "个学生的成绩", "输入成绩")) Next i total = 0 For i = 1 To 5 '计算总分和平均分 total = total + d(i) Next i average = total / 5 Print "总分:" & total Print "平均分:" & Format(average, "##.0")
程序举例
退出 主页
6.1 数组的概念
1. 数组与数组元素
处理成批的数据时,必须使用数组来处理。 例如,表示100个学生的成绩,采用简单变量来表示: s1,s2,s3,… s99,s100 采用数组来表示:t(0), t(1), t(2),… t(98), t(99)
t(k) (k=0,1,2,…99)为数组元素(或称下标变量),它表示第k个学生的成绩, k称为下标变量的下标(默认情况下,下标从0开始)
s = s + Val(Text1(i).Text)
Βιβλιοθήκη Baidu
用的内存空间
主页
静态数组和动态数组
Dim t(200) As Integer For k=1 To 200 t(k) = … Next k ……
„声明一个静态数组
使用 静态数组
个数固定不变
Dim t() As Integer …… ReDim t(100) …… ReDim t(200)
'声明一个动态数组
主页
6.6 控件数组
两类数组:一般数组和控件数组
6.6.1 控件数组的概念
控件数组是一组具有相同名称、类型和事件过程的控件
例如,Label1(0),Label1(1),Label1(2),„„ 但Label1, Label2, Label3, „„不是控件数组 控件数组具有以下特点: (1)相同的控件名称(即Name属性); (2)控件数组中的控件具有相同的一般属性; (3)所有控件共用相同的事件过程。 以下标索引值(Index)来标识各个控件,第一个下标索引号默 认为0
数组是程序设计中广泛使用 的数据结构,它可以方便灵活地 组织数据。 数组与循环语句结合使用, 可使程序结构简洁、清晰。通常 数组应先声明后使用。
主页
第6章 数 组
利用数组可以有效地存储和处理成批数据
本章主要内容
数组的概念 数组的声明
数组的输入和输出
动态数组 For Each...Next循环语句
控件数组
【例6.3】生成20个随机两位数作为原始数据,存放在4行5列的二维数组a(,) 中,然后求各列元素的和,把这些和数存放在一个一维数组t()中。 采用2个二重循环来实现程序的功能。第1个二重循环为二维数组a(,)输 入数据,第2个二重循环用于求各列元素的和。 Dim a(4, 5) As Integer, t(5) As Integer Dim i As Integer, j As Integer, s As Integer 例6.3 Randomize : Show For i = 1 To 4 '控制行数 For j = 1 To 5 '控制列数 a(i, j) = Int(90 * Rnd + 10) '随机数存放在数组的i行j列中 Next j Next i For j = 1 To 5 '控制列数 s=0 '合计前清0 For i = 1 To 4 '控制列数 s = s + a(i, j) '累加同一列元素值 Next i t(j) = s '列元素之和存放于数组s()中 Print "第" & j & "列元素的和:" & t(j) '输出当前列元素之和 Next j