第3章复合数据类型.ppt

上传人:本田雅阁 文档编号:3426365 上传时间:2019-08-24 格式:PPT 页数:53 大小:2.79MB
返回 下载 相关 举报
第3章复合数据类型.ppt_第1页
第1页 / 共53页
第3章复合数据类型.ppt_第2页
第2页 / 共53页
第3章复合数据类型.ppt_第3页
第3页 / 共53页
第3章复合数据类型.ppt_第4页
第4页 / 共53页
第3章复合数据类型.ppt_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《第3章复合数据类型.ppt》由会员分享,可在线阅读,更多相关《第3章复合数据类型.ppt(53页珍藏版)》请在三一文库上搜索。

1、第3章 复合数据类型,3.1,3.2,3.3,3.4,3.5,3.6,3.7,3.8,枚举,数组,结构,集合,Array类,For Each语句,ArrayList类,综合应用,3.1 枚举,3.1.1 枚举类型的定义 枚举类型通过Enum语句来定义,语法如下: 语法: Public | Private Enum 类型名称 成员名 = 常数表达式 成员名 = 常数表达式 End Enum,3.1.1 枚举类型的定义,Enum语句只能在模块、命名空间、文件级出现。也就是说可以在源文件中或者在模块、类或结构内部声明枚举,但不能在过程内部来声明。在定义了枚举类型后,就可以用它来声明变量类型、过程参数

2、和函数返回值。在声明枚举的模块、类或结构内的任何位置都可以访问它们。 例如,用Enum语句定义中定义了一个枚举类型CourseCodes,其中使用赋值语句为一组课程命名常数 : Public Enum CourseCodes Computer = 1 English = 2 Math = 3 Chemic = 4 End Enum,3.1.1 枚举类型的定义,例如,在下面的Enum语句定义中,没有用赋值语句为枚举的成员赋常数值,因此Sunday被初始化为0,Monday被初始化为1,Saturday被初始化为6 : Public Enum Days Sunday Monday Tuesday

3、Wednesday Thursday Friday Saturday End Enum,3.1.2枚举的使用,声明枚举类型后,就可以定义该枚举类型的变量,然后使用该变量存储枚举常数的值。若要引用枚举类型变量的成员,语法如下: 语法: 枚举类型变量名.成员名称 例如,利用前面例子中定义的一个枚举类型CourseCodes,定义一个该枚举类型的变量,然后访问它的Math常量 : Dim MyCourse As CourseCodes MyCourse = CourseCodes.Math MyCourse值为3,3.1.2枚举的使用,【例3.1】 定义一个枚举类型Days的变量MyDay,在窗体上

4、画一个按钮,编写按钮的事件过程代码如下: Public Class Form1 Public Enum Days Sunday Monday Tuesday Wednesday Thursday Friday Saturday End Enum Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles Button1.Click Dim MyDay As Days MyDay = Days.Monday If MyDay Days.Saturday Then M

5、sgBox(“今天是工作日,不是周末“, , “) End If End Sub End Class,3.1.2枚举的使用,程序运行启动,当单击按钮后界面如图3.1所示。,3.2 数组,3.2.1 数组声明 在使用数组前,必须声明数组。可以声明一维数组、二维数组,也可以定义多维数组。 语法: Dim 数组名(第一维下标上界,第二维下标上界,) As 数据类型 说明: (1)“数组名”可以是任何合法的VB.NET变量名。 (2)“数组元素下标上界”的个数表示数组的维数,当只有一个时表示一维数组,最多可以声明32维数组。 (3)数组元素下标上界只能是常数,不能是变量或表达式,其最大值可为264-1

6、。 (4)数组元素下标下界为0,不能改变。 (5) 数组的数据类型可以是基本的数据类型,也可以是Object类型。如果省略“As 数据类型”,则默认为Object类型。 例如: Dim A(14) As Integer 15 个元素,从A(0)到A(14) Dim B(5,3) As Decimal 24 个元素,从B(0,0)到B(5,3) Dim C(2+7) As String 出错,3.2.1 数组声明,1LBound函数 对于已经定义的数组,可以用LBound 函数来获得数组任一维可用的最小下标,从而确定数组任一维的下界。 语法: LBound(数组名, 维) 例如, Dim A(9

7、, 14) As Integer Dim L As Integer L = LBound(A, 1) 获得数组第一维的下界,返回0,3.2.1 数组声明,2UBound 函数 可以用UBound函数来获得数组任一维可用的最大下标,从而确定数组任一维的上界。 语法: UBound(数组名, 维) 例如, Dim A(9, 14) As Integer Dim U As Integer U = UBound(A, 2) 获得数组第2维的上界,返回14 通过组合使用LBound 函数与 UBound 函数,就可以确定一个数组的大小。 例如, Dim A(9, 14) As Integer Dim L

8、1 , L2 ,U1, U2 As Integer L1 = LBound(A, 1) 获得数组第1维的下界,返回0 L2 = LBound(A, 1) 获得数组第2维的下界,返回0 U1 = UBound(A, 1) 获得数组第1维的上界,返回9 U2 = UBound(A, 2) 获得数组第2维的上界,返回14,3.2.2 数组的初始化,1一维数组初始化 一维数组的初始化较简单,其语法如下: 语法: Dim 数组名() As 数据类型 = 值1,值2,值3,值n 例如: Dim A() As Integer = 1,3,5,7,9 本例定义了一个Integer类型一维数组A,该数组有5个初

9、值,因而数组的上届为4,经过上述定义和初始化后,数组各元素的值依次为: A(0) = 1 A(1) = 3 A(2) = 5 A(3) = 7 A(4) = 9 类似的,也可以对字符串数组进行初始化。例如: Dim A() As String = “数学”, “英语”, “计算机”, “物理”, “化学” 本例定义了一个String类型一维数组A,该数组定义了5个初值,经过上述定义和初始化后,数组各元素的值依次为: A(0) = “数学” A(1) = “英语” A(2) = “计算机” A(3) = “物理” A(4) = “化学”,3.2.2 数组的初始化,2二维数组初始化 与一维数组初始

10、化比较,二维数组初始化较为复杂,其语法如下: 语法: Dim 数组名(,) As 数据类型 = 第1行值 ,第2行值 ,第n行值 例如: Dim A(,) As Integer = 1,2,3,4,5,6,7,8,9,10,11,12 二维数组以行列形式存储,本例定义了一个Integer类型二维数组A,经上述初始化后的数组为3行4列的矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 存储在数组中的各元素分别为: A(0,0) = 1 A(0,1) = 2 A(0,2) = 3 A(0,3) = 4 A(1,0) = 5 A(1,1) = 6 A(1,2) = 7 A(1,3) =

11、8 A(2,0) = 9 A(2,1) = 10 A(2,2) = 11 A(2,3) = 12,3.2.3 数组元素的引用,1一维数组的引用 一维数组元素的引用语法如下: 语法: 数组名(下标) 说明: 数组元素可以被赋值,也可以出现在表达式中。例如: A(0) = 1 A(1) = 2*6 + A(0) A(2) = 3*6 + A(3*2) 使用数组可以大大地缩短和简化程序,通常使用 For 循环,通过改变数组元素的下标,对数组元素依次进行输入输出处理,在引用数组元素时,数组名、类型和维数必须与定义数组时一致。 例如: Dim A(10) As Integer Dim I As Inte

12、ger For I = 0 to 10 A(I) = I Next,3.2.3 数组元素的引用,2二维数组的引用 二维数组元素的引用语法如下: 语法: 数组名(下标, 下标) 说明: 例如,A(2,3)表示二维数组A中第2行第3列的元素。在引用数组元素时,每一维的下标都不能超过定义的范围。 Dim A(3,4) As Integer A(3,5) = 2 下标超界,出错,3.2.3 数组元素的引用,例如:循环为数组A的各元素赋值。 Dim A(2,3) , I , J As Integer For I = 0 to 2 For J = 0 to 3 A(I , J) = I*J Next Ne

13、xt 执行上面的程序后,数组A中的各元素分别为: A(0,0) = 0 A(0,1) = 0 A(0,2) = 0 A(0,3) = 0 A(1,0) = 0 A(1,1) = 1 A(1,2) = 2 A(1,3) = 3 A(2,0) = 0 A(2,1) = 2 A(2,2) = 4 A(2,3) = 6 例如:使用Object类型数组A来存储不同类型数据。 Dim A(4) As Object A(0) = “数学系” 下标为0的元素赋值为字符串型。 A(1) = 20 下标为1的元素赋值为整型。 A(2) = #03-09-1985# 下标为2的元素赋值为日期型。,3.2.4 动态数

14、组,动态数组以变量作为下标,在程序运行过程中完成定义。通常分为2步进行定义: (1)首先用Dim、Private或Public等语句声明一个没有下标(括号不能省略)的数组。 (2)然后在过程中用ReDim语句定义数组的维数和下标上界。 用ReDim语句声明动态数组的语法如下: 语法: ReDim Preserve 数组名(数组上下界,) 说明: 若声明一维动态数组,在Dim语句中数组名后面的括号不能省略。例如,先用Dim声明M为一维动态数组,再用ReDim语句为其分配6个元素: Dim M () As Integer 声明一个一维动态数组M。 ReDim M ( 5) 分配6 个元素。,3.2

15、.4 动态数组,若声明二维动态数组,在Dim语句中数组名后面的括号也不能省略,可以省略每一维的上界,但不能省略逗号。 例如,声明M为二维动态数组: Dim M ( , ) As Integer 声明一个二维动态数组M。 Dim X,Y As Integer X = 5 Y = 9 ReDim M (X, Y) 分配6 10 个元素。 ReDim Preserve M (5, Y) 重新分配6 10 个元素,不清除数组中原来的数据。,3.2.4 动态数组,可以使用 ReDim 语句反复改变数组大小,如果将数组改小,则被删除元素的数据就会丢失。但是不能在将一个数组定义为某种数据类型之后,再使用 R

16、eDim 改变该数组的数据类型。此外,也不能用 ReDim 语句直接定义数组。示例如下: Dim M ( ) As Integer 声明一个一维动态数组M。 Dim X,Y As Integer X = 5 Y = 9 ReDim M ( 5 ) 正确,分配6 个元素。 ReDim M ( 4 ) 正确,重新分配5 个元素。 ReDim MyArray ( 6 ) As Integer 错误,不能用ReDim直接定义数组。 ReDim M (X, Y) 错误,不能改变维数。 ReDim M (5 ) As Decimal 错误,不能改变数组类型。,3.2.4 动态数组,【例3.2】 求Fibo

17、nacci数列:1,1,2,3,5,8,,Fibonacci数列满足以下关系: F 1=1 F 2=1 F n=F n-1+Fn-2 功能要求: 运行程序后,计算Fibonacci数列并显示在窗体上的文本框(TextBox1)中。 界面设计:窗体Form1调整到适当大小,拖放一个文本控件(TextBox1)到此窗体中,Multiline属性设置为“True”。 程序代码如下。,3.2.4 动态数组,运行结果如图3.2所示:,3.3 结构,3.3.1 定义结构 结构类型的定义是用Structure语句开始,用End Structure语句结束,其定义的语法格式如下: 语法: Dim | Publ

18、ic | Friend | Private Structure 结构名 变量声明 过程声明 End Structure,3.3.1 定义结构,例如,使用Structure语句定义学生的一系列信息: Public Structure struStudents Public strId As String 公有成员 Friend strName As String 友元成员 Private strBirthDay As Date 私有成员 Private intScore As Integer 私有成员 下面定义一个过程成员,它可以访问结构的私有成员 Friend Sub DoubleScore(

19、ByVal inScore As Integer) IntScore = intScore * 2 End Sub End Structure 在结构中可以包含其他结构,例如,先定义telephone结构如下: Public Structure telephone Public strPhone As String 固定电话 Friend strMobilPhone As String 手机 End Structure,3.3.1 定义结构,然后,再定义newStudents结构,其中包含telephone结构: Public Structure newStudents Public strI

20、d As String Friend strName As String Private strBirthDay As Date Private intScore As Integer Dim phone As telephone 定义结构类型的成员 End Structure,3.3.2 定义结构类型的变量,声明了结构类型后,就可以定义结构类型的变量来存储和处理结构中所描述的具体数据。结构类型的变量(简称结构变量)的定义与普通变量的定义类似,格式如下: 语法: Dim | Public | Private 变量名1 , 变量名2 , , 变量名n As 结构名 例如,定义struStuden

21、ts结构类型的2个变量Stu1和Stu2的语句如下: Dim Stu1 , Stu2 As struStudents,3.3.3 初始化结构变量,例如,定义2个具有telephone结构类型的变量X1和X2,并初始化它们: Public Structure telephone Public strPhone As String 固定电话 Friend strMobilPhone As String 手机 End Structure Dim X1 , X2 As telephone 定义结构变量 X1.strPhone = “610087” 对X1的成员strPhone赋值 X1.strMobi

22、lPhone = “13051611234” 对X1的成员strMobilPhone赋值 X2.strPhone = “653023” 对X2的成员strPhone赋值 X2.strPhone = “13951483396” 对X2的成员strMobilPhone赋值,3.3.4 引用结构变量,1成员引用 结构由不同类型的成员组成,通常参加运算的是结构中的成员,引用成员的语法如下: 语法: 结构变量名.成员名 例如,引用3.3.3例中的X1和X2变量如下: Dim X1 , X2 As telephone 定义结构变量 X1.strPhone = “12345678” 对X1的成员strPho

23、ne赋值 X1.strMobilPhone = “13051611234” 对X1的成员strMobilPhone赋值 X2.strPhone = X1.strPhone 将X1的成员strPhone赋值给X2的相应的成员,3.3.4 引用结构变量,2成员变量的运算 结构中的成员变量具有各种类型,根据其类型可以像普通变量一样进行各种运算和输入输出,如算术运算、赋值运算、关系运算、逻辑运算等。 例如,下面代码对3.3.3例中的X1变量的strPhone成员进行赋值运算和关系运算: Dim X1 , X2 As telephone 定义结构变量 X1.strPhone = “12345678” 对

24、X1的成员strPhone进行赋值运算 If X1.strMobilPhone X1.strPhone Then 对X1的成员进行关系运算 X2.strPhone = X1.strPhone End If,3.3.4 引用结构变量,3嵌套引用 如果一个结构中的成员本身又是一个结构类型,则在引用时需要使用多个成员运算符,按照从高到低的原则,一级一级地找到最低一级的成员,最后对最低级的成员进行访问。 例如,下面代码定义了一个具有3.3.1例中的newStudents结构的变量X1,然后访问其嵌套的strPhone成员,对该成员进行赋值运算: Dim X1 As newStudents 定义结构变量

25、 X1.Phone.strPhone = “12345678” 对X1的Phone成员的子成员strPhone进行赋值运算 X1.strName = “李明” 对X1的成员strName进行赋值运算,3.3.4 引用结构变量,4结构变量整体赋值 例如,下面代码中,X1和X2被声明为同类型结构变量,可以将X1结构变量整体赋值给X2结构变量: Dim X1 , X2 As telephone 定义结构变量 X1.strPhone = “12345678” 对X1的成员strPhone进行赋值运算 X1.strMobilPhone = “13051611234” 对X1的成员strMobilPhon

26、e赋值 X2 = X1 将X1整体赋值给X2 对于嵌套结构类型的变量,也可以进行整体赋值。例如,下面代码定义了具有3.3.1例中的newStudents结构的变量X1和X2,并对X1的嵌套结构的成员Phone进行初始化,然后将其整体赋值给X2的成员Phone : Dim X1 , X2 As newStudents 定义结构变量 X1.Phone.strPhone = “12345678” 对X1的Phone成员的子成员strPhone进行赋值 X1.Phone.strMobilPhone = “13912345678” 对X1的Phone的子成员strMobilPhone进行赋值 X2.Ph

27、one = X1.Phone 将X1的Phone结构成员整体赋值给X1.Phone,3.3.5 结构数组,定义结构数组变量的语法格式如下: 语法: Dim 数组变量名(下标上界) As 结构名 例如,假如定义了下列结构类型: Public Structure newStudents Public strId As String Friend strName As String Private strBirthDay As Date Private intScore As Integer Dim phone As telephone 定义结构类型的成员 End Structure 则可以用如下语

28、句定义一个具有newStudents结构的结构数组: Dim MyArray(99) As newStudents 定义结构数组变量,3.3.5 结构数组,1引用结构数组元素的成员 每一个结构数组的元素都是一个结构变量,若要引用结构数组元素的成员,其语法如下: 语法: 结构数组名(下标).成员名 例如,引用前面例中的MyArray结构数组变量的第10个元素的strName成员: Dim X As String X = MyArray(9).strName 引用MyArray数组第10个元素的strName成员 2结构数组元素间的赋值运算 可以将一个结构数组元素赋给该数组中的另一个元素,或赋给同

29、一类型的结构变量。 例如,将前面例中的MyArray结构数组变量的第10个元素赋给第1个元素: MyArray(0) = MyArray(9),3.3.5 结构数组,3结构成员的输入输出 可以对结构变量中的成员进行输入输出,例如,对前面例中的MyArray结构数组变量的第10个元素的strName成员进行输出: Debug.WriteLine(MyArray(9).strName) 在集成环境的即时窗口显示成员值 但是,不能把结构数组元素作为一个整体直接进行输入输出,例如,对前面例中的MyArray结构数组变量的第10个元素进行直接输出: Debug.WriteLine(MyArray(9)

30、出错 【例3.3】 编写程序实现学生基本信息的数据输入和输出操作。代码如下。,3.3.5 结构数组,图3.3是分别输入三个学生信息后在集成环境输出窗口中显示的结果。,3.4 集合,3.4.1 建立集合对象 集合(Collection)是一个预定义的对象,要建立一个集合,必须先用关键字New建立一个Collection类的实例,建立集合对象的语法格式如下: 语法: Dim 集合名 As New Collection() 例如,建立一个名为MyC的集合对象如下: Dim MyC As New Collection(),3.4.2 添加数据项,当创建集合对象后,就可以利用集合对象的Add方法,向集合

31、中添加数据项。Add方法的语法格式如下: 语法: 集合对象名.Add(Item ,Key,Before,After) 例如,下面的程序代码可以把多个数据项添加到集合中: Dim I As Short Dim MyId As New Collection 创建一个集合对象MyId For I = 1 To 10 MyId.Add(Item:=”学号” & I , Key:=”stuid” & I) 添加字符型数据项和索引值 Next I,3.4.2 添加数据项,程序中Add方法的参数使用“参数名:=参数值”形式来指定参数的值。也可以按参数的顺序直接指定参数值,例如,下面程序使用按顺序直接指定参数

32、值的方式添加数据项: Dim I As Short Dim MyId As New Collection 创建一个集合对象MyId For I = 1 To 10 MyId.Add(”学号” & I , ”stuid” & I) 添加字符型数据项和索引值 Next I 向集合中添加的成员既可以是同一种类型的数据,也可以混合使用多种数据类型。例如: Dim MyVar As New Collection 创建一个集合对象MyVar Dim x As Object x = “VB.NET” MyVar.Add(x) 添加字符型数据项 x = 100 MyVar.Add(x) 添加数值型数据项 My

33、Var.Add(Now) 添加日期型数据项,3.4.2 添加数据项,建立并添加了数据项的集合后,集合中的每一个成员都有一个索引值,它相当于数组中的下标,但集合的下标从1开始编号。要访问集合中的数据项,可以通过两种方式,一种是下标,另一种是关键字。例如,以下语句都可以输出前面程序建立的集合MyId中的数据项: MsgBox ( MyId ( 2 ) ) MsgBox ( MyId ( “stuid2” ) ) 当知道集合中成员的个数时,可以用ForNext循环来输出集合中的成员。但是,当对集合进行多次增删操作后,它的成员个数可能无法记清,此时,可以通过集合的Count属性确定集合的成员数量,并使

34、用For EachNext循环访问集合中的成员。例如: Dim I As Short Dim MyId As New Collection 创建一个集合对象MyId For I = 1 To 10 MyId.Add(Item:=”学号” & I , Key:=”stuid” & I) 添加字符型数据项和索引值 Next I Dim x As Object For Each x In MyId Debug.WriteLine(x) 输出集合中数据项的值 Next x,3.4.3 删除数据项,集合中的数据项可以通过集合的Remove方法删除,其语法格式如下: 语法: 集合对象名.Remove In

35、dex 例如,下面程序代码中的2个语句都可以将3.4.2示例中的MyId集合中的第2个数据项删除: MyId . Remove 2 删除集合中索引值为2的数据项 MyId . Remove “stuid2” 删除集合中关键字为 ”stuid2” 的数据项,3.4.3 删除数据项,若要删除集合中的全部数据项,需要用循环语句逐个删除数据项。下面分别用2种循环方法删除MyId集合中的全部数据项: For I = 1 To MyId . Count MyId.Remove 1 每次都删除第1个数据项 Next I 或 For Each x In MyId MyId.Remove 1 每次都删除第1个数

36、据项 Next x,3.4.4 引用数据项,集合中的数据项可以通过集合的Item方法来引用,其语法格式如下: 语法: 集合对象名.Item(Index) 例如,下面程序代码中的2个语句都可以引用3.4.2示例中的MyId集合中的第2个数据项: stuid = MyId . Item( 2 ) 引用集合中索引值为2的数据项 stuid = MyId . Item(“stuid2”) 引用集合中关键字为 ”stuid2” 的数据项 Item方法是集合对象的默认方法,当访问集合中的成员时,可以省略Item方法名,直接用“集合对象名(Index)”形式来访问。例如,可以将上面的2个语句改写成下面的2个

37、语句: stuid = MyId ( 2 ) 引用集合中索引值为2的数据项 stuid = MyId(“stuid2”) 引用集合中关键字为 ”stuid2” 的数据项 【例3.4】向集合中添加元素,用Item方法指定集合中的元素,并分别把它们赋给不同的变量。,3.4.4 引用数据项,图3.4是单击窗体后,在集成环境输出窗口中显示的结果。,3.5 Array类,3.5.1 Array类的常用属性 Array类的Rank属性返回数组的维数,Length属性返回数组的元素总数。 语法: Array对象名.Rank 例如,下面的代码使用上面提到的Array类的几个属性显示数组的相关信息: Dim i

38、ntArray As Array = New Integer(10) 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 Debug.WriteLine(intArray.Length) 输出数组的长度 Debug.WriteLine(intArray.Rank) 输出数组的(秩)维数,3.5.2 Array类的Sort方法,Array.Sort方法用于对一维数组的元素进行排序。 语法: Array.Sort(数组对象) 因为Sort方法是Array类的一个共享方法,所以不允许通过类的示例来访问。这不像Rank和Length属性都是使用对象名来引用的。 下面的代码声明了一个一维数

39、组,并使用Array.Sort方法对其进行排序。 Dim intNumber() = New Integer(5) 23, 87, 12, 76, 34, 67 Array.Sort(intNumber) 对元素进行排序 排序后,Integer(0), Integer(1), Integer(2), Integer(3), Integer(4)和Integer(5)分别为12,23,34,67,76,87。,3.5.3 Array类的Reverse方法,Array.Reverse方法用于反转一维数组中的元素顺序。Reverse方法也是Array类的共享方法,需要使用类名来引用。 语法: Arr

40、ay.Sort(数组对象) 下面的代码声明了一个一维数组,并使用Array.Reverse方法对其进行反序排列。 Dim intNumber() = New Integer(5) 23, 87, 12, 76, 34, 67 Array.Sort(intNumber) 对元素进行反转排序 排序后,Integer(0), Integer(1), Integer(2), Integer(3), Integer(4)和Integer(5)分别为87,76,67,34,23,12。,3.5.4 Array类的Copy方法,Array.Copy方法用于在数组之间复制元素,并自动处理强制类型转换。 语法:

41、 Array.Copy(原数组对象,目标数组对象,拷贝长度) 下面的代码将Integer数组中的元素复制到一个Object类型的数组中。 Dim intNumber() = New Integer(5) 23, 87, 12, 76, 34, 67 Dim strchar() = New Object(5) “a“, “b“, “c“, “d“, “e“, “f“ Array.Copy(intNumber, strchar, 3) 复制后,strchar (0), strchar (1), strchar (2), strchar (3), strchar (4)和strchar (5)分别为

42、23,87,12,d,e,f。 【例3.5】输入学生成绩并保存在数组中并对所输入的学生成绩进行排序。 界面设计: 新建一个Windows窗体应用程序项目并命名为“Ex3_5”,在窗体中分别添加3个Label、3个TextBox和2个Button控件。Label1、Label2和Label3的Text属性值分别设置为“输入成绩:”、“正向排序:”和“输入后的成绩:”分别对应TextBox1、TextBox2和TextBox3,Button1和Button2的Text属性值分别设置为“正向排序”和“添加”,设计界面可参考图3.5。 添加代码。,3.5.4 Array类的Copy方法,运行程序: 按

43、F5快捷键运行程序,输入成绩,单击“正向排序”按钮后结果如图3.5所示。,3.6 For Each语句,For EachNext语句针对一个数组或集合中的每个元素,重复执行一组语句。语法如下所示: 语法: For Each element As datatype In group statements Exit For statements Next element 下面的代码将Integer数组中的元素都在加1。 Dim intarray() As Integer = 98, 99, 56, 89, 3, 2 For Each s As Integer In intarray s += 1

44、Next,3.7 ArrayList类,ArrayList类位于System.Collections命名空间。该类使用大小可按需动态变化的数组实现IList接口。事实上,从名称上看,该类其实更接近于数组。实例化对象语法如下: 语法: Dim ArrayList对象名 As New ArrayList() 例如: Public stuArrayList As ArrayList ArrayList也提供Add方法添加元素、Count属性获取集合实际元素数、Item属性获取或设置指定索引的特性元素、Clear方法清除所有元素等。例如向集合中添加元素,使用Add方法,代码如下: stuArrayLi

45、st.Add(98),3.7 ArrayList类,【例3.6】输入学生成绩并保存在ArrayList对象中并对所输入的学生成绩进行排序。 界面设计: 新建一个Windows窗体应用程序项目并命名为“Ex3_6”,在窗体中分别添加1个Label、1个TextBox、2个Button控件和2个ListBox控件。Label1的Text属性值设置为“输入成绩:”,Button1和Button2的Text属性值分别设置为“添加”和“排序”,设计界面可参考图3.6。 添加代码。 运行程序: 按F5快捷键运行程序,输入成绩,单击“正向排序”按钮后结果如图3.6所示。,3.8 综合应用,【例3.7】冒泡法

46、排序 例如有4个数,开始时的顺序是:5 4 2 0,在程序设计时,可以采用For循环嵌套构成双重循环来实现排序。排序的过程通过外循环三次完成。而每次外循环分别由几次内循环组成,内循环完成将相邻的两数比较后小的调换到前面。 第一次外循环:内循环共 3次,结果最大的5“沉”到最下面,排序过程如图3.7(a)所示。 第二次外循环:内循环共2次,4又“沉”到5的上面。排序过程如图3.7(b)所示。 第三次外循环:内循环1次,排序过程如图3.7(c)所示。,(a)第一次外循环 (b)第二次外循环 (c)第三次外循环,3.8 综合应用,因此外循环每次将最大的数“沉”到最下面,三次外循环的排序过程如图3.8所示。,3.8 综合应用,下面用冒泡法对10个数进行从小到大排序,并分别显示出排序前后的数据。 程序流程图如下图3.9所示: 程序代码。,3.8 综合应用,排序结果如图3.10所示。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1