vb语言程序设计教程.ppt_第1页
vb语言程序设计教程.ppt_第2页
vb语言程序设计教程.ppt_第3页
vb语言程序设计教程.ppt_第4页
vb语言程序设计教程.ppt_第5页
已阅读5页,还剩241页未读 继续免费阅读

下载本文档

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

文档简介

1、Visual Basic 程序设计教程,第一章 Visual Basic的基本知识,1.1 认识Visual Basic语言 1.2 窗体,1.1.1 Visual Basic的特点 1、可视化的设计平台(*) 2、面向对象的设计方法(OOP) 3、事件驱动的编程机制(*) 4、结构化的设计语言 5、充分利用Windows资源 6、开放的数据库功能与网络支持 7)完备的help联机帮助功能,1.1.2设计Visual Basic应用程序的步骤 例:编写应用程序完成功能:当用户在应用程序窗体中用鼠标单击命令按钮时,窗体中显示:“祝你成功! ” 。,设计Visual Basic应用程序的步骤:,第

2、一步:创建窗体 第二步:编写程序代码 第三步:运行程序 第四步:保存程序 第五步:生成EXE文件,1.1.3 面向对象程序设计的概念,类 对象 容器对象 属性 方法 事件 事件过程 事件驱动,1.2 窗体 1.2.1窗体的属性 窗体的基本属性:Name、height、Width、Left、Top、Enabled、Visible、ForeColor和Image。 Name名称:所建对象的名称,每创建一个对象,系统都提供一个默认的名称,可在属性窗口的Name栏进行修改,名称是程序中引用对象的标识符,不显示在窗体上。 Height,Width,Top,Left: Height和Width决定了控件对

3、象显示的大小;Top和Left决定了控件对象在窗体中的位置.窗体的左上角为原点,单位为twip。,Enabled:决定控件是否允许操作 True允许用户进行操作,并对操作作出响应; False禁止用户进行操作,呈暗淡色。 Visible:决定控件是否可见 True程序运行时控件可见; False程序运行时控件隐含起来看不到,但存在. ForeColor前景色:设置控件的前景色(正文颜色,若控件有正文,该属性才有效),其值是一个16进制的常数,在属性窗口中,提供有调色板供用户选择。 BackColor背景色:设置控件中正文背景的颜色。,Caption:决定窗体标题栏显示的内容 MaxButton

4、:最大化按钮(其值为True或False) MinButton:最小化按钮(其值为True或False) Icon:设置窗体最小化的图标 ControlBox:设置窗口右上角的控制菜单(其值为True或False) Picture: 设置窗体中显示的图片 BorderStyle:设置窗体的边框有无,及形式 WindowsState:设置窗体在运行时的显示状态 Normal 0(缺省值)正常 。 Minimized 1 最小化(最小化为一个图标) Maximized 2 最大化(扩大到最大尺寸),1.2.2 窗体的事件,1.2.3 窗体的方法,第一章 END,2.1 基本数据类型 2.2 变量与

5、常量 2.3 运算符和表达式 2.4 常用内部函数 2.5 编码规则,第二章 Visual Basic语言基础,2.1 基本数据类型 数据描述客观事物的数、字符以及所有能输入到计算机中并被计算机程序加工处理的符号的集合称为数据。 VB的基本数据:P13 表2.1 *VB中有多种数据类型,不同的数据类型所占的存储空间不一样。,2.1.1 数值(Numeric)型数据 VB提供了6种数值型的数据,如下: 1、整型(Integer)即常规型数据 优点:运算速度较快,所占内存少 缺点:可表示数的范围相对小一些。 表示方式:十进制、八进制、十六进制 2、长整型(Long) 数的表示范围大于整型(232)

6、 3、字节型(Byte) 表示无符号的整数,范围0255。,4、单精度(Single) 可表示最多7位有效数字的数。可用定点形 式和浮点形式来表示。 单精度的定点形式是在该范围内含有小数 的数。如: -3.4 120.0 +1.234 .00069 单精度的浮点形式使用科学计数法,即以 10的整数次幂表示的数,以“E”来表示底数 10。如: -3.4E5 120.0E-5 1.234E+12,5、双精度数(Double) 最多可表示的15位有效数字的数。也有定 点和浮点两种表示法。 双精度的定点形式是在该范围内含有小数的数,如:-31.123456789129 。 双精度的浮点形式使用科学计数

7、法,即以10的整数次幂表示的数,以“D”来表示底数10。 如:-3.412334D52 ,120.12567D-45,6、货币型(Currency) 支持小数点右面四位和小数点左面15位, 是一个精确的定点数据类型。,2.1.2 字符型(String)数据 字符型数据一切可打印的字符和字符串,它是用双引号括起来的一串字符。 如:”abc”, ”123”,2.1.3 布尔(Boolean)型数据 False(假) 0 True(真) 非0值,与数值型转换,2.1.4 日期(Date)型数据 表示日期和时间,可以表示多种格式的日期 和时间,用“#” 符号把表示日期和时间的值 括起来。如 #11/1

8、8/2000#, #2000-11-18#, #11/18/2000 10:28:56 pm# 2.1.5 对象(Object)型数据 可用来表示应用程序中或某些其他应用程 序中的对象。,2.1.6 可变(Variant)类型数据 能够表示所有系统定义的数据,当把它们赋予Variant型数据时,不必在这些数据间进行转换,VB会自动完成任何必要的转换。 例如: SomeValue=18 SomeValue=SomeValue-15 SomeValue=U 说明: 可以是窗体,图片框或打印机. 缺省是窗体.,是一个或多个表达式,可以是数值表达式或字符串表达式. 输出多个表达式时,各表达式之间的分隔

9、符可以用: 逗号,或分号;. 在语句行末尾使用分隔符的情况: 使用分号则会? 使用逗号则会? Print具有计算和输出的双重功能.对于表达式总是先计算后输出. 如:Print 3+3,例:使用Print方法在窗体中直接输出字符 串或数值表达式的值.,Private Sub Form_Click() dim a as integer a=123 Print 123 Print a Print Visual Basic Print Print a * 2 Print 123;a , Visual Basic End Sub,2、与PRINT方法有关的函数 (1)Tab(n)函数 特点: 1)当TA

10、B(x)与输出项之间以分号分隔时输出 项按x指定的位置显示。 2)TAB(x)与输出项之间是逗号分隔时, 该TAB(x)无效,仅逗号起作用。 3)当打印的当前位置超过x是,输出项在下一行指定的x位置输出。 4)如果指定位置x大于行宽,则先进行x MOD 行宽的计算,再用余数作为指定位置显示。,例:Print TAB(6);3 Print TAB(6),3 Print HELLO,CHINA ;TAB(6);3 Print TAB(86);3 (2)Spc函数 Spc函数输出n个空格,其格式为:Spc(n) 例: PRINT TAB(6);3;Spc(20);4,3、使用位置属性 精确地把文本输

11、出到窗体、图片框或打印页上。 CurrentX 和 CurrentY. 例:P42 3.1,Private Sub Form_Activate() Dim a as string, w as integer, h as integer Me.FontSize = 30 a = Visual Basic w = Me.TextWidth(a) h = Me.TextHeight(a) Me.CurrentX = (Me.ScaleWidth - w) / 2 Me.CurrentY = (Me.ScaleHeight - h) / 2 Print a End Sub,3.1.2 信息对话框输出信

12、息 MsgBox函数在对话框中输出信息,等待用户单击按钮,并返回一个整数以确认用户单击 了哪个按钮(P44)。 格式为: 变量 = MsgBox( ,),说明:P43 信息内容指定在对话框中出现的文本 对话框类型指定对话框中出现的按钮和图标,一般有3个内容。 对话框标题指定对话框中出现的标题 Msgbox()返回的值指明了在对话框中选择了哪 一个按钮。 第二个参数的值可以是数值,也可以是符号常量 如果省略了某些选项,必须加入相应的逗号分隔符。 若不需要返回值,则可以使用MsgBox的命令形式。,第二个参数包含的内容:,3.2 数据输入的基本方法,3.2.1 赋值语句LET 赋值语句可以将指定的

13、值赋给某个内存变量或对象的某个属性变量。 格式: LET = ,3.2.2 用InputBox函数输入数据 InputBox函数显示一个能接受用户输入的对 话框,并返回用户在对话框中输入的信息。 格式为: 变量= InputBox(, ,,XPOS,YPOS) 例: h=InputBox(请输入你的姓名,输入,张三),说明 信息内容指定在对话框中出现的文本 对话框标题指定对话框中出现的标题 默认内容可以指定输入框中显示的默 认文本。 XPOS可以指定输入框与屏幕左边的距离 YPOS可以指定输入框与屏幕上边的距离 用户单击“确定”:返回文本框内容到变量中 用户单击“取消”:返回一个零长度的字符串

14、。,3.3 常用基本语句,3.3.1 注释与暂停 1、注释语句 格式: Rem 或 ,3.3.2 加载对象语句Load 在程序运行的过程中,有时需要添加新的窗体或为控件数组增加新的元素,这类操作可以通过加载对象语句Load来完成。 语法格式: Load 对象名 功能:把对象名代表的对象,如窗体、控件数组元素等加载到内存中,以供程序使用。 说明:使用Load语句可以加载窗体,但不显示窗体。当VB加载窗体对象时,先把窗体属性设置为初始值,再执行Load事件过程。 例如: Load Form2 Form2.Visible = True,3.3.3 卸载对象 Unload语句 当要结束应用程序而从内存

15、当中卸载窗体或 要从内存当中卸载某些控件时,可以使用 Unload语句。其语法格式为: Unload 对象名 说明: “对象名”是要卸载的窗体对象或控件的名称,3.3.4 结束语句 (End) End语句强制终止代码的执行。End语句提供了一种强迫终止程序的方法 Visual Basic程序正常结束应该卸载所有的窗体。 与End不同,Stop不会关闭任何文件,或清除变量。,3.3.5 暂停语句(Stop) Stop语句用来暂停语句的执行。 Stop语句主要作用是把解释程序设置为中断模式,以便对程序进行检查和调试。,3.4 常用标准控件及应用,Visual Basic应用程序的用户界面多数情况下

16、是在窗体上添加适当的控件完成的。了解一些最常用的控件和控件的基本属性,如命令按钮、标签、文本框等,就能完成一些简单程序的界面设计。学习这些控件就是学习它们的属性,事件,方法。,3.4.1 控件的基本属性,Name属性 Caption属性 Enabled属性 Visible属性 Height属性 BackColor和ForeColor属性 Font属性,3.4.2 焦点与Tab键序 1.焦点 焦点是用于描述对象接收鼠标或键盘输入的能力。我们称当前被操作的对象获得了焦点(Focus)。焦点对象才有接收鼠标或键盘输入的能力。当对象具有焦点时,才能接收用户的输入。 要将焦点赋给对象(窗体或控件),有以

17、下几种方法: (1)用鼠标选定对象。 (2)按快捷键选定对象。 (3)按Tab键或Shift+Tab键在当前窗体的各对象之间切换焦点。 (4)在代码中用SetFocus方法来设置焦点。,2.Tab键序 Tab键序是指用户按Tab键时,焦点在控件间移动的顺序。通过改变控件的TabIndex属性值,可以改变默认的按Tab键移动焦点的顺序。,注意: 当控件接收焦点时,会发生GotFocus事件; 当控件失去焦点时,会发生LostFocus事件。 可以使用SetFocus方法在代码中设置焦点。 TabIndex属性和TabStop属性: TabIndex属性决定控件接收焦点时的顺序 TabStop属性

18、决定焦点是否能够停在该控件上,3.4.3 命令按钮 命令按钮(CommandButton) 当用户用鼠标单击命令按钮,或者选中命令按钮后按回车键时,就会触发该命令按钮相应的事件过程。 1.常用属性(Name,Enabled,Visible) (1)Default属性:对应“Enter” (2)Cancel属性:对应“Esc” (3)Style属性:设置命令按钮的外观,默认值为0表示以标准的Windows按钮方式显示;其值为1时,表示以图形按钮显示,此时可用Picture,DownPicture和DisabledPicture属性来分别指定按钮在正常、被按下和不可用3种状态下的图片。 (4)Ca

19、ption属性,2.常用事件和方法 事件:命令按钮最常用的事件是Click(单击)事件,但不支持DblClick(双击)事件。 方法:命令按钮常用的方法是SetFocus方法。,3.4.4 标签控件 标签(Label)主要用来显示比较固定的提示性信息,常作为提示或输出信息的控件,其默认名称(Name)为Label1,Label2,。 1.常用的属性 (1)Alignment属性:设置标签中文本的对齐方式; (2)AutoSize属性:确定标签的大小是否根据标签的显示的内容自动调整大小; (3)BorderStyle属性:设置标签的边框,可以取两种值 ; (4)BackStyle属性:设置标签的

20、背景模式 ; (5)Caption属性:标签内显示内容; (6)Wordwrap属性: 改变标签垂直方向的大小。,2.常用事件和方法 事件:标签可触发Click,DblClick等事件。 方法:标签支持Move方法,用于实现控件的 移动。,3.4.5 “文本框”控件(TextBox) 1、常用属性 文本框没有Caption属性 (1)Maxlength属性 (2)Multiline属性 (3)PasswordChar属性 注意:只有在Multiline属性被设置为False的前提下,PasswordChar属性才能起作用。 (4)ScrollBars属性 注意:使文本框出现滚动条的前提是Mul

21、tiline属性必须设置为True。 (5)SelStart属性、Sellength属性和SelText属性 (6)Text属性 (7)Locked属性,2.常用事件和方法 事件:Click,DblClick,Change(内容改变)、 GotFocus(获得焦点)、LostFocus(失去 焦点) 方法:SetFocus方法和Move方法。,例:P58 3-9,3.4.6 滚动条 1滚动条的用途 滚动条控件的作用是为那些不能自动支持滚动的应用程序和控件提供滚动功能。 2常用属性 Min、Max属性 Value属性 SmallChange(最小变动值)属性 LargeChange(最大变动值)

22、属性 3常用事件 Scroll事件:当用鼠标拖动滚动块时,即触发Scroll事件。 Change事件:当改变Value属性值时,即触发Change事件。,例3-11: 设计一个调色板应用程序,如图所示。,3.4.7 PictureBox(图形框) 图形框控件的主要作用是为用户显示图片,也可以作为其他控件的容器。 属性: 1.Picture属性 图片框对象名.Picture=LoadPicture(“图形文件名”) 2.Autosize属性:设置为True时,图形框能自动调整大小与显示的图片匹配。 方法: 1.Print:图片框对象名.Print 2.Cls:图片框对象名.Cls,第三章 END

23、,第四章 选择结构程序设计,4.1 选择结构的概念 4.2 条件表达式 4.3 选择结构程序设计 4.4 配合选择功能的控件 4.5 选择程序设计综合举例,4.1 选择结构程序设计概念 特点:根据给定的条件为成立与否,而决定从 各种不同的解决方案中选择某一个方案来执行。 条件语句的功能是:根据条件表达式的值有选 择地执行一组语句。,4.2 关系表达式和逻辑表达式 4.2.1 关系运算符和关系表达式 关系运算符主要是对比较来说的。 关系表达式是由关系运算符把两个算术表达式连接起来的式子。 一般形式: ,VB 提供的关系运算符有: =(等于) (大于) (不等于) =(大于或等于) =(小于或等于

24、),数值型数据按其大小进行比较; 日期型数据看成“yyyymmdd”的8位整数,按数值大小进行比较; 字符型数据按其ASCII码值进行比较。比较字符串时,从第一个字符开始比较。 常见字符值的大小: 空格数字大写字母 0(数学表达式) ? (VB表达式),VB提供的逻辑运算符有: 逻辑运算符 含义 例 AND 逻辑与 AB AND BC OR 逻辑或 AB OR BC NOT 逻辑非 NOT AB XOR 逻辑异或 AB XOR BC,逻辑运算符之间的优先级为:,4.2.3 运算符的优先顺序 一个逻辑表达式内可能包括逻辑运算符、关 系运算符和算术运算符,它们有一个优先顺序 的问题,它们的优先顺序

25、如下:,4.3 选择结构程序设计 4.3.1 条件语句 1) IfThen语句 单行结构格式 If 条件表达式 Then 语句 块结构格式 If 条件表达式 Then 语句块 End If,2) IfThenElse语句 IfThenElse语句也有两种语法格式。 单行结构格式 If 条件表达式 Then 语句1 Else 语句2 块结构格式 If 条件表达式 Then 语句块1 Else 语句块2 End If,3) 条件语句嵌套及多分支条件语句 (1)If语句的嵌套 (2)带ElseIf的If语句的嵌套 If 条件表达式1 Then 语句块1 ElseIf 条件表达式2 Then 语句块2

26、 ElseIf 条件表达式3 Then 语句块3 . ElseIf 条件表达式n-1 Then 语句块n-1 Else 语句块n End If,4.3.2 情况选择语句Select Case Select Case 测试表达式 Case 取值列表1 语句块1 Case 取值列表2 语句块2 Case Else 语句块n End Select,说明: 是必要参数,是任何数值表达式或字符串表达式 在Case子句中,为必要参数,用来测试其中是否有值与相匹配。其形式有: 表达式: Case 3 表达式 to 表达式:指定一个范围 Case 2 to 9 Case a to f Is关系运算表达式: C

27、ase Is100,可选参数,是一条或多条语句 Case Else子句用于指明其他语句系列,当测试条件和所有的Case子句中的值都不匹配时,则会执行这些语句。,4.3.3 IIf函数 格式 IIf(条件表达式,“真”的返回值,“假”的返回值) 功能 函数分别返回“条件表达式”为真和为假时的取值。“真返回值”和“假返回值”可以是任何表达式,,4.4 提供简单选择的控件 4.4.1 使用“框架”控件(Frame) “框架”控件也是一种容器控件,在框架控件中的控件可以随着框架一起移动。框架控件的常用属性有:Name,Caption,Font等。 注意:框架控件另一重要作用是:用来对选项按钮进行分组。

28、,4.4.2 选项按钮(OptionButton) 一、使用选项按钮组 (一般用框架(Frame)控件来组织一个选项组) 1、常用属性 caption,alignment value:控件的选择状态(True,False) style:使用图形选项按钮 2、事件 click,4.4.3 复选框(CheckBox) 选项按钮组属于多项中选择一项的选择,若许选 择多项的情况,则可以采用多哥复选框控件。 1、常用属性 caption,alignment value:决定复选框的状态 0假(没选中) 1真(选中) 2暗(缺省) style 2、事件 click,4.4.4 计时控件器(Timer) 计

29、时器控件(Timer)按指定时间间隔重复的发生它的timer事件。 主要属性: Enable:定时器是否开始工作的设置 Interval:设置定时器触发的周期,以毫秒 计算,取值范围为:064767 唯一事件: Timer,例: 设计一个电子时钟。,例: 设计一个跑秒表。,例: 屏幕滚动字幕,第四章 END,第五章 循环结构程序设计,5.1 循环概念 5.2 循环结构及循环程序 5.3 循环程序设计举例,5.1 循环结构程序设计的概念 VB提供的设计循环结构的语句有: Do Loop WhileWend ForNext ForEach Next,条件成立,需重复执行的语句,是,否,执行后续语句

30、,5.2 循环结构及循环程序,5.2.1 设计循环结构的基本原理 构造循环结构的三个要素 (1)构造循环体:需要重复执行的语句 (2)设置循环出口:停下重复工作的条件 人为约定条件方式 计数方式 (3)初始化,5.2.2 用循环语句写循环程序 1)WHILE 循环结构 格式: WHILE 循环体 WEND,执行过程: (1)对“条件”进行求值,判断条件是“真”还是“假”; (2)如果“条件”为真,则执行循环体,执行完之后再转到(1)执行;如果“条件”为“假”,则转到(3); (3)结束循环体的执行,跳到WEND的下一个语句执行。,2)Do.Loop共有三大类语法格式 下面分别介绍之: 无条件循

31、环结构 前测型循环结构 后测型循环结构 有五种语法形式:,(1)无条件循环型 语法格式: Do 循环体 Loop 退出循环语句:EXIT DO,(2)当型DoLoop循环,Do While Exit Do Loop,Do Until Exit Do Loop,(3)直到型DoLoop循环,Do Exit Do Loop While ,Do Exit Do Loop until ,3) ForNext 语句 当已知循环次数时,可用ForNext循环。For循环使用一个循环变量,每重复一次循环后,循环变量会自动增加或减少。 流程图:,格式为: For = To Step Exit For Next

32、 ,5.3 循环程序设计举例: 1、计算1+2+3+100的结果。 2、判断输入的数是否是素数。 方法: 判断一个自然数n(n3)是否素数,只要依次用2-n 作除数去除n,若n不能被其中任何一个数整除,则n即为素数.,5.4 列表框与组合框控件 5.4.1 列表框(ListBox) 1)常用属性 (1)Name属性 (2)List属性 该属性是一个字符型数组,存放列表框或组合框的选项。List数组的下标从0开始。,(3)ListIndex 该属性只能在代码中设置或引用。ListIndex的值 表示程序运行时被选定选项的序号。如果未选中 任何选项,则ListIndex的值为-1。 (4)List

33、Count 该属性只能在代码中设置或引用。其值表示列表 框或组合框中项目的数量。 (5)Sorted 该属性只能在属性窗口设置。其决定在程序运行 期间列表框或组合框的选项是否按字母顺序排列 显示。,(7)Text属性 只能在代码中设置或引用。其表示被选定的文本 内容,该属性不能被赋值,只能使用。 如: Label1.caption=List1.text Combo1.additem Combo1.text,(6)Selected 该属性只能在代码中设置或引用,是一个逻辑数组,其元素对应列表框中相应的项,表示对应的项在程序运行过程中是否被选中。 如果 List1.Selected(0)=True

34、,表示第一项被选中。,2)事件 列表框:Click事件和DblClick事件 3)方法 (1)AddItem:把一个选项加入列表框或组合框。 格式如下: 对象.AddItem item,index,(2)RemoveItem: 从列表框或组合框中删除一个选项。 格式如下: 对象.RemoveItem index,(3)Clear方法: 可以清除列表框或组合框的所有内容。 格式如下: 对象.Clear 说明: 对象:可以是列表框或组合框;,4)列表框表项的输出 输出列表框中的表项的常用方法: 用鼠标单击列表框内某一表项,则该表项值存放在Text属性中。 指定索引号以获取表项的内容。,5.4.2

35、组合框的常用属性 (1)Style属性 决定组合框的类型和行为,它的值为0,1或2,1,0,2,下拉式组合框,简单组合框。,下拉式列表框,(2)事件 组合框:Click事件,keypress(style=0,1) (只有简单组合框才能接收DblClick事件),第五章 END,第六章 数 组,6.1 数组的概念 6.2 数组的声明和应用 6.3 动态数组及声明 6.4 For EachNext循环语句 6.5 控件数组,6.1 数组的概念,6.1.1 数组与数组元素 6.1.2 数组的下标与维数,6.1.1 数组与数组元素 1、数组: 如果某些数据是有内在联系的,是具有相同属性的(如10个学生

36、的成绩),可以把这批数据看作一个有机的整体,称为数组(array) 用序号或下标来区分各个数据。,概念:是用一个统一的名称来表示的、顺序排列的一组变量。,2、数组元素: 数组中的变量称为数组元素,用序号来标识它们。可以用数组名及一个序号的标识一个数组元素。如:a(5)表示名称为a的数组中序号为5的那个数组元素(变量)。,数组元素,6.1.2 数组的下标与维数 1数组的下标 数组的下标可以是常数、变量、表达式或另一个数组的元素。下标值可以是正整数、0和负整数,如果带有小数部分将会自动地对它四舍五入取整。,2数组的维数 如果数组元素只使用一个下标就可以标明元素的位置,则称这个数组为一维数组。 例如

37、:a(2),s(5) 如果数组元素要使用二个下标才能标明元素的位置,则称这个数组为二维数组。 例如:a(2,2),s(3,4),1)指定下标的上界 Dim 数组名(下标上界) As 类型名 Dim 数组名(第一维下标上界,第二维下标上界) As 类型名,2)指定下标的取值范围 Dim 数组名(下标下界 To 下标上界) AS 类型名 Dim 数组名(下标下界 To 下标上界,第二维的下界 to 上界) AS 类型名,6.2.1 数组声明语句,6.2 数组的声明和应用,用Array函数,根据数据表生成一个一维数组。Array函数返回一个包含数据表中数据的Variant类型数组,其使用格式为: 变

38、体名=Array(数据表) 例如: dim a as variant a=array(2,5,6,8,10,5,9),6.2.2 Array函数,其中: “变体名”是预先定义的类型为变体的数组名; “数据表”是一个用逗号隔开的值表,这些值用于给函数返回的Variant所包含的数组各元素赋值; 只能生成一维数组。下标默认为0开始,如有Option Base 1,则为1开始。,6.2.3 数组应用,例6-1: 斐波那契(Fibonacci)数列如下: 1,1,2,3,5,8,13,21,试求出该数列的前30项。,假定有n个数的序列,存放在数组 a(1 to n) 中要求按递增的次序排序。 算法的步

39、骤如下:,例6-6:数组排序,(1)第1轮:先将a(1)与a(2)比较,若a(2)a(1),则将a(1)与a(2)的值交换,a(1)存放较小者。再将a(1)与a(3)、a(n)比较,并依次作出同样的处理,n个数中的最小者放入a(1)中,完成了第一轮比较。 (2)第2轮:将a(2)与a(3)、a(n),并依次作出同样的处理,第一轮余下的n-1个数中的最小者放入a(2)中,完成了第二轮比较。 (3)继续进行第3轮、第四轮、直到第n-1轮,余下的a(n)就是n个数中的最大者。,排序过程如下:,原始数据 8 6 9 3 2 7,a(1) a(2) a(3) a(4) a(5) a(6) 第1轮交换后

40、2 8 9 6 3 7,a(2) a(3) a(4) a(5) a(6) 第2轮交换后 2 3 9 6 8 7,a(3) a(4) a(5) a(6) 第3轮交换后 2 3 6 9 8 7,a(4) a(5) a(6) 第4轮交换后 2 3 6 7 8 9,a(5) a(6) 第5轮交换后 2 3 6 7 8 9,例:对已知存放在数组中的6个数,用选择排序按递增顺序排序。,静态数组-在声明时已确定了大小的数组,其在程序运行过程中是不变的。 动态数组-在声明时未给出数组的大小(省略括号中的下标),当要使用它时,随时用ReDim语句重新指出数组的大小。 建立动态数组的方法:使用Dim语句声明下标括

41、号内为空的数组,然后在过程中用ReDim语句指明该数组的大小。,6.3 动态数组,6.3.1 建立动态数组 (1)声明动态数组 Dim DynArray() (2)用Redim分配实际元素个数 ReDim 数组名(下标,下标2)As 类型,6.3.2 保留动态数组的内容 每次执行ReDim语句时,当前存储在数组中的值都会全部丢失。当希望改变数组大小,但又不丢失数组中原有的数据,使用具有Preserve关键字的ReDim语句就可做到这点。 UBound函数引用数组下标的上界:UBound(数组名,维序号) LBound函数引用数组下标的下界:LBound(数组名,维序号) 例如: ReDim P

42、reserve Array(UBound (Array) + 1) 注意:在用Preserve关键字时,只能改变多维数组中最后一维的上界。,6.3.3 数组刷新语句 数组刷新语句(Erase)可以作用于固定数组和动态数组,清除大小固定的数组的元素的内容,释放动态数组占用的存储空间。 其语法格式为: Erase 数组名表 说明: 对固定大小(静态)数组,Erase语句将数组重新初始化; 对于动态数组,Erase将释放动态数组所使用的内存空间。,6.4 For EachNext语句 For EachNext语句是专门用于数组或集合的循环语句。对数组或集合中的每个元素逐个重复循环。 功能:对数组元素

43、进行查询,显示或读取。循环的次数与数组元素的个数相等。,格式: For Each In Exit For Next 其中:内的内容实际就是数组或集合中的每个元素,用一个变量代表,是一个数组名,没有括号上下界 。,注意: 不能用此语句对普通的数组元素作“赋值”的操作,因为语句中的表示数组元素的值,不是数组元素本身。但是可以对控件数组中的每个控件的属性作赋值操作。,6.5 控件数组 6.5.1 控件数组的概念 控件数组是由一组相同类型的控件组成。他们共用一个控件名,具有相同的name属性。当建立控件数组时,系统给每个元素赋一个唯一的索引号(Index),通过属性窗口的Index属性,可以知道该控件

44、的下标是多少,第一个是0。 为了区分控件数组的各个元素,VB会把下标值传送给过程(即返回给index): Private Sub Command1_Click(Index As Integer),6.5.2 控件数组的建立。 3种方法: 1、改变控件的名称 2、复制现有控件 3、指定控件的索引值,6.5.3 控件数组的使用 一般用于实现控件和选项按钮分组。 1、命令按钮组 例:单击每个命令按钮时显示按钮对应的序号。 2、选项按钮组 3、标签组,第六章 END,第七章 过 程,7.1 通用过程 7.2 参数传递 7.3 过程的嵌套与递归调用 7.4 变量、过程的作用域 7.5 多窗体与Sub M

45、ain过程,在 Visual Basic中最常使用下列两种通用过程: Sub 过程不返回值,称为子过程。 Function 过程返回值,称为函数过程。,7.1 通用过程,1)Sub过程的定义 两种定义方法: (1)利用“工具”菜单下的“添加过程”命令定义,7.1.1 Sub过程,(2)利用代码窗口直接定义 定义格式如下: Private|PublicStatic Sub (形参) 语句组 Exit Sub 语句组 End Sub,2)Sub过程的调用 Sub过程不能够被直接执行,只能够通过其他过程调用它,才能被执行。 Sub过程的调用是一句独立的调用语句,有两种形式: Call 子过程名(实参

46、表列) 子过程名 实参表列,1)函数过程的定义 格式: Private |Public Static Function AS = Exit Function End Function,7.1.2 Function过程,2)函数过程的调用 函数过程的调用:除了事先需要定义函数外, 调用FUNCTION函数的方法与调用标准函数的方法 相同。其形式为: 函数过程名(参数列表) 如:m=fact(5) 由于函数过程名返回一个值,故函数过程不 能作为单独的语句加以调用,它必须作为表达 式或表达式的一部分,再配以其他的语法成分构 成语句。,7.2 参数传递 7.2.1 形式参数与实际参数的概念 1、形式参

47、数 形式参数在定义通用过程时,出现在Sub或 Function语句中的变量名,是接收数据的变量。 2、实际参数 实际参数在调用Sub或Function过程时,传送给 Sub或Function过程的常量、变量或表达式。,7.2.2 参数按地址传递和按值传递 1)按值传递如果调用语句中的实际参数是常 量或表达式,或者定义过程时用ByVal关键字,就 可以按值传递。按值传递时,传递的只是变量的 副本!在过程中对形参的变化不会影响变量本身. 如果定义过程时没有用ByVal而又要求变量按值传 递时,可以先把变量变成一个表达式,把变量转 换成表达式的最简单的方法就是把它放在括号内。,2)按址传递让过程根据

48、变量的内存地址去访问变量的内容,即形式参数和实际参数使用相同的内存地址单元,这样通过子过程就可以改变变量本身的值。系统缺省按地址传递参数。在按址传递调用时,实际参数必须是变量,而常量或表达式无法传址。,3)数组参数的传递 在VB中允许参数是数组,数组只能通过传址方式 进行传递,在传递数组时还要注意以下事项: (1)在实参列表和形参列表中放入数组名,忽略维数的定义,但圆括号不能省略。 (2)如果要传递数组的某一个元素,则只须直接写上该数组元素。如:Call test(4,(3)),7.3 过程的嵌套与递归调用 嵌套在一个过程中调用另一个过程 递归过程直接或间接地调用其自身,7.3.1 过程的嵌套

49、调用,主程序,调用Sprg1,End Sub,Sprg1,调用Sprg2,End Sub,Sprg2,End Sub,过程的嵌套图解,7.3.2 过程的递归调用 使用递归调用的条件是: 可以把要解决的问题转化为一个新的问题,而这个新的问题的解法仍与原来的解法相同,只是所处理的对象有规律地递增或递减。 可以用上述转化过程使问题得到解决。 有一个明确的结束递归的条件。,7.4 变量、过程的作用域 7.4.1 代码模块的概念,1)窗体模块 由于 Visual Basic 应用程序是基于对象的,所以应用程序的代码结构就是该程序在屏幕上物理表示的模型。根据定义,对象包含数据和代码。在屏幕上看到的窗体代表

50、属性,这些属性定义了窗体的外观和内在特性。应用程序中的每个窗体都有一个包含其代码的相关的窗体模块(文件扩展名为 .FRM)。 窗体模块的创建,保存和移出操作。,每个窗体模块都包含: 事件过程,即代码部分,其中有为响应特定事件而执行的指令; 控件。在窗体模块中,对窗体上的每个控件都有一个对应的事件过程集; 窗体模块还可包含通用过程,它对来自任何事件过程的调用都作出响应。 窗体变量的说明、外部过程的窗体级声明。,2)标准模块 标准模块(具有 .bas 文件扩展名)可以包含类型、常数、变量、外部过程和公共过程的公共的或模块级的声明。 可将那些与特定窗体或控件无关的代码放入另一类型的模块 标准模块(文

51、件扩展名为 .BAS )中。如果一个过程可能用来响应几个不同对象中的事件,应该将这个过程放在标准模块中,而不应在每一个对象的事件过程中重复相同的代码。,3)类模块 类模块(具有 .cls 文件扩展名)与窗体模块类似,只是没有可见的用户界面。可以使用类模块创建含有方法和属性代码的自己的对象。 用类模块(文件扩展名为 .CLS )创建对象,这些对象可被应用程序内的过程调用。标准模块只包含代码,而类模块既包含代码又包含数据,可视为没有物理表示的控件。,7.4.2 变量的作用域 变量的作用域决定了哪些子过程和函数过程可以 访问该变量。 1、局部(过程级)变量 指在过程内用Dim语句声明的变量(或不加声

52、明直接使用的变量),只能在本过程中使用的变量,别的过程不可访问。 2、窗体(模块级)变量 指在一窗体/模块的任何过程,即在“通用声明”段中用Dim 语句或用Private语句声明的变量,可被本窗体/模块的任何过程访问。,3、全局变量 指只能在标准模块的任何过程或函数外,即在“通用声明”段中用Public语句声明的变量,可被应用程序的任何过程或函数过程。 下面标准模块文件中进行不同级的变量声明: Public Pa As integer Private Mb string *10 Sub f( ) Dim Fa As integer End Sub,全局变量,窗体/模块级变量,局部变量,7.4.

53、3 变量的生存期 1、动态变量:指程序运行进入变量所在的过程时,才分派该变量的内存单元,过程执行结束后变量的空间被释放。 用DIM 语句在过程中声明的局部变量都属于动态变量。 2、静态变量:在程序运行过程中可保留变量的值,每次调用过程时,用Static说明的变量保持原来的值,而用Dim声明的变量,每次调用过程时,重新初始化。,静态变量的声明形式如下: Static 变量名 AS 类型 Static Function 函数名(参数列表)AS类型 Static Sub 过程名(参数列表) 若在函数、过程名前加Static,表示该函数、过程内的局部变量都是静态变量。下面的例子比较Dim和Static

54、两者说明变量的区别。,7.4.4 过程的作用域 1、窗体/模块级 指在某个窗体或标准模块内定义的过程,定义的 子过程或函数过程前加Private关键字,过程只能被 本窗体(在本窗体内定义)或本标准模块(在本标准 模块内定义)中的过程调用。 2、全局级 指在窗体或标准模块内定义的过程,其默认是全 局的,也可以加Public关键字进行说明。全局级过 程可供该应用程序的所有窗体或标准模块中的过 程调用,但根据过程所处的位置不同,调用方式 有区别:,(1)在窗体定义的过程,外部过程要调用时,必须在过程名前加该过程名所在窗体名 (2)在标准模块定义的过程,外部过程均可调用,但过程名必须唯一,否则要加标准

55、模块名。,3 调用其他模块中的过程的格式 调用窗体过程的格式: Call 窗体名.sub 过程名(参数表) 窗体名.sub过程名 参数表 窗体名.function 过程名(参数表) 调用标准模块中的过程的格式: Call 模块名.sub 过程名(参数表) 模块名.sub过程名 参数表 模块名.function 过程名(参数表),7.5 多窗体与Sub Main过程 在一个VB应用程序中,允许创建多个窗体,多个标准标块和类模块。本节简要地讨论有关多窗体编程的有问题。 7.5.1 多窗体处理 添加窗体 删除窗体 保存窗体 设置启动窗体 有关语句和方法 :load,unload,show,hide,

56、7.5.2 Sum Main过程 有时在程序启动时不需要加载任何窗体,而是首先执行一段程序代码,例如,需要根据某种条件来决定显示几个不同窗体中的哪一个? 要做到这一点,可以在标准模块中创建一个名为Main的Sub过程,把首先要执行的程序代码放在该Sub Main过程中,并指定Sub Main为“启动对象”。在一个工程中只能有一个Sub Main过程。,第七章 END,第八章 鼠标键盘事件,8.1 鼠标器和键盘 8.2 键盘和鼠标事件的应用,8.1.1 键盘事件,Keypress Keydown 和 keyup,Private Sub Text1_KeyPress(KeyAscii As Int

57、eger) Private Sub Text1_KeyDown( KeyCode As Integer, Shift As Integer) Private Sub Text1_KeyUp( KeyCode As Integer, Shift As Integer) Shift的含义: 三位二进制 b2 b1 b0 alt ctrl shift,8.1.2 鼠标事件,Mousedown Mouseup Mousemove,Private Sub Form_MouseDown( Button As Integer, Shift As Integer, X As Single, Y As Single),Private Sub Form_MouseUp( Button As Integer, Shift As Integer, X As Single, Y As Single),Private Sub Form_MouseMove( Button As Integer, Shift As Integer, X As Single, Y As Single),Button: 1 2 左 右,8.2 鼠标和键盘事件的应用,例8-1 设计程序,从键盘输入字符时,在窗体上立即显示所键入的字符和该字符的ASCII码。双击窗体时,清除窗

温馨提示

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

评论

0/150

提交评论