第7章使用数组.ppt
《第7章使用数组.ppt》由会员分享,可在线阅读,更多相关《第7章使用数组.ppt(101页珍藏版)》请在三一办公上搜索。
1、第7章 使用数组,Visual Basic 程序设计教程,Visual Basic程序设计教程,2,本章介绍:构造结构类型数组列表框组合框一些典型算法,Visual Basic程序设计教程,3,数组(Arrary)是构造的一种新的数据表达。数组是一组具有相同变量名和类型的数据(叫做数组元素)的连续存储单元。数组中包含了一个或多个元素下标给出了数组中元素的顺序数组和循环结构配合,使数据处理变得容易。,7.1 概述,Visual Basic程序设计教程,4,【例7-1】设计程序,如图。对一批马拉松运动员按成绩(单位:小时)排名次。控件:2个标签2个列表框1个命令按钮,7.2 给运动员排名次,Vis
2、ual Basic程序设计教程,5,“输入数据并排名”按钮作用:输入运行员人数输入各运动员的姓名和成绩左列表框放排序前的数据右列表框放排序后的名次数据。事件:主要是Command1的Click事件,Visual Basic程序设计教程,6,排序又称分类。有多种方法:选择分类法、冒泡分类法等。对n个数a(1)a(n),采用选择分类法的算法是:先在n个数中选最小数,放在第1个数组元素中。取第1个数,与后面n-1(即2到n)个数逐个比较。若第1个数大,则a(1)与参与比较的元素中的值进行互换再将互换后的第1个数与剩下的数据比较,直到最后。,Visual Basic程序设计教程,7,再在第2至n个元素
3、中,选最小数,放在第2个数组元素中。取第2个数,与后面n-2(即3到n)个数逐个比较。若第2个数大,则与数组元素中的值进行互换,直到最后。重复以上步骤,直至在最后两个数中选取最小数,放在第n-1个数组元素中。,Visual Basic程序设计教程,8,最后第n个元素已是最大数了。在第i至n个元素中,选最小数并放入a(i)的程序是:For j=i+1 To n将a(i)与a(i+1)a(n)逐一比较 If a(i)a(j)Then Temp=a(i):a(i)=a(j):a(j)=Temp 互换 Next j然后再将i从1循环到n-1,就可构成分类(排序)程序段。,Visual Basic程序设
4、计教程,9,Private Sub Command1_Click()Dim Name1()As String,Score()As Single 动态数组声明Dim TempName As String,TempScore As SingleDim N As Integer,i As Integer,j As IntegerN=Val(InputBox(“请输入运动员人数”,“输入”)ReDim Name1(N),Score(N)根据人数动态定义数组的大小List1.Clear:List2.Clear 清除两个列表框中数据For i=1 To N 输入姓名和成绩,放入左列表框 Name1(i)=
5、InputBox(请输入第&i&位运动员姓名,姓名)Score(i)=Val(InputBox(请输入第&i&位运动员成绩,成绩)List1.AddItem Name1(i)&Score(i),0 Next i,Visual Basic程序设计教程,10,For i=1 To N-1 开始按成绩从小到大排序 For j=i+1 To N If Score(i)Score(j)Then 同时交换姓名和成绩 TempName=Name1(i):Name1(i)=Name1(j):Name1(j)=TempName TempScore=Score(i):Score(i)=Score(j):Score
6、(j)=TempScore End If Next jNext iFor i=1 To N 将排序后数据及名次放入右列表框 List2.AddItem i&Name1(i)&Score(i)Next iEnd Sub,Visual Basic程序设计教程,11,7.3.1 如何声明一维数组只有一个下标的数组,称为一维数组。使用n(1n16)个下标的数组,称为维数组。数组在使用前必须先声明。格式:Dim 数组名(下标说明)As类型名,数组名(下标说明)As数据名,7.3 一维数组,Visual Basic程序设计教程,12,说明:数组名的命名方式与变量名一样,但不能和简单变量名重名。下标说明又称
7、维定义符,定义了这个维的大小。它有两种表示形式:上界下界 To 上界下界和上界必须使用数值型常量表达式下界和上界表示数组元素的下标的范围,Visual Basic程序设计教程,13,在缺省状态下,起始下标(下界值)为0Dim A(50),表示数组A有51个元素,即A(0)、A(1)、A(50)。Dim B(4 to 6),表示数组B有3个元素,即为B(4)、B(5)和B(6)。缺省下界值可用Option Base语句重新设置,格式:Option Base 0|1Option Base 1,表示将下界缺省值设置为1。,Visual Basic程序设计教程,14,类型名与变量声明时使用的一样,表示
8、被声明的这个数组的每一个元素都具有这种类型。省略类型名,则表示为Variant类型。例如,要声明两个包含50个元素的数组,一个存放姓名,为字符串型,一个存放年龄,为整型,则声明语句为:Dim Name1(50)As String,Age(50)As Integer一般情况下,它们实际各包含元素51个。,Visual Basic程序设计教程,15,7.3.2 使用一维数组使用数组包括:元素的引用、初始化及输入输出。1引用数组元素引用格式为:数组名(下标)数组名应与声明时的数组名相同下标必须用括号括起来,不能把Score(1)写成Score1。下标应为数值型的表达式,允许出现变量下标值应在下界和上
9、界之间,否则出错。如,可用:A(2)、A(i)、A(k*2)等访问元素,只要下标不越界,Visual Basic程序设计教程,16,2给数组元素赋值数组元素的用法,与简单变量用法一样凡是可用简单变量的地方,都可用同一类型的数组元素 A(k*2)=k*100:S(i)=浙江大学&计算机学院For i=1 To 50 A(i)=iNext i,Visual Basic程序设计教程,17,3运行时通过输入赋值通过文本框:S(5)=Text1.Text通过输入对话框对一批数组元素赋值For i=1 To 50 A(i)=Val(InputBox(请输入数据)Next I,Visual Basic程序设
10、计教程,18,4使用Array函数对数组所有元素赋初值Array函数的使用格式是:Array(表达式表)表达式表中各表达式用逗号间隔Array函数返回含有数组的Variant类型。使用Array函数前,必须先将数组名定义为Variant类型。Dim C,B As Integer,i As Integer 相当于Dim C As Variant,.B=100C=Array(3,4+B,5)For i=0 To 2:Print C(i),:NextArray函数根据表达式个数,确定数组的元素个数,Visual Basic程序设计教程,19,5UBound函数和LBound函数这两个函数的作用是获得
11、数组上界和下界对于一维数组,它们的基本格式为:UBound(数组名)和 LBound(数组名)For i=LBound(C)To UBound(C):Print C(i),:Next,Visual Basic程序设计教程,20,6输出一维数组输出个别元素,直接使用如Print A(5)的句子输出一批数组元素,往往使用循环:For i=1 To 50 Print A(i),If i Mod 5=0 Then Print 换行Next I7访问数组访问数组中各元素一般采用循环。,Visual Basic程序设计教程,21,【例7-2】输入30位同学的编号和成绩,求他们的平均成绩,并输出高于平均分的
12、同学编号和成绩,以及这些同学的人数。程序思路:第一步,声明两个大小至少为30的一维数组ID和Score,使ID(i)和Score(i)表示第i位同学的编号和成绩;,Visual Basic程序设计教程,22,第二步,输入30位同学的编号和成绩;第三步,计算平均成绩;第四步,将每位同学的成绩与平均成绩比较,发现大于或等于平均成绩的输出编号和成绩,并计数;第五步,输出统计人数。,Visual Basic程序设计教程,23,7.3.2 使用一维数组-【例7-2】Private Sub Command1_Click()Dim ID(30)As Long,Score(30)As Integer,i As
13、 IntegerDim Average As Single,Count As IntegerFor i=1 To 20 开始输入 ID(i)=Val(InputBox(请输入第&i&位编号:,)Score(i)=Val(InputBox(请输入第&i&位成绩:,)Next iAverage=0 开始计算平均分For i=1 To 30 Average=Average+Score(i)Next i,输入数据和计算平均分可同时进行。这样可以去掉一次并列的循环。,Visual Basic程序设计教程,24,Average=Average/30Print 平均分=;AverageCount=0 开始计
14、数,并输出高于平均分的数据For i=1 To 30 If Score(i)Average Then Print ID(i);Score(i),Count=Count+1:If Count Mod 5=0 Then Print 每行显示5人 End IfNext iPrint:Print 人数=;Count 输出人数End Sub,Visual Basic程序设计教程,25,7.3.2 使用一维数组【例7-3】编程:按编号顺序输入10位同学的编号和姓名,现班上又增一位同学,要求他的编号ID1和姓名Name1仍按编号顺序插入到数组ID和Named中。该题主要解决两个问题:一个是如何找到合适的位置
15、可以利用循环,与数组元素逐个比较若发现一个比ID1大的编号ID(i)就停止比较,则插入位置就在ID(i)之前。若没有一个编号比ID1大的,则插到数组最后。,Visual Basic程序设计教程,26,另一个是如何插入到数组中。移动ID(i)ID(10)及Named(i)Named(10)的位置,空出i所在位置,插入ID1和Name1。移动位置时,可以采用这样的算法:把ID(10)移到ID(11),ID(9)移到ID(10),把ID(i)移到ID(i+1)。因为这样移动时,不会丢失原来的数据。,Visual Basic程序设计教程,27,7.3.2 使用一维数组数组元素插入Const N=10P
16、rivate Sub Command1_Click()Dim ID(N+1)As Long,Named(N+1)As StringDim ID1 As Long,Name1 As String,i As Integer,j As IntegerFor i=1 To N 输入 ID(i)=Val(InputBox(请输入第:Next i 输出起始数据,Visual Basic程序设计教程,28,ID1=Val(InputBox(请输入要插入的编号,)Name1=InputBox(请输入要插入的姓名,)For i=1 To N 确定要插入的位置i If ID(i)ID1 Then Exit For
17、Next iFor j=N To i Step-1 将i N的数据后移 ID(j+1)=ID(j):Named(j+1)=Named(j)Next jID(i)=ID1:Named(i)=Name1 插入Print:For i=1 To N+1:Print ID(i);Named(i);/;:Next i 输出插入后的数据End Sub,Visual Basic程序设计教程,29,7.3.2 使用一维数组-排序改进【例7-4】改写例7-1中有关排序的程序段,使其采用改进的选择分类法。例7-1中,每发现一个a(i)a(j)时,就要交换数据,事实上对第i趟,只要把a(i)a(n)中最小数与a(i)
18、交换就可以了。改进的选择分类法采用:在第i至n个元素中,确定最小数所在的位置Position,即下标,再将a(i)与a(Position)交换数据。,Visual Basic程序设计教程,30,改进的选择分类法采用:在第i至n个元素中,确定最小数所在的位置Position,即下标,再将a(i)与a(Position)交换数据。For i=1 To n-1 按成绩从小到大排序 Position=i 先假定Score(i)就是最小值,故记录下标i For j=i+1 To n If Score(Position)Score(j)Then Position=j 记录更小的 Next j,Visual
19、 Basic程序设计教程,31,If i Position Then 下标Position与下标i的数据交换 TempName=Name1(i):Name1(i)=Name1(Position)Name1(Position)=TempName TempScore=Score(i):Score(i)=Score(Position)Score(Position)=TempScore End If Next i,Visual Basic程序设计教程,32,7.3.3 使用For Each/Next语句访问数组采用For Each/Next语句可以遍历数组中所有元素格式:For Each 元素 In
20、数组名 循环体Next其中元素必须为一个Variant类型的变量只要数组有一个元素,就会进入循环。,Visual Basic程序设计教程,33,循环的执行过程是:分别对数组中的第一个元素、第二个元素、最后一个元素,按序执行一次循环体。例如要输出数组A中各元素及它们的和,可用:S=0For Each X In A X为Variant类型的变量,不必赋值;A为数组名 Print X;:S=S+XNextPrint:Print S,Visual Basic程序设计教程,34,7.4.1 列表框(ListBox)列表框和组合框可解决单选框和复选框选项数量的限制。列表框控件可显示多个项目列表列表框往往可
21、让用户选择一个或多个项目。例如通过选择字体来改变标签的文字字体。系统提供的字体有100多种,使用ListBox,可以它们都放入列表框,利用滚动条,方便选择。,7.4 使用列表框和组合框控件,Visual Basic程序设计教程,35,列表框和组合框可解决单选框和复选框选项数量的限制。列表框控件可显示多个项目列表列表框往往可让用户选择一个或多个项目。例如通过选择字体来改变标签的文字字体。系统提供的字体有100多种,使用ListBox,可以它们都放入列表框,利用滚动条,方便选择。1创建列表框控件创建列表框在工具箱内选取列表框工具。,Visual Basic程序设计教程,36,2列表框控件的主要属性
22、(名称)Name,设置名称,字符型。缺省值为List1List:保存选项的字符串数组。如第i项为List(i-1)ListCount:列表框项目总数,共有0(ListCount-)个ListIndex:选中的项目在列表框中的位置(索引值或下标)第一项的索引值为0,第二项的索引值为1。Selected:列表框某项的选中状态,布尔型数组。,Visual Basic程序设计教程,37,Sorted:设置列表框项目是否排序。True为升序排列Text:最后一次选中的选项的文本,该属性不能直接修改MultiSelect:确定列表框是否允许多选。可设置0、1、2SelCount:列表框中选中的项目数属性举
23、例,如:Str=List1.List(2)If List1.Selected(i)Then Msgbox List1.List(i)MultiSelect为0:List1.Text等价List1.List(List1.ListIndex),Visual Basic程序设计教程,38,3列表框控件的方法(1)AddItem方法AddItem方法用于建立列表框数据项格式:列表框对象名称.AddItem 项目字符串,索引值索引值表示添加的位置,如3,表示添加的下标为3,Visual Basic程序设计教程,39,省略索引值,则将项目添加在列表框最后。如:List1.AddItem Hello 将字符
24、串添加到列表框最后List1.AddItem List2.List(0)将List2中的第一条放入List1List1.AddItem 计算机,2 将字符串添加到List1第2条后,Visual Basic程序设计教程,40,(2)RemoveItem方法RemoveItem方法清除列表框一项数据项格式:列表框对象名称.RemoveItem 索引值它通过索引值删除列表框中指定项目。如:List1.RemoveItem 2 删除List1中下标为2的项目,Visual Basic程序设计教程,41,(3)Clear方法Clear方法用于清除列表框中所有项目。格式:列表框对象名称.Clear4列表
25、框控件的常用事件Click事件DblClick事件,Visual Basic程序设计教程,42,【例7-5】通过选择字体改变标签文字字体。如图。Screen是系统对象,指整个Windows桌面FontCount属性提供了可用的字体数目Fonts属性数组提供了具体的字体,如Fonts(i)为一种字体控件:1个标签和1个列表框事件过程:Form_Load:标签属性设置,各种字体放入列表框中;List1_Click:实现修改标签字体。,Visual Basic程序设计教程,43,【例7-5】通过选择字体改变标签文字字体。如图。程序代码如下:Private Sub Form_Load()Dim i A
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 使用 数组
链接地址:https://www.31ppt.com/p-5116544.html