VB数组与过程.ppt
《VB数组与过程.ppt》由会员分享,可在线阅读,更多相关《VB数组与过程.ppt(56页珍藏版)》请在三一办公上搜索。
1、第4章 数组与过程,学习目标:掌握数组和过程的概念 掌握数组的定义和应用 掌握Sub过程和Function过程的应用 掌握过程的参数传递与过程的作用域 了解Shell函数,第4章 数组与过程,教学内容:4.1 数组 4.2 过程 4.3 Shell函数,4.1 数组数组的概念,数组用于保存大量的、逻辑上有联系的数据数组的特点:数据中的元素在类型上是一致的 数组元素在内存空间上是连续存放的 数组元素的引用可通过下标进行 数组在使用前必须要定义(声明),返回目录,4.1 数组一维数组的定义和使用,1.数组的定义(声明)Dim 数组名(下界 To 上界)As 数据类型 例如:Dim Data(1 T
2、o 40)As Integer定义数组可以使用类型符 例,Dim Data%(1 To 40)下界的默认值为0 例,Dim Salary(1000)As Currency 通过数组名和下标可引用数组中的元素 例,Data(25)=95 Form1.Print Data(25),返回目录,4.1 数组一维数组的定义和使用,说明-1:数组定义后的初值:数值型数组各元素为0,逻辑型数组各元素为False,字符串数组各元素为空串()。可同时声明几个数组,用逗号分隔,例如 Dim A%(10 To 100),B(800)As Long 定义数组时,下标的下界和上界值只能是常数或常数表达式。下例的定义是错
3、误的 N=100:Dim Data(N)As Integer 定义时,数组的上界值不得超出长整型范围,且数组的上界值不得小于下界值。,返回目录,4.1 数组一维数组的定义和使用,说明-2:数组的元素个数称为数组长度。Lbound()、Ubound()函数可测定数组的下界与上界值例如:Private Sub Form_Click()Dim A%(12 To 24)Print LBound(A),UBound(A)End Sub用Option Base n可设定数组的默认下界n的取值只能是0或1设定方法:在代码窗口的通用声明段中输入 Option Base 0 或 Option Base 1,返回
4、目录,4.1 数组一维数组的定义和使用,2.数组元素的使用 通过数组名和下标例4.1 Private Sub Command1_Click()Dim Data(5)As Integer Dim Sum,I As Integer For I=1 To 5 输入5个数据到数组中 Data(I)=InputBox(输入第&I&个数据)Next I For I=1 To 5 完成5个数组元素的相加 Sum=Sum+Data(I)Next I Print SumEnd Sub,返回目录,For I=1 To 5 Data(I)=InputBox(输入第&I&个数据)Sum=Sum+Data(I)Next
5、 I,4.1 数组一维数组的定义和使用,说明:数组实际上是用一个变量名字代表一组数,这组数是连续排列的,用顺序号作为下标区分各个数。数组下标是一个整型量,如果有小数则自动按四舍五入取整。例如,Data(3.4)=3,而Data(3.5)=2。数组常见的错误:下标出界,返回目录,Test(1)=4Test(2)=3Test(3)=2Test(4)超出定义,4.1 数组一维数组应用例题,例4.3 输出斐波那契级数的前20项 Private Sub Form_Click()Dim F(20)As Integer,I As Integer F(1)=1:F(2)=1 第一、第二项为1 For I=3
6、To 20 第三项起每项为前二项之和 F(I)=F(I-2)+F(I-1)Next I For I=1 To 20 在窗体上输出 Print F(I);If I Mod 5=0 Then Print Next IEnd Sub,返回目录,4.1 数组一维数组应用例题,例4.4 输入一组不重复的数据,找出最大值及其位置Private Sub Form_Click()Const Length=5 定义常量Length作为数组最大下标 Dim Test%(Length),I%,Max%,L%For I=1 To Length 通过键盘输入给数组赋值 Test(I)=InputBox(输入第&I&个数
7、据)Next I Max=Test(1):L=1 设数组第一个元素为最大值 For I=2 To Length If Max Test(I)Then 找到新的最大值,记录其值和位置 Max=Test(I)L=I End If Next I MsgBox 最大值x=&Max&,位置是&LEnd Sub,返回目录,4.1 数组一维数组应用例题,例4.5 产生10个整数到数组中,将其顺序颠倒后输出Private Sub Form_Click()Const Length=10:Dim D(Length)As Integer,I%,Temp%For I=1 To Length 给数组赋值并输出 D(I)
8、=14+I:Print D(I);Next I Print:Print 换行 For I=1 To Length/2 交换 Temp=D(I)D(I)=D(Length-I+1)D(Length-I+1)=Temp Next I For I=1 To Length 交换后输出 Print D(I);Next IEnd Sub,返回目录,D(1)与D(10)交换 D(2)与D(9)交换 D(I)与D(10-I+1),4.1 数组一维数组应用例题,例4.8 产生100个不重复的3位随机整数,并按每行7列的格式输出Private Sub Form_Click()Dim Data(100)As Int
9、eger,I%,J%Randomize Timer 设置随机化种子,保证每组数据不重复 For I=1 To 100 循环产生100个数据 Data(I)=Int(Rnd()*900)+100 For J=1 To I 1 与已经产生的数据比较 If Data(I)=Data(J)Then 数据已存在则舍弃,重新产生 I=I-1 Exit For 提前退出数据比较的循环 End If Next J Next I,返回目录,转下页,4.1 数组一维数组应用例题,I=1:J=1 Do While I 100 Then Exit For Print Data(I);I=I+1 Next J Prin
10、t 打印换行 LoopEnd Sub,返回目录,接上页,For I=1 To 100 Print Data(I);If I Mod 7=0 Then PrintNext I,4.1 数组一维数组应用例题,例4.10 统计成绩分布 Private Sub Form_Click()Dim N(10)As Integer,I As Integer,X As Integer Const m=10 For I=1 To m X=InputBox(请输入+Str(I)+个学生的成绩)X=Int(X/10)也可写成X=X10 N(X)=N(X)+1 Next I Print 100;-;100;N(10)F
11、or I=9 To 0 Step-1 Print 10*I;-;10*I+9;N(I)Next I End Sub,返回目录,4.1 数组排序问题,1.选择法排序(N个数据升序)先假设第1个数据最小,依次同第2、第3、第N个数据进行比较,一旦第1个数据大于其它值则交换。这样,第1轮比较完毕,找出了最小数据作为第1个数据。以第2个数据为最小数据,依次同第3、第4、第N个数据进行比较,若第2个数据大于其它值则交换。这样,第2轮交换完毕,则找出第二小的数据作为第2个数据。依此类推,第N-1轮比较将找出第N-1小的数据,剩下的一个数据就是最大数,排列在最后。以6个数据为例:,返回目录,原始序列:30,
12、20,10,90,50,60第1轮比较结果:10|30,20,90,50,60第2轮比较结果:10,20|30,90,50,60第3轮比较结果:10,20,30|90,50,60第4轮比较结果:10,20,30,50|90,60 第5轮比较结果:10,20,30,50,60|90,4.1 数组排序问题,例4.11 用选择法完成10个随机数据的升序排序。Const N=10:Dim D(N)As Integer,I%,J%,T%Randomize Timer For I=1 To N D(I)=Rnd*100:Print D(I);排序前的数据序列 Next I Print:Print For
13、I=1 To N-1 挑出前N-1个小的数 For J=I+1 To N If D(I)D(J)Then 数据元素交换 T=D(I):D(I)=D(J):D(J)=T End If Next J Next I For I=1 To N 输出排序结果 Print D(I);Next I,返回目录,找最小数据作为第1个数据:I=1For J=2 To N 这里2等价I+1 If D(1)D(J)Then T=D(1):D(1)=D(J):D(J)=T End IfNext J,4.1 数组排序问题,2.冒泡法排序(N个数据升序)第1轮比较:从第1个元素开始,两两相邻比较到N-1,值大的放在后面。比
14、较完毕,最大的数成为第N个元素(沉底)。第2轮比较:从第1个元素开始,两两相邻比较到N-2,值大的放在后面。比较完毕,最大的数成为第N-1个元素。依此类推,直至最后一次比较。,返回目录,4.1 数组排序问题,例4.12 用冒泡法完成10个随机数的升序排序 Const N=10:Dim D(N)As Integer,I%,J%,T%Randomize Timer For I=1 To N D(I)=Rnd*100:Print D(I);Next I Print:Print For I=N-1 To 1 Step-1 大数逐个沉底 For J=1 To I If D(J)D(J+1)Then T=
15、D(J):D(J)=D(J+1):D(J+1)=T End If Next J Next I For I=1 To N 输出排序结果 Print D(I);Next I,返回目录,4.1 数组排序问题,例4.13Private Sub Form_Click()Dim S_Name(7)As String,S_Age(7)As Integer Dim I%,J%,N%N=7 S_Name(1)=李大明:S_Age(1)=18 S_Name(2)=王超:S_Age(2)=21 S_Name(3)=张弓:S_Age(3)=20 S_Name(4)=陈卫国:S_Age(4)=24 S_Name(5)=
16、马太原:S_Age(5)=25 S_Name(6)=吴济贫:S_Age(6)=19 S_Name(7)=戴天:S_Age(7)=18,返回目录,对字符串数组S_Name和S_Age赋值,转下页,4.1 数组排序问题,For I=1 To N-1 用选择法排序 For J=I+1 To N If S_Age(I)S_Age(J)Then S_Age(0)=S_Age(I)S_Age(I)=S_Age(J)S_Age(J)=S_Age(0)S_Name(0)=S_Name(I)S_Name(I)=S_Name(J)S_Name(J)=S_Name(0)End If Next J Next I Fo
17、r I=1 To N Print LeftB(S_Name(I),2);S_Age(I);Next IEnd Sub,返回目录,接上页,在交换年龄值的同时,也要交换姓名,以保持姓名和年龄下标的一致。,函数LeftB()表示按字节取出指定数量的字符。一个汉字占两个字节。,4.1 数组动态数组与静态数组,1.动态数组的声明与使用 声明:说明数组的名称和类型(不说明下标范围)使用前用ReDim语句定义不需要动态数组时,可用Erase语句将其删除 例,统计输入的任意个数之和。Dim N As Integer,A()As Single,i As Integer,s As Single N=InputBo
18、x(输入几个数?)ReDim A(1 To N)For i=1 To N A(i)=InputBox(输入第+Str(i)+个数)s=s+A(i)Next i Print N;个数之和为;s,返回目录,4.1 数组动态数组与静态数组,2.静态数组的声明与使用 用Static声明,元素的值保留到程序运行结束。例如,Private Sub Form_Click()Dim Test(10)As Integer,I As Integer For I=1 To 10 Test(I)=Test(I)+I Next I For I=1 To 10 Print Test(I);Next I Print End
19、 Sub,返回目录,4.1 数组二维数组,1.二维数组的定义(声明)二维数组由行和列组成,有两个下标定义格式:Dim 数组名(下界 To 上界,下界 To 上界)As 数据类型 例如,Dim Data(1 To 5,3 To 9)As Integer下界默认为0 例如,Dim Salary(30,10)As Currency 31行11列二维数组有行、列两维,通常需使用二重循环引用,返回目录,4.1 数组二维数组,二维数组中的数据按行存储,其引用与一维数组相似。Private Sub Form_Click()Dim A(2,3)As Integer,I%,J%,C%For I=0 To 2 F
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VB 数组 过程

链接地址:https://www.31ppt.com/p-2902980.html