第05章数组与自定义数据类型课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第05章数组与自定义数据类型课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 05 数组 自定义 数据类型 课件
- 资源描述:
-
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
展开阅读全文