![[计算机软件及应用]b第六章.ppt_第1页](http://file1.renrendoc.com/fileroot_temp2/2020-3/26/5f774cf3-1845-4dca-a5ea-0d999646d313/5f774cf3-1845-4dca-a5ea-0d999646d3131.gif)
![[计算机软件及应用]b第六章.ppt_第2页](http://file1.renrendoc.com/fileroot_temp2/2020-3/26/5f774cf3-1845-4dca-a5ea-0d999646d313/5f774cf3-1845-4dca-a5ea-0d999646d3132.gif)
![[计算机软件及应用]b第六章.ppt_第3页](http://file1.renrendoc.com/fileroot_temp2/2020-3/26/5f774cf3-1845-4dca-a5ea-0d999646d313/5f774cf3-1845-4dca-a5ea-0d999646d3133.gif)
![[计算机软件及应用]b第六章.ppt_第4页](http://file1.renrendoc.com/fileroot_temp2/2020-3/26/5f774cf3-1845-4dca-a5ea-0d999646d313/5f774cf3-1845-4dca-a5ea-0d999646d3134.gif)
![[计算机软件及应用]b第六章.ppt_第5页](http://file1.renrendoc.com/fileroot_temp2/2020-3/26/5f774cf3-1845-4dca-a5ea-0d999646d313/5f774cf3-1845-4dca-a5ea-0d999646d3135.gif)
免费预览已结束,剩余48页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第六章数组,静态数组动态数组数组的基本操作控件数组,VB学习群,群号:46955413备注:星期五晚上6102,数组的概念,数组:若干具有相同数据类型的数据集合数组元素:数组中的基本单位构成格式:Dim数组名(下标)As类型下标:只能是常数,用以说明数组的维数和每维的大小。dima(10)asinterger;a(1to5,3to8)dimc(2,3)asinterger;,缺省为Variant类型,数组,101,102,103,104,105,106,数组的分类,按数组的内存区开辟时间的不同分:,静态数组(Static),动态数组(Dynamic),数组,静态数组(定长数组):数组大小确定的数组。动态数组(可变长数组):数组大小不确定,在程序运行时分配存储空间。,数组的分类,按数组的维数分:,数组,一维数组:具有一个下标的数组,二维数组:具有两个下标的数组,多维数组:具有多个下标的数组,数组的下标,下标:即,数组的上下界,指明下标可以使用的最大值和最小值,用以说明数组的维数和每维的大小。格式如下:下界To上界1)下标中如果出现上界,上界必须大于下界。-3To82)定义多维数组时,各下标之间用逗号分隔开3)如果不指定下界To,则数组元素下标的下界用OptionBase语句控制,如果没有用Option语句,下标下界的缺省值为0,数组的下标,实例1:dima%(10)说明:数组a是一个一维整型数组,共有11个数组元素,下标范围从010。实例2:Dimb(3,4)aslong说明:数组b是一个二维长整型数组,第一维的下标范围03,第二维的下标范围为04,共分配45个空间,二维数组各元素的排列,输出斐波那契级数的前20项1,1,3,4,7,11,18,PrivateSubForm_Click()DimF(20)AsInteger,IAsIntegerF(1)=1:F(2)=1第一、第二项为1ForI=3To20第三项起每项为前二项之和F(I)=F(I-2)+F(I-1)NextIForI=1To20在窗体上输出PrintF(I);IfIMod5=0ThenPrintNextIEndSub,如果加入OptionBase1程序需要怎么修改?,Option语句,格式:OptionBasen功能:指定数组下标下界的缺省值说明:1)n为数组下标指定的下界,它只能是0或者1。如果不使用该语句,系统默认下界值为0。2)OptionBase语句只能出现在窗体层或模块层,不能出现在过程中,且必须位于数组定义之前。3)如果定义多维数组,则下标的设定值对每一维都有效。,数组下标测试函数,格式:Lbound(数组名,维)Ubound(数组名,维)功能:Lbound函数返回数组中指定维的下界Ubound函数返回数组中指定维的上界1)格式中,维指数组中要测试的某一维数2)对于一维数组来说,则,维可以省略。如果测试多维数组,则不能省略。,数组下标测试函数,OptionBase1Dimy(1To22,2to20,-3to6)Dimx(20)PrintLound(y,1),Ubound(y,1)PrintLound(y,2),Ubound(y,2)PrintLound(y,3),Ubound(y,3)PrintLound(x),Ubound(x)问输出结果为多少?,数组的基本操作,1.数组的引用2.数组的输入和输出3.数组的赋值,数组的引用,数组的引用通常指对数组元素的引用,数组元素的引用形式为:数组名(下标)说明:1.二维或者多维数组,引用时必须给出两个或多个下标a(1)(2)2.引用数组元素时,数组元素的下标必须在建立数组时指定的范围内,否则将发生“下标越界”的情况。,数组的输入,1.使用Array函数格式:数组变量名Array(数组元素值)注意:1.Array只能对一维数组进行初始化,不能对二维数组进行初始化。2.数组变量只能是变体(Variant)类型。,OptionBase1PrivateSubForm_Click()DimaAsVariant,bAsVarianta=Array(1,2,3,4,5,6)b=Array(One,Two,Three)ForEachxInaPrintx;NextxPrintFori=1ToUBound(b)Printb(i);NextiPrintEndSub,数组的输入,2.使用循环语句OptionBase1PrivateSubForm_Click()Dima(10)AsIntegerFori=1To10注意数组从1开始a(i)=Val(InputBox(请输入10个数字)NextiForEachxInaPrintx;NextxEndSub,数组的输入,DimA(5,5)ForI=1to3Forj=1to4A(I,J)=I*JNextJNextIForN=1to2ForM=1to3PrintA(M,N)NextMNextN,A123424B123468C123246D123636,ForEach-Next语句,ForEachNext语句专门用于数组操作格式:ForEach成员In数组循环体ExitForNext成员,ForEach-Next语句,成员:是一个变体变量(Variant),实际代表了数组中得每个元素,它可以代表任意类型得数组元素。“数组”:是一个没有括号和上下界得数组名。ForEachNext语句不能用于用户自定义类型得数组,因为Variant不能包含用户自定义类型。,OptionBase1PrivateSubForm_Click()Dima(10)AsIntegerFori=1To10a(i)=Int(100*Rnd)NextiForEachxInaPrintx;NextxEndSub,OptionExplicitOptionBase1PrivateSubCommandl_Click()DimA(2,2)AsInteger,B(2,2)AsInteger,C(2,2)AsIntegerDimnAsInteger,mAsInteger,SAsInteger,kAsIntegerA(1,1)=3:A(1,2)=1:A(2,1)=-2:A(2,2)=5B(1,1)=2:B(1,2)=-3:B(2,1)=6:B(2,2)=1Forn=1TO2Form=1TO2S=0Fork=lTO2S=S+A(n,k)*B(k,m)C(n,m)=SNextkNextmNextnForn=1TO2Form=1TO2PrintC(n,m);Spc(3);NextmPrintNextnEndSub,(1)以下关于语句“OptionBase1”正确的说法是()。(A)其功能是声明数组下标的默认上界(B)其功能是定义动态数组(c)其功能是声明数组下标的默认下界(D)其功能是定义静态数组(2)以于关于语句“OptionExplicit”正确的说法是()。(A)表明此模块没有通用过程(B)表明此模块的通用过程不能被其他模块调用(c)表明此模块变量不声明可以直接使用(D)表明此模块变量必须先声明后使用(3)程序运行完成后,PrintC(n,m)语句输出的结果是()。(A)0-16(B)1226(C)2611(D)12-8-1311-81112-82611,动态数组(Dynamic),动态数组:仅在运行时开辟内存区,当程序不运行时,动态数组不占据内存空间。格式:ReDimPreserve数组名(下标)as类型功能:重新定义动态数组,按定义的上下界重新分配存储单元。,动态数组(Dynamic),说明:1)动态数组的定义分两步:1.先在窗体层、标准模块或过程中用Dim或Public声明一个没有下标的数组(括号不能省略),这样就将数组声明为动态数组。2.在过程中用ReDim语句定义带下标的数组,给数组指定实际的元素个数。,动态数组(Dynamic),ReDim语句是一个可执行语句,并且只能出现在过程中。动态数组的下标用变量来表示。也可以是有确定值的变量。声明动态数组时并不指定数组的维数,数组的维数由第一次出现的ReDim语句指定。Preserve选项:当改变原有数组最末维的大小时,使用此关键字可以保持数组中原来的数据。,动态数组(Dynamic),如果使用了Preserve关键字,就只能重定义数组最末维的大小,且根本不能改变维数的数目。例如,如果数组就是一维的,则可以重定义该维的大小,因为它是最末维,也是仅有的一维。不过,如果数组是二维或更多维时,则只有改变其最末维才能同时仍保留数组中的内容。下面的示例介绍了如何在为已有的动态数组增加其最末维大小的同时而不清除其中所含的任何数据。ReDimX(10,10,10).ReDimPreserveX(10,10,15),动态数组举例,OptionExplicitOptionBase1数组下标从1开始PrivateSubCommand1_Click()DimiAsIntegerDimMyArray()AsInteger:Rem声明动态数组。ReDimMyArray(5):Rem分配5个元素。Fori=1To5循环5次。MyArray(i)=i初始化数组。NextiPrint第一次定义的动态数组:Fori=1To5PrintMyArray(i);NextiPrintEndsub,控件数组,控件数组由一组相同的控件组成,这些控件共用一个数组名,具有相同的属性,数组中的每个控件系统都指定一个唯一的索引号,即控件数组的下标。,列表框和组合框,列表框主要属性List属性:用于列出列表框中的所有项目格式:x$=列表框名.List(下标)也可以改变列表框中的某一项的值。格式:列表框名list(下标)字符串,列表框,ListCount:用于返回在列表框中的列表项数只能在运行时使用。格式:列表框.ListCountListIndex属性:当前选中的列表框项的索引,表项在列表中的位置由索引值指定。第一项的索引项为0。如果没有选择项目,ListIndex-1Text属性:用于得到当前列表项的内容,列表框,Colunms属性:设置列表框按几列显示。0按单列显示(默认)列表项较多时出现垂直滚动条1按单列显示,列表项较多时出现水平滚动条2按多列显示,列表框,Sorted属性:设置列表框中的各列表项是否按字母数字自动排序,True为自动排序,False为不自动排序(默认)MultiSelect属性:用于设置是否允许同时选择多个列表项。0每次只能选择一个项目1允许通过鼠标单击或者按下空格键选择多个项目2为允许Shift单击鼠标或Shift+箭头键选择连续多个项目,Ctrl单击鼠标可选择多个不连续项目。,列表框的事件,列表框的方法AddItem方法:用于在列表框中插入一个列表框格式:列表框.AddItem项目字符串,索引值Clear和RemoveItem方法:Clear方法和RemoveItem方法都是用于删除列表项,Clear方法用于清除列表框中的全部内容,而RemoveItem方法每次只能删除一个项目。格式:列表框.Clear列表框.RemoveItem索引值,列表框,例:利用列表框创建一个输入省市名称的界面,并能将选择的省市名称加入到另一个列表框内。OptionExplicitPrivateSubCommand1_Click()List1.AddItemText1.TextText1.Text=EndSubPrivateSubCommand2_Click()List2.AddItemList1.TextText2.Text=List2.ListCountEndSub,例题1,1.将列表框中添加1-102.显示列边框中的个数3.显示列边框中具体某一个项的值,例题,1.随机生成10个100-1000之间的数2.将10个数中是偶数的添加到列边框中3.显示数字的个数与和,随机生成10个数,Dima(9)AsIntegerRandomizeFori=0To9a(i)=Int(901*Rnd+100)Nexti,组合框,Style属性:用于确定组合框的类型和显示方式。取值为0、1、20下拉组合框(默认),由一个文本框和一个下拉列表框组成,用户可以在文本框中输入也可单击列表框来选择列表项。1简单组合框,由一个文本框和一个标准列表框组成,列表框的下拉项一直展开显示在屏幕上。2下拉列表框,不允许用户输入文本,只能从下拉列表框选择。,单选框,1.Value属性:设置单选按钮是否被选中,1为选中2.Click事件:鼠标单击事件,复选框,1.Value设置复选框是否被选中,1为选中2.Click事件,排序算法,1.比较交换法排序2.选择法排序3.冒泡法排序,数字的交换问题,如何实现a、b两个数字的交换T=aA=bB=t,比较交换法排序(交换值),基本方法:对n个数按升序排列,先将第一个数依次与第二个数到第n个数逐一比较,如果a(1)a(j)(j=2,3,n),则交换a(1),a(j)的值。从而将最小值存放在a(1)中。然后将第二个数依次与第三个数到第n个数逐一比较,如a(2)a(j)(j=3,4n),则交换a(2),a(j)的值。将第二个数到第n个数中最小值放在a(2)中。重复上述步骤。,OptionExplicitOptionBase1PrivateSubForm_Click()DimaAsVariantDimnAsInteger,iAsInteger,jAsInteger,tAsIntegerDimiiAsVarianta=Array(56,90,-123,58,5,10,100,54,66)n=UBound(a)Print排序前的10个数为:ForEachiiInaPrintii;“;NextiiPrint,Fori=1Ton-1Forj=i+1TonIfa(i)a(j)Thent=a(i)a(i)=a(j)a(j)=tEndIfNextjNextiPrint排序后的10个数为:Fori=1TonPrinta(i);NextiEndS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小龙虾健康饮食定制创新创业项目商业计划书
- 家居智能门锁安装与维护创新创业项目商业计划书
- 智慧金融信息化创新创业项目商业计划书
- 水果冷链物流服务创新创业项目商业计划书
- 植物吸附材料创新创业项目商业计划书
- 智慧垃圾分类宣传活动创新创业项目商业计划书
- 2025广东粤电大埔发电有限公司招聘16人考前自测高频考点模拟试题及答案详解一套
- 口腔诊质量试题及答案
- 五年级英语同步口语训练题
- 2025年阜阳民生医院招聘20人考前自测高频考点模拟试题及答案详解参考
- 中国慢性冠脉综合征患者诊断及管理指南2024版解读
- 运动学练习题库及参考答案
- DeepSeek从入门到精通
- 过敏性紫癜课件
- 《全国计算机等级考试教程:二级WPS Office高级应用与设计》全套教学课件
- 纺织厂员工劳动合同范本
- 光伏项目合伙投资协议书
- 护理团队建设与管理方案
- 2022版ISO27001信息安全管理体系基础培训课件
- 建筑项目保温材料供货合同书
- there-be-句型作业及答案(初中英语语法专项练习)
评论
0/150
提交评论