第05章数组与自定义数据类型课件.ppt

上传人(卖家):晟晟文业 文档编号:5167140 上传时间:2023-02-15 格式:PPT 页数:67 大小:464KB
下载 相关 举报
第05章数组与自定义数据类型课件.ppt_第1页
第1页 / 共67页
第05章数组与自定义数据类型课件.ppt_第2页
第2页 / 共67页
第05章数组与自定义数据类型课件.ppt_第3页
第3页 / 共67页
第05章数组与自定义数据类型课件.ppt_第4页
第4页 / 共67页
第05章数组与自定义数据类型课件.ppt_第5页
第5页 / 共67页
点击查看更多>>
资源描述

1、第第05章章 数组与自定义数据类型数组与自定义数据类型l1.数组基本概念(数组基本概念(数组和数组元素、分类数组和数组元素、分类)l2.数组的基本操作(数组的基本操作(声明、赋值、输出声明、赋值、输出)l3.数组应用举例(数组应用举例(统计、查找、排序、矩阵运算统计、查找、排序、矩阵运算)l4.控件数组控件数组l5.自定义数据类型自定义数据类型引例引例l输入输入10个学生的成绩,将高于平均成个学生的成绩,将高于平均成绩的值输出。绩的值输出。lDim w1,w2,w3,w4,w5,w6,w7,w8,w9,w10Dim w1,w2,w3,w4,w5,w6,w7,w8,w9,w10lDim aver

2、Dim averlw1=Val(InputBox(w1=Val(InputBox(请输入第请输入第&1&1&个学生的成绩:个学生的成绩:)lw2=Val(InputBox(w2=Val(InputBox(请输入第请输入第&2&2&个学生的成绩:个学生的成绩:)lw3=Val(InputBox(w3=Val(InputBox(请输入第请输入第&3&3&个学生的成绩:个学生的成绩:)llw9=Val(InputBox(w9=Val(InputBox(请输入第请输入第&9&9&个学生的成绩:个学生的成绩:)lw10=Val(InputBox(w10=Val(InputBox(请输入第请输入第&10&

3、10&个学生的成绩:个学生的成绩:)laver=(w1+w2+w3+w4+w5+w6+w7+w8+w9+w10)/10aver=(w1+w2+w3+w4+w5+w6+w7+w8+w9+w10)/10lIf w1 aver Then Print w1If w1 aver Then Print w1lIf w2 aver Then Print w2If w2 aver Then Print w2lIf w3 aver Then Print w3If w3 aver Then Print w3llIf w9 aver Then Print w9If w9 aver Then Print w9lIf

4、w10 aver Then Print w10If w10 aver Then Print w10使用普通变量使用普通变量若学生人数为若学生人数为100?占用内存占用内存使用循环结构?使用循环结构?l计算计算10个人的平均成绩个人的平均成绩For i=1 To 10 x=InputBox(请输入第请输入第&i&个同学的成绩个同学的成绩)s=s+xNext iaver=s/10lIf xaver then print x 一、基本概念一、基本概念l1、数组、数组元素、数组、数组元素l数组数组:用一些连续的地址空间来存储类型相同的:用一些连续的地址空间来存储类型相同的一组数一组数l数组元素数组元素

5、:构成数组的每一数据成员,用圆括号:构成数组的每一数据成员,用圆括号和和下标表示下标表示l例:数组例:数组 a(2):数组为:数组为a,a(0)、a(1)、a(2)是该数是该数组的元素;组的元素;0、1、2分别为响应数组元素的下标分别为响应数组元素的下标l数组必须数组必须先定义后使用先定义后使用l好处:好处:让一批相同性质的数据用同一个变量名,书写方便,可读性高;便于使用循环语句。l例如,数组例如,数组w(9)可表示如下可表示如下2.数组的分类数组的分类l根据声明数组时是否限定数组元素的根据声明数组时是否限定数组元素的个数,分为:个数,分为:静态数组静态数组:声明时数组元素个数已知:声明时数组

6、元素个数已知动态数组动态数组:声明时数组元素个数未知:声明时数组元素个数未知l根据维数分根据维数分:一维数组、二维数组、多维数组:一维数组、二维数组、多维数组:一、基本概念一、基本概念二、数组的声明:二、数组的声明:1.静态一维数组的声明:静态一维数组的声明:格式:格式:Dim 数组名(下界数组名(下界 to 上界)上界)as 例:例:以下定义从以下定义从a(1)到到a(6)连续的连续的6个数组元素个数组元素Dim a(1 to 6)as single以下语句定义从以下语句定义从a(0)到到 a(6)连续的连续的7个数组元素个数组元素Dim a!(6)若希望下标从1开始可以采用如下方法:Opt

7、ion Base 1 写在通用模块中 dim a(6)as integer 则定义从定义从a(1)到到a(6)连续的连续的6个数组元素个数组元素 作用:定义作用:定义(上界上界-下界下界+1)个数组元素个数组元素其中:其中:Dim 数组名(下界数组名(下界 to 上界)上界)as l数组名 要符合变量命名规则。l下界 To 上界 用于确定数组元素下标的范围 如果下界省略,默认为0。lAs 用来定义数组的数据类型,数组中各个元素的数据类型都为此类型,如果省略则为变体数据类型。下界、上界下界、上界n可以是可以是常量常量常量表达式常量表达式n不能是不能是变量变量含变量的表达式含变量的表达式n若下界省

8、去,默认若下界省去,默认:0n变量名只能由字母、数字、变量名只能由字母、数字、汉字和下划线组成汉字和下划线组成n必须以字母开头,大小写等必须以字母开头,大小写等价价 n长度不超过长度不超过255个字符个字符n不能和不能和VB保留字重名保留字重名(if、then)n不能含有标点符号,类型说不能含有标点符号,类型说明符只能出现在名称的最后明符只能出现在名称的最后 dim a%(1 to n),错误!错误!l定义数组时注意事项:l通用声明段中如果有“Option Base 1”可设定数组默认下标下界从1开始l在一个事件过程内在一个事件过程内,不能出现重名现象l声明数组和声明变量一样,也有作用范围 l

9、声明数组后,各数组元素的初值与数组的数据类型有关。重名重名:数组名和既有数组名重名数组名和既有数组名重名数组名和既有变量名重名数组名和既有变量名重名二、数组的声明:二、数组的声明:2.静态二维数组静态二维数组 Dim 数组名(下界数组名(下界1 To 上界上界1,下界,下界2 To 上上界界2)As 例如:例如:Dim x(0 to 3,0 to 4)as singleDim height%(-4 to 8,1 to 10)作用:作用:定义含有(上界定义含有(上界1下限下限1)(上界(上界2下限下限2)个数组元素的一个数组。)个数组元素的一个数组。二维数组举例二维数组举例33323123222

10、1131211bbbbbbbbb例:例:dim b%(1 to 3,1 to 3)则二维数组各元素分别为则二维数组各元素分别为:B(1,1)B(1,2)B(1,3)B(2,1)B(2,2)B(2,3)B(3,1)B(3,2)B(3,3)但实际存储时是连续存储的:但实际存储时是连续存储的:B(1,1)B(1,2)B(1,3)B(2,1)B(2,2)B(2,3)B(3,1)B(3,2)B(3,3)二、数组的声明:二、数组的声明:3.动态数组的声明(一维数组、二维数组)l声明动态数组通常分声明动态数组通常分3步:步:第第1步步 声明一个省略维说明的数组声明一个省略维说明的数组 Dim 数组名数组名(

11、)()As 第第2步步 指定数组元素个数指定数组元素个数n第第3步步 用用ReDim重新声明重新声明 ReDim Preserve 数组名数组名()As 数据类型数据类型3.动态数组的声明l一维一维:dim a()as integer n=inputbox(“请输入元素个数请输入元素个数”)redim Preserve a(1 to n)as integerl二维:二维:Dim a()as integer m=inputbox(“请输入行数:请输入行数:”)n=inputbox(“请输入列数:请输入列数:”)ReDim preserve a(1 To m,1 To n)As Integer二、

12、数组的声明:二、数组的声明:preserve 的作用的作用Dim a()As Integer,n As Integern=6ReDim a(1 To n)As IntegerFor i=1 To 6 a(i)=8Next i888888a(1)a(3)a(4)a(5)a(6)a(2)00000000a(1)a(3)a(4)a(5)a(6)a(2)a(7)a(8)88888800a(1)a(3)a(4)a(5)a(6)a(2)a(7)a(8)ReDim a(1 To 8)As IntegerReDim Preserve a(1 To 8)As Integer三、三、数组元素值数组元素值的赋值、输

13、出的赋值、输出l赋值赋值(利用赋值语句)(利用赋值语句)l对对一个一个数组数组元素元素赋值赋值:l直接赋值直接赋值:a(1)=8l使用使用InputBox()函数:函数:a(1)=inputbox(“请输入请输入”)l使用随机函数使用随机函数 a(1)=int(Rnd*100)(用于测试程序用于测试程序)l对对多个多个数组数组元素元素赋值:赋值:l一维:一维:fornext循环循环(用用array,split函数时除外函数时除外)l二维:二维:fornext循环嵌套循环嵌套l使用使用array()、()、split()函数()函数Dim a%(1 to10)For i=1 to 10a(i)=

14、rnd*10Next i三、数组元素值的输入、输出三、数组元素值的输入、输出2.输出方法:输出方法:lPrint 语句语句l输出到输出到text中中l输出到文件中输出到文件中l输出输出一个一个元素元素:print a(1)l输出输出多个多个元素元素:l一维:for next循环l二维:fornext循环嵌套l例:例:Private Sub Form_Click()Dim a%(1 to 5,1 to 5)For i=1 To 5 For j=1 To 5 a(i,j)=Int(Rnd*80)Print Tab(j*8+1);a(i,j);Next j Next iEnd SubDim a%(1

15、 to10)For i=1 to 10a(i)=rnd*10Next iPrint a(i)错误!错误!数组基本操作举例:静态一维数组数组基本操作举例:静态一维数组lDim a(1 to 10)As IntegerlFor i=1 To 10l a(i)=Int(Rnd*101)lNext ilFor i=1 To 10l Print a(i);lNext ilPrintlFor i=1 To 10l s=s+a(i)lNext ilaver=s/10lPrint averlFor i=1 To 10l If a(i)aver Then Print a(i);lNext i数组基本操作举例:静

16、态二维数组数组基本操作举例:静态二维数组l Dim a(1 to 5,1 to 5)As IntegerlFor i=1 To 5l For j=1 To 5l a(i,j)=Int(Rnd*80)l Next jl Next il For i=1 To 5l For j=1 To 5l Print a(i,j);l Next jl Printl Next i数组基本操作举例:动态一维数组数组基本操作举例:动态一维数组lDim a()As Integerln=InputBox(请输入学生人数:请输入学生人数:)lReDim Preserve a(1 To n)As IntegerlFor i=

17、1 To nl a(i)=Int(Rnd*101)lNext ilFor i=1 To nl Print a(i);lNext ilPrintlFor i=1 To nl s=s+a(i)lNext ilaver=s/nlPrint averlFor i=1 To nl If a(i)aver Then Print a(i);lNext i数组基本操作举例:动态二维数组数组基本操作举例:动态二维数组l Dim a()As Integerl m=InputBox(请输入行数:请输入行数:)l n=InputBox(请输入列数:请输入列数:)l ReDim Preserve a(1 To m,1

18、To n)As Integerl For i=1 To ml For j=1 To nl a(i,j)=Int(Rnd*80)l Next jl Next il For i=1 To ml For j=1 To nl Print a(i,j);l Next jl Printl Next iArray()函数函数lArray函数可方便地对数组函数可方便地对数组一次整体赋值一次整体赋值l格式:格式:数组名=Array()l用于给用于给 一维一维动态、变体类型动态、变体类型数组数组l其中:数组名可以是已经声明过的变体动态数组,也可以是没有声明过的数组名例:a=array(1,3,4,5,-6)或Di

19、m a()a()=array(1,3,4,5,-6)Array()函数应用函数应用lPrivate Sub Form_click()lDim a(),b()a=Array(1,3,4,5,-6)b=Array(abc,def,67,5,-6)For i=LBound(a)To UBound(a)Print a(i);Next I Print For i=LBound(b)To UBound(b)Print b(i);Next ilEnd SubLBound(a),取数组a的下界函数UBound(a),取数组a的下界函数可以不定义,但如可以不定义,但如果定义,必须为:果定义,必须为:动态、变体类

20、型动态、变体类型赋值没赋值没有用有用循环循环求数组的上界求数组的上界Ubound()函数、函数、下界下界 Lbound()函数函数 Ubound()函数和函数和Lbound()函数函数功能:功能:用来确定数组某一维的上界和下界值。用来确定数组某一维的上界和下界值。使用形式如下:使用形式如下:Ubound(,)Lbound(,)其中:其中:必需的。数组变量的名称,遵循标准变量命名约定。必需的。数组变量的名称,遵循标准变量命名约定。:可选的;一般是整型常量或变量。指定返回哪一维的上界。可选的;一般是整型常量或变量。指定返回哪一维的上界。1 表表示第一维,示第一维,2 表示第二维,如此等等。如果省略

21、默认是表示第二维,如此等等。如果省略默认是1。split()函数函数l格式为:格式为:=Split(字符串表达式,分隔符)(字符串表达式,分隔符)l适用条件适用条件l动态数组动态数组l字符型字符型l字符串表达式是字符串表达式是一组一组将要为数组赋值的数据,这将要为数组赋值的数据,这些数据之间有固定的分隔符。些数据之间有固定的分隔符。l数组必须是数组必须是动态数组动态数组,可以不提前声明,如果提,可以不提前声明,如果提前声明则必须声明为前声明则必须声明为字符型字符型。Slplit()函数应用举例函数应用举例例例 使用文本框录入大量的数据,将它们保存在使用文本框录入大量的数据,将它们保存在一维数组

22、中,并打印输出(每行显示一维数组中,并打印输出(每行显示8 8个数个数据)。据)。Slplit()函数应用举例函数应用举例Private Sub Command1_Click()dim a()as string a=Split(Text1,)End SubPrivate Sub Command2_Click()For i=0 To UBound(a)Picture1.Print Tab(6*(i Mod 5)+1);a(i);Next iEnd Sub可以不定义,但如可以不定义,但如果定义,必须为:果定义,必须为:动态、字符类型的动态、字符类型的l SplitSplit函数只能给函数只能给字符

23、型字符型数组赋值;而数组赋值;而ArrayArray函数函数只能给只能给变体类型变体类型数组赋值。数组赋值。l这两个函数只能给这两个函数只能给一维数组一维数组赋值,如果要为二维赋值,如果要为二维数组赋值,必须先将数据放入一维数组,再通过数组赋值,必须先将数据放入一维数组,再通过程序的方法转入二维数组。程序的方法转入二维数组。l用用ArrayArray函数赋值的数组元素的最小下标受函数赋值的数组元素的最小下标受Option Option Base Base 语句影响;用语句影响;用SplitSplit函数赋值的数组的最小函数赋值的数组的最小下标与下标与Option Base Option Bas

24、e 语句无关,不管语句无关,不管Option Base Option Base 语句设置为语句设置为0 0还是还是1 1,数组元素的最小下标均从,数组元素的最小下标均从0 0开开始。始。Split函数和函数和Array函数应用小结函数应用小结四、数组应用四、数组应用l利用数组编程的一般步骤为:利用数组编程的一般步骤为:l声明数组;声明数组;l为数组元素赋值;为数组元素赋值;(3)运算处理运算处理(4)结果输出。结果输出。四、数组应用举例:四、数组应用举例:l输出输出fabonaccii数列前数列前12项。项。l在一组给定的数中查找一个数在一组给定的数中查找一个数x存在否存在否l简单简单统计统计

25、l求最大数及其位置求最大数及其位置lN个数个数排序排序(重点、难点重点、难点)二维数组应用特例二维数组应用特例输出如下矩阵输出如下矩阵数组应用数组应用-查找查找l查找方法:顺序法、二分法查找方法:顺序法、二分法l例:例:对给定的一组数对给定的一组数15、8、4、13、6、10、17、1,从键盘输入一个数,找出该数在数组中,从键盘输入一个数,找出该数在数组中的的位置。l用随机函数产生用随机函数产生10个两位整数,求个两位整数,求最大值及最大值及其位置其位置 lOption Base 1lPrivate Sub Form_Click()Dim a%(10),i%For i=1 To 10 a(i)

26、=Int(Rnd*(90)+10)Print 第第&i&个随机数是:个随机数是:&a(i)Next i Max=a(1)k=1 For i=2 To 10 If a(i)Max Then Max=a(i):k=i Next i Print 最大数是第最大数是第&k&个个 lEnd Sub数组应用数组应用-求最大数求最大数数组应用数组应用-简单统计简单统计l例例 在文本框中输入多名学生的一门课程的在文本框中输入多名学生的一门课程的考试成绩,统计各分数段学生人数考试成绩,统计各分数段学生人数。lPrivate Sub Command1_Click()lDim i%,k%,a()As String,

27、counter(0 To 10)As Integerla=Split(Text1,)lFor i=0 To UBound(a)lIf a(i)=0 Thenl k=a(i)10l counter(k)=counter(k)+1lEnd IflNext ilPrint 统计结果如下:统计结果如下:lFor i=0 To 10lIf counter(i)0 Thenl Print 第第&i*10&-&i*10+9&段共有段共有&counter(i)lEnd IflNext ilEnd Subl输入输入N名同学的成绩,显示于文本框名同学的成绩,显示于文本框Text1中,中,按成绩从低到高的次序排序,

28、并将结果显示于按成绩从低到高的次序排序,并将结果显示于另一个文本框另一个文本框Text2中。中。数组应用数组应用排序排序(重点、难点算法重点、难点算法)(1)将第将第1个数与第个数与第2个数到第个数到第N个数依次比较,如果个数依次比较,如果X(1)X(j)(j=2,3,N),则交换,则交换X(1)、X(j)的内的内容;容;(2)将第将第2个数与第个数与第3个数到第个数到第N个数依次比较个数依次比较,如果如果X(2)X(j)(j=3,4,N),则交换,则交换X(2)、X(J)的的内容;内容;(3)重复以上方法,将第重复以上方法,将第i个数与第个数与第i+1个数到第个数到第N个数个数依次比较依次比

29、较,如果如果X(i)X(j)(j=i+1,N),则交换则交换X(i)、X(j)的内容;的内容;共重复共重复N-1轮。轮。比较交换法比较交换法:对对N个数进行排序个数进行排序(自学自学)1)将将9与与15比较比较,9与与20比较比较,9与与14比较比较,9与与13比较比较,9与与17比较比较 9 15 20 14 13 17 2)将将15与与20比较比较,15与与14比较比较(交换交换),14与与13比较比较(交换交换),13与与17比较比较 9 14 20 15 13 17 9 13 20 15 14 17 3)将将20与与15比较比较(交换交换)、15与与14比较比较(交换交换)、14与与1

30、7比较比较 9 13 15 20 14 179 13 14 20 15 174)将将20与与15比较比较(交换交换)、15与与17比较比较 9 13 14 15 20 175)将将20与与17比较比较(交换交换)9 13 14 15 17 20例:对数例:对数9 15 20 14 13 17 用比较交换法排序用比较交换法排序比较交换法比较交换法:对对N个数进行排序(升序)个数进行排序(升序)For i=1 To N-1 For j=i+1 To N If a(i)a(j)Then t=a(i)a(i)=a(j)a(j)=t End If Next jNext i选择排序法:对选择排序法:对N个

31、数进行排序(升序)个数进行排序(升序)1)将第将第1个数与第个数与第2个数到第个数到第N个数依次比较,个数依次比较,找出第找出第1个数个数到第到第N个数中的最小值个数中的最小值,记下其位置,记下其位置k,交换交换X(1)与与X(k)的的值。这时值。这时X(1)为原为原X(1)到到X(N)中的最小值。中的最小值。2)将第将第2个数与第个数与第3个数到第个数到第N个数依次比较,个数依次比较,找出第找出第2个数个数到第到第N个数中的最小值个数中的最小值,记下其位置,记下其位置k,交换交换X(2)与与X(k)的的值。这时值。这时X(2)为原为原X(2)到到X(N)中的最小值。中的最小值。3)重复以上方

32、法,将第重复以上方法,将第i个数与第个数与第i+1个数到第个数到第N个数依次比个数依次比较,找出第较,找出第i个数到第个数到第N个数中的最小值,记下其位置个数中的最小值,记下其位置k,交交换换X(i)与与X(k)的值。这时的值。这时X(i)为原为原X(i)到到X(N)中的最小值。中的最小值。共重复共重复N-1轮轮l例例5-8 用选择排序法,将用选择排序法,将15、8、4、13、6、10、17、1按照由小到大的顺序递增排列。按照由小到大的顺序递增排列。l第一步:把要排序的数用一个数组存储,并输出原始数据第一步:把要排序的数用一个数组存储,并输出原始数据 option base 1 Dim a()

33、,i%,k%,j%a=Array(15,8,4,13,6,10,17,1)n=UBound(a)Print 排序前:排序前:;For i=1 To n Print a(i);Next i Print第二步:排序,可以分解为如下几个小的步骤第二步:排序,可以分解为如下几个小的步骤l(1)先从先从n个数中找出最小数的下标(用个数中找出最小数的下标(用k表表示),并将最小数与第一个数交换位置示),并将最小数与第一个数交换位置 k=1 For j=2 To n If a(k)a(j)Then k=j Next j t=a(1):a(1)=a(k):a(k)=tl(2)从第从第2n个数中找出最小数的下标

34、(用个数中找出最小数的下标(用k表示),表示),并将最小数与第并将最小数与第2个数交换位置个数交换位置 k=2 For j=3 To n If a(k)a(j)Then k=j Next j t=a(2):a(2)=a(k):a(k)=t第二步:排序,可以分解为如下几个小的步骤第二步:排序,可以分解为如下几个小的步骤l(3)从第从第3n个数中找出最小数的下标(用个数中找出最小数的下标(用k表示),并将最小数与第表示),并将最小数与第3个数交换位置个数交换位置 k=3 For j=4 To n If a(k)a(j)Then k=j Next j t=a(3):a(3)=a(k):a(k)=t

35、第二步:排序,可以分解为如下几个小的步骤第二步:排序,可以分解为如下几个小的步骤l(n-1)从第)从第n-1n个数中找出最小数的下个数中找出最小数的下标(用标(用k表示),并将最小数与第表示),并将最小数与第n-1个数个数交换位置。交换位置。k=n-1 For j=n-1 To n If a(k)a(j)Then k=j Next j t=a(n-1):a(n-1)=a(k):a(k)=t第二步:排序,可以分解为如下几个小的步骤第二步:排序,可以分解为如下几个小的步骤For i=1 To n-1 k=i For j=i+1 To n If a(k)a(j)Then k=j Next j t=a

36、(i):a(i)=a(k):a(k)=tNext i第二步,找出以下规律第二步,找出以下规律第三步第三步 输出排序后的数据输出排序后的数据 Print 排序后:排序后:;For i=1 To n Print a(i);Next iFor i=1 To n-1 k=i For j=i+1 To n If a(j)=m And k=n Print 要在要在&k&位置插入位置插入&x 第第2步步 增加数组元素个数增加数组元素个数 n=n+1 ReDim Preserve a(n)第第3步步 将待插入位置以后的数逐一后移一位,腾出插入位置将待插入位置以后的数逐一后移一位,腾出插入位置 For i=n-

37、1 To k Step-1 a(i+1)=a(i)Next i 第第4步步 在插入位置上插入数在插入位置上插入数 a(k)=xlEnd SubKX插入数组元素插入数组元素-界面设计界面设计数组应用数组应用-删除元素删除元素l数组中元素的删除过程是:数组中元素的删除过程是:(1)输入要删除的数;输入要删除的数;(2)在数组中找到要删除的数的位置在数组中找到要删除的数的位置k,如果数组中没有,如果数组中没有要删除的数,输出相应信息;要删除的数,输出相应信息;(3)将将k以后的每一个元素前移一位,覆盖要删除的数;以后的每一个元素前移一位,覆盖要删除的数;(4)减少数组元素的个数,完成删除。减少数组元

38、素的个数,完成删除。posPrivate Sub Command1_Click()Dim a(),n%,Key%a=Array(1,6,8,3,5,9,10,2,7,4)n=UBound(a)获得数组的上界 Key=InputBox(“请输入要删除的数请输入要删除的数”)For i=0 To n 查找欲删除数在数组中的位置 If Key=a(i)Then Exit For Next i If i=n+1 Then MsgBox(“找不到此数找不到此数”):Exit Sub For j=i+1 To n 将欲删除数后面的元素依次左移 a(j-1)=a(j)Next j ReDim Preserv

39、e a(n-1)数组元素个数减少一个 For i=0 To n-1 打印删除后的各数组元素的值 Print a(i);Next iEnd Sub删除一个元素删除一个元素数组使用小结数组使用小结l 使用原则使用原则 先定义后使用先定义后使用l使用顺序使用顺序l数组声明(数组声明(静态、动态,一维、二维静态、动态,一维、二维)l初始化初始化 对数组各个元素赋值对数组各个元素赋值l根据程序进行计算根据程序进行计算l输出输出注意:注意:l初始化、输出一般要用到初始化、输出一般要用到循环结构循环结构l初始化、输出是对数组元素初始化、输出是对数组元素(不是数组名不是数组名)而言的而言的Dim x%(1 t

40、o10)x=3Print x原因:不能直接给数组名赋值原因:不能直接给数组名赋值本章常见错误:本章常见错误:下标越界下标越界Dim a(1 to 3)For i=1 To 6 a(i)=iNext iPrint a(10)For i=1 To 3 a(i)=iNext iPrint a(i)出现此错误,原因一定是使用的下标出现此错误,原因一定是使用的下标超出了定义时所允许的下标范围,超出了定义时所允许的下标范围,数组没有定义也可导致此错误数组没有定义也可导致此错误控件数组控件数组l基本概念基本概念控件数组控件数组各控件各控件名称相同名称相同以以索引号索引号区分彼此区分彼此l建立控件数组的方法建

41、立控件数组的方法设计时建立设计时建立1.运行时建立运行时建立应用举例应用举例简单调色板简单调色板Shape控件控件l主要属性主要属性lshape 控件外观控件外观lfillcolor 填充颜色填充颜色lFillstyle 填充样式填充样式滚动条(滚动条(scrollbar)l分类:分类:lHscrollbarlVscrollbarl主要属性主要属性lvalue 滑块所处位置(是一个整数值)滑块所处位置(是一个整数值)lmax 滑块处最大位置时所表示的值滑块处最大位置时所表示的值lmin 滑块处最小位置时所表示的值滑块处最小位置时所表示的值lsmallchange 单击左右箭头时滑块移动距离大单

42、击左右箭头时滑块移动距离大小小llargechange 单击滚动条空白处滑块移动距离单击滚动条空白处滑块移动距离大小大小自定义数据类型自定义数据类型 在在VBVB中,利用系统提供的标准数据类型定义中,利用系统提供的标准数据类型定义变量,可以存储那些相互独立、没有内在联系的变量,可以存储那些相互独立、没有内在联系的数据,借助数组能存储一组性质相同的数据。数据,借助数组能存储一组性质相同的数据。但实际应用中,对事物的描述往往需要两个但实际应用中,对事物的描述往往需要两个或两个以上的基本数据项或两个以上的基本数据项 学号姓名性别出生日期语文数学总分99310李小华李小华男男1985年年2月月8595

43、18099311张红玉张红玉女女1984年年12月月73587160599312田田 宝宝男男1986年年1月月8279161学生成绩登记表自定义数据类型自定义数据类型 若采用数组存储,则需要若采用数组存储,则需要3 3个字符型数组分别个字符型数组分别存储学号、姓名和性别,存储学号、姓名和性别,1 1个日期型数组存储出生个日期型数组存储出生日期,日期,1 1个二维数组存储成绩,这种方法尽管解决个二维数组存储成绩,这种方法尽管解决了数据的存储问题,但处理起来将会非常麻烦。了数据的存储问题,但处理起来将会非常麻烦。学号姓名性别出生日期语文数学总分99310李小华李小华男男1985年年2月月8595

44、18099311张红玉张红玉女女1984年年12月月73587160599312田田 宝宝男男1986年年1月月8279161字段纪录字段名自定义数据类型自定义数据类型1 1、自定义数据类型的定义、自定义数据类型的定义格式:格式:Type Type 自定义类型名自定义类型名 字段字段1 1 as as 类型名类型名1 1 字段字段2 2 as as 类型名类型名2 2 字段字段n n as as 类型名类型名n n End TypeEnd Type其中:其中:自定义类型名自定义类型名是用户欲定义的数据类型名(注意,它是用户欲定义的数据类型名(注意,它不是变量名),其命名规则与变量名命名规则相同

45、;不是变量名),其命名规则与变量名命名规则相同;字段字段是组成自定义数据类型的元素,其命名规则也与变量名命名是组成自定义数据类型的元素,其命名规则也与变量名命名规则相同;规则相同;类型名类型名可以是任何基本数据类型,也可以是可以是任何基本数据类型,也可以是用户定义数据类型。用户定义数据类型。自定义数据类型自定义数据类型如:如:Type studtypeType studtype xh as string xh as string*5 5 xm as string xm as string*8 8 xb as string xb as string*2 2 csrq as date csrq a

46、s date yw as single yw as single sx as single sx as single zf as single zf as single End Type End Type在使用在使用TypeType语句时,应注意以下两点:语句时,应注意以下两点:(1)(1)自定义类型一般放在标准模块中,默认为自定义类型一般放在标准模块中,默认为PublicPublic;(2)(2)自定义类型中的字符型字段必须设置成定长字符串。自定义类型中的字符型字段必须设置成定长字符串。自定义数据类型自定义数据类型2 2、使用自定义数据类型声明变量、使用自定义数据类型声明变量 完成自定义数据

47、类型定义后,自定义数据类型就完成自定义数据类型定义后,自定义数据类型就自动保存在自动保存在“列出成员列出成员”中。就可以象使用标准数据中。就可以象使用标准数据类型一样定义变量类型,格式如下:类型一样定义变量类型,格式如下:Dim Dim 变量名变量名 as as 自定义类型名自定义类型名3 3、为自定义数据类型的变量赋值、为自定义数据类型的变量赋值 当变量被声明成自定义数据类型后,它就具有这当变量被声明成自定义数据类型后,它就具有这种数据类型的各个字段(或称域),为各字段赋值的种数据类型的各个字段(或称域),为各字段赋值的格式如下:格式如下:变量名变量名.字段名字段名=表达式表达式数组课后作业题数组课后作业题l1.求二维数组最大元素及其所在的行和列l2.输入整数n,显示出具有n行的杨辉三角形l

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(第05章数组与自定义数据类型课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|