版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第十七讲 数组,Visual Basic 程序设计教程,内蒙古科技大学工程训练中心 韩 艳,工程训练中心,2,本讲主要内容,数组的基本概念 一维数组的定义、性质、应用,工程训练中心,3,引入数组范例,Dim g1,g2,g3,g4,g5,g6,g7,g8,g9,g10, aver; g1=inputbox(“请输入g1”) g2=inputbox(“请输入g2”) g3=inputbox(“请输入g3”) g4=inputbox(“请输入g4”) g5=inputbox(“请输入g5”) g6=inputbox(“请输入g6”) g7=inputbox(“请输入g7”) g8=inputbox
2、(“请输入g8”) g9=inputbox(“请输入g9”) g10=inputbox(“请输入g10”) aver=(g1+g2+g3+g4+g5+g6+g7+g8+g9+g10)/10; if g1 t then print g1 if g2 t then print g2 if g3 t then print g3 if g4 t then print g4 if g5 t then print g5 if g6 t then print g6 if g7 t then print g7 if g8 t then print g8 if g9 t then print g9 if g10
3、 t then print g10,10个数学成绩,计算出平均成绩并打印出低于平均成绩的数值。,用数组解决: 同类型数据相同操作(批处理) Dim g(1 To 10) As Integer, aver!, sum% For i = 1 To 10 g(i) = InputBox(“请输入第” Next,工程训练中心,4,一、数组的基本概念,1、数组的基本概念 数组:具有相同类型的数据的有序集合。具体地,数组是一组具有同一名字、不同下标的下标变量。在内存中,数组占据一块连续的存储区域。 一般格式: s(n) 其中:s称为数组名,n是下标 数组中的每一项数据称为一个数组元素,每个数组元素有一个唯
4、一的顺序号下标,下标用来指出某个数组元素在数组中的位置。如s(3)代表s数组中第4个元素。 数组应先定义(声明)后使用,数组的声明包括明确数组名、类型、维数和数组的大小。 静态(定长)数组:大小固定; 动态(可变长)数组: 大小不确定,使用前重新定义;,工程训练中心,5,一、数组的基本概念,2、数组的定义 数组的定义方式; Dim:用在窗体模块或标准模块及过程中,定义窗体或标准模块级数组; ReDim:用来重新定义动态数组; 用Dim定义的静态数组: 1、一维数组 一个数组若只有一个下标,则称为一维数组; 定义形式: Dim 数组名(下标下界 To 下标上界 ) As 类型名称 说明:格式 中
5、部分为可选部分,若省略,则下标下界默认为0。 如:Dim a(1 to 10) as integer Dim b(10) as integer Dim c(-3 to 5) as string *3,工程训练中心,6,一、数组的基本概念,2、数组的定义 例:dim mark( 1 to 100) as integer 声明了一个一维定长数组,数组的名字为mark,类型为整型; 共有100个元素,下标的取值范围:1100。 mark的数组元素依次为mark(1)、mark(2)、mark(100); mark数组内存分配示意图:,mark(1),mark(2),mark(i),mark(99),
6、mark(100),每组数组元素有一个唯一的顺序号下标不能超出数组声明时的上、下界范围。 一个下标表示一维数组;多个下标,表示多维数组。 下标可以是整型的常数、变量、表达式; 一般情况下,数组中的各元素类型必须相同;但若数组类型为Variant时,可包 含不同类型的数据。,工程训练中心,7,一、数组的基本概念,2、二维数组 由具有两个或多个下标变量所组成的数组称为二维或多维数组。 定义形式: Dim 数组名(第一维下标下界 To 第一维下标上界, 第二维下标下界 To 第二维下标界 ) As 类型名称 如:Dim a(1 to10,3 To 20 ) as String 说明: 格式中的数组名
7、的命名与简单变量名相同,可以是任意合法的变量名 类型名称可以是任何VB所定义的合法类型,包括基本类型和用户自 定义类型; 格式 中部分为可选部分,若省略,则下标下界默认为0,或通过下 面方式定义下标下界的默认值:Option Base n 其中:n只能为0或1;Option只能出现在窗体层或模块层,且该定 义必须在数组定义之前完成,若是多维数组则对每一维都有效。,工程训练中心,8,一、 数组的基本概念,Option Base 1 设置下标默认为1 Dim a(5) as integer a数组的各元素下标取值为:15 Dim x(3,2) as single x数组的第一维下标取值:13,第二
8、 维下标取值:12 数组必须先定义后使用,未定义不能使用,下标为整型常量; 当用Dim语句定义数组时,该语句把数组元素初始化为0或空字符串; 同一过程中,数组名不能与其他数组名或变量名相同; 数组声明中的下标不能是变量,只能是常量; 例:定义数组实例及相关概念释义 Dim a(5) as integer 定义整型数组a,下标上界为5 a(1)=1 :a(2)=2 对数组元素赋值 k=a(1)+a(2) 将数组元素相加再赋给变量k,a(0),a(1),a(2),a(3),a(4),a(5),工程训练中心,9,一、数组的基本概念,例:定义一个二维数组及概念释义,Text,工程训练中心,10,一、数
9、组的基本概念,例:用循环方式对数组赋值。,工程训练中心,11,一、数组的基本概念,3、多维数组和数组下标界值 如果在数组中需要通过两个或两个以上的下标才能确定数组元素在数组中的位置称为多维数组。 两个下标称为二维数组,三个下标称为三维数组等等。 定义方法: Dim 数组名(第一维下标下界 To 第一维下标上界,第二维下标下界 To 第二维下标上界,第三维下标下界 To 第三维下标上界,) As 类型名称 多维数组在内存中所占的空间大小为(所占空间长度应小于64KB): 维数1维数2 维数3 维数n 类型字节数(长度) 如:Dim x(4,3,2,5) As Integer 其所占内存长度=54
10、362=720(字节),工程训练中心,12,一、数组的基本概念,3、多维数组和数组下标界值 确定数组某一维的上下界值的函数: LBound(数组名,维) 返回数组指定维的下界; UBound(数组名,维) 返回数组指定维的上界; 如:Dim a(-3 to 4,1 to 2, 3 to 5, -1 to 6) as integer Lbound(a,1)=3 数组a的第一维下界为3; Ubound(a,3)=5 数组a的第3维上界为5; 如:Dim a(2,1,1) as integer 共有3个下标值,即a为三维数组,该数组共有322=12 个元素; 排列顺序如下: a(0,0,0) a(0
11、,0,1) a(0,1,0) a(0,1,1) a(1,0,0) a(1,0,1) a(1,1,0) a(1,1,1) a(2,0,0) a(2,0,1) a(2,1,0) a(2,1,1),工程训练中心,13,二、静态数组与动态数组,用Static定义的静态数组: 例: Static与Dim定义的对比,Static a(4) As Integer Static定义的数组a Static start As Integer 定义静态变量 Dim b(4) As Integer Dim定义的数组b Dim i As Integer If start = 0 Then Print “Static定义
12、的数组a:”, “ Dim定义的数组b: End If For i = 0 To 4 a(i) = a(i) + i 赋值给Static定义的数组a b(i) = b(i) + i 赋值给Dim定义的数组b Next For i = 0 To 4 Print a(i); Next Print , For i = 0 To 4 Print b(i); Next Print start = 1,用Static定义的数组运行后,该数组所拥有的内存空间不释放,变量的值仍在内存中,再次运行时,将上次运行的结果作为该变量的初始值,只有当整个应用程序退出后,所占内存才会被释放。,工程训练中心,14,二、静态
13、数组与动态数组,3、动态数组及其定义 动态数组在定义时并不知道数组的大小,要在运行期确定,并根据需要在运行期可改变数组的大小。 动态数组的定义步骤: 在窗体、标准模块和过程中用Dim声明一个没有下标的数组 (括号不能省略); 如:dim a( ) as integer 数组重定义。在过程中需要使用该数组前,用Redim语句定义数组的 大小(数组元素个数),下标可为常量、变量或表达式,但变量或 表达式此时必须有值。 如:Redim a(4),工程训练中心,15,二、静态数组与动态数组,3、动态数组及其定义 动态数组定义格式: Dim 数组名( ) As 类型名 定义数组名 Redim Prese
14、rve 变量名 (下标) 重定义数组大小 在重定义时,按下标说明的上、下界重新分配内存存储单元。 使用动态数组可多次重新定义数组的大小和维数,但不能改变数组的类型: Dim a( ) as integer Redim a(4) Redim a(3,2) Redim a(6) a(1)=“Visual Basic” 此句有错误,试图改变数组的类型 Redim定义的是一个临时数组,即在执行数组所在的过程时为数组开辟一定的内存空间,当程序结束时,这部分内存被释放。再次使用ReDim时,当前存储在数组中的数据全部丢失,若想保留当前值可在ReDim后使用Preserve关键字,但使用“Preserve”
15、只能改变最后一维的上界, 前面几维的大小不能改变。,工程训练中心,16,三、数组的基本操作,1、数组元素的输入、输出和复制 1、数组元素的输入 对于数组元素较少的数组,可通过单个赋值语句进行输入操作; 对于数组元素较多的数组,一般通过For语句和InputBox函数输入。 Option Base 1 默认下标下界为1 dim b(2,3) as single for i=1 to 2 for i=1 to 3 b(i,j)=inputbox(“输入b(” 以紧凑格式输出数组元素 Next Print Next,工程训练中心,19,三、数组的基本操作,3、数组元素的复制 单个数组可以像简单变量一
16、样,从一个数组复制到另一个数组。 Dim b(4,8),a(6,5) 数组定义 b(2,3)=a(3,2) 数组复制,工程训练中心,20,三、数组的基本操作,1、数组元素的输入、输出和复制 二维数组中的元素也可以复制给另一个二维数组中的某个元素,也可以复制给一个一维数组中的某个元素,并且反之亦然。 Dim a(8),b(3,2) a(3)=b(1,2): b(3,2)=a(7) 为了复制整个数组,仍要使用For循环语句。 option base 1 dim name1( ),name2( ) redim name1(10),name2(10) for i=1 to10 给name1的10个元素
17、赋值 name1(i)=inputbox(“请输入姓名:”) next for i=1 to 10 利用For循环将name1的数据复制给name2 name2(i)=name1(i) next,工程训练中心,21,三、数组的基本操作,2、For EachNext语句 For EachNext语句专门针对一个数组或集中的每个元素执行重复语句。 一般格式: For Each 成员 In 数组 循环语句序列 Exit For 循环语句序列 Next 成员 其中: 成员:相当于一个循环变量,它表示数组中的每个元素; 数组:为一个数组名称; For Each Next语句主要用来对数组元素进行处理,包
18、括查询、显示或读取。它执行的次数由数组元素的个数决定。 Dim a(1 to 5) For Each x In a print x, Next,工程训练中心,22,三、数组的基本操作,2、For EachNext语句 例: For Each Next使用实例,For i = 1 To 20 arr(i) = Int(Rnd * 100) 为数组赋值 Next 显示数组元素的值 For Each arr_elem In arr If arr_elem 50 Then Print arr_elem; Sum = Sum + arr_elem End If If arr_elem 95 Then Exit For Next Print Print Sum,工程训练中心,23,三、数组的基本操作,3、数组的初始化 数组的初始化就是给数组元素赋初值。 格式: 数组名Array(数组元素初始值) 说明: 初始值与相应数组元素一一对应,初始值相互之间用逗号隔开; 在初始化前对数组元素的定义不能是具体的数据类型,只能是 Variant型,或为默认类型; 对于该数组可以不定义而直接由Array函数来确定; 如:dArray(1,2,3,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 传统工业区课件人教必修
- 2024琥珀教学课件:从琥珀中窥见古生态
- 中级会计师考试《会计实务》模拟试题三
- 中级育婴员考试试题含答案
- 肺癌中医护理方案图文课件
- 高氯废水化学需氧量的测定
- 2024年Scratch教案:助力编程教育普及
- 2022年4月自考00143经济思想史真题试卷
- 2024春七年级英语下册Module11BodylanguageUnit3Languageinuse同步练习新版外研版
- 2024-2025学年新教材高中化学第3章物质的性质与转化第2节第1课时自然界中的硫作业含解析鲁科版必修1
- 厨房员工绩效考核方案
- 英文科技论文写作的100个常见错误
- 新湘科版小学三年级科学上册-全册教案
- 2023飞轮储能技术在新能源一次调频上的应用
- 第7讲-化学工程的伦理问题-201912092040097
- 肉羊舍饲高效养殖技术汇编
- 北师大版2023-2024五年级数学上册期中测试卷
- 第十六章-组织创新-管理学马工程-课件
- 全球航路的开辟(共31张)
- 初中数学华东师大版七年级上册整式的加减课件
- 学校监控视频故障应急预案
评论
0/150
提交评论