Visual Basic 6.0程序设计_第1页
Visual Basic 6.0程序设计_第2页
Visual Basic 6.0程序设计_第3页
Visual Basic 6.0程序设计_第4页
Visual Basic 6.0程序设计_第5页
已阅读5页,还剩177页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1,Visual Basic 6.0 程序设计,目录,第一章 Visual Basic概述 第二章 Visual Basic的对象及使用 第三章 Visual Basic程序设计概述 第四章 Visual Basic程序设计基础 第五章 数据的输入和输出 第六章 Visual Basic常用标准控件 第七章 结构化程序设计 第八章 数组 第九章 过程 第十章 多重窗体程序设计 第十一章 菜单设计,第一章 Visual Basic概述,1.1 关于Visual Basic 1.2 安装和运行Visual Basic6.0 1.3 Visual Basic6.0 集成开发环境 1.4 Visual

2、 Basic 6.0帮助系统的使用,本书目录,1.1 关于Visual Basic,上一页,下一页,1.1.1 Visual Basic的发展 20世纪60年出现Basic语言; 20世纪80年代,较有影响的有True Basic、Quick Basic和Turbo Basic等。 1991年Microsoft公司推出Visual Basic1.0,以可视化工具为界面设计、结构化Basic语言为基础,以事件驱动为运行机制。经历了从1991年的Visual Basic1.0至1998年的Visual Basic6.0的多次版本升级,它的功能也更强大、更完善,应用面更广;目前功能最为强大的是Vis

3、ual Basic.NET。,本章目录,上一页,下一页,1.1.2 Visual Basic的特点,本章目录,1) 具有面向对象的可视化设计工具 2) 事件驱动的编程机制 3) 提供了易学易用的应用程序集成开发环境 4) 结构化的程序设计语言 5) 强大的数据库功能 6) Active技术 7) 网络功能 8) 多个应用程序向导 9) 完备的Help联机帮助功能,上一页,下一页,1.2 安装和运行Visual Basic 6.0,1.2.1 Visual Basic 6.0 的运行环境 1.硬件要求 2.软件要求 1.2.2 安装 VB6.0是Windows下的一个应用程序,有学习版、专业版和

4、企业版三种版本形式。 VB6.0系统可以在一张CD盘上,也可以在Visual Studio产品的第一张CD盘上。一般都有一个VB自动安装程序,也可以执行VB6.0子目录下的Setup.exe,在安装程序的提示下进行,对初学者可采用典型安装方式。,本章目录,上一页,下一页,1.2.3 启动Visual Basic 6.0,选择程序菜单中的Microsoft Visual Basic 6.0中文版程序,就可启动VB 6.0。 在VB 6.0窗口列出了VB能够建立的应用程序类型,初学者只要选择默认标准.EXE。 在该窗口中有三个按钮: 新建:建立新工程 现存:选择和打开现有的工程 最新:列出最近使用

5、过的工程 单击新建按钮,就可创建该 类型的应用程序。,本章目录,上一页,下一页,1.3 Visual Basic集成开发环境,本章目录,上一页,下一页,1.主窗口 应用程序窗口由标题栏、菜单栏和工具栏组成 2.窗体(form)窗口 设计vb程序的 界面 3.代码(code)窗口 编辑窗体、标准模块中的代码 4.属性(properties)窗口 所有窗体或控件的属性设置 5.工程资源管理器(project expror)窗口 保存一个应用程序所有的文件 6. 工具箱(toolbox)窗口 显示各种控件的制作工具,供用户在窗体上设计,本章目录,上一页,下一页,1.3.5 窗口,窗体是建立VB应用程

6、序的主要部分,用户通过与窗体上的控制部件交互可得到结果。每个窗体窗口必须有一个惟一的窗体名字,建立窗体时默认名为Form1、Form2 在设计状态的窗体由网格点构成,方便用户对控件的定位,网格点间距可以通过工具|选项命令,在通用标签的窗体设置网格中输入宽度和高度来改变; 运行时可通过属性控制窗体的可见性(窗体的网格始终不显示)。 一个应用程序至少有一个窗体窗口,用户可在应用程序中拥有多个窗体窗口。,本章目录,上一页,下一页,属性窗口,所有窗体或控件的属性,如颜色、字体、大小等,可以通过属性窗口来修改。,本章目录,上一页,下一页,工程资源管理器窗口,工程资源管理器窗口保存一个应用程序所有属性以及

7、组成这个应用程序所有的文件。工程文件的扩展名为.VBP,工程文件名显示在工程文件窗口的标题框内。,本章目录,上一页,下一页,代码窗口,代码窗口用来显示和编辑程序代码。打开代码窗口方法: (1) 从工程窗口中选择一个窗体或标准模块,并选择查看代码按钮; (2) 从窗体窗口中打开代码窗口,可用鼠标双击一个控件或窗体本身; (3) 从视图菜单中选择代码窗口命令。,本章目录,上一页,下一页,工具箱窗口,工具箱窗口由21个被绘制成按钮形式的图标所构成,显示了各种控件的制作工具,利用这些工具,用户可以在窗体上设计各种控件。其中20个控件称为标准控件(注意,指针不是控件,仅用于移动窗体和控件,以及调整它们的

8、大小)。 用户也可通过工程|部件命令将来装入Windows中注册过的其他控件装入到工具箱。,本章目录,1.4 Visual Basic 6.0帮助系统的使用,上一页,下一页,使用MSDN Library查阅器 通过VB的帮助菜单,选择内容、索引或搜索菜单项,本章目录,第2章 Visual Basic的对象及使用,2.1 对象 2.2 窗体 2.3 控件 2.4 控件的画法和基本操作,本书目录,2.1 对象,2.1.1 Visual Basic的对象 1.对象 对象是对现实世界中对象的模型化。 对象具有自己的状态(属性)、行为(方法)。 VB中最主要的两类对象就是窗体和控件。 类是创建对象的模板

9、,对象是类的一个实例。 要以对象的眼光看待整个程序设计。,上一页,下一页,本章目录,即对象的特征,不同的对象有不同的属性。 例如:控件名称(Name)、标题(Caption)、颜色(Color)、字体大小(FontSize)等属性决定了对象展现给用户的界面具有什么样的外观及功能。 对象的属性设置方法: 方法一: 通过属性窗口直接设置对象的属性。 方法二: 在程序代码中通过赋值实现,其格式为: 对象.属性=属性值 例如: Text1.Text=“你好!” Label1.Visible= False,2.属 性(Property),上一页,下一页,本章目录,对象原来就内含的函数或程序叫做“方法”。

10、 对象的方法决定对象执行的动作。 方法的引用格式为: 对象名.方法名 如省略对象,表示当前对象,一般指窗体。 例如:Form1.Show,3. 方 法(Method),上一页,下一页,本章目录,4. 事件及事件过程,例如:Sub Command1_Click( ) Text1.Text=“你好!” End Sub,Sub 对象名_事件名(参数表) . (事件过程代码) End Sub,事件: 系统定义好的,可以由外界激发,也可以由 内部触动发生的一种行为。 事件过程: 一段小程序,由语言代码构成。 形式如下:,上一页,下一页,本章目录,注意,对象的“属性”或“事件过程”都可重新设置或修改,但是

11、“方法”的内容却是固定的、不能修改的,而且是看不见的,用户只能“用它”。,上一页,下一页,本章目录,2.1.2 对象属性设置,1.直接输入新属性值,2.选择输入,2.利用对话框设置属性值,上一页,下一页,本章目录,2.2 窗体,2.2.1 窗体的结构与属性,小,上一页,下一页,本章目录,窗体的常用属性,3. Visible属性(逻辑值) 决定控件是否可见。 True :运行时控件可见(缺省值) 。 False:运行时控件隐藏,用户看不到,但控件本 身是存在的。,2. Caption 标题属性 决定出现在窗体的标题栏上的文本内容。,1. Name名称属性(任何对象都具有的) 创建的窗体名称,有默

12、认的名。在程序中,控件 名是作为对象的标识而引用,不会显示在窗体上。,上一页,下一页,本章目录,注意:这四个属性决定窗体(或控件)的大小, 在容器中的位置。如上图。,4. Height、Width、Top和Left属性,窗体的常用属性,上一页,下一页,本章目录,Private Sub Form_Click() Form1.Width = Form1.Width / 2 Form1.Height = Form1.Height / 2 End Sub,Private Sub Form_Click() Form1.Top= Form1.Top+300 End Sub,例1:,例2:,窗体的常用属性,

13、上一页,下一页,本章目录,5. 字体Font属性组,6. BackColor属性和ForeColor属性 BackColor属性用于设置背景颜色, ForeColor属性用于设置前景颜色。,FontName属性是字符型 字体 FontSize属性是整型 字体的大小 FontBold属性是逻辑型 是否是粗体 FontItalic属性是逻辑型 是否是斜体 FontStrikeThru属性是逻辑型 是否加一删除线 FontUnderLine属性是逻辑型 是否带下划线,窗体的常用属性,上一页,下一页,本章目录,10. MaxButton和MinButton最大和最小化按钮 当值为 Ture,有最大或最

14、小化按钮,False则无。,9. BorderStyle边框风格 用于设置窗体的边框风格。,11. WindowsState属性 0:Normal:正常窗口状态,有窗口边界; 1:最小化状态; 2:最大化状态。,7. Picture图片属性,设置窗体中要显示的图片。,8. Icon属性 设置窗体标题栏显示的图标。,窗体的常用属性,上一页,下一页,本章目录,1. Click :单击窗体时触发 2. DblClick:双击窗体时触发 3. Load:窗体被装入工作区时触发的事件,2.2.2 窗体事件,最常用的事件,当应用程序启动,自动执行该事件,该事件通常用来在启动应用程序时对属性和变量进行初始化

15、。,上一页,下一页,本章目录,1. 基本属性 Name、Height、Width、Top、Left、Visible、Font等与窗体的使用相同。 2. 常用属性 (1)Caption: 标题属性命令按钮上显示的内容。,一、命令按钮CommandButton,(2)Style : 标准按钮还是图形按钮。 0Standard(只能显示文字) 1Graphical(文字、图形均可),用Picture属性设置,常用控件,上一页,下一页,本章目录,3. 事件 最基本的事件是单击事件Click。,(3)Default : 当Default属性值为True时,按回车键 相当于用鼠标单击了该按钮。,(4)Ca

16、ncel : 当Cancel属性值为True时,按Esc键相 当于用鼠标单击了该按钮。,常用控件,上一页,下一页,本章目录,用于显示文本(输出)信息,不能作为输入信息的界面。,二、标签 Label,1. 基本属性 Name、Height、Width、Top、Left、Visible、Font、ForeColor、BackColor等与窗体的使用相同。 2. 常用属性 (1)Caption属性 Caption属性用来改变Label控件中显示的内容。,(2) Alignment属性 设置标签中文本的对齐方式,共有三种可选值: 0 Left Justify;1 Right Justify;2 Cen

17、ter,常用控件,上一页,下一页,本章目录,确定标签是否随标题内容的多少自动变化。 如果值为True,根据文本自动调整标签大小。 如果值为False,标签大小不能改变,超长文本被截去。,(3)AutoSize属性,(4)BackStyle属性,用来设置背景风格。,0 -Transparent 透明显示,即控件背景颜色显示不出来。 1 Opaque不透明,此时可为控件设置背景颜色。,标签可响应单击(Click)和双击( DblClick)事件,但一般情况不对它进行编程。,3、事件,常用控件,上一页,下一页,本章目录,文本框是一个文本编辑区域,可在该区域输入,编辑和显示正文内容。 (一)属性 1.

18、 基本属性 Name、Height、Width、Top、Left、Visible、Font, ForeColor、BackColor、Alignment等与标签控件相同。,三、文本框 TextBox,注意:文本框没有Caption属性,2常用属性 (1)Text文本属性 在文本框中显示的正文内容存放在Text属性中。当程序运行时,用户通过键盘输入正文内容,保存在Text属性中。,常用控件,上一页,下一页,本章目录,(2) MultiLine: 是否可以输入多行文本。,注意:当MultiLine为True时,该属性才有效。,(4)Locked: 设置用户能否编辑文本框中的文本。,(3)Scrol

19、lBars: 设置是否含有滚动条。 0-None:无滚动条 1-Horizontal:水平滚动条 2-Vertical垂直滚动条 3-Both水平和垂直滚动条。,(5)PasswordChar: 设置如何在文本框中显示输入的字符。,常用控件,上一页,下一页,本章目录,Change : 当改变文本框的Text属性时会引发该事件。当用户输入一个字符,就会触发一次Change事件。,(二)常用事件,(三)常用方法 文本框最有用的方法是:SetFocus,使用形式: 对象. SetFocus 功能:是把光标移到指定的文本框对象中。,常用控件,上一页,下一页,本章目录,2.4 控件的画法和基本操作,2.

20、4.1 控件的画法,2.4.2 控件的基本操作,1. 控件的缩放和移动,2. 控件的复制和删除,3. 通过属性窗口改变对象的位置和大小,上一页,下一页,本章目录,第3章 Visual Basic 程序设计概述,3.1 Visual Basic的基本语句和编码规则 3.2 编写简单的Visual Basic应用程序 3.3 程序的保存、加载和运行 3.4 Visual Basic应用程序的结构与工作方式,本书目录,3.1 Visual Basic的基本语句和编码规则,一个语句是程序中的语法完整、语义明确的最小单元。 一个语句可以表达一种动作、声明或定义一个类型、变量、常量、过程、函数等。书写语句

21、时,要遵循以下规则: (1)一个语句常用一个关键字、过程名称或一个变量名开头。 (2)空格在语句中起分隔符的作用。 (3)通常一行写一个语句,也可以在一行中写多个语句,但必须用冒号(:)分开。语句前可以有空格,左边有空格的语句称为缩进语句,以增加程序的可读性。如果一行语句的内容很长,表示结束的语句行的最后两个字符必须是续行符(空格加下划线),但总的字符数不能超过255个。,3.1.1 编码规则,上一页,下一页,本章目录,形式: 变量名表达式 对象.属性表达式,一、 赋值语句,功能:将表达式的值赋值给变量名或指定对象的属性。 一般用于给变量赋值或对控件设定属性值.,例如:a=12 b=100+2

22、00 Text1.Text 欢迎使用Visual Basic 6.0 Command.Caption退出,3.1.2 基本程序语句,上一页,下一页,本章目录,先求表达式的值,然后将值赋值给左边的变量。,说明,右边表达式可以是变量、常量、函数等特殊的表达式。,不要将“”理解为数学上的等号: A=A+1 表示将A单元的值加后放回到A单元。,赋值符号“=”左边一定只能是变量名或对象的属性引 用,不能是常量、表达式。下面赋值语句都是错的: 5=X 左边是常量 x+y=3 左边是表达式 Abs(X)=20 左边是函数调用,即是表达式,赋值符号“=”两边的数据类型一般要求应一致。,上一页,下一页,本章目录

23、,二、注释语句,其语法格式为: Rem 或 ,注释语句不运行,只是为了提高程序的可读性 注释语句以Rem或是单引号 开头。,例1:符号常量PI Const PI=3.1415925 Rem 计算圆的面积 S=PI*r*r 例2:Const PI=3.1415925 符号常量PI S=PI*r*r :Rem 计算圆的面积,上一页,下一页,本章目录,三、一句多行,用续行符“ _” 将长语句分成多行,例如: Form1.top = form1.top _ 300,四、 一行多句,将多个语句放在同一行上,语句之间用“:”隔开。,例如: a = 3: b = 4: c=5,3.1.2 基本程序语句,上一

24、页,下一页,本章目录,3.2 编写简单的Visual Basic应用程序,分析问题,确定程序要完成什么任务,需要哪些对象,按下面的步骤创建应用程序。, 新建工程。 创建应用程序界面。 设置属性值。 对象事件过程的编程。 保存文件。 程序运行与调试,再次保存修改后的程序。,3.2.1 用Visual Basic开发应用程序的一般步骤,上一页,下一页,本章目录,3.2.2 编写Visual Basic应用程序,程序设计实例1,上一页,下一页,本章目录,3.2.2 编写Visual Basic应用程序,实例2:请设计下图所示的应用程序界面,上一页,下一页,本章目录,3.2.2 编写Visual Ba

25、sic应用程序,程序设计实例3,界面1,界面2,上一页,下一页,本章目录,3.2.3 代码窗口,上一页,下一页,本章目录,3.3 程序的保存、加载和运行,3.3.1 保存程序,3.3.2 程序的加载,3.3.3 程序的运行,生成可执行文件 对于运行、调试成功的工程文件,可以将其生 成为在Windows下,直接运行的可执行文件。选 择“文件”菜单的“生成工程名.exe”命令即可。,上一页,下一页,本章目录,3.4 Visual Basic应用程序的结构与工作方式,3.4.1 Visual Basic应用程序的构成,1. 窗体模块2. 标准模块3. 类模块,3.4.2 事件驱动,上一页,下一页,本

26、章目录,第4章 Visual Basic程序设计基础,4.1 Visual Basic语言字符集及编码规则 4.2 数据类型 4.3 常量和变量 4.4 常用内部函数 4.5 运算符 与表达式,本书目录,4.2 数据类型,上一页,下一页,本章目录,4.3 常量和变量,上一页,下一页,变量:在程序运行中其存储的值可以改变。 常量:在程序运行中其值不可以改变。 命名 规则: 必须以字母或汉字开头,由字母、汉字、数字或下划线组成,长度小于等于255个字符。 不能使用VB中的关键字。 VB中不区分变量名的大小写,一般变量首字母用大写字母,其余用小写字母表示;常量全部用大写字母表示。 为了增加程序的可读

27、性,可在变量名前加一个缩写的前缀来表明该变量的数据类型。,本章目录,变量的声明,上一页,下一页,1.用Dim语句显式声明变量 形式 Dim 变量名 AS 类型 Dim 变量名类型符 例 Dim iCount As integer , sAllsum As single 等价于 Dim iCount%, sAllsum! 2.隐式声明 未进行上述的声明而直接使用,其类型为 Variant 类型。 建议不使用 注意: 在通用声明处加 Option Explicit 语句可强制显式声明变量。,本章目录,4.4 常用内部函数,上一页,下一页,VB提供大量的内部函数供编程时调用。按其功能可分成数学函数、

28、转换函数、字符串函数、日期函数和格式输出函数等。,本章目录,4.4.1 数学函数,上一页,下一页,VB提供大量的内部函数供编程时调用。按其功能可分成数学函数、转换函数、字符串函数、日期函数和格式输出函数等。,本章目录,数学函数,上一页,下一页,Rnd函数返回0和1(包括0但不包括1)之间的双精度随机数. 每次运行时,要产生不同序列的随机数,先执行Randomize 语句。产生ab的之间的随机整数:Int(Rnd *(b-a)+a),本章目录,4.4.2 字符串函数,上一页,下一页,字符串编码 从前面的String字符串类型的说明中知道,VB中字符串长度是以字(习惯称字符)为单位,也就是每个西文

29、字符和每个汉字都作为一个字,占两个字节。这与传统的概念有所不同,原因是编码方式的不同。在VB中采用的是Unicode(国际标准化组织(ISO)字符标准)来存储和操作字符串。Unicode是全部用两个字节表示一个字符的字符集。为了保持与ASCII码的兼容性,保留ASCII,仅将其字节数变为两个,增加的字节以零填入。,本章目录,4.4.2字符串函数,上一页,下一页,本章目录,字符串函数,上一页,下一页,本章目录,4.4.3 转换函数,上一页,下一页,本章目录,转换函数说明,上一页,下一页,(1) Chr和Asc函数互为反函数。 (2) Str函数将非负数值转换成字符类型后,会在转换后的字符串左边增

30、加一空格。 (3) Val将数字字符串转换为数值类型,当字符串中出现数值类型规定的字符外的字符,则停止转换,函数返回的是停止转换前的结果。例如表达式:Val(-123.45ty3)结果为-123.45。 (4) CDdate函数将以日期型表达式转换成日期类型。例如表达式:CDate(2003/11/12)结果为日期类型 VB中还有其他类型转换函数,例如,CInt、CBool、CSng、CStr等,详细例子查阅帮助功能。,本章目录,4.4.4 日期和时间函数,上一页,下一页,本章目录,4.5 运算符与表达式,上一页,下一页,和其他语言一样,VB中也具有丰富的运算符,通过运算符和操作数组合成表达式

31、,实现程序编制中所需的大量操作。 运算符是表示实现某种运算的符号。VB中的运算符可分算术运算符、字符串运算符、关系运算符和逻辑运算符四类。,本章目录,4.5.1 运算符-算术运算符,上一页,下一页,例:5+10 mod 10 9 / 3 +2 2 结果:10,注意:对算术运算符两边的操作数应是数值型,若是数字字符或逻辑型,则自动转换成数值类型后再运算。 例如: 30-True 结果是31,逻辑量True转为数值-1,False转为数值0 False + 10 + 4 结果是14,本章目录,运算符-字符串运算符,上一页,下一页, 、+ 字符串连接 Next j Print Next i,本章目录

32、,8.4 数组的初始化,上一页,下一页,(4) 利用Array函数 形式:数组名 = Array(数据列表) 例,如下程序段对a,b数组赋值,并显示结果: Dim a As Variant, b As Variant, i% a = Array(1, 2, 3, 4, 5) a数组有5个元素,上界为4 b = Array(abc, def, 67) b数组有3个元素,上界为2 For i = 0 To UBound(a) Picture1.Print a(i); ; Next i For i = 0 To UBound(b) Picture1.Print b(i); ; Next i,本章目录

33、,数组的基本操作-输入,上一页,下一页,可以通过文本控件输入,也可通过InputBox函数输入: For i = 0 To 3 For j = 0 To 4 输入时显示: 输入 i j 元素的值,其中i,j的值在变化 sb(i, j) = InputBox(输入 & i &, & j & 元素的值) Next j Next i 对于大量的数据输入,为了便于编辑,一般不用InputBox函数,而用文本框再加某些技术处理 。,本章目录,数组的基本操作-输出,上一页,下一页,形成方阵55的方阵,分别输出方阵中各元素和下三角元素 :,要显示下三角,规律是每一行的列数与行号相同,这只要控制内循环的终值;

34、 要显示上三角,规律是每一行的起始列与行号相同,这只要控制内循环的初值。,本章目录,数组基本操作-求最大元素,上一页,下一页,求数组中最大元素及下标,一般假设第一个元素为最大、其下标也对应为最大元素的下标,然后将该数与数组中其他元素逐一比较,若有比最大值大的元素,马上就交换,同时也交换最大值下标。 求最小值及最小值下标的方法也相似。 求数组中最大元素和所在下标及各元素之和:,本章目录,数组基本操作-交换元素,上一页,下一页,交换数组中各元素实际上是找下标之间的规律,在数组操作时经常使用。 交换的要求是将数组第1个元素与最后一个交换,第2个元素与倒数第2个交换,以此类推。这,本章目录,8.5 数

35、组的应用举例,上一页,下一页,1.分类统计 分类统计是将一批数据中按分类的条件统计每一类中包含的个数。例如,将学生成绩按优、良、中、及格、不及格五类,统计各类的人数。这类问题一般要掌握分类条件表达式的书写和各类中计数器变量的使用 例:输入一串字符,统计各字母出现的次数(不区分字母大小写),并显示统计结果。 处理方法: 统计26个字母出现的个数,必须声明一个具有26个元素的数组,每个元素的下标表示对应的字母,元素的值表示对应字母出现的次数。 从输入的字符串中逐一取出字符,由于不区分大小写,在判断前转换成大写字符,再进行判断。,本章目录,上一页,下一页,2. 大量数据的输入和编辑 在财务、工程计算

36、中,经常需要对大量的数据进行输入和编辑。为此可利用文本框通过编程来实现。 例:输入一系列的数据,输入结束将它们按分隔符分离后存放在数组中。对输入的数据允许修改和自动识别非数字数据。 处理方法: 利用文本框输入和编辑功能输入数据;再将输入的内容按规定的分隔符分离到数组中。 利用Replace函数去除重复输入的分隔符。 分离数据可利用Split函数。,本章目录,8.5 数组的应用举例,上一页,下一页,3. 数组排序 排序是将一组数按递增或递减的次序排列,例如按学生的成绩、球赛积分等排序。排序的算法有许多,常用的有选择法、冒泡法、插入法、合并排序等。 选择法排序 基本思想:每次在若干个无序数中找最小

37、(大)数,并放在相应的位置。 假定有n个数的序列,要求按递增次序排序,实现的步骤是: 1) 从n个数中找出最小数的下标,出了内循环,最小数与第1个数交换位置;通过这一轮排序,第1个数已确定好。 2) 除已排序的数外,其余数再按步骤1)的方法选出最小的数,与未排序数中的第1个数交换位置。 3) 重复步骤 2),最后构成递增序列。,本章目录,8.5 数组的应用举例,上一页,下一页,例:对已知存放在数组中的6个数,用选择法按递增顺序排序。,选择法排序过程示意,本章目录,上一页,下一页,冒泡法排序 基本思想是:从第一个元素开始,对数组中两两相邻的元素比较,将值较小的元素放在前面,值较大的元素放在后面,

38、一轮比较比较完毕,一个最大的数沉底成为数组中的最后一个元素,一些较小的数如同气泡一样上浮一个位置。n个数,经过n-1轮比较后完成排序。,本章目录,8.5 数组的应用举例,8.6 控件数组,上一页,下一页,1. 控件数组的概念 控件数组由一组相同类型的控件组成。它们共用一个控件名,具有相同的属性、方法和事件。每个控件具有惟一的索引号(Index),通过属性窗口的Index属性,可以知道该控件的下标是多少,第1个下标是0。例如,控件数组cmdName(3)表示控件数组名为cmdName的第4个元素。 当激发控件数组中的某个元素时,控件数组共享同样的事件过程,并把相应元素的索引号作为参数传递给事件过

39、程,以便执行相应的程序段。例如,单击控件数组cmdName,调用的事件过程: Private Sub cmdName _Click(Index As Integer) Index确定用户按了哪个按钮 End Sub,本章目录,控件数组-建立,上一页,下一页,(1) 在设计时建立建立的步骤: 在窗体上画出某控件,建立的第一个元素。选中该控件,进行Copy和Paste操作,系统提示,例:分别利用多个同类控件和一个控件数组两种方法建立四个命令按钮,当单击某个命令按钮,分别显示不同的图形或结束操作。,本章目录,控件数组-建立,上一页,下一页,(2) 运行时添加控件数组 在窗体上画出某控件,设置该控件的

40、Index值为0,表示该控件为控件数组,建立的第一个元素。 编程通过Load方法添加其余的若干个元素,每个新添加的控件数组元素通过Left和Top属性,确定其在窗体的位置,并将Visible属性设置为True。 可以通过Unload方法删除某个添加的元素。,本章目录,第9章 过 程,9.1 函数过程的定义和调用 9.2 子过程的定义与调用 9.3 参数传递 9.4 变量与过程的作用域 9.5 递归 9.6 常用算法,本书目录,9.1 函数过程的定义和调用,上一页,下一页,1.引例:已知多边形的各条边的长度,要计算多边形的面积。 计算多边形面积,可将多边形分解成若干个三角形。计算三角形面积的公式

41、如下:,定义函数过程area Public Function area(x!, y!, z!) As Single Dim c! c = 1 / 2 * (x + y + z) area = Sqr(c * (c - x) * (c - y) * (c - z) End Function,调用函数过程: Sub command1_click() 输入若干个三角形边长 S=area(a,b,c)+area(c,d,e) S=S+area(e,f,g) Print S End Sub,本章目录,上一页,下一页,函数过程的定义,自定义函数过程有两种方法: (1)利用工具|添加过程命令定义,生成一个函

42、数的框架。 (2)利用代码窗口直接定义。 函数过程形式: Function 函数过程名(参数列表) As 类型 局部变量或常数定义 语句块 函数名 = 返回值 函数过程体 Exit Function 语句块 函数名 = 返回值 End Function,本章目录,上一页,下一页,函数过程的定义,函数过程名:命名规则同变量名 参数列表形式: ByVal变量名()As 类型 称为形参或哑元,仅表示参数的个数、类型,无值。 函数名 = 返回值 在函数体内至少对函数名赋值一次 Exit Function :表示退出函数过程 例:编一求最大公约数的函数过程 Function gcd( m%, n%) A

43、s Integer If m 0 r = m Mod n : m = n: n = r Loop gcd = m End Function,本章目录,Private Sub Command1_Click() s= “VB程序设计教程5.0版” Print MyReplace(s, 5.0, 6.0) End Sub,Function MyReplace$(s$, OldS$, NewS$) Dim i%, lenOldS% lenOldS = Len(OldS) i = InStr(s, OldS) Do While i 0 s= Left(s, i - 1) + NewS + Mid(s,

44、i + lenOldS) i = InStr(s, OldS) Loop MyReplace = s End Function,上一页,下一页,函数过程的调用,函数过程调用形式:函数过程名(参数列表) 参数列表:称为实参或实元,它必须与形参个数相同,位置与类型一一对应。可以是同类型的常量、变量、表达式。,End Sub,Private Sub Command1_Click() s= “VB程序设计教程5.0版” Print MyReplace(s, 5.0, 6.0),程序运行流程,本章目录,上一页,下一页,9.2 子过程的定义与调用,以下情况使用函数过程存在不足: 不是为了获得某个函数值,而

45、是为了某种功能的处理。 要获得多个结果。 VB中提供了使用更灵活的子过程。,本章目录,子过程定义的方法同函数过程,形式如下: Sub 子过程名(参数列表) 局部变量或常数定义 语句 Exit Sub 语句 End Sub 子过程名、形参同函数过程中对应项的规定,当无形参时不要括号。,上一页,下一页,子过程与函数过程的区别,(1) 函数过程有返回值,过程名就有类型;同时在函数过程体内必须对函数过程名赋值。子过程名没有值,过程名也就没有类型,同样不能在子过程体内对子过程名赋值。 (2) 把某功能定义为函数过程还是子过程,没有严格的规定。一般若程序有一个返回值时,函数过程直观;当有多个返回值时,习惯

46、用子过程。 (3) 形参个数的确定。形参是过程与主调程序交互的接口,从主调程序获得初值,或将计算结果返回给主调程序。不要将过程中所有使用过的变量均作为形参。 (4) 形参没有具体的值,只代表了参数的个数、位置、类型;只能是简单变量、数组名、自定义类型,不能是常量、数组元素、表达式。,本章目录,子过程的调用是一句独立的调用语句,有两种形式: Call 子过程名(实参列表) 子过程名 实参列表 用Call关键字时,若有实参,则实参必须用圆括号括起,无实参圆括号省略 注意:若实参要获得子过程的返回值,则实参只能是与形参同类型的简单变量、数组名、自定义类型变量,不能是常量、表达式,也不能是控件名。 将

47、函数过程改为子过程,只需将函数过程的返回结果作为子过程的形参。,上一页,下一页,子过程调用,本章目录,上一页,下一页,9.3 参数传递,传址的结合过程是:当调用一个过程时,它将实参的地址传递给形参。因此在被调过程体中对形参的任何操作都变成了对相应实参的操作,实参的值就会随过程体内对形参的改变而改变。 在调用过程时,一般主调过程与被调过程之间有数据传递,即将主调过程的实参传递给被调过程的形参,完成实参与形参的结合,然后执行被调过程体。在VB中,实参与形参的结合有两种方式,即传址(ByRef)和传值(ByVal),其中传址又称为引用,是默认的方法。区分两种结合的方法是在要使用传值的形参前加“ByV

48、al”关键字。,本章目录,上一页,下一页,传址与传值,过程定义形参前加ByVal关键字表示传值,否则传址。 传值的结合过程:当调用一个过程时,系统将实参的值复制给形参,实参与形参断开了联系。被调过程中的操作是在形参自己的存储单元中进行,当过程调用结束时,这些形参所占用的存储单元也同时被释放。因此在过程体内对形参的任何操作不会影响到实参。 传址的结合过程:当调用一个过程时,它将实参的地址传递给形参。因此在被调过程体中对形参的任何操作都变成了对相应实参的操作,实参的值就会随过程体内对形参的改变而改变。,本章目录,上一页,下一页,传址与传值,传值与传址的选用规则: (1) 形参是数组、自定义类型只能

49、用传址方式; (2) 若要将过程中的结果返回给主调程序,则形参必须是传址方式。这时实参必须是同类型的变量名(包括简单变量、数组名、自定义类型等),不能是常量、表达式。 (3) 若形参不是前两种情况,一般应选用传值方式。这样可增加程序的可靠性和便于调试,减少各过程间的关联。 例:编写交换两个数的过程,Swap1用传值传递,Swap2用传址传递 。,本章目录,例:编一子函数过程,求任意一维数组中各元素之积,主调程序调用该函数,分别求:,上一页,下一页,数组参数的传递,在VB中允许参数是数组,数组只能通过传址方式进行传递。在传递数组时还要注意以下事项: (1) 在实参列表和形参列表中放入数组名,忽略

50、维数的定义,但数组的圆括号不能省。 (2) 如果被调过程不知道实参数组的上下界,可用LBound和UBound函数确定实参数组的下界和上界。,例 :编两个子过程:子过程一求数组中最大值和最小值;子过程二以每行5列显示数组结果。主调程序有10个元素,分别调用两个子过程。,本章目录,上一页,下一页,9.4 过程与变量的作用域,VB的应用程序由若干个过程组成,这些过程一般保存在窗体文件(.frm)或标准模块文件(.bas)中。变量在过程中是必不可少的。一个变量、过程随所处的位置不同,可被访问的范围不同,变量、过程可被访问的范围称为变量、过程的作用域。,本章目录,上一页,下一页,9.4.1 过程的作用

51、域,1. 窗体/模块级 所定义的子过程或函数过程前加Private关键字,过程只能被本窗体(在本窗体内定义)或本标准模块(在本标准模块内定义)中的过程调用。 2. 全局级 加Public关键字(缺省)的过程,可供该应用程序的所有窗体和所有标准模块中的过程调用。 (1) 在窗体定义的过程,外部过程要调用时,必须在过程名前加该过程所处的窗体名。 (2) 在标准模块定义的过程,外部过程均可调用,但过程名必须惟一,否则要加标准模块名。,本章目录,上一页,下一页,9.4.2 变量的作用域,1. 局部变量 在过程内用Dim语句声明的变量(或不加声明直接使用的变量),只能在本过程中使用的变量,别的过程不可访

52、问。一旦该过程体结束,变量的内容自动消失,占用的存储单元释放。不同的过程中可有相同名称的变量,彼此互不相干。 2. 窗体/模块级变量 在通用声明段中用Dim语句或用Private语句声明的变量,可被本窗体/模块的任何过程访问。 3. 全局变量 在通用声明段中用Public语句声明的变量,可被应用程序的任何过程或函数访问。只有当整个应用程序执行结束时,全局变量的值才会消失。,本章目录,上一页,下一页,变量的作用域,例如在下面一个标准模块文件中不同级的变量声明: Public Pa As integer 全局变量 Private Mb As string *10 窗体/模块级变量 Sub F1(

53、) Dim Fa As integer 局部变量 End Sub Sub F2( ) Dim Fb As Single 局部变量 End Sub,本章目录,Private Function sum(n As Integer) Static j As Integer j = j + n sum = j End Function,上一页,下一页,9.4.3 静态变量,声明形式: Static 变量名 AS 类型 Static Function 函数过程名(参数列表) As 类型 Static Sub 子过程名(参数列表) 过程名前加Static,表示该过程内的局部变量都是静态变量。 静态变量在程序

54、运行过程中可保留变量原来的值。而用Dim说明的变量,每次调用过程时,重新初始化。 例6.10比较Dim和Static两者说明了变量的区别。,Private Sub Form_Click() Dim i% ,isum% For i = 1 To 5 isum = sum(i) Print isum Next i End Sub,本章目录,递归过程在自身定义的内部调用自己。 例6.12编fac(n)=n! 的递归函数 Function fac(n As Integer) As Integer If n = 1 Then fac = 1 Else fac = n * fac(n - 1) End I

55、f End Function,上一页,下一页,9.5 递归,用自身的结构来描述自身就称为递归。 最典型的例子是对阶乘运算作如下的定义:,本章目录,递推过程:每调用自身,当前参数压栈,直到达到递归结束条件。 回归过程:不断从栈中弹出当前的参数,直到栈空。 递归算法设计简单,但消耗的机时和占据的内存空间比非递归大。 由此可见构成递归的结构如下: 递归结束条件及结束时的值; 能用递归形式表示,并且递归向终止条件发展。,fac(2)=2*fac(1),fac(1)=1,fac(4)=4*6,fac(3)=3*2,fac(2)=2*1,fac(3)=3*fac(2),fac(4)=4*fac(3),上一

56、页,下一页,递归结构,本章目录,上一页,下一页,9.6 常用算法,1. 数制转换 不同进制数之间的转换,可通过编程来实现;也可通过VB提供的内部函数:十进制转换为八进制函数(Oct)、转换为十六进制函数(Hex)来实现。 例:编一函数,实现一个十进制整数转换成二至十六任意进制的字符。 一个十进制正整数m转换成r进制数的思路是:将m不断除r取余数(若余数超过9,还要进行相应的转换,例如10变成A,11变成B等),直到商为零,以反序得到结果,即最后得到的余数在最高位。,本章目录,上一页,下一页,2.加密和解密 在当今信息社会,信息的安全性得到了广泛的重视,信息加密是一项安全性的措施之一。信息加密有

57、各种方法,最简单的加密方法是:将每个字母加一序数, 称为密钥。例如,加序数5,这时AF,a f,B G Y D,ZE;解密是加密的逆操作。 例: 编一加密和解密的程序,即将输入的一行字符串中的所有字母加密,加密后还可再进行解密。,本章目录,9.6 常用算法,上一页,下一页,3.查找 查找在日常生活中经常遇到,利用计算机快速运算的特点,可方便地实现查找。查找是在线性表(在此为数组)中,根据指定的关键值,找出与其值相同的元素。一般有顺序查找和二分法查找。顺序查找根据查找的关键值与数组中的元素逐一比较,若相同,查找成功,若找不到,则查找失败。 例:实现顺序查找。 4. 字符处理应用 例:编写一个英文打字训练的程序,要求如下: (1) 在标签框内随机产生30个字母的范文; (2) 当焦点进入输

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论