第5章.ppt

大学VISUAL BASIC程序设计教程-课件PPT

收藏

资源目录
跳过导航链接。
大学VISUALBASIC程序设计教程-课件PPT.zip
VISUAL BASIC程序设计教程-PPT演示文稿
VISUAL BASIC程序设计教程-PPT课件文件
VISUAL BASIC程序设计教程-大学教学资料
(课件资料)VISUAL BASIC程序设计教程
压缩包内文档预览:(预览前20页/共34页)
预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图
编号:21836467    类型:共享资源    大小:5.82MB    格式:ZIP    上传时间:2019-09-06 上传人:QQ24****1780 IP属地:浙江
25
积分
关 键 词:
大学VISUAL BASIC程序设计教程-课件PPT 大学 visual basic 程序设计 教程 课件 ppt
资源描述:
大学VISUAL BASIC程序设计教程-课件PPT,大学VISUAL,BASIC程序设计教程-课件PPT,大学,visual,basic,程序设计,教程,课件,ppt
内容简介:
5.1 数组的概念,5.2 静态数组和动态数组,5.3 数组的基本操作,5.4 控件数组,5.5 自定义数据类型数组的应用,第5章 数 组,返回,退出,5.6 综合实例,5.1 数组的概念,例5-1:求35名学生的平均成绩以及最高成绩。 程序1: Dim aver As Integer, mark As Integer For i = 1 To 35 mark = InputBox(“输入第“ maxmark 从表面上看,两端程序差别不大,但是后者引入了数组mark(1 to 35),这样,每一个学生的成绩都保留在数组中,可以随时加以调用。,数组:是具有相同数据类型的元素所成的有序集合,每个数组是用一个统一的名称表示数组元素的集合,数组中的每一元素具有唯一索引号(即下标),可以用数组名及下标唯一地识别一个数组的元素,。 数组必须遵循先声明后使用的原则,声明一个数组就是声明其数组名、类型、维数和数组的大小。下标的个数决定数组的维数,各维下标之间用逗号分开。在VB中有一维数组、二维数组等,最多可以达到60维。按声明时是否可以确定数组的大小将数组分为静态数组和动态数组,前者大小固定,后者大小不确定,以后在使用前需要重定义。,5.2.1 静态数组,5.2.2 动态数组,5.2.3 数组在内存中存放的顺序,5.2.4 数组的清除,5.2 静态数组和动态数组,返回,退出,5.2.1 静态数组 在声明数组时,给定了数组元素个数的数组称为静态数组。 数组声明的形式为: Public| Private| Dim 数组名(维数定义)As类型,5.2.2 动态数组,静态数组的大小在定义数组时,已经通过指定上、下界确定下来。有时,可能事先无法确认到底需要多大的数组,而希望能够在运行时改变数组的大小,这就要用到动态数组。动态数组可以在任何时候由Redim语句指出维数的大小。 创建动态数组的步骤: (1)用Public语句(公用数组)、Dim语句(模块级数组)、Static或Dim语句(局部数组)在过程中声明数组。给数组附以一个空维数表,这样就将数组声明为动态数组。 (2)在过程中用ReDim语句为声明的动态数组分配实际的元素个数,格式为: ReDim Preserve 数组名维数定义)As 类型,例5-2:设计图5-1所示应用程序,当单击“输入成绩”按钮时,在InputBox对话框中输入学生人数,然后在对话框中依次输入不多于人数的数个成绩。再次单击“输入成绩”按钮将追加学生人数和成绩。单击“显示成绩”按钮显示成绩、平均分和未输入成绩的人数。,图5-1 学生成绩统计程序运行实例,程序代码如下: Dim mark%(), aver%, k%, n% Private Sub inputmark(k, n, aver) 输入成绩的子过程 Do While k “ Then 学生人数不为0时执行 n = k + CInt(m),ReDim Preserve mark(1 To n) 在使用动态数组前先确定大小 Call inputmark(k, n, aver) End If End Sub Private Sub 显示成绩_Click() Print “已经输入的学生成绩为:“ For i = 1 To n Print mark(i); If i Mod 10 = 0 Then Print Next Print Print “有“; n - k; “个学生的成绩没有输入“ Print “平均成绩为“; aver / n End Sub,5.2.3 数组在内存中存放的顺序,数组在内存中存放时,首先变化的是最后一维的下标,然后变化倒数第二维的下标。,例如,数组A(5,4)在内存中的分配如下:,5.2.4 数组的清除,经过定义的数组将为其分配相应的存储空间,其大小不能改变。为了重新初始化静态数组的元素,或者释放动态数组的存储空间,可以使用Erase 语句,其语法格式为: Erase arraylist 其中:参数arraylist是一个或多个用逗号隔开的需要清除的数组变量。,表5-1 Erase语句对静态数组元素的影响,5.3 数组的基本操作,5.3.1 给数组元素赋初值 可以使用循环结果和Array函数给数组赋初值。 1使用循环结构 如给数组strMark(100)的元素赋初值: For i = 1 To 100 strName(i) = 0 Next 2使用Array 函数 Array 函数Variant的作用返回一个Variant型的数组,其语法格式为: =Array(),5.3.3 数组的赋值,可以将一个已知数组元素的值的数组整体赋值给一个可调数组,并自动确定可调数组的大小。,5.3.4 数组的输出,输出数组中的全部或部分元素,一般使用循环结构(尤其是For循环)。,5.3.2数组的输入,数组的输入一般可以通过文本框输入和InputBox函数输入。对于大型的数组,一般采用文本框输入。,例如: Dim A As String ,B() As string A(0)=“王华“:A(1)=“黎明“:A(2)=“万雪“:A(3)=“刘芳“:A(4)=“夏恬“ B =A 这样,就将A数组整体赋值给B数组。数组B的大小确定为5。,例5-4:随机产生二维数组a(3,3),交换最左边和最右边的两列元素,然后输出对角线上的元素。 程序代码如下:,Private Sub Form_Click() Dim a(3, 3) As Integer For j = 0 To 3 For i = 0 To 3 a(i, j) = Int(90 * Rnd + 10) Next Next For i = 0 To 3 temp = a(i, 0): a(i, 0) = a(i, 3): a(i, 3) = temp Next Print “输出数组对角线元素“ For i = 0 To 3 If i - (3 - i) = 0 Then Print Tab(i * 3 + 1); a(i, i); Spc(2 - 2 * i) * 3 + 1); a(i, 3 - i) Else Print Tab(3 - i) * 3 + 1); a(i, 3 - i); Spc(2 * i - 4) * 3 + 1); a(i, i) End If Next End Sub,图5-2 数组的输出,5.4.1 控件数组的概念,5.4.2 控件数组的建立,5.4 控件数组,返回,退出,5.4.1 控件数组的概念,控件数组是具有相同名称、类型以及事件过程的一组控件。每一个控件具有一个唯一的索引(index)。当数组中的一个控件识别某一事件时,它将调用此控件数组的相应事件过程,并把相应索引作为参数传递给事件过程。一个控件数组至少应有一个元素,在控件数组中可用到的最大索引值为 32767。同一控件数组中的元素有自己的属性设置值。,5.4.2 控件数组的建立,1设计时创建控件数组,图5-3 创建控件数组对话框,设计时创建控件数组的步骤为: (1)在窗体上添加一个新的控件,以决定控件的类型和控件数组中的第1个控件。 (2)设置控件的Name属性值,为控件命名。 (3)选择以下方法之一创建控件数组:,方法一:选定控件,单击“复制”按钮,再单击“粘贴”按钮,则显示如图5-3所示对话框,单击“是”,则创建一个控件数组。以后可以根据需要向控件数组中添加新的控件元素。 方法二:在步骤(1)创建一个同类型的新控件,在设置新控件的Name属性值(注意,不是Caption属性值)时,键入与上面创建的控件相同的名字,则同样会显示图5-3所示的对话框,单击“是”创建控件数组。 方法三:直接将步骤(1)创建的控件的索引值指定为0,然后按照方法一和方法二创建控件数组中的成员,不会有对话框出现。,2运行时添加控件数组,控件数组必须是设计时创建的,在程序运行时,可以通过Load方法向控件数组中添加新的控件成员,并给其属性赋值。,例5-4:建立有1个成员的命令按钮数组Command1。程序运行时,如果单击设计时绘制的命令按钮,将动态地为Command1数组添加一个元素,并设置新元素的Caption值为“我是克隆品”,如果单击动态产生的命令按钮,则不会创建新的命令按钮,并在对话框中显示“请不要用克隆品克隆”。 依题意创建如图5-4所示界面,在属性窗口将Command1命令按钮的index值设置为0,创建Command1控件数组,设置其Caption属性值为“正品控件”。,图5-4 程序运行情况,程序代码为: Private Sub Command1_Click(Index As Integer) Static k As Integer If Index 1 Then k = k + 1: Load Command1(k) With Command1(k) .Visible = True: .Left = Command1(k - 1).Left + Command1(k - 1).Width .Top = Command1(k - 1).Top: .Caption = “我是克隆品“ End With Else MsgBox (“请不要用克隆品克隆“) End If End Sub,例5-5:在窗体上创建一个Picture1控件,然后在Picture1控件中建立一个标签控件数组的第1个控件Label1(0)。在运行时采用为标签控件数组添加成员的方法,在Picture1控件中形成国际象棋的棋盘。要求Picture1控件的高度略小于窗体的高度,棋盘由红黄相间,在调整窗体的大小时,棋盘的大小相应按比例调整。参见图5-5。 (1)界面设计,1)创建一个Picture1控件。 2)在Picture1控件内创建一个Label1控件,将Index属性值设置为0,建立Label1控件数组。国际象棋共有64格,一个Label1控件数组的成员相当于一格。其他Label1控件数组的成员在程序运行时由Load事件产生。 设计时控件的位置任意,运行时再由程序调整。 (2)编写事件代码 产生Label1控件数组的其他63个成员的代码放在Form_Load()事件中: Private Sub Form_Load() For m = 1 To 63 Load Label1(m) 产生Label1控件数组的其他63个成员 Label1(m).Visible = True 将Label1控件数组的其他63个成员设置为可见 Next End Sub,图5-5 国际象棋程序运行界面,设置各控件属性值的代码放在Form_Resize()事件中: Private Sub Form_Resize() Picture1.Height = ScaleHeight 200 Picture1的高度略小于窗体高度 Picture1.Width = Picture1.Height 产生方形棋盘 Picture1.Left = ScaleLeft + (ScaleWidth - Picture1.ScaleWidth) / 2 棋盘水平居中 Picture1.Top = ScaleTop + (ScaleHeight - Picture1.ScaleHeight) / 2 棋盘垂直居中 For m = 0 To 7 For n = 0 To 7 If m Mod 2 = 0 Then 为方格设置不同的颜色 If n Mod 2 = 0 Then Label1(8 * m + n).BackColor = &HFFFF& 黄色 Else Label1(8 * m + n).BackColor = &HFF& 红色 End If Else If n Mod 2 = 0 Then Label1(8 * m + n).BackColor = &HFF& Else Label1(8 * m + n).BackColor = &HFFFF& End If End If Label1(8 * m + n).Width = Picture1.ScaleWidth / 8 设置方格的宽度 Label1(8 * m + n).Height = Picture1.ScaleHeight / 8 设置方格的高度 Label1(8 * m + n).Left = Picture1.ScaleLeft + Picture1.ScaleWidth / 8 * n 设置方格的左边位置 Label1(8 * m + n).Top = Picture1.ScaleTop + Picture1.ScaleHeight / 8 * m 设置方格的顶端位置 Next Next End Sub,5.5 自定义数据类型数组的应用,例5-7:某单位职工的工资情况的数据放在一个自定义类型数组empWage中,其中的每一个元素的类型为自定义数据类型strEmployee,其中的成员为姓名(name)、职称(title)、工资(wage)。试编写一个程序,用数组empWage模拟的职工工资库,建立工资库的过程就是输入数组成员的过程。数据的输入通过文本框实现。此外,要求程序具有插入数据和统计工资总额的功能。 (1)界面设计 按题意,设计如图5-6所示界面,包括三个标签,三个文本框,三个命令按钮,一个图片框。设计时属性值见表5-2。 (2)添加标准模块 自定义数据类型的定义放置标准模块中,为此添加标准模块。 单击“工具|添加模块”,打开“添加模块”对话框,单击“打开”,建立新的标准模块Module1,可以在属性窗口将该模块重新命名。 在Module1代码窗口自定义类型如下: Type stremployee name As String * 16 职工姓名 title As String * 6 职称 wage1 As Single 工资 End Type,图5-6 界面设计(运行界面),表5-2控件属性值,(4)编写代码 具体代码如下: 通用部分的声明 Option Base 1 Dim empwage() As stremployee, intcurr As Integer, i As Integer, sum As Integer 事件代码: Private Sub Command1_Click() 追加事件过程 If Text1 “ Then i = i + 1 数组元素增加1个 ReDim Preserve empwage(i) 重定义数组,保持原数据不变 With empwage(i),.name = Text1:.title = Text2:.wage = Val(Text3) End With Text1 = “: Text2 = “: Text3 = “ Else MsgBox (“在追加前请先输入数据“) End If End Sub,.name = Text1:.title = Text2:.wage = Val(Text3) End With Text1 = “: Text2 = “: Text3 = “ Else MsgBox (“在插入前请先输入数据“) End If End Sub Private Sub Command3_Click() 统计事件过程 If i 0 Then For m = LBound(empwage) To UBound(empwage) sum = sum + empwage(m).wage Next Picture1.Print “工资总额=“ & sum End If End Sub,Private Sub Command2_Click() 插入事件过程 intcurr = CInt(InputBox(“输入插入位置“) If intcurr 0 And intcurr “ Then i = i + 1 数组元素增加1个 ReDim Preserve empwage(i) 重定义数组,保持原数据不变 For j = i To intcurr + 1 Step -1: empwage(j) = empwage(j - 1): Next With empwage(intcurr),5.6 综合实例,5.6.1 数组的排序,5.6.2 数据分类统计,5.6.3 利用文本框进行大量数据的输入,5.6.1 数组的排序,1.冒泡法排序,2.选择法排序,3.插入法排序,1.冒泡法排序,冒泡排序是常用的一种排序方法。假设n个元素按递增的顺序排序。,第一轮:从数组的第一项开始,每一项(i)都与下一项(i+1)进行比较。如果下一项的值较小,就将这两项的位置交换,直到最后第n-1与第n项进行比较,将最大的数排列在最后。,第二轮:从数组的第一项开始,每一项(i)都与下一项(i+1)进行比较。如果下一项的值较小,就将这两项的位置交换,直到最后第n-2与第n-1项进行比较,将最大的数排列在最后。,以此类推,直到只有第一项与第二项进行比较交换,完成递增法排序。,If A(J)=A(J+1),A(J)与A(J+1)交换,图5-7 冒泡排序的流程图,实例5-7:将随机产生的10个数存放在数组bubblesort(1 To 10)中,然后用冒泡法按递增的顺序进行排序。 Private Sub Form_Click() Dim bubblesort(1 To 10) As Integer, temp As Integer For i = 1 To 10 : bubblesort(i) = Int(81 * Rnd + 10) : Next Print “排序前:“ For i = 1 To 10 : Print bubblesort(i); : Next : Print For i = 10 To 2 Step 1 开始排序 For j = 1 To i - 1 If bubblesort(j) bubblesort(j + 1) Then temp = bubblesort(j + 1) : bubblesort(j + 1) = bubblesort(j) : bubblesort(j) = temp End If Next j Next i Print “排序后:“ For i = 1 To 10 Print bubblesort(i); : Next : Print End Sub,2.选择法排序,选择法排序是最为简单且易理解的算法,其基本思想是每次将最小(或最大)的数找出来放在序列的最前面。假设按递增法将有n个数的数组A(1To n)进行排列,步骤为:,(1)假定最小值Temp,将Temp与A(2)进行比较,若A(2)A(1),则令Temp= A(2),直到比较到=A(n),这样Temp中就存放了A(1)A(n)中的最小数,将Temp所指向的元素与A(1)进行交换,从而将A(1)A(n)中的最小数存放在数组的第1个位置。,(2)对除第1个数外的其余n-1个数再按步骤(1)的方法选出次小的数 ,与第2个数交换位置。,(3)依次类推,经过n-1遍后构成递增序列。,若要按递减次序排列,只要每次选最大的数即可。,图5-8 选择法流程图,例5-8:将例5-6中的数组empwage元素按工资(wage)用选择法按递增顺序进行排序。 在例5-6中,增添一个命令按钮Command4,将其Caption属性值设为“排序”,然后添加如下代码: Private Sub Command4_Click() Dim t1 As stremployee Dim i1%, j1%, k1% For i1 =1 To UBound(empwage)-1 k1 = i1 For j1 = i1 + 1 To UBound(empwage)-1 If empwage(j1).wage1 empwage(k1).wage1 Then k1 = j1 Next j1 t1 = empwage(i1) : empwage(i1) = empwage(k1) : empwage(k1) = t1 Next i1 End Sub,3.插入法排序,插入法排序的思路是(假设将有数组A(1 To n)升序排列):,第一轮:将A(2)取出与A(1)进行比较,如A(2) A(1),则将A(1)与 A(2)换位。,第二轮:将A(3)取出与A(1)、 A(2)进行比较,按顺序确定A(3)应放的位置。,以后依次将后面的数插入到排好序的数列中,直到所有的数按顺序排列。,图5-9 插入法排序流程图,例5-9:将例5-6中的数组empwage的元素按工资(wage)用插入法按递增顺序进行排序。 在例5-6中,增添一个命令按钮Command5,将其Caption属性值设为“排序”,然后添加如下代码: Private Sub Command5_Click() Dim t3 As stremployee Dim i3%, j3%, k3% For i3 = 2 To UBound(empwage) t3 = empwage(i3) : j3 = i3 -
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
提示  人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:大学VISUAL BASIC程序设计教程-课件PPT
链接地址:https://www.renrendoc.com/p-21836467.html

官方联系方式

2:不支持迅雷下载,请使用浏览器下载   
3:不支持QQ浏览器下载,请用其他浏览器   
4:下载后的文档和图纸-无水印   
5:文档经过压缩,下载后原文更清晰   
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

网站客服QQ:2881952447     

copyright@ 2020-2025  renrendoc.com 人人文库版权所有   联系电话:400-852-1180

备案号:蜀ICP备2022000484号-2       经营许可证: 川B2-20220663       公网安备川公网安备: 51019002004831号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知人人文库网,我们立即给予删除!