清华大学vb编程语言基础

上传人:宝路 文档编号:48133153 上传时间:2018-07-10 格式:PPT 页数:33 大小:632.64KB
返回 下载 相关 举报
清华大学vb编程语言基础_第1页
第1页 / 共33页
清华大学vb编程语言基础_第2页
第2页 / 共33页
清华大学vb编程语言基础_第3页
第3页 / 共33页
清华大学vb编程语言基础_第4页
第4页 / 共33页
清华大学vb编程语言基础_第5页
第5页 / 共33页
点击查看更多>>
资源描述

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

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

2、能是定长字符串。 n自定义的数据类型名使用上和Integer、Double等基本类型 名相同。自定义数据类型的使用 定义了数据类型之后,就可以声明该数据类型的 变量,声明的形式为: Dim 变量名 As 自定义数据类型名Dim stu as student 使用stu变量中的元素,形式为:变量名. 元素名stu.namestu.noWith 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 studentNo As String*6 学号name As String * 8 姓名Score As Single 成绩 End Type标准模块Dim mystu() As studentDim n As Integer窗体通用声明Private Sub Command1_Click()n

4、= n + 1ReDim Preserve mystu(1 To n) As studentWith mystu(n).No = Text1.name = Text2.Score = Text3End WithLabel5.Caption = “当前总记录数为:“ + Str(n) End SubPrivate Sub Command2_Click()Dim i%For i = 1 To nIf mystu(i).No = Text4 ThenText1 = mystu(i).NoText2 = mystu(i).nameText3 = mystu(i).ScoreEnd IfNext i E

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

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

7、im str As String * 1Dim le%, i%, j%le = Len(Text1.Text)For i = 1 To lestr = UCase(Mid(Text1, i, 1)If str = “A“ And str 0 Then Picture1.Print “ “; Chr$(j + 64); “=“; a(j);Next j End Sub数组排序-选择法排序常用算法使用选择排序法对随机产生的10个数按从小到大 的次序排序并输出。 分析:选择排序法算法的步骤是:首先从待排序的n个数 中选出最小的数,与第一个数交换位置,然后从其余n-1 个数中找出次小的数,与第二个数交

8、换位置,重复 此过程,最后构成递增序列。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数组排序-选择法排序选择法排序需要两重循环实现,内循环找出最小的数的位置,外循环把找到的最小数交换到相应的位置。 Private Sub Command1_Clic

9、k()Dim a(1 To 10) As IntegerDim i%, j%, p%, temp%RandomizePrint “排序前:“For i = 1 To 10a(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(j) i Thentemp = a(i) 找出的最小元素与第i个元素交换a(i) = a(p)a(p) = tempEnd IfNext iPri

10、ntPrint “排序后:“For i = 1 To 10Print a(i);Next iPrint End Sub数组排序-冒泡法排序使用冒泡排序法对随机产生的10个数按从小到大的次序排序并输出。 分析:冒泡排序法算法的思路是:相邻的两个数两两比较,若小数在后面,两数交换。这样经过一趟比较后,最大的数沉底,放到最后一个位置,小数上升,第二趟对余下的数两两比较,得次大的数沉到倒数第2的位置上,以此类推,最后得到一个递增序列。常用算法数组排序-冒泡法排序原始 数据第一趟 排序第二趟 排序第三趟 排序第四趟 排序第五趟 排序 a(1)1085531a(2)857313 a(3)573155a(4

11、)731777a(5)318888a(6)11010101010常用算法数组排序-冒泡法排序常用算法Dim a(1 To 10) As Integer窗体通用声明Private Sub Form_Load()Dim i%RandomizePrint “排序前:“For i = 1 To 10a(i) = Int(Rnd * 100)Print a(i);Next iEnd 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) = tEnd IfNext j 出了内循环,最大数已沉底,小数浮起Next iPrintPrint “排序后:“For i = 1 To 10Print a(i);Next iPrint End Sub数组排序-冒泡法排序-2原始 数据第一趟 排序第二趟 排序第三趟 排序第四趟 排序第五趟 排序 a(1)1011111a(2)8103333 a(3)5810555a(4)7581077a(5)3758108a(6)1377810常用算法数组排序-冒泡法排序-2Di

13、m a(1 To 10) As Integer窗体通用声明Private Sub Form_Load() Dim i As Integer Randomize Print “排序前:“ For i = 1 To 10a(i) = Int(Rnd * 100)Print a(i); Next i End SubPrivate Sub Command1_Click() Dim i%, j%, t% For i = 1 To 9For j = 9 To i Step -1 If a(j) a(j + 1) Thent = a(j)a(j) = a(j + 1)a(j + 1) = tEnd IfNe

14、xt j Next i Print Print “排序后:“ For i = 1 To 10 Print a(i); Next i End Sub产生不重复的随机数Dim a(1 To 7) As Integer Dim flag As Boolean, i%, p% Randomize For i = 1 To 7Doa(i) = Int(Rnd * 36) + 1flag = FalseFor p = 1 To i - 1If a(i) = a(p) Thenflag = TrueExit ForEnd IfNext pLoop While flag = True Next i For i = 1 To 7Print a(i); Next i产生7个随机数,每个 数在136之间的,并 且不能重复.查找n查找,也叫检索,是根据给定的某个值,在表中确定一个关键字等于给定值的记录或数据元素。n利用数组可以方便的实现数据的查找 顺序查找 折半查找顺序查找n顺序查找是一种最基本和最简单的查找方法。n从表中第1个数据开始,逐个数据与给定

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

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

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