VB程序设计数组课件_第1页
VB程序设计数组课件_第2页
VB程序设计数组课件_第3页
VB程序设计数组课件_第4页
VB程序设计数组课件_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VisualBasic程序设计VisualBasic程序设计目录前言第1讲第2讲第3讲第4讲第5讲第6讲第7讲第8讲第9讲第10讲第11讲第12讲第13讲第14讲第15讲第16讲目录前言第1讲第2讲第3讲第4讲第5讲第6讲第7讲第8讲第回顾上一讲学习的内容判断条件执行循环While……wendDoWhile……LoopDoUntil……LoopDo……LoopWhileDo……LoopUntil回顾上一讲学习的内容判断条件执行循环上机实验中的问题求累加和SUM=SUM+K (sum的初始值一定是0)求连乘SUM=SUM*K (sum的初始值一定是1)程序填空题: 特别要注意选择结构和循环结构的完整性。

上机实验中的问题求累加和第六章数组(4学时)6.1数组的引入6.2数组的声明6.3动态数组及声明6.4数组的基本操作6.5控件数组6.6自定义数据类型6.7数组应用6.8常见错误第六章数组(4学时)6.1数

1.数组概念例6.1

求一个班36个学生的平均成绩,然后统计高于平均分的人数。按以前简单变量的使用和循环结构相结合,求平均成绩程序段如下:

aver=0Fori=1To36mark=InputBox("输入第"+i+"位学生的成绩")aver=aver+markNexti

aver=aver/100§6.1数组的引入1.数组概念§6.1数组的引入

若要统计高于平均分的人数,则无法实现。mark是一个简单变量,存放的是最后一个学生的成绩。已有知识解决方法:再重复输入成绩,这样又带来两个问题:(1)输入数据的工作量成倍增加;(2)若本次输入的成绩与上次不同,则统计的结果不正确。解决此问题的根本方法,需引入数组,保存输入的数据,一次输入,多次使用。若要统计高于平均分的人数,则无法实现。mark是一个简数组的概念具有相同类型的一组变量作为一个整体,称为数组。数组占据一块内存区域,数组名是这个区域的名称,区域中的每个内存单元都有自己的地址,该地址用下标表示,即标识了数组中的每个元素。定义数组的目的就是通知系统为其留出所需要的空间,且同名数组中的元素按一定的顺序连续存放。整型一维数组N(1)N(2)┋┋┋N(9)N(10)数组的概念具有相同类型的一组变量作为一个整体,称为数组。定义数组的概念数组是用一个统一的名称表示的、顺序排列的一组内存变量。数组中的每个变量称为数组元素,用不同的数字(下标)来标识它们,因此数组元素又称为下标变量。如果每个数组元素只有一个下标,则称这个数组为一维数组。有两个下标的数组称为二维数组。VB中规定:数组必须先声明后使用,不允许使用隐含定义。数组的概念数组是用一个统一的名称表示的、顺序排列的一组内存变2.数组的逻辑结构和存储结构例如:声明一维整型数组N(8)DimN%(8)N(8)在内存中排列示意图:例:从键盘随意输入8个数,将这8个数从大到小排列输出。2.数组的逻辑结构和存储结构例如:声明一维整型数组N(8)二维数组的逻辑结构二维数组的逻辑结构:可以看成一个二维表格或看成一个矩阵。数组元素的第一个下标值表示该元素在表格中的行号,第二个下标值表示该元素在表格中的列号。例如:声明二维数组:DIMW%(4,3)二维数组的逻辑结构二维数组的逻辑结构:可以看成一个二维表格或二维数组的存储结构数组的存储结构:按行为主序存储。W(0,0)W(0,1)W(0,2)W(1,0)W(1,1)W(1,2)┆┆W(3,0)W(3,1)W(3,2)二维数组的存储结构数组的存储结构:按行为主序存储。W(0,0VB中,使用4个关键字声明数组,它们格式相同,只是适用范围不同而已。Dim

用在窗体模块或标准模块中,也可用于过程ReDim

用于过程中Static

用在过程中Public用在标准模块中,定义全局数组。VB中,数组又有两种情况:①静态(定长)数组②动态(可变长)数组§6.2数组的声明VB中,使用4个关键字声明数组,它们格式相同,只是适用范1.静态数组定义数组时,明确了数组的维数,及每维下标的上下界,这种数组称为静态数组。静态数组:计算机在程序执行之前,进行编译时就根据数组说明语句开辟了固定的内存区,直到程序执行完毕。声明静态数组,下标必须用数值常数或符号常量。1.静态数组定义数组时,明确了数组的维数,及每维下标的上下界2.静态数组声明静态数组声明语句形式(以dim为例)

:

Dim数组名(下标1[,下标2…])[As类型]声明了数组的名、维数、大小、类型维数:有N个下标称为N维数组,N=1,2,……最多60维。下标:[下界To]上界 省略下界默认为0,下标必须为常数每一维大小:上界-下界+1数组大小:每一维大小的乘积2.静态数组声明静态数组声明语句形式(以dim为例):例: dimx(9)asinteger dima(10,10)aslong说明:(1)对于数组的每一维,可以只给出使用的下标的最大值,即下标的上界。此时,默认下标下界为0。(2)如果需要数组的下标下界从1开始,可以:dimx%(1to9),a&(1to10,1to10)或使用optionbase语句:optionbase1说明:Optionbase语句只能出现在窗体通用段或标准模块中,不能出现在过程中,且必须在数组定义语句之前。默认下标值对每一维都有效。数组声明语句格式1例: dimx(9)asinteger说明:数组声明语数组声明语句格式2Dim数组名([下界To]上界[,[下界To]上界])As类型说明:此格式可以自由定义下标的下界和上界。

例: dima(-2to10)asinteger dimb(10to100)aslong dimc(1to10,11to20)assingle数组下界上界的测试函数LBound(数组[,维])、UBound(数组[,维])默认数组数据类型为Variant的数组称默认数组。定义时省略As类型说明。数组中元素的类型可以不同。数组声明语句格式2Dim数组名([下界To]上界[,[例1:Dimmark(1to100)AsInteger例2:DimlArray(0To3,0To4)AsLong等价于:DimlArray(3,4)AsLong声明了Larray数组共有20(4×5)个元素例1:Dimmark(1to100)AsInteg注意:(1)声明静态数组,下标为常数表达式,不能是变量。

n=Inputbox(“输入n”)

Dimx(n)AsSingle(2)数组声明语句中的下标说明了数组的整体,即每一维的大小;而在程序其他地方出现的下标表示数组中的一个元素。两者写法形式相同,但意义不同。例如:

Dimx(10)AsInteger '声明了x数组有11个元素x(10)=100 '对x(10)这个数组元素赋值注意:给数组中的各元素赋初值的操作称为“数组的初始化”。使用dim定义的静态数组,数值型的初始化为0,字符型的初始化为空串,变体类型为Empty。给数组中的各元素赋初值的操作称为“数组的初始化”。§6.3动态数组声明数组时,没有说明数组的大小,这种数组称为动态数组。动态数组:在程序未运行时,动态数组不占用内存,计算机在执行过程中才给数组开辟存储空间,当不需要时,可以用Erase语句删除它,收回分配给它的内存区,需要时还可以用Redim语句再次分配存储区。动态数组可以用已经赋值的变量定义下标范围。§6.3动态数组声明数组时,没有说明数组的大小,这种数组称动态数组的定义和声明动态数组定义首先在窗体、标准模块或过程中用Dim、Public声明一个没有下标的数组。再在过程中用ReDim语句定义带下标的数组。ReDim语句格式如下:ReDim[Preserve]

数组名(下标[,下标2…])

[As类型] 例:SubForm_Load()DimsArray()AsSingle

ReDimsArray(4,8)

…EndSub动态数组的定义和声明动态数组定义动态数组声明的几点说明:(1)Dim、Private、Public变量声明语句是说明性语句,可出现在过程内或通用声明段;ReDim语句是执行语句,只能出现在过程内。(2)在过程中可多次使用ReDim来改变数组的大小,也可改变数组的维数。(3)每次使用ReDim语句都会使原来数组中的值丢失,可以在ReDim语句后加Preserve参数用来保留数组中的数据,但使用Preserve只能改变最后一维的大小,前面几维大小不能改变。(4)ReDim中的下标可以是常量,也可以是有了确定值的变量。动态数组声明的几点说明:(1)Dim、Private、Pub6.4数组的基本操作数组元素的赋值赋值语句使用For循环和InputBox函数来赋值使用array函数数组元素的引用数组名(下标)数组元素的输出使用Print方法实现6.4数组的基本操作数组元素的赋值(1)用循环和赋值语句

Fori=1To10iA(i)=iNextI(2)Array函数

DimibAsVariantib=Array("abc","def","67")Fori=0ToUBound(ib)Picture1.Printib(i);"";Nexti注意:(1)利用Array对数组各元素赋值,声明的数组是可调数组或连圆括号都可省,并且其类型只能是Variant。(2)数组的上界由Array函数括号内的参数个数决定,也可通过函数Ubound获得。1.数组元素的赋值(1)用循环和赋值语句注意:1.数组元素的赋值格式:数组变量名=array(数组元素值表)功能:把一组数据赋给数组中每个元素。说明:数组元素值表是一个用逗号分隔的值表;Array函数仅适用于一维数组使用array函数创建的数组,其下界受Optionbase语句指定的下界的限制。若不提供参数,则创建一个长度为0的数组。Array函数数组变量名是预先定义的数组名。在数组变量名后没有括号。采用变量定义形式,作为数组使用,类型为variant。格式:数组变量名=array(数组元素值表)Array函数数

Fori=0ToUBound(a)b(i)=a(i)Nexti注意:赋值号左边的数组只能声明为Variant的可调数组或简单变量。数组的赋值在VB6.0中,提供了数组直接对数组的赋值。例如:Dima()AsVariant,b()AsVariant,i%a=Array(1,2,3,4,5)ReDimb(UBound(a))b=aFori=0ToUBound(a)注意:赋值号左边DimMaxAsInteger,iMaxAsIntegerDimia(1to10)asinteger

Max=iA(1):iMax=1Fori=2To10IfiA(i)>MaxThenMax=iA(i)iMax=iEndIfNextI2.数组元素的引用

例1:求数组中的最大元素及所在下标ia(1)ia(2)ia(3)ia(4)ia(5)ia(6)ia(7)ia(8)ia(9)ia(10)maximax参看例5交换数组元素:求数组中最大值及所在下标DimMaxAsInteger,iMaxAsIn数组元素的引用

例2:交换数组中各元素Fori=1To10\2t=iA(i)iA(i)=iA(10-i+1)iA(10-i+1)=tNextI参看例数组元素交换交换前24681013579交换后97531108642要求是:将数组的第1个元素与最后1个元素交换,第2个元素与倒数第2个交换,以此类推。数组元素的引用

例2:交换数组中各元素Fori=13.二维数组的输入和输出Dima%(4,2)Fori=0To4Forj=0To2a(i,j)=Val(InputBox("请输入第("&i+1&","&j+1&")元素"))Picture1.PrintFormat(a(i,j),"@@@@@");NextjPicture1.PrintNexti3.二维数组的输入和输出Dima%(4,2)数组输入和赋值举例1、定义两个一维数组A和B,大小相同。要求从键盘输入数据,然后交换A、B中的值后输出。数组输入和赋值举例1、定义两个一维数组A和B,大小相同。要求数组输入和赋值举例2、定义两个阶数相同的矩阵,求c=a+b,并输出。数组输入和赋值举例2、定义两个阶数相同的矩阵,求c=a+b,4.数组的清除清除数组的语句格式:Erase数组名[,数组名]……Erase用于静态数组时,若数组是数值型,则所有元素置0;若数组是字符串类型,则所有元素置空字符串。Erase用于动态数组时,将删除整个数组结构并释放数组所占内存。Erase用于变体数组时,每个元素被重置为空Empty4.数组的清除清除数组的语句格式:问题讲解简单变量与数组变量的区别:AI A(I)I=1,2,3…10A(1)A(2)A(3)A(4)A(5)A(6)A(7)A(8)A(9)A(10)小结:AI代表的是一个简单变量,而A(I)代表的则是以A为名的十个下标变量组成的数组。当I发生变化时,A(I)中的I会随着I值的变化而变化,而AI变量与I毫无关系。问题讲解简单变量与数组变量的区别:A(1)A(2)A(3)A动态数组示例:例:输入若干个学生的成绩,统计高于平均分的人数。

Dimmark()AsInteger,i%,n%,avern=InputBox("输入学生的人数")ReDimmark(1Ton)'声明存放n个学生成绩的动态数组

aver=0Fori=1Tonmark(i)=Int(Rnd*61+40)'通过随机数产生[40

,100]的成绩

aver=aver+mark(i)NextiReDimPreservemark(1Ton+2)'增加两个元素,存放平均分和高于平均分的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论