Visual Basic 清华大学vb编程语言基础 第7讲课件

上传人:我*** 文档编号:144993718 上传时间:2020-09-15 格式:PPT 页数:33 大小:588KB
返回 下载 相关 举报
Visual Basic 清华大学vb编程语言基础 第7讲课件_第1页
第1页 / 共33页
Visual Basic 清华大学vb编程语言基础 第7讲课件_第2页
第2页 / 共33页
Visual Basic 清华大学vb编程语言基础 第7讲课件_第3页
第3页 / 共33页
Visual Basic 清华大学vb编程语言基础 第7讲课件_第4页
第4页 / 共33页
Visual Basic 清华大学vb编程语言基础 第7讲课件_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《Visual Basic 清华大学vb编程语言基础 第7讲课件》由会员分享,可在线阅读,更多相关《Visual Basic 清华大学vb编程语言基础 第7讲课件(33页珍藏版)》请在金锄头文库上搜索。

1、第七讲,常用算法,内容提要,自定义数据类型 常用算法 查找 排序 数组元素的插入和删除,自定义数据类型,Type 自定义数据类型名 元素名1(下标) as 类型名 元素名2(下标) as 类型名 End Type,Type student Name as string*20 姓名 No as integer 学号 Age as integer 年龄 Sex as string*1 性别 Score(4) as single 5门课成绩 End type,自定义数据类型一般在标准模块(.bas)中定义,默认是Public,在窗体模块中定义,默认是 Private。 自定义数据类型可以是字符串,但

2、只能是定长字符串。 自定义的数据类型名使用上和Integer、Double等基本类型名相同。,自定义数据类型的使用,定义了数据类型之后,就可以声明该数据类型的变量,声明的形式为: Dim 变量名 As 自定义数据类型名,Dim stu as student,使用stu变量中的元素,形式为: 变量名. 元素名 stu.name stu.no,With stu .name= “张三” .no=04134 .age=18 .sex= “男” For i=0 to 4 .score(i)=int(rnd*101) Next i End with,自定义数据类型-例,定义一个含学号、姓名、成绩3个成员的

3、学生信息数据类型,然后定义一个该类型的数组用来存放学生信息。,单击“添加”按钮时将当前文本框text1、text2、text3的数据加入学生信息数组,并在标签中显示当前已有的总记录数。单击“查找”按钮,可以按文本框中指定的学号找到学生信息,并显示在对应的文本框text1、text2、text3中。,自定义数据类型-例,Type student No As String*6 学号 name As String * 8 姓名 Score As Single 成绩 End Type,标准模块,Dim mystu() As student Dim n As Integer,窗体通用声明,Private

4、 Sub Command1_Click() n = n + 1 ReDim Preserve mystu(1 To n) As student With mystu(n) .No = Text1 .name = Text2 .Score = Text3 End With Label5.Caption = 当前总记录数为: + Str(n) End Sub,Private Sub Command2_Click() Dim i% For i = 1 To n If mystu(i).No = Text4 Then Text1 = mystu(i).No Text2 = mystu(i).name

5、Text3 = mystu(i).Score End If Next i End Sub,Private Sub Form_Load() n = 0 End Sub,枚举类型,枚举,是将变量的值一一列举出来。当一个变量只有几种可能的值时,可以定义为枚举类型。,Private/Public Enum 类型名称 成员名=常数表达式 成员名=常数表达式 End Enum,缺省时,枚举中的第一个常数被初始化为0,其后的常数则被初始化为比其前面的常数大1的数值。 VB将枚举中的常数值看做长整数,若将一个浮点数赋给一个枚举中的常数, VB会将该数值取整为最接近的长整数。,Public Enum days

6、Sunday = 5 monday Tuesday Wednesday = 12 thursday Friday Saturday End Enum,标准模块,Private Sub Form_Click() Dim a As days a = thursday End Sub,分类统计,常用算法,将一批数据按分类的条件统计包含的个数,例:输入一串字符,统计各字母出现的次数,不区分大小写,统计26个字母出现的个数,先声明一个具有26个元素的数组,每个元素的下标表示对应的字母,元素的值表示对应字母出现的次数。 从输入的字符串中逐一取出字符,转换成大写字符(不区分大小写),进行判断。,分类统计,P

7、rivate Sub Command1_Click() Dim a(1 To 26) As Integer Dim str As String * 1 Dim le%, i%, j% le = Len(Text1.Text) For i = 1 To le str = UCase(Mid(Text1, i, 1) If str = A And str 0 Then Picture1.Print ; Chr$(j + 64); =; a(j); Next j End Sub,数组排序-选择法排序,常用算法,使用选择排序法对随机产生的10个数按从小到大的次序排序并输出。,分析:选择排序法算法的步骤

8、是:首先从待排序的n个数中选出最小的数,与第一个数交换位置,然后从其余n-1个数中找出次小的数,与第二个数交换位置,重复此过程,最后构成递增序列。,a(1) a(2) a(3) a(4) a(5) a(6) a(2) a(3) a(4) a(5) a(6) a(3) a(4) a(5) a(6) a(4) a(5) a(6) a(5) a(6),原始数据 8 6 9 3 2 7 第一趟排序 2 6 9 3 8 7 第二趟排序 2 3 9 6 8 7 第三趟排序 2 3 6 9 8 7 第四趟排序 2 3 6 7 8 9 第五趟排序 2 3 6 7 8 9,数组排序-选择法排序,选择法排序需要两

9、重循环实现,内循环找出最小的数的位置,外循环把找到的最小数交换到相应的位置。,Private Sub Command1_Click() Dim a(1 To 10) As Integer Dim i%, j%, p%, temp% Randomize Print 排序前: For i = 1 To 10 a(i) = Int(Rnd * 100) Print a(i); Next i,常用算法,For i = 1 To 9 外循环,进行9轮比较 p = i 第i轮比较时,假设第i个元素最小 For j = i + 1 To 10 内循环,在数组的第i个到第10个元素中找最小元素的下标 If a

10、(j) i Then temp = a(i) 找出的最小元素与第i个元素交换 a(i) = a(p) a(p) = temp End If Next i Print Print 排序后: For i = 1 To 10 Print a(i); Next i Print End Sub,数组排序-冒泡法排序,使用冒泡排序法对随机产生的10个数按从小到大的次序排序并输出。,分析:冒泡排序法算法的思路是:相邻的两个数两两比较,若小数在后面,两数交换。这样经过一趟比较后,最大的数沉底,放到最后一个位置,小数上升,第二趟对余下的数两两比较,得次大的数沉到倒数第2的位置上,以此类推,最后得到一个递增序列。

11、,常用算法,数组排序-冒泡法排序,常用算法,数组排序-冒泡法排序,常用算法,Dim a(1 To 10) As Integer,窗体通用声明,Private Sub Form_Load() Dim i% Randomize Print 排序前: For i = 1 To 10 a(i) = Int(Rnd * 100) Print a(i); Next i End Sub,数组排序-冒泡法排序,常用算法,Private Sub Command1_Click() Dim i%, j%, t% For i = 1 To 9 外循环,进行9轮比较 For j = 1 To 10 - i 内循环,两两

12、比较 If a(j) a(j + 1) Then 若次序不对,马上交换位置 t = a(j) a(j) = a(j + 1) a(j + 1) = t End If Next j 出了内循环,最大数已沉底,小数浮起 Next i Print Print 排序后: For i = 1 To 10 Print a(i); Next i Print End Sub,数组排序-冒泡法排序-2,常用算法,数组排序-冒泡法排序-2,Dim a(1 To 10) As Integer,窗体通用声明,Private Sub Form_Load() Dim i As Integer Randomize Prin

13、t 排序前: For i = 1 To 10 a(i) = Int(Rnd * 100) Print a(i); Next i End Sub,Private Sub Command1_Click() Dim i%, j%, t% For i = 1 To 9 For j = 9 To i Step -1 If a(j) a(j + 1) Then t = a(j) a(j) = a(j + 1) a(j + 1) = t End If Next j Next i Print Print 排序后: For i = 1 To 10 Print a(i); Next i End Sub,产生不重复

14、的随机数,Dim a(1 To 7) As Integer Dim flag As Boolean, i%, p% Randomize For i = 1 To 7 Do a(i) = Int(Rnd * 36) + 1 flag = False For p = 1 To i - 1 If a(i) = a(p) Then flag = True Exit For End If Next p Loop While flag = True Next i For i = 1 To 7 Print a(i); Next i,产生7个随机数,每个数在136之间的,并且不能重复.,查找,查找,也叫检索,

15、是根据给定的某个值,在表中确定一个关键字等于给定值的记录或数据元素。 利用数组可以方便的实现数据的查找 顺序查找 折半查找,顺序查找,顺序查找是一种最基本和最简单的查找方法。 从表中第1个数据开始,逐个数据与给定值进行比较,若某个数据与给定值相等,则查找成功,否则,查找不成功。 适用于无序表,常用算法,顺序查找-例,利用顺序查找法查找考场教室号。,为了便于查找,通过二维数组rm建立两种号码对照表, Rm由Form_Load事件过程建立。,顺序查找-例,Dim rm(6, 3) As Integer,Private Sub Form_Load() rm(1, 1) = 2101: rm(1, 2) = 2147: rm(1, 3) = 102 rm(2, 1) = 1741: rm(2, 2) = 1802: rm(2, 3) = 103 rm(3, 1) = 1201: rm(3, 2) = 1287: rm(3, 3) = 114 rm(4, 1) = 3333: rm(4, 2)

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

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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