Visual Basic.NET程序设计-夏敏捷-电子教案及源代码 第5章

上传人:E**** 文档编号:89400806 上传时间:2019-05-24 格式:PPT 页数:46 大小:664.50KB
返回 下载 相关 举报
Visual Basic.NET程序设计-夏敏捷-电子教案及源代码 第5章_第1页
第1页 / 共46页
Visual Basic.NET程序设计-夏敏捷-电子教案及源代码 第5章_第2页
第2页 / 共46页
Visual Basic.NET程序设计-夏敏捷-电子教案及源代码 第5章_第3页
第3页 / 共46页
Visual Basic.NET程序设计-夏敏捷-电子教案及源代码 第5章_第4页
第4页 / 共46页
Visual Basic.NET程序设计-夏敏捷-电子教案及源代码 第5章_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《Visual Basic.NET程序设计-夏敏捷-电子教案及源代码 第5章》由会员分享,可在线阅读,更多相关《Visual Basic.NET程序设计-夏敏捷-电子教案及源代码 第5章(46页珍藏版)》请在金锄头文库上搜索。

1、第3章 复合数据类型,主编: 制作:,本章主要讲解内容,5.1 枚举 5.2 数组 5.3 结构 5.4 集合 5.5 综合应用,5.1 枚举,5.1.1 枚举类型的定义 枚举类型使用关键字Enum语句来声明,其语法格式如下: 访问权限 Enum 枚举类型名称 成员名 =常数表达式 成员名 =常数表达式 End Enum 说明: (1)访问权限为可选项,可以为public和private,默认情况下,访问权限为public。 (2)使用Enum关键字声明枚举类型。 (3)成员名是必选项,是定义枚举中的常数。默认情况下,枚举中的第一个常数初始值为0,后面的常数依次递增1。 (4)常数表达式是可选

2、项,可以显式为成员名指定一个常数,类型可以是Byte、Integer、Long、Short类型,默认为Long类型。,举例,例如,定义一个枚举类型ColorVal: Public Enum ColorVal Red Green Blue End Enum,5.1.2 枚举的使用,枚举类型声明后,就可以定义该枚举类型的变量,然后使用该变量存储枚举成员的值。若要引用枚举类型中的成员,可以使用下列格式: . 例如要引用ColorVal枚举类中的Green颜色值,可以使用下列方法: Dim color As ColorVal color=ColorVal.Green,【例5.1】编写一个程序,用来实现

3、简单的菜单选择操作,菜单包含有1.Add,2.Modify,3.Delete,4.Save。 分析:这四种操作可以组成一个枚举,然后通过文本框输入不同操作所对应的编号,点击命令按钮提示所选择的操作。,5.2 数组,5.2.1 数组的几个基本概念 1数组与数组元素 2数组的类型 3数组的维数,5.2.2 数组的声明,数组须先声明后使用,声明数组的语法格式如下: 访问修饰符 数组名(下标1上界 ,下标2上界) As 数据类型 说明: (1)“访问修饰符”可以是Dim、Private、Static、Public,通常使用Dim关键字。 (2)省略“数据类型”,默认数组为Object类型。 (3)“数

4、组名”与简单变量的命名规则相同。但在同一个过程中,数组与简单变量不能同名,即不能在某个过程中同时声明数组a和变量a。 (4)下标上界的个数代表数组的维数。例如: Dim a(30) As String 声明一维字符串型数组a Dim b(30,5) As Integer 声明二维整型数组b Dim c(10,5,5) As Single 声明三维单精度浮点型数组c,(5)声明数组时的下界为0,不能改变。与VB6.0不同,Visual Basic.NET上界不一定非要是常量或者常量表达式,也可以是变量,但在使用时,上界最好使用常量或者常量表达式。例如,以下声明数组的语句都是合法的: Dim m

5、As Integer m = 100 Dim a(m) As Integer 这里的m是变量,不提倡使用 建议使用常量作为下标上界: Const m As Integer = 100 Dim a(m) As Integer 这里的m是常数 (6)下标必须是整数,否则系统将按四舍五入自动取整。例如: Dim a(3.5) As Integer 这里下标上界为4,5.2.2 数组的初始化,1一维数组初始化 语法格式为: Dim 数组名() As 数据类型=初始值序列 说明: (1)格式中“初始值序列”要用花括号括起来,并且各数据必须为常数,各数据间用逗号隔开。 (2)当对数组进行初始化时,不能在数

6、组名后的圆括号内指定下标上界,数组元素个数由初始值个数决定。 例如: Dim a() As Integer=1,2,3,4,5 表示声明了整型数组a,共有5个元素,并进行了初始化,其中a(0)=1,a(1)=2,a(2)=3,a(3)=4,a(4)=5。 下面数组初始化是错误的: Dim a(4) As Integer=1,2,3,4,5 指明了下标的上界,2二维数组初始化,语法格式为: Dim 数组名(,)AS 数据类型=第1行初始值,第2行初始值,第n行初始值 说明: (1)数组名后的圆括号内必须有一个“,”,以指明是个二维数组。 (2)数组第一维个数由内层花括号个数确定,第二维个数由每行

7、元素个数确定。 例如: Dim a(,) As Integer=1,2,3,4,5,6 声明了一个二维数组a,含有2行3列,并进行初始化,其中 a(0)(0)=1 a(0)(1)=2 a(0)(2)=3 a(1)(0)=4 a(1)(1)=5 a(1)(2)=6,5.2.3 数组的基本操作,数组的基本操作包括对其元素的赋值和引用、输入和输出。对数组元素的大部分操作如同简单变量,例如,对数组元素进行赋值: a(1) = 1 : a(2) = 1 a(3) = (a(1)+a(2)/2 其中,第2条语句对a(3)赋值,也包含了对a(1)和a(2)这两个数组元素的引用。不管是哪种情况,在使用数组元素

8、时都要注意以下几点: (1)使用数组元素时,数组名、数组类型和维数必须与数组声明时一致。 (2)使用数组元素时,下标值应在数组声明时所指定的范围之内。 (3)使用数组时其元素下标可以用常量,也可以用变量、函数及表达式等。 (4)要特别注意区分下面两条语句中数字10的含义: Dim a(10) As Integer 声明数组a的下标上界等于10 a(10) = 85 给数组a中的下标为10的元素赋值 数组的输入、输出本质上与简单变量没有区别,但由于数组本身所具备的特点,其输入、输出往往是利用循环结构实现的。,【例5.2】给一维数组a赋初值,要求每个元素的值等于其下标的平方,并输出其下标和元素的值

9、。 分析:利用循环结构可以实现数组的输入和输出,只要将循环变量作为数组元素的下标,并在每次循环中依次改变循环变量的值,即可访问数组中的所有元素。 界面设计:建立一个窗体,增加一个文本框,将MultiLine设置为True,添加一个命令按钮,将Text属性设置为“计算”。,5.2.4 For EachNext语句,与For.Next 语句一样,两者都可以执行循环操作,但是当需要为集合或数组的每个元素重复执行一组语句时,使用 For Each.Next 循环更方便。其一般格式为: For Each 成员变量 As 数据类型 In 数组或者集合 语句 Exit For Next 成员变量 说明: (

10、1)成员变量:用于循环访问集合的元素。在For Each语句中是必选项,在Next语句中是可选项。 (2)数据类型:成员变量的数据类型。如果尚未声明成员变量,则是必选项。 (3)数组或者集合:必选项,需要遍历的数组或者集合。 (4)语句:要执行的循环体,一条或者多条语句。 (5)Exit For:可选。将控制转移到For Each循环外。,【5.3】定义一个5行5列的矩阵,并利用随机函数给矩阵赋1100之间的数,求所有偶数的和。 分析:矩阵是一个二维数组,如果使用ForNext语句,则要使用嵌套循环。For Each Next语句可以遍历数组中的每个元素,而不管数组的维数,这对于多维数组的遍历

11、操作是非常方便的。,5.2.5 数组的使用,数组是程序设计中最为常用的一种数据结构,离开了数组,许多问题会变得较为复杂,或者难以解决。本节从几个最常用的方面介绍数组的实际应用。,1数据统计和处理,利用数组中存储的信息,可以对数据进行各种统计和处理,例如,求最大值、最小值和平均值,对数据和信息进行分类统计等。图5-4 求最大数、最小数和平均值 【例5.4】从键盘输入10个数据,找出其中的最大数、最小数和平均值,并输出高于平均值的数据及其个数。 分析:求最大数、最小数和平均值,可以不使用数组,但要查找其中高于平均值的数据,如果不使用数组,就必须在求得平均值之后再次输入所有数据才能进行比较。因此,使

12、用数组可以简化问题的解决。,【例5.5】统计选票。设有10名候选人,试统计每个人的选票。 分析:设置候选人的代号分别为1,2,10,并规定输入i表示第i个人得一张选票。这样,就将问题转化为统计输入了多少个1,多少个2,多少个10。,【例5.6】从键盘输入一个字符串,判断每一个字母(不区分大小写)出现的次数。 分析:这是一个分类统计问题,可以借鉴上一道例题的设计思想,用一个内含26个元素的一维数组存放26个字母出现的次数。(提示:大写字母“A”的ASCII码为65,大写字母“Z”的ASCII码为90),2矩阵操作,可以将二维数组看作一个m行n列的矩阵,以进行有关行列式的操作,例如,针对各行、各列

13、、对角线上的元素或者上、下三角形中的元素进行操作,又如求两个矩阵的和、差或者乘积等。本节仅讨论一些简单的矩阵操作及其应用。,【例5.7】设有一个55的方阵,分别计算两条对角线上的元素之和。 分析:主对角线上元素的行号与列号相等。对于一个mm的方阵,其次对角线上元素的行号与列号之和等于m-1。为简单起见,数组元素可由程序自动产生。 设计:Form窗体上增加三个文本框,TextBox1显示矩阵,MutiLine设置为True,TextBox2和TextBox3输出两个对角线的和。,3递推问题,递推算法可以用循环结构来实现,这在4.4.5 节已有介绍。该算法的核心是通过前项计算后项,从而将一个复杂的

14、问题转换为一个简单过程的重复执行。由于一个数组本身就包含了一系列变量,因此利用数组可以简化递推算法。,【例5.8】改写例4.24,输出斐波那契(Fibonacci)数列的前20项。 分析:可以用一个数组f来存放斐波那契数列,则初始条件为f(0) =1和f(1) = 1,递推公式为f(i) = f(i-1) + f(i-2)。,4排序问题,排序是数组应用中最重要的内容之一。排序的方法很多,例如,比较法、选择法、冒泡法、插入法及Shell排序等。 下面介绍最常用的3种排序方法:比较法、选择法和冒泡法。,(1)比较法排序,设有10个数,存放在数组a中,比较法排序的思路如下(以降序排列为例)。 第1轮

15、:将a(0)与a(1)a(9)逐个比较。先比较a(0)与a(1),若a(0)a(1),则交换a(0)和a(1)中的数据,再比较a(0)与a(2),a(0)与a(3),并将每次比较的较大数交换到a(0)中。这样,第1轮结束后,a(0)中存放的必然是10个数中的最大数。 第2轮:将a(1)与a(2)a(9)逐个进行比较,方法同上,故第2轮结束后,a(1)中存放的是a(1)a(9)这9个数中的最大者。 继续进行第3轮、第4轮、,直到第9轮。其中,第9轮只需要比较a(8)与a(9)两个数据。至此,10个数已按从大到小的顺序存放在数组a中。 a(i)a(j) 比较法排序(n个数按降序排列)的流程图如图5

16、-7所示。 For i = 0 to n-2For j = i+1 to n-1真假a(i)与a(j)互换,【例5.9】产生10个随机整数,用“比较法排序”按从大到小的顺序输出数据,程序代码如下: Private Sub Form5_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim a(9) As Integer Dim i As Integer, j As Integer, t As Integer Randomize() Console.WriteLine(“原始数据如下:“) For i = 0 To 9 a(i) = Int(200 * Rnd() + 100 产生10个随机整数,区间100, 299

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号