Presentation is loading. Please wait.

Presentation is loading. Please wait.

第5章 数组 Visual Basic程序设计.

Similar presentations


Presentation on theme: "第5章 数组 Visual Basic程序设计."— Presentation transcript:

1 第5章 数组 Visual Basic程序设计

2 回 顾 三种基本结构: 顺序结构(Inputbox、Msgbox) 选择结构(If、Select) 循环结构(For、While、Do)
回 顾 三种基本结构: 顺序结构(Inputbox、Msgbox) 选择结构(If、Select) 循环结构(For、While、Do) 五个常用控件: 单选按钮(OptionButton) 复选框(CheckBox) 框架(Frame) 滚动条(HScrollBar、VScrollBar) 计时器(Timer)

3 本章内容 5.1 数组的概念 5.2 数组声明 5.3 数组的操作 5.4 列表框和组合框控件 5.7 自主学习(控件数组)

4 Dim i%, n%, sum%,, average!, score%
【引例】求全班同学某门课程的平均成绩, 并统计高于平均分的人数。(如何实现?) Dim i%, n%, sum%,, average!, score% sum = 0 : i = 1 : n = val(text1.text) Do While i <= n score = InputBox("输入第" & i & "位同学的成绩", "成绩录入") sum = sum + score i = i + 1 Loop average = sum / n MsgBox "全班" & n & "名同学的平均分为:" & average, , "统计平均分" (1 to 60) (i) (i)

5 5.1 数组的概念 可以用一批具有相同名字、不同下标的 变量来表示一组数据,能更清楚的表示它们 之间的关系。
5.1 数组的概念 可以用一批具有相同名字、不同下标的 变量来表示一组数据,能更清楚的表示它们 之间的关系。 在VB 中,把一组具有相同名字、不同 下标的变量称为数组。

6 一、数组的维数 维数:数组中的下标个数。 按数组的维数可分为:一维数组、二维数组、多维 数组。 一维数组:数组中的元素有一个下标 。
二维数组:数组中的元素有两个下标 。 多维数组:数组中的元素有多个下标 。

7 二、 数组的形式 根据数组元素的个数能否变化可分为: 静态数组和动态数组。 静态数组: 数组元素的个数和下标的上、下界固定不变。 动态数组:
数组元素的个数和下标的上、下界在运行时可以改变。

8 5.2 数组声明 主要声明数组名、类型、维数、大小,其目的是 一、静态数组 让计算机为该数组分配一定的内存区域。
定义时规定了数组的大小和维数。在程序运行前, 可以确定数组的长度,即数组元素的个数和下标的上、 下界固定不变。 1、数组的定义 格式: Dim 数组名(第一维说明 [,第二维说明]……) [ As 类型名称]

9 Dim 数组名(下标1,下标2) [As 类型名称]
一维数组形式: 1) Dim 数组名([下标下界 to] 下标上界) [As <数据类型>] 例如:Dim score(1 to 5) As Integer 定义了一个一维数组,数组名是score;类型是整型; 有5个元素,下标的范围是1~5; 占据5个整型变量的空间(2*5=10个字节)。 2) Dim 数组名[数据类型符]([下界 to] 上界) 与上面声明等价形式: Dim score%(1 to 5) 二维数组形式: Dim 数组名(下标1,下标2) [As 类型名称] 例如:Dim a(3,4) As Integer

10 × 说明: 1) 数组必须先定义后使用。 2) 数组名和变量名的命名规则相同。在同一过程中, 数组名不能与其他数组名或变量名相同。
3) 定义数组时省略[As 类型名称],则数组的类型为 变体类型。 4) 定义数组时,下标必须是常量。 × Dim s(n) As Single 5) 数组的元素个数:上界-下界+1 Dim s(0 to 5) As Integer 6个元素 Dim s(-2 to 3) As Integer 6个元素 Dim a(3,4) As Integer 20个元素

11 Private Sub Command1_Click() Dim score(5) As Integer ....... End Sub
下标下界的默认值为0,[下标下界 to]可以省略。若改变下界,则在通用声明段使用Option Base语句。 格式:Option Base 0或1 通用声明段 Option Base 1 Private Sub Command1_Click() Dim score(5) As Integer End Sub 等价于 Dim score(1 to 5) As Integer 定义了名为score的一维数组,有5个整型元素。 等价于:Dim score(0 to 5) As Integer 定义了名为score的一维数组,有6个整型元素。

12 2、数组的引用 对定义过的数组,可直接引用该数组的元素。 引用数组元素的格式:数组名(下标) 举例: Dim s(5) As Integer 数组s的数组元素分别为: s(0)、 s(1) 、 s(2) 、 s(3) 、 s(4) 、 s(5) Dim a(1 To 3, 1 To 3) As Single 数组a的数组元素分别为: 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)

13 说明: (1)数组元素的下标可以是变量、常量或表达式。不管是哪种形式,都要在定义的范围之内。 (2)数组元素与简单变量一样,可以被赋值和引用。 Dim A(5) As Integer, B(5) As Integer A(1)=B(1) '下标使用常量 A(i)=B(i) '下标使用变量 B(i+1)=A(i+2) '下标使用表达式 (3)在程序中,能用变量的地方,都可以用数组元素替换。

14 例1 阅读程序 25 Dim a(1 to 5) As Integer, sum As Integer For i=1 to 5
例1 阅读程序 Dim a(1 to 5) As Integer, sum As Integer For i=1 to 5 a(i)=2 * i '数组元素的一种输入方式 Next i sum=a(1)+a(2)+a(3)+a(4)+a(5) print sum 分析: a(1)=1 a(2)=3 a(3)=5 a(4)=7 a(5)=9 25

15 数组下标的下界可以由LBound函数得到
3、数组下标的界值 LBound 和 UBound函数 数组下标的下界可以由LBound函数得到 数组下标的上界可以由UBound函数得到 格式: LBound(数组名[,维]) UBound(数组名[,维])

16 说明:一维数组可省略[,维],二维数组必须指定。
举例1:Dim s(1 to 5) LBound(s)表示s数组的下界,其值:1 UBound(s)表示s数组的上界,其值:5 举例2:Dim a(-1 to 1,-2 to 1) LBound(a,2)表示a数组的第二维下界,其值:-2 UBound(a,1)表示a数组的第一维上界,其值:1

17 Dim a(1 to 5) As Integer, i As Integer For i = LBound(a) To UBound(a)
例2 阅读程序 Dim a(1 to 5) As Integer, i As Integer For i = LBound(a) To UBound(a) a(i) = 2 * i '数组元素的一种输入方式 Next i Print a(i); '数组元素的一种输出方式 演示

18 【引例】 求全班同学某门课程的平均成绩 average = sum / n Dim i%, n%, sum%, average!
Dim score(1 to 60) As Integer '存放输入的成绩 sum = 0: i = 1: n = Val(Text1.Text) Do While i <= n '数组元素的一种输入方式 ——— = val(InputBox("输入第" & i & "位同学的成绩", "成绩录入")) —————— i = i + 1 Loop ———— MsgBox "全班" & n & "名同学的平均分为:" & average, , "统计平均分" score (i) sum = sum + score(i) average = sum / n

19 【引例】 求全班同学某门课程的平均成绩, 并统计高于平均分的人数。 …… Dim num As Integer num = 0 For i = 1 To n if score(i) > average Then num = num + 1 End If Next i MsgBox "高于平均分的人数是:" & num, , "统计人数"

20 使用数组解决实际问题时,有时无法确定数组大小,数组太大占用大量存储空间,太小则不能满足需要。如果事先无法确定数组的大小,或在程序运行时需要对数组的大小进行调整,可以使用动态数组。
声明动态数组时未给出数组的大小和维数。当要使用它时,随时用ReDim语句重新声明数组大小。

21 二、动态数组 声明 首先,声明一个没有维数定义和上下界的数组。 格式:Dim 数组名( ) [As 类型]
然后,需要时用Redim语句重新定义数组的大小。 格式:ReDim[Preserve]数组名(下标)[As 类型] 演示

22 说明 (1)可多次用ReDim语句来改变数组的大小,也可 改变数组的维数,但不能改变数组的类型。
(2)若不指定Preserve关键字,在执行ReDim语句 时,数组中原来所存放的值将全部丢失。 (3)指定[Preserve]关键字,在执行ReDim语句 时,数组中原来所存放的值将不会丢失。

23 例1:求全班同学某门课程的平均成绩。 Dim i%, n%, sum%, average! Dim score(60) As Integer sum = 0 : i = 1 : n = val(text1.text) Do While i <= n score(i) = InputBox(“输入第” & i & “位同学的成绩”, “成绩录入") sum = sum + score(i) i = i + 1 Loop average = sum / n MsgBox "全班" & n & "名同学的平均分为" & average, , "求平均分" ReDim score(n)

24 例2 阅读程序 6 6 Dim a() As Integer ReDim a(1 To 5) For i = 1 To 5
例2 阅读程序 Dim a() As Integer ReDim a(1 To 5) For i = 1 To 5 a(i) = i + 2 Next i Print a(4) ReDim a(1 To 6) ReDim Preserve a(1 To 6) 6 6

25 应用 例3 完善程序

26 Option Base 1 Private Sub Command1_Click() Picture1.cls : Randomize Dim s() As Integer, n%, i%, sum! n = Val(Text1.Text) ReDim s(n) For i = 1 To n s(i) = Int(Rnd * 101) '数组元素的一种输入方式 Picture1.Print s(i) ; ave = ave + s(i) Next i Text2.Text = ave / n End Sub ReDim s(n) sum = sum + s(i) Text2.Text = sum / n

27 Option Base 1 Private Sub Command1_Click() Label4.Caption = "" : Randomize Dim s() As Integer, n%, i%, sum! n = Val(Text1.Text) ReDim s(n) For i = 1 To n s(i) = Int(Rnd * 101) '数组元素的一种输出方式 Label4.Caption = Label4.Caption & s(i) & " " sum = sum + s(i) Next i Text2.Text = Format(sum / n, "0.00") End Sub

28 思考:为了调查某班学生学习VB课程的兴趣程度,
编写程序统计各程度的人数。

29 小结 数组:一组具有相同名字、不同下标变量的集合 静态数组的定义:Dim s(5) As Integer
n = Val(Text1.Text) ReDim s(n) 数组元素的引用:s(1)、s(2)、s(3)、……

30 数组元素的输入: For i = 1 To 5 s(i) = 2 * i – 1 s(i) = InputBox("请输入数据:") s(i) = Int(Rnd * 101) Next i 数组元素的输出: [Picture1.]Print s(i); Label1.Caption = Label1.Caption & s(i) & “ " Text1.text=Text1.text & s(i) & " "

31 下次课内容: 5.3 数组的操作 实验作业: 实验十


Download ppt "第5章 数组 Visual Basic程序设计."

Similar presentations


Ads by Google