《Visual Basic NET程序设计教程 教学课件 ppt 作者 王庆桦 主编 战忠丽 魏权双 副主编第4章 复合数据类型》由会员分享,可在线阅读,更多相关《Visual Basic NET程序设计教程 教学课件 ppt 作者 王庆桦 主编 战忠丽 魏权双 副主编第4章 复合数据类型(28页珍藏版)》请在金锄头文库上搜索。
1、第4章 复合数据类型, 了解数组的概述和基本用途 掌握静态数组、动态数组的声明、引用和初始化方法 了解集合的使用方法 掌握结构的概念和使用方法,4.1 数组,数组通常用于存储相似类型的值和对象。它允许对变量进行分组,并且允许使用索引进行检索。数组有上界和下界,它用于指示数组的开始索引值和结束索引值。另外,数组中的数据可以按序排列。 简单的数组是一维的,当然,在VB.NET中也可以使用多维数组。还可以对数组进行循环,以确定或修改存储在数组中的某个值。,4.1.1 数组的声明与初始化,1数组的声明 (1) 方法一 一维数组:Dim 数组名(下标上限) As 二维数组:Dim 数组名(第一维下标上限
2、,第二维下标上限) As 多维数组的声明方法依此类推,本文不再赘述。 数组的下标从0开始,最大下标可以是常数、变量或者表达式,数组的类型可以是整型、长整型、单精度、双精度等类型,数组声明后每个元素自动置为0,布尔型数组的每个元素将赋给False,字符串数组则为空。,例如: Dim Arr(8) As Integer Dim att(10) as String Dim stu(3,5) as Single 第一个例子中,Arr是数组名,Arr(0)表示第一个元素,Arr数组可以存储9个元素,其下标从0到8,每个元素都为Integer类型。第二个例子中,att是数组名,该数组的每个元素为Strin
3、g类型,数组的第一个元素是att(0),一共有11个元素,最后一个元素为att(10)。 二维数组的每个元素具有两个下标:一个表示行,一个表示列,二维数组的定义方法与一维数组相似,需定义数组名、最大行下标、最大列下标及数组类型。行号与列号的下标均从0开始。第三个例子中,定义了一个二维数组stu,一共4行、6列,共24个元素,每个元素的类型为Single。,(2) 方法二 Dim 数组名 As ()=数据表 Dim 数组名(,) As 类型=第1行数据,第2行数据,第m行数据 每行数据个数相同。 例如: Dim Arr As Integer() = 1,2,3,4,5,6,7 Dim WordA
4、r As String() =“Zero“, “One“, “Two“ Dim Data(,) As Integer = 4, 2, 8, 9, 3, 3, 2, 4, 5, 2, 8, 7,注意: 数组的名称的定义规则与变量名相同,且不能与变量名重名。 数组的下标从0开始。 数组元素赋的值的类型必须与数组的类型相同。 如果声明数组时不说明类型,则数组为变体类型,即Variant型。,2数组的初始化 (1) 方法一 先声明数组,然后对其进行初始化。可以直接为数组的某个元素赋值,例如Arr(0)=100,也可以使用循环语句依次为数组中的每个元素赋值。例如: For i = 0 To 10 Arr
5、(i) = i Next 对于二维数组的初始化使用嵌套循环即可,例如: For i = 0 To 10 For j=0 To 10 Arr(i,j) = i Next Next (2) 方法二 可以使用声明中的方法二在声明的时候直接为每个元素赋值。,4.1.2 数组的使用,数组被声明了以后,对使用数组中的元素只能逐个引用数组元素而不能一次引用整个数组。 一维数组的引用格式如下:数组名(下标)。 注意: (1)数组名是表示要引用哪一个数组中的元素,这个数组必须已经声明过。 (2)下标用一对中括号( )括起来,它表示要引用的元素在数组中的位置,下标可以是常数、变量、函数、表达式等形式。例如:a(3
6、)、a(i+j)。 (3)如果下标是负数或者超越了下标上限,系统将给出提示。数组下标从0开始。一个含有n个元素的数组,数组下标的取值范围为:0(n-1)。 例如:Dim a(4) as Integer 则下标只能为0、1、2、3、4,如果引用a(5)则发生错误。 (4)如果下标是实数,将自动四舍五入取整。,【例4-1】创建一个具有5个元素的数组,并实现数组的输入与输出。 具体操作步骤和源程序参见教材 【例4-2】创建一个简单应用程序,输入6个学生的成绩,计算他们的总成绩及平均成绩并输出。 具体操作步骤和源程序参见教材 【例4-3】创建一个简单应用程序,随机产生10个1到100之间的数,并按从小
7、到大对这10个数排序并输出。 具体操作步骤和源程序参见教材 【例4-4】创建一个简单应用程序,随机产生10个1到100之间的数,将数组中的元素逆序排放并输出。 具体操作步骤和源程序参见教材 【例4-5】创建一个简单应用程序,现有10个学生,每个学生有4门课,计算每个学生的平均成绩并输出。 具体操作步骤和源程序参见教材,4.1.3 动态数组,上小节介绍的数组声明后元素的数量不能改变,如果需要改变元素的数量可以使用动态数组,用ReDim语句声明动态数组,但动态数组的维数与类型不能改变。声明格式: ReDimPreserve 数组名(新下标上限,新下标上限2) 例如: Dim arr as Inte
8、ger()=1,2,3,4,5声明arr数组,其元素个数为5个 ReDim arr(8)数组的元素个数从5个变为8个,各元素的值被自动清0 ReDim Preserve arr(8) 数组的元素个数变为8个,原来各元素的 值不变,新元素的值为0 注意: ReDim声明的数组名必须是已经定义的。 Preserve关键字可有可无,如果没有Preserve,数组经过ReDim后,原来数组的值被刷新。 如果ReDim声明时使用Preserve关键字,则原来数组的值被保留。 新下标上限2使用于二维数组,多为数组按照同样的方式处理。,【例4-6】创建一个简单应用程序,使用ReDim及ReDim Prese
9、rve定义动态数组,并观察数组输出值的不同。 具体操作步骤和源程序参见教材,4.1.4 交错数组,一个数组中的每个元素本身都是数组的数组称为“数组的数组”或交错数组。当数据结构是两维的但不是矩形,例如,一个月份的数组,其每个元素又是天数的数组。由于不同的月份有不同的天数,元素不能构成一个矩形的两维数组。在这种情况下,可以使用交错数组而不是多维数组。 例如: Dim date()() As Double = New Double(11)() Dim month As Integer Dim days As Integer For month = 0 To 11 days = DateTime.D
10、aysInMonth(Year(Now), month + 1) date(month) = New Double(days - 1) Next month 例子中声明一个数组变量,数组date的每个元素本身都是表示月份的数组。每个月份数组包含该月中每天的值。New子句将该数组变量设置为一个12个元素的数组,其每个元素又是 Double 型元素的 Double() 型数组。For循环使用Year(Now)确定该年的每个月有多少天,并将date的相应元素设置为合适长度的Double型数组。,4.1.5 使用ArrayList处理数组,ArrayList 就是数组列表,它位于System.Coll
11、ections名称空间下,是集和类型。它具有一些集合的操作方法,比如遍历,查找,插入等操作。同时ArrayList还相当于一个大小可自由改变的一维数组。所以当然也可以象对待数组一样对他进行操作。使用ArrayList类必须先用New关键字新建对象。,ArrayList的常用方法为: Count:返回目前ArrayList中元素的个数 Item:取得或设置指定索引的元素值 Add:新增一个元素到ArrayList对象的尾端 AddRange:新增其它数组或ArrayList对象到数组尾端 Contains:指定的元素是否存在于ArrayList对象中 GetRange:返回一个连续范围的Arra
12、yList对象 Insert:将指定的元素插入到ArrayList对象的指定位置 InsertRange:将指定的数组或ArrayList对象插入至ArrayList对象的指定位置 Remove:移去ArrayList中与指定值第一个相符的元素 RemoveAt:移去ArrayList指定位置的元素 RemoveRange:移去整个范围的元素 Repeat:返回指定的元素,可以指定复制的数目 SetRange:将其它集合或数组的值指定至ArrayList中 ToArray:将ArrayList类对象转为Array类对象,【例4-7】创建一个应用程序,具有四个按钮“输出”、“添加”、“查找”、“
13、删除”,完成的功能分别为输出ArrayList中的元素,向ArrayList中添加元素,在ArrayList中根据索引查找元素,删除指定元素。ArrayList中存储学生的姓名。 具体操作步骤和源程序参见教材,4.2 集合,集合(Collection)是项目所组成的有序集合,可以把这个集合作为单元来引用。集合不用创建新对象或复制现有元素,它在处理大小调整时所用的执行时间比数组少,而数组必须使用ReDim。但是,如果不更改或很少更改大小,数组很可能更有效。集合一般是用来处理 Object 数据类型的,但它也可以用来处理任何数据类型。有时用集合存取数据比用数组更加有效。 Collection 对象
14、提供了简便方法,直截了当将一组相关的项目视为单一对象来引用。集合中的项目或成员被这样一个事实联系起来:它们都属于这个集合。集合的成员不一定都是同一种数据类型的。建立集合的方法与建立其它对象的方法一样。,1建立集合 为了建立集合,必须先建立一个Collection类的实例,格式为: Dim 集合名 As New Collection( ) 建立集合后,可以对集合执行以下操作: Add方法:添加元素 Remove方法:删除元素 Clear方法:删除所有元素 Count方法:查询集合的元素个数 Contains方法:查询集合中是否存在某个元素 Item方法:返回集合中的特定元素 使用For Each
15、Next语句访问集合中的各个元素,2添加元素 使用Add方法可以在集合中添加一个元素,Add方法的格式为: Public Sub Add(ByVal Item As Object, Optional ByVal Key As String, Optional ByValBefor|After As Object=Nothing) Item:制定要添加到集合中的元素 Key:可选项。指定键字符串的唯一String表达式,可以用此键字符串代替定位索引访问集合的这个新元素。 Before:可选项。制定集合中的相对位置的表达式。将要添加的元素放在集合中由Before参数标识的元素前面。如果Before
16、是数值表达式,则它必须介于1和集合Count属性值之间的数值。如果Before是String表达式,则必须对应于将引用的元素添加到集合时指定的键字符串。不能同时指定Before和After。 After:可选项。制定集合中的相对位置的表达式。将要添加的元素放在集合中由Before参数标识的元素后面。如果After是数值表达式,则它必须介于1和集合Count属性值之间的数值。如果After是String表达式,则必须对应于将引用的元素添加到集合时指定的键字符串。不能同时指定Before和After。 注意: (1)集合中的成员可以是同一种类型的数据,也可以混合使用多种数据。 (2)参数Key是一个字符串表达式,在一个集合中,必须是唯一的。,3删除元素 从集合中删除元素可以使用Remove方法,