Visual Basic教学课件:第4章数组

上传人:人*** 文档编号:570258096 上传时间:2024-08-03 格式:PPT 页数:62 大小:323KB
返回 下载 相关 举报
Visual Basic教学课件:第4章数组_第1页
第1页 / 共62页
Visual Basic教学课件:第4章数组_第2页
第2页 / 共62页
Visual Basic教学课件:第4章数组_第3页
第3页 / 共62页
Visual Basic教学课件:第4章数组_第4页
第4页 / 共62页
Visual Basic教学课件:第4章数组_第5页
第5页 / 共62页
点击查看更多>>
资源描述

《Visual Basic教学课件:第4章数组》由会员分享,可在线阅读,更多相关《Visual Basic教学课件:第4章数组(62页珍藏版)》请在金锄头文库上搜索。

1、1第第4 4章章 数数 组组本章要掌握的内容:本章要掌握的内容: 1.掌握数组的概念掌握数组的概念 2.掌握数组的定义及其引用掌握数组的定义及其引用 3.掌握与数组有关的常用算法,如统计、平均值、掌握与数组有关的常用算法,如统计、平均值、排序、删除和插入排序、删除和插入本章难点本章难点: 与数组有关的一些常用算法与数组有关的一些常用算法24.1 数组的概述数组的概述 数组的概念:数组的概念:数组是数组是一组相同类型数据一组相同类型数据的集合。的集合。用用数组名数组名代表逻辑上相关的一批数据,每个元素用代表逻辑上相关的一批数据,每个元素用下标下标来区分;下标代表元素在数组中的位置。来区分;下标代

2、表元素在数组中的位置。按数组的维数可分为:按数组的维数可分为: 一维数组、二维数组、多维数组。一维数组、二维数组、多维数组。VB中数组的表示形式:中数组的表示形式: a(1), a(10) 一维一维数组数组 x(1,1), x(2,10) 二维数组二维数组第第4 4章章 数数 组组3静态数组:声明数组时,数组的下标是确定的常数。静态数组:声明数组时,数组的下标是确定的常数。静态数组的声明格式静态数组的声明格式:Dim 数组名数组名(下标下标1 ,下标,下标2 ) As 数据类型数据类型或或Dim 数组名数组名数据类型符数据类型符(下标下标1 ,下标,下标2 )例:例:Dim a( 10) As

3、 Integer 定义了数组定义了数组a,有有11个元素个元素与上面定义的等价形式:与上面定义的等价形式: Dim a%(10) 4.2 4.2 一维数组一维数组4.2.1 一维一维数组的声明数组的声明4说明: 1)数组名的命名规则与变量的命名相同。数组名的命名规则与变量的命名相同。 2)下标的格式为下标的格式为 下界下界To 上界上界 例:例:Dim a( 1 to 10) As Integer 缺缺省省下下界界为为0,若若希希望望下下界界从从1开开始始,可可在在模模块块的的通通用部分使用用部分使用Option Base语句将设为语句将设为1。其使用格式是:其使用格式是: Option Ba

4、se 0|1 后面的参数只能取后面的参数只能取 0 或或 153)数组的元素个数:数组的元素个数:上界上界-下界下界+1。4) 下界和上界不能使用变量下界和上界不能使用变量,必须是常量,常量,必须是常量,常量可以是直接常量、符号常量,一般是整型常量。可以是直接常量、符号常量,一般是整型常量。Dim N As IntegerN=Val(InputBox(Enter N=? )Dim A(N) As Integer 5)如果省略如果省略As子句,则数组的类型为变体类型。子句,则数组的类型为变体类型。6)数组中各元素在内存占一片连续的存储空间。数组中各元素在内存占一片连续的存储空间。6 4.2.2

5、4.2.2 数组的引用数组的引用数组的引用形式为:数组的引用形式为:数组名数组名(下标下标1 , 下标下标2, )例如:例如:a(1)=70a(3)=a(1)+57例例4.1 随机产生一批随机产生一批09之间的整数,统计并输出每之间的整数,统计并输出每个数出现的次数。个数出现的次数。Private Sub Form_Click()Dim a%(0 To 9), x%, i%For i = 1 To 100x = Int(Rnd * 10)a(x) = a(x) + 1Next iFor i = 0 To 9Print i & 有有 & a(i) & 个个Next iEnd Sub 4.2.3

6、4.2.3 一维数组的基本操作一维数组的基本操作81. 数组元素的赋值数组元素的赋值 dim a%(10) For i = 1 To 10 A(i) =Val( InputBox(输入输入A( & i & ) 的值的值) ) Next i或或 dim a%(10) For i = 1 To 10 A(i)=int(100*rnd( ) Next i 4.2.3 4.2.3 一维数组的基本操作一维数组的基本操作92. 数组元素的输出数组元素的输出For Each For Each 成员成员 In In 数组数组 循环体循环体Next Next 成员成员 其中成员为变体型变量。其中成员为变体型变量

7、。For i = 1 To 10 Print A(i)Next i 4.2.3 4.2.3 一维数组的基本操作一维数组的基本操作例:例:For Each x in a Print xNext x10例例4.2 已知数组已知数组a有有10个元素,求其中的最小元素和个元素,求其中的最小元素和它的下标。它的下标。 先定义数组和给数组元素赋值。再执行以下代码:先定义数组和给数组元素赋值。再执行以下代码: Min = A(1): p = 1 For i = 2 To 10 If A(i) = A And c = A And c 0 Then) 0 Then k = k + 1 k = k + 1 Pic

8、ture1.Print ; Picture1.Print ; Chr$(jChr$(j + 64); =; + 64); =; a(ja(j);); If k Mod 5 = 0 Then Picture1.Print If k Mod 5 = 0 Then Picture1.Print End If End If Next j Next j17动态数组的声明分两步:动态数组的声明分两步: 定义一个维数为空的数组。定义一个维数为空的数组。 格式:格式:Dim 数组名()数组名()As 数据类型数据类型 例:例:Dim a( ) As Integer 数组使用前用数组使用前用ReDim语句为它分

9、配存储空间。语句为它分配存储空间。格式:格式:ReDim Preserve 数组名(下标数组名(下标1,下标,下标2) 例:例:Redim A(10) Redim Preserve A(20) Preserve参数:保留数组中原来的数据参数:保留数组中原来的数据 2.动态数组动态数组动态数组动态数组声明时,没有下标,使用声明时,没有下标,使用时再分配存储空间时再分配存储空间18说明:说明:(1)ReDim语语句句在在过过程程中中使使用用,并并且且可可以以使使用用多多次次,改变数组的维数和大小。改变数组的维数和大小。(2)静态数组声明时下标只能是常量,而动态数组的)静态数组声明时下标只能是常量,

10、而动态数组的ReDim 语句中,下标可以是常量,也可以是有了确定语句中,下标可以是常量,也可以是有了确定值的变量。值的变量。 dim a%( ), n% n=Val(InputBox(n=) redim a(n) 19(3)在过程中不能使用)在过程中不能使用ReDim,改变数组的类型。,改变数组的类型。 例如:例如: Dim x( ) as integer ReDim x(30) as single (4)使用)使用ReDim语句会使原来数组中的值丢失,可以语句会使原来数组中的值丢失,可以在在ReDim后加后加Preserve 参数来保留数组中的数据。但参数来保留数组中的数据。但只能改变最后一

11、维的大小。只能改变最后一维的大小。203.3.与数组操作有关的几个函数:与数组操作有关的几个函数:1) Array1) Array函数函数 ArrayArray函数可对声明为函数可对声明为VariantVariant的变量或动态数组赋的变量或动态数组赋值,赋值后得到一个一维数组。值,赋值后得到一个一维数组。格式:格式:Dim 数组名数组名 数组名数组名= Array(数组元素值)(数组元素值) 或或 Dim 变量名变量名 变量名变量名 = Array(数组元素值)(数组元素值) 例如,将例如,将1,2,3,4,5,6,7 1,2,3,4,5,6,7 这些值赋值给数组这些值赋值给数组a a,可,

12、可使用以下语句使用以下语句: : Dim a( ) Dim a( )或或 Dim aDim a a=array(1,2,3,4,5,6,7) a=array(1,2,3,4,5,6,7)212)2) 求数组的上界、下界函数:求数组的上界、下界函数:Ubound( ) 、Lbound( )Ubound( )函数:求数组某一维的上界。函数:求数组某一维的上界。Lbound( )函数:求数组某一维的下界。函数:求数组某一维的下界。格式:格式: UBound(数组名数组名, N) LBound(数组名数组名 , N)其中:其中:N:可选项;一般是整型常量或变量。指定返回哪一维:可选项;一般是整型常量或

13、变量。指定返回哪一维的上界。的上界。1 表示第一维,表示第一维,2 表示第二维。省略默认是表示第二维。省略默认是1。223)3) SplitSplit函数函数格式:格式: Split(Split(字符串表达式字符串表达式 ,分隔符分隔符)说明:说明: 对声明为对声明为VariantVariant的变量或动态数组,可使用的变量或动态数组,可使用SplitSplit函数将一个带函数将一个带分隔符的分隔符的字符串,以字符串,以分隔符分隔符分离后,给分离后,给它赋值。它赋值。 该方法得到的一维该方法得到的一维数组数组下标一定是从零开始下标一定是从零开始。23例:例:Private Sub Text1_

14、KeyPress(KeyAscii As Integer)Private Sub Text1_KeyPress(KeyAscii As Integer)Dim i, n%, mDim i, n%, mDim a$( )Dim a$( )If KeyAscii = 13 ThenIf KeyAscii = 13 Then a = Split(Text1.Text, ,) a = Split(Text1.Text, ,)m = UBound(a)m = UBound(a)For i = 0 To mFor i = 0 To m Print a(i); ; Print a(i); ; Next i

15、Next iEnd IfEnd IfEnd SubEnd Sub244.4.插入插入和删除和删除问题:问题: 数组中元素的插入和删除一般是在已排好序的数组中元素的插入和删除一般是在已排好序的数组中插入一个元素,从而使得插入后的数组还是数组中插入一个元素,从而使得插入后的数组还是有序的。有序的。插入与删除涉及两个问题:插入与删除涉及两个问题:1.1.查找查找要插入或删除的要插入或删除的位置位置2.2.执行插入执行插入或或删除操作删除操作4.2.44.2.4一维数组的应用一维数组的应用数组元素的插入数组元素的插入25例例4.4.6 6 把把1414插入到有序数列插入到有序数列1,4,7,10,13

16、,16,19,22,251,4,7,10,13,16,19,22,25中。中。在有序数组中插入一个值为在有序数组中插入一个值为KeyKey的数。的数。算法:算法:查找要插入的查找要插入的位置位置K K(1=k=n1=k a(k) And k a(k) And k a(j) Then p = j If a(p) a(j) Then p = j Next j Next j t = a(i): a(i) = a(p): a(p) = t t = a(i): a(i) = a(p): a(p) = tNext iNext i选择法排序(选择法排序(升序升序)的)的VB程序:程序:思考:如果按思考:如果

17、按降序降序排,程序如何修改?排,程序如何修改?36(2) 冒泡法排序(升序冒泡法排序(升序) 算法算法 :(将相邻两个数比较,大数交换到后面将相邻两个数比较,大数交换到后面)第第1遍遍:将将每每相相邻邻两两个个数数比比较较,大大数数交交换换到到后后面面,经经n-1次次两两两两相相邻邻比比较较后后,最最大大的的数数已已交交换换到到最最后后一一个个位置。位置。排序前排序前753468 91573468 9137537948 16537468 91537468 19537498 1638537948 16357948 16357941 86357941 68357981 64第第2 2遍:遍:将前将

18、前n-1n-1个数(最大的数已在最后)按上法比个数(最大的数已在最后)按上法比较,经较,经n-2n-2次两两相邻比较后得次大的数;次两两相邻比较后得次大的数;39依次类推,依次类推,n个数共进行个数共进行n-1遍比较,在第遍比较,在第i遍中要进行遍中要进行n-i次两两比较。次两两比较。For i= 1 To n-1For i= 1 To n-1For j = 1 To n-iFor j = 1 To n-i If a(j) a(j+1) Then If a(j) a(j+1) Then t=a(j): a(j)=a(j+1): a(j+1)=t t=a(j): a(j)=a(j+1): a(j

19、+1)=t End if End ifNext jNext jNext i冒泡法排序(升序)程序冒泡法排序(升序)程序:406.6.数组元素的检索数组元素的检索例例 4.11 4.11 数据检索问题。检索是从一组数据中找出具数据检索问题。检索是从一组数据中找出具有某种特征的数据项,它是数据处理中应用很广泛有某种特征的数据项,它是数据处理中应用很广泛的一种操作。的一种操作。 设有设有n n个数己存在数组个数己存在数组a a中,要找的数据为中,要找的数据为x x4.2.4 4.2.4 一维数组的应用一维数组的应用数组元素的检索数组元素的检索41Option Base 1Private Sub Co

20、mmand1_Click()Dim a()Dim x As Integer, n As Integer, i As Integera = Array(8, 6, 9, 3, 2, 7)For Each y In a() Print Format(y, );NextPrintx = InputBox(请输入一个数:请输入一个数:)n = UBound(a, 1)For i = 1 To n If a(i) = x Then Exit ForNext iIf i n Then Print 该数据没找到该数据没找到.Else Print 找到的数据为:找到的数据为: & a( & i & ) End

21、 IfEnd Sub424.3 二维数组及多维数组二维数组及多维数组 例如:例如:Dim a(1 to 3,1 to 4) As Single Dim a(1 to 3,1 to 4) As Single 二维数组的存放顺序是二维数组的存放顺序是“先行后列先行后列”。4.3.1 二维数组的声明二维数组的声明 434.3.2 二维数组的引用二维数组的引用 引用形式:引用形式: 数组名数组名( (下标下标1 1,下标,下标2)2)例如:例如: a(1,2)=10 a(1,2)=10 a(i+2,j) a(i+2,j)12 12 在程序中常通过二重循环来使用二维数组元素。在程序中常通过二重循环来使用

22、二维数组元素。 4.3.3 二维数组的基本操作二维数组的基本操作 二维数组元素的赋值二维数组元素的赋值 求最大(小)数组元素及其所在的行和列求最大(小)数组元素及其所在的行和列 441. 二维数组元素的赋值:二维数组元素的赋值: Const N%=3,M%=4Dim a%(1 to N,1 to M), i%, j%For i=1 to N For j=1 to M A(i, j)=int(10*rnd( ) print A(i,j); Next j printNext i在程序中常通过二在程序中常通过二重循环来给二维数重循环来给二维数组赋值组赋值452. 求最大数组元素及其所在的行和列求最大

23、数组元素及其所在的行和列Max = a(1, 1): row = 1: Col = 1 For i = 1 To N For j = 1 To M If a(i, j) max Then Max = a(i, j) row = i: Col = j End If Next jNext iPrint 最大元素是最大元素是; MaxPrint 在第在第 ; row; 行行, ; 第第 ; Col ; 列列步骤演示步骤演示46初始初始: max=a(1,1)=7, row=1, col=1i=1 j=1 a(1,1)= 7max=7 不成立不成立 max, row, col不变不变 j=2 a(1,

24、2)= 5max=7 不成立不成立 max, row, col不变不变 j=3 a(1,3)= 5max=7 不成立不成立 max, row, col不变不变 j=4 a(1,4)= 2max=7 不成立不成立 max, row, col不变不变 47i=2 j=1 a(2,1)= 3max=7 不成立不成立 max, row, col不变不变 j=2 a(2,2)= 7max=7 不成立不成立 max, row, col不变不变 j=3 a(2,3)= 0max=7 不成立不成立 max, row, col不变不变 j=4 a(2,4)= 7max=7 不成立不成立 max, row, co

25、l不变不变 初始初始: max=a(1,1)=7,row=1, col=148i=3 j=1 a(3,1)= 8max=7 成立成立 Max = a(3, 1)=8: row = 3: Col = 1初始初始: max=a(1,1)=7,row=1, col=1 j=2 a(3,2)= 7max=8 不成立不成立 max, row, col不变不变 j=3 a(3,3)= 0max=8 成立成立 max, row, col不变不变 j=4 a(3,4)= 4max=8 不成立不成立 max, row, col不变不变 怎么求最小元素怎么求最小元素?49Option Base 1Private

26、Sub Form_Click()Dim a%(10, 10), i%, j%For i = 1 To 10 For j = 1 To 10 a(i, i) = 1 a(i, 10 - i + 1) = 1 Print a(i, j); Next j PrintNext iEnd Sub设置设置N行、行、N列方阵对角线列方阵对角线元素为元素为1,怎样修改代码?,怎样修改代码?增加例子增加例子 设置对角线:定义一个设置对角线:定义一个1010行行1010列的二维列的二维数组,把它的对角线元素的值设为数组,把它的对角线元素的值设为1 1。504.3.5 多维数组多维数组例如:例如: D Dim a(

27、5, 5, 5) As Integer im a(5, 5, 5) As Integer 声明声明a a是三维数组是三维数组 Dim b(2, 6, 10, 5) As Integer Dim b(2, 6, 10, 5) As Integer 声明声明b b是是四维数组四维数组 51打印杨辉三角:打印杨辉三角:4.7 二维数组的应用二维数组的应用杨辉三角杨辉三角 杨辉三角的第杨辉三角的第1列和对角线上的元素都是列和对角线上的元素都是1,从第,从第3行开始,其余的每一个数正好等于它上面一行的同一行开始,其余的每一个数正好等于它上面一行的同一列与前一列数之和,即列与前一列数之和,即 s(i, j

28、)= s(i- 1, j-1) + s(i-1, j)s(i, j)= s(i- 1, j-1) + s(i-1, j) Private Sub Form_Click()Dim a(10, 10) As Byte, i As Integer, j As IntegerFor i = 1 To 10 产生杨辉三角形产生杨辉三角形 a(i, 1) = 1: a(i, i) = 1Next i524.7 二维数组的应用二维数组的应用杨辉三角杨辉三角 For i = 3 To 10 For j = 2 To i - 1 a(i, j) = a(i - 1, j - 1) + a(i - 1, j) N

29、ext jNext iFor i = 1 To 10 输出杨辉三角形输出杨辉三角形 For j = 1 To i Print Tab(30 - 3 * i + 6 * j); a(i, j); Next j PrintNext iEnd Sub53Private Sub Command1_Click()Private Sub Command1_Click() Dim s( ) As Integer, i%, j%, n% Dim s( ) As Integer, i%, j%, n% Form1.Cls Form1.Cls n = Val(Text1) n = Val(Text1) ReDim

30、 s(n, n) ReDim s(n, n) For i = 1 To n For i = 1 To n Print Tab(12 - i) * 2); Print Tab(12 - i) * 2); For j = 1 To i For j = 1 To i If i = j Or j = 1 Then If i = j Or j = 1 Then s(i, j) = 1 s(i, j) = 1 Else Else s(i, j) = s(i - 1, j - 1) + s(i - 1, j) s(i, j) = s(i - 1, j - 1) + s(i - 1, j) End If En

31、d If Print Format(s(i, j), ); Print Format(s(i, j), ); Next j Next j Print Print Next i Next iEnd SubEnd Sub54第五章第五章 数数 组组 4.5 控控 件件 数数 组组1.1.控件数组的概念控件数组的概念 控件数组由一组相同类型的控件组成。控件数组由一组相同类型的控件组成。特点:特点:这组控件这组控件NameName(名称)属性相同,即共用一个名字名称)属性相同,即共用一个名字具有相同的属性具有相同的属性共享同样的事件过程共享同样的事件过程控件数组中的每个控件,有一个重要的属性控件数组中

32、的每个控件,有一个重要的属性IndexIndex,它为控件数组的下标,从它为控件数组的下标,从0 0开始,通过它来区分每个开始,通过它来区分每个控件控件55Private Sub Command1_Click(Index As Integer)Select Case IndexCase 0Label1.Caption = +Text3 = Val(Text1) + Val(Text2)Case 1Label1.Caption = -Text3 = Val(Text1) - Val(Text2)Case 2Label1.Caption = Text3 = Val(Text1) * Val(Tex

33、t2)Case 3Label1.Caption = Text3 = Val(Text1) / Val(Text2)End SelectEnd Sub562.2.控件数组的建立控件数组的建立在窗体上画出控件,进行属性设置,建立第一在窗体上画出控件,进行属性设置,建立第一个元素个元素选中该控件,进行选中该控件,进行“复制复制”和进行若干次和进行若干次 “粘粘贴贴”操作,建立所需个数的控件数组元素。操作,建立所需个数的控件数组元素。进行事件过程的编程。进行事件过程的编程。57例例 建建立立含含有有四四个个命命令令按按钮钮的的控控件件数数组组,当当单单击击某某个个命命令按钮,分别显示不同的图形或结束操

34、作。令按钮,分别显示不同的图形或结束操作。控件名控件名IndexIndexCaptionCaption Command1 Command10 0直线直线 Command1 Command11 1矩形矩形 Command1 Command12圆圆 Command1 Command13 3结束结束 Picture1 Picture1空白空白58Private Sub Command1_Click(Index As Integer) Picture1.Cls Picture1.FillStyle = 6指定填充图案指定填充图案 Select Case Index Case 0 Picture1.Pr

35、int 画直线画直线 Picture1.Line (2, 2) - (7, 7) , vbRed Case 1 Picture1.Print 画矩形画矩形 Picture1.Line (2, 2) - (7, 7), vbBlue, B Case 2 Picture1.Print 画圆画圆 Picture1.Circle (4.5, 4.5), 3.5, vbGreen Case Else End End SelectEnd Sub59例例4.21 4.21 随机生成随机生成n n个数,求这组数中的最大值、最小个数,求这组数中的最大值、最小值及平均值。要求使用控件数组。值及平均值。要求使用控件

36、数组。60 本章小结本章小结1 1数组的概念数组的概念 数组是一组相同类型数据的集合。数组是一组相同类型数据的集合。 数数组组可可以以被被看看作作一一组组带带下下标标的的变变量量集集合合,系系统统分分配一块连续的内存空间来存放数组中的元素。配一块连续的内存空间来存放数组中的元素。 数数组组元元素素是是数数组组中中的的某某一一个个数数据据项项,引引用用数数组组通通常常是是引引用用数数组组元元素素,数数组组元元素素的的使使用用同同简简单单变变量量的的使使用类似。用类似。 当所需处理的数据个数确定时,通常使用定长数当所需处理的数据个数确定时,通常使用定长数组,否则应该考虑使用动态数组。组,否则应该考

37、虑使用动态数组。 612 2数组的声明数组的声明定义静态数组:定义静态数组: Dim Dim 数组名数组名( (下标下标1 1 ,下标,下标2 2 ) ) As As 数据类型数据类型 它声明了数组名、数组维数、数组大小、数组类型。它声明了数组名、数组维数、数组大小、数组类型。定义动态数组:定义动态数组: Dim Dim 数组名()数组名()As As 数据类型数据类型 ReDim ReDim PreservePreserve 数组名(下标数组名(下标1 1 ,下标,下标2 2 ) 623 3数组的操作数组的操作数组的基本操作有:数组的基本操作有: 数数组组元元素素的的赋赋值值、数数组组元元素素的的输输出出、求求数数组组中中的的最最大大(最最小小)元元素素及及下下标标、求求和和、求求平平均均值值、数数据据倒倒置、矩阵相乘等。置、矩阵相乘等。应用数组解决的常用问题有:应用数组解决的常用问题有: 统计、排序、数据的插入和删除等。统计、排序、数据的插入和删除等。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号