资源描述:
《vb课件2 第7章 数组.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第7章数组江苏技术师范学院计算机应用基础教研室第7章数组本章主要任务:(1)明确数组的用途,即什么问题应该考虑应用数组进行求解。(2)掌握一维数组和二维数组的定义及引用方法。(3)掌握动态数组的使用方法。(4)掌握控件数组的建立与应用方法。(5)掌握数组的基本算法。7.1数组的基本概念数组与数组元素:简单变量用一个变量名标识,不同的变量使用不同的变量名表示。处理成批的数据时,必须使用数组来处理表示100个学生的成绩,采用简单变量来表示:s1,s2,s3,…s99,s100采用数组来表示:t(0)
2、,t(1),t(2),…t(98),t(99)t(k)(k=0,1,2,…99)为数组元素(或称下标变量),它表示第k个学生的成绩,k称为下标变量的下标数组的一个主要特点是通过下标(相当于索引)来引用数组元素7.1数组的基本概念数组元素:又称有序的变量——下标变量默认情况下,下标从0开始例如,由一行共5个元素组成的数组x,它的5个下标变量为:x(0)x(1)x(2)x(3)x(4)由三行四列元素组成的数组y,它的12个下标变量可表示为:y(0,0)y(0,1)y(0,2)y(0,3)
3、y(1,0)y(1,1)y(1,2)y(1,3)y(2,0)y(2,1)y(2,2)y(2,3)下标变量与简单变量具有基本相同的性质和作用1.数组不是一种数据类型数组有点类似于数学上“集合”的概念,其作用就是存放一批性质相同的数据(称之为数组元素)。2.数组是一组相同类型变量的有序集合VB通过下标来给数组元素编号,数组名代表内存中的一组数据,下标与数组名相结合可以实现对具体元素的访问3.数组在内存中的存放形式从本质上讲,定义数组就是在内存中分配一块连续的存储区域,数组元素按照一定次序在这
4、块区域中连续存放。数组存储空间=元素个数×该类型数据占用字节数7.1数组的基本概念1.定义:Dim数组名(下标)As类型说明:(1)数组名的命名规则与变量的命名规则相同。(2)下标的形式为:下界To上界下界与上界必须为常量,不可以是表达式或变量。下界可以省略,其缺省值默认为0,可在模块的通用声明部分使用OptionBase1语句,将默认缺省值设置为1。元素个数=上界-下界+1(3)类型可以为VB标准数据类型,也可以为用户自定义数据类型。7.2数组的定义及引用7.2.1一维数组的定义及引用2.引用
5、:数组名(下标)一维数组各元素在内存中按照下标递增的顺序连续存放下标可以为整型常量、变量或表达式。引用时下标取值不能超出范围(下界≤下标≤上界),否则将出现“下标越界”错误。7.2数组的定义及引用84108……数组元素a(1)a(2)a(3)……a(10)a7.2数组的定义及引用3.赋值与变量相同,数组定义完毕后,系统会自动为每个元素赋初值。Dima(0To5)AsInteger'定义数组aa(0)=1:a(1)=3:a(2)=5:a(3)=7:a(4)=9:a(5)=11在程序中,可通过循环给
6、数组元素赋值,例如:Fori=0To5a(i)=2*i+1Next例7.1统计某班(假设有30人)程序设计课程考试的平均成绩,并输出高于平均分的成绩。PrivateSubForm_Click()ConstNUM=30'定义符号常量代表学生人数Dima(1ToNUM)AsInteger,sum%,ave!,i%,n%sum=0'初始化求和变量Fori=1ToNUM'输入学生成绩并计算总成绩a(i)=Val(InputBox("请输入第"&i&"个学生的成绩"))sum=sum+a(i)Nextia
7、ve=sum/NUM'求平均成绩Print"平均成绩:";aveFori=1ToNUM'输出高于平均分的成绩Ifa(i)>aveThenPrinta(i);n=n+1IfnMod5=0ThenPrintEndIfNextiEndSub7.2数组的定义及引用例7.2随机产生N个大写字母,然后将第一个字母与最后一个字母交换位置、第二个字母与倒数第二个字母交换位置、依次类推,输出最后的结果。分析:首先找出交换的规律,即第i个和第N-i+1个字母交换。然后判断交换的次数为N27.2数组的定义及引用a(
8、1)a(2)a(3)……a(N-2)a(N-1)a(N)7.2数组的定义及引用PrivateSubForm_Click()ConstN=10Dima(1ToN)AsString*1,i%,t%Fori=1ToNa(i)=Chr(Int(Rnd*25)+Asc("A"))'随机产生大写字母Printa(i);NextiFori=1ToN2'对称字母进行交换t=a(i):a(i)=a(N-i+1):a(N-i+1)=tNextiPrintFori=1ToNPrinta(i);NextiEndSub