VB自定义函数与子过程
Visual Basic 6.0程序设计及应用_第2章_vb

第2课Visual Basic语言基础本章学习目标:基本语言规则数据类型运算符与表达式语言结构子过程与函数本章要点:语言规则语言结构2.1课前导读Visual Basic语言是在BASIC语言的基础上进一步发展而来,不但保留了BASIC语言简单易用的特点,而且增加了面向对象和结构化的编程方法。
由于Visual Basic程序代码可读性强、运行速度快、数据类型丰富、语法与自然语言接近及结构严谨,从而成为众多程序员首选的编程语言。
Visual Basic是真正易学易用的结构化语言,以至于专业人员可以用Visual Basic 实现其他Windows编程语言的功能,初学者只要掌握一些关键语法就可以建立实用的应用程序。
2.2.6 运算符与表达式表达式是关键字、运算符、变量和常数的组合,其值可以是字符串、数值或者对象。
表达式可以用来执行算式、操作字符或是检测数据。
表达式书写规则:从左到右在一行上书写,无高低之分;可以用圆括号括起,以提高运算的优先级或增加表达式的清晰度。
不能使用方括号或花括号,圆括号可以出现多个,但必须配对使用。
1.算术运算符与表达式算术运算符是指用于执行实数或整数运算的操作符,主要包括+(加法)、-(减法)、*(乘法)、^(指数运算)、/(除法)、\(取模数)、Mod(取余数)。
各个算术运算符的作用见表2-3,表中MyValue的值为3。
2.字符运算符与表达式字符串运算符有两个:“&”和“+”,它们都是将两个字符串连接起来。
两者的区别是:(1)“+”:连接符两旁若一个为数字字符型或逻辑型,另一个为数值型,则自动转换为数值型,然后进行算术加运算;若一个为非数字字符型,另一个为数值型,则出错。
(2)“&”:连接符两旁的操作数不管是字符型还是数值型,则在进行连接操作前,系统先将操作数转换成字符型,然后再连接。
3.比较运算符与表达式比较运算符用来表示两个或多个值或表达式之间的关系,结果为逻辑常数。
《程序设计基础—VB程序实验》

《程序设计基础—VB程序实验》说明:实验1和实验2均为电子实验报告,后面8个实验是纸制实验报告。
实验1 计算机基本操作实验目的⑴熟悉计算机,能够正确进行开、关机操作。
⑵熟悉键盘,掌握键盘上所有字符的输入,掌握正确的指法,能够进行中、英文切换。
⑶理解操作系统概念,掌握Windows XP的基本操作,能够利用“控制面板”进行一些参数的设置。
⑷知道“回收站”的功能,学会有关文件、文件夹的基本操作。
⑸学会在计算机上搜索或查找相关的文件或文件夹,掌握通配符的使用。
实验内容⑴熟悉上机实验的计算机,熟悉键盘,学会中、英文输入方式的转换。
⑵学会用正确的指法进行输入,知道键盘上所有字符的输入。
⑶利用“控制面板”修改系统时间、桌面背景、鼠标属性。
⑷在桌面上新建一个文件夹,该文件夹以学生自己的名字+班级+学号的后3位命名。
⑸用文本方式或Word文档,写一段字数不少于300字的自我介绍,以1.doc命名并保存到上述文件夹中。
⑹将上述文件夹复制到ftp://10.10.9.222上。
实验2 常用软件的基本操作实验目的⑴了解Word功能,掌握Word的基本操作,包括页眉/页脚的设置、分栏、页面设置、添加底纹等。
⑵学会文件的保存与打开、打印预览、段落的间隔、首字符位置改变等,能够在Word中插入图片、表格、艺术字、特殊符号等。
⑶了解Excel的功能,掌握Excel的基本操作,包括单元格属性的设置、数字的几种填充形式、单元格的合并与恢复、边框的设置等。
⑷掌握Excel的基本公式的使用,能够用公式进行基本计算。
掌握Excel中的图形制作方法,能够根据表格做出图形。
实验内容⑴将ftp上自己文件夹中的1.doc文件复制到桌面上,然后做如下处理:①将标题“自我介绍”居中;②将文章中第二段的内容进行分栏,要求中间有分割线;③插入一个4行4列的表格,内容为学号、姓名、某门课的成绩;④任意插入一张图片;⑤在文章中的任意位置加底纹。
将做好的文档以2.doc命名并保存。
VB程序设计教程 第四版 第6章

a
10
执行过程体
x a
20 10
返回
返回
20 Integer a = = : y b10 的地址 b 10 = 20 : b 10 aCall = Swap 10 : y b 的地址 2(a, b 10 = b) 20 : 10 b Call a = Text Swap b
汉字的机内码最高位为1,Asc函数码值为小于0(补码)
西文字符的最高位为0,Asc函数求其码值为大于0
Function CountC%(ByVal s$) Dim i%, k% Dim c As Char For i = 1 To Len(s) c = Mid(s, i, 1) If Asc(c) < 0 Then k = k + 1 Next CountC = k End Function Sub Command1_Click() Dim c1% c1 = CountC(Text1.Text) 显示 Text1.Text 和 C 1 End Sub
Functioc Count%(st$) Dim i% Count = 0 i = InStr(st, “ the ") Do While (i > 0) Count = Count + 1 st = Mid(st, i + 1) i = InStr(st, “ the ") Loop VB 程序设计教程 End Function
Z←gcd
例6.2 设断点演示过程
调用形式:函数过程名([参数列表])
参数列表(称为实参或实元):必须与形参个数相同,位置与 类型一一对应。可以是同类型的常量、变量、表达式。
vb最基础入门教程从零开始

vb最基础入门教程从零开始目录一、基础知识篇 (3)二、编程基础篇 (5)2.1 界面设计 (6)2.1.1 创建窗体 (8)2.1.2 添加控件 (8)2.1.3 设置属性 (9)2.2 事件处理 (11)2.2.1 捕获事件 (12)2.2.2 事件处理程序 (13)2.3 调试与错误处理 (14)2.3.1 调试工具 (15)2.3.2 错误类型 (17)2.3.3 错误处理语句 (18)三、进阶知识篇 (19)3.1 数组与集合 (21)3.1.1 数组的创建与使用 (21)3.1.2 集合的使用 (22)3.2 文件操作 (24)3.2.1 读取文件 (25)3.2.2 写入文件 (25)3.2.3 文件路径与名称操作 (27)3.3 数据库操作 (27)3.3.1 连接数据库 (29)3.3.2 执行SQL查询 (30)3.3.3 处理数据库结果 (31)四、实战项目篇 (32)4.1 计算器 (33)4.1.1 项目需求分析 (34)4.1.2 项目设计 (35)4.1.3 项目实现 (35)4.2 图书管理系统 (37)4.2.1 项目需求分析 (38)4.2.2 项目设计 (39)4.2.3 项目实现 (40)4.3 学生管理系统 (41)4.3.1 项目需求分析 (41)4.3.2 项目设计 (42)4.3.3 项目实现 (43)五、总结与展望 (44)5.1 课程总结 (45)5.2 学习建议 (46)5.3 VB未来发展展望 (47)一、基础知识篇在开始学习Visual Basic(VB)编程之前,我们需要了解一些基础知识,以便更好地理解VB的概念和编程技巧。
Visual Basic是一种由微软开发的事件驱动的编程语言,它使用简单的文本来创建强大的应用程序。
VB广泛应用于Windows应用程序开发,尤其是桌面应用程序。
由于其简洁的语法和丰富的功能,VB成为了初学者学习编程的理想选择。
教案(11)VB-参数传递(11)

个数、类型、位置、次序一一对应。
形参是值传递,对应实参可以是表达式、常量、数 组元素。 形参是地址传递,对应实参只能是简单变量。 数组、记录类型、对象只能是地址传递。
3Байду номын сангаас3
参数的传递
Visual Basic中不同模块(过程)之间数据的 传递有两种方式: • 通过过程调用实参与形参的结合实现; • 使用全局变量来实现各过程中共享数据。
9 9
按值传递和按地址传递
2.按地址传递 按地址传递即指将实参的地址传给形参,使形参 和实参具有相同的地址,即形参与实参共享同一存 储单元。当实参为变量或数组时,形参使用关键字 ByRef定义(或省略),表示要按地址传递。 当参数是数组时,数组名之后必须使用一对空的圆 括号。 按地址传递可以实现调用过程与子过程之间数据的 双向传递。
12
使用过程注意事项
1. 确定自定义的过程是子过程还是函数过程 函数过程名有值,子过程名无值。 2.过程中形参的个数和传递方式的确定 过程中参数的作用是实现过程与调用者的数据通信。 (1)从主调程序获得初值,值传递。 (2)将结果返回给主调程序,地址传递。 3. 实参与形参结合时对应问题 个数、类型、位置、次序一一对应。 形参是值传递,对应实参可以是表达式、常量、数组元素。 形参是地址传递,对应实参只能是简单变量。 数组、记录类型、对象只能是地址传递。
10
10
数据传递的几点说明
1.参数的数据类型 2.按值传递参数 形参是实参的一个副本 3.按地址传递参数 形参实参公用内存单元 4.子过程执行一系列操作,函数过程返回一个值
注意:如果实参是常量(系统常量、符号常量)或者 表达式,则无论定义时使用值传递还是地址传递, 都是按值传递将常量或者表达式的计算值传递给形 参。
第三章 VB基本语法

Dim a(10) As Integer
2、多维数组
如:student.strname表示学生姓名
3.3 变量与常量 命名规则: (1)必须以字母或汉字开头,由字母、汉字、 数字或下划线组成,长度小于255个字符; (2)不能用VB中关键字; (3)不区分大小写字母; (4)最好在变量名前加可以用来表明变量数据 类型的前缀。
1、变量: 在程序运行的过程中可以变化的量。 声明方式: (1)用Dim语句 Dim 变量名 [As 类型] 注意: 若省略“As 类型”,则为变体类 型 变量名后可以加类型符来代替“As 类型” 一条Dim语句可以同时定义多个变量。
5、Select Case语句(情况语句)
Select Case 变量或表达式 Case 表达式列表1 语句块1 语句块2 · · · · · · · · · · · · · · [Case Else 语句块n+1] End Select
可以是数值 型或字符型
用逗号分隔的枚举表达式;
Байду номын сангаас
Case 表达式列表2 表达式1 To 表达式2; Is 关系运算符表达式。
所有的变量都具有数据类型,变量的数据类型 决定了如何把变量的值存储到计算机的内存中。 3.2.1 标准数据类型 3.2.2 自定义类型 定义正确数据类型的意义: 1、减少错误发生
2、节省内存
1、数值数据类型
Visual Basic 的数值型数据分为整型数和浮点数 两类。其中整型数又分为整数和长整数,浮点 数分为单精度浮点数和双精度浮点数。 (1)整型数(integer): 不带小数点和指数符号的数。
Else
<语句块2>
语句块1
vb6.0代码

Chr(asc):转换ASCII为字符 Enter:Chr(13)&Chr(10)
Filter(数组名称,关键字符串,[,包含][,比较方法]):
将字符串数组中含有关键字符串的元素存成新的数组(默认) [包含]为false则取不包含的元素
oin(ArrayName):将数组中元素连成字符串
date:取系统当前日期
time:取系统当前时间
now:取系统当前时间及日期值 Datetime类型
timer:取当前时间距离零点秒值,计时器,可计算时间差
DateAdd(间隔单位,间隔值,日期):推算相邻日期
DateDiff(间隔单位,日期一,日期二):计算时间差 日期二-日期一
Datepart(间隔单位,日期):计算日期的间隔单位值
3.数据类型转换函数:
Cint(str):转换正数 True -1;False 0;日期 距离1899/12/31天数;时间 上午段 0;下午段 1;
Cstr(str):日期 输出格式 yyyy/mm/dd;时间 输出格式 Am/Pm hh:mm:ss
Clng(str):与Cin()类似
Cbool(num):num不为零 True;反之 False
Cdate(str):转换日期格式 0:#Am 12:00:00#;正数 距离1899/12/31天数的日期;浮点数 日期+小数时间
Cbyte(num):num<255 转换为字节
Csng(str):转换为单精度数值
Cdbl(str):转换为双精度数值
Ccur(str):转换为现金格式
4.时间函数:
VB15

设计方法:
&字母
下拉式菜单事件菜单项编写单击事件代码。
单击菜单项,在代码窗口输入各菜单项 功能代码
Private Sub ………… 菜单项名_Click()
End Sub
快捷菜单(弹出式菜单)
• 设计一个两层菜单 • 可设顶层菜单项为不可见
• 通过某个事件过程(一般是右击鼠标)
类型。如 Word文挡|*.DOC|文本文件|*.txt|所有文件|*.* 4. InitDir(初始化路径)属性:该属性用来指定打开对话 框中的初始目录,若不设置,系统则默认为“C:\My Documents\”。
例:设计一个简单的图片浏览程序, 可以加载显示图片,也可保存图片。
VB程序中复制文件的语句:
整个数组只能是地址传递。 3. 变量的作用域问题 Call test(a, b + 3, 5,c(4))
局部变量、全局变量特点、作用
应用程序的构成
应用程序
工程文件(.VBP) 窗体模块 (.FRM) 类模块 (.CLS) 标准模块 (.BAS)
子过程 (Sub) 函数过程 (Function)
函数过程 子过程 事件过程 (Function) (Sub) (Sub)
插入(Insert)按钮:插入菜单项
删除(Delete)按钮:删除菜单项
↓和↑按钮:
改变菜单项位置。
例:制作一个编辑器,中间是文本框,菜单 如下所示,对清除、退出、绿色、红色、 查找菜单编写程序代码。
两个框中的子菜单 分别作成控件数组
连续的、相同级别的 子菜单才可以成为控 件数组
编辑菜单步骤
•逐条输入菜单项标题、名称(控件 名,不可少),设置层次关系、相 对位置等。 •下拉菜单分隔线,标题设为“-”
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8.2 自定义函数过程
8.2.2 函数过程的定义
函数过程在被调用前,一定要先定义,函数定义的方式一般 有两种: 1.利用“添加过程”对话框定义
打开窗体或模块的代码窗口,单击“工具”菜单,选 择“添加过程”命令,即可打开“添加过程”对话框。
8.2 自定义函数过程
在“添加过程”对话框中输入并选择相应的内容和 项目即可。在“名称”文本框内输入待定义函数过程的名称, 在“类型”选项组中选择“函数”单选按钮。
Print "Va="; Va, "Vb="; Vb
'输出原始值
Call Cp(Va, Vb)
Print "在主调过程中调用子过程后的值"
'输出经子
过程处理过后的返回值
Print "Va="; Va, "Vb="; Vb
End Sub
运行结果:
程序运行后,单击窗体以触发Form_Click()事件过 程,运行结果如下图所示。
For K = 3 To N / 2
'第一个数的取值区间折半
If prime(K) And prime(N - K) Then ‘二次调用结果都是
素数输出
Print I; ":"; N; "="; K; "+"; N - K
Exit For
'退出k循环
End If
Next K
I=I+1
Next N
End Sub
⑤④
3)x和y获得初值后,即可执行函数过程中的程序 ①
代码并给函数过程名赋值,该值即为整个函数过程
②
的返回值;
③
4)函数执行结束后,函数的返回值将赋给主调事 件过程的变量s;
⑤④
5)变量s得到赋值后,接着执行调用函数过程后面
的剩余语句。
8.3 子过程的定义和调用
引例 调用函数后,将得到函数的返回值,但是,在有些问
例8.2 设计一个程序统计字符串中西文字符个数。
算法:汉字的Asc()函数的返回值小于0;西文字符的Asc()函数
的返回值大于0。
Function CountXw%(ByVal S$)
Dim I%, T%, K%, C$
For I = 1 To Len(S)
C = Mid(S, I, 1)
'逐个地取出字符
说明
3)[(<形参列表>)]:该项中的参数为形式参数,又称哑元, 可以是变量名或数组名,当参数为数组名时,形参和实参在 参数声明时应省略其维数,但括号()不能省略。当参数有多 项时,参数间要用逗号分隔开。使用格式为[ByVal|ByRef]< 变量名>[As<数据类型>] 4)ByVal:表示调用时参数为值传递方式,实参的值不随形 参值的变化而变化;
第八章 自定义函数与子过程
几个概念
一、VB程序的基本构成是过程。 二、VB6.0中过程有两大类:内部过程和外部过程。 1、内部过程:系统提供的,不需要用户编写,如内部函数。 2、外部过程:用户根据需要定义的,供调用的程序段,外部 过程分为子过程、函数过程。
几个概念
三、在VB中使用过程编程有两个优点: 1、过程可使程序划分成离散的逻辑单元,每个单元都比没有 使用过程的整个程序容易调试。 2、一个程序中的过程,往往不必修改或只需稍作改动,便可 以成为另一个程序的构件。 四、Visual Basic 的两类过程: 1、Sub 过程(子过程),不返回值或多个返回值。 2、Function 过程(函数过程),有一个返回值。
例如: Private Sub Command1_Click()
a=”Visual Basic” b= “6.0” Call Link(a,b) End Sub
此时,将输入的值a和b作为实参调用Link子过程, 通过调用将两个实参传递给形参,然后在过程中计算。
6.2 子过程的定义和调用
例:分别计算两个数的和与差,而当两个数的值均 为0时则不进行任何计算。
Sub Operation(x As Integer , y As Integer) Dim t1 as Integer, t2 as Integer If x =0 and y=0 Then Exit Sub End If t1=x+y t2=x-y Print “t1=”;t1; “t2=”;t2
‘ 调用CountXw函数
Picture1.Print Text1 ' 在Picture1中显示统计的结果
Picture1.Print "有"; C1; "个西文字符数"
End Sub
8.2 自定义函数过程
8.2.3 函数过程的调用
1.函数调用的形式 其调用形式如下:
变量=函数过程名(实参列表)
其中,实参列表中的实参是传递给被调用过程的变量或表达式。 例题8.2中的C1 = CountXw(Text1.Text) 就是一次函数调用。
从程序中可以看到,Va和Vb的初值分别是45和23, 而在窗体中输出时Va和Vb的值分别是23和45,达到了两个数 交换的目的。
8.3 子过程的定义和调用
8.3.1 子过程的定义
子过程以过程名来标识,被其它过程调用。子过程与 事件过程有一定区别,事件过程可以在该事件触发或调用时 执行,而用户自定义的子过程只有在被其它过程调用时才能 执行。
[<语句块1>] [函数名=<表达式>] [Exit Function] [<语句块2>] [函数名=<表达式>] End Function
说明
1)[Public或Private]:表示函数是“公有的”或“私有的”。 Public表示该函数为公有过程,定义后整个程序范围内均可调 用该函数,但调用时必须加上该函数所在的窗体或标准模块作 为前辍,而Private表示私有子过程,用它定义的函数只能在本 窗体或模块中被调用。缺省默认是公有的。 2)[Static]:表示函数中的局部变量是静态变量,在函数被调 用后,其值仍然被保留;
题的中,过程执行结束后不需要返回值,用函数过程实现就会 非常困难,而应该使用子过程的形式。
例8.3 试编写一个将两个数进行交换的过程供其它过 程多次调用。
分析:先编写一个具有将两个数进行交换的子过程,需 要进行两数交换时,调用该子过程,同时将待交换的两个数传 送到该子过程中,在子过程实现两数交换。子过程执行结束后, 将被交换后的两个数返回到主调过程中。
If Asc(C) > 0 Then K = K + 1 '字符ASCII码大于
0,则个数累加1
Next I
CountXw = K '返回函数值
End Function
例8.2 设计一个程序统计字符串中西文字符个数。
Private Sub Command1_Click()
Dim C1%
C1 = CountXw(Text1.Text)
'函数取值False,则x不是素数
Exit Function
'函数结束
End If
Next I
End Function
8.2 自定义函数过程
‘在事件过程中调用以上定义的函数,得到结果。
Private Sub Form_Click()
Dim I%, N, K%
I=1
'计数
For N = 50 To 100 Step 2 '取偶数
个过程时的流程如下图所示。
Function Hypotenuse( x%,y%)
Hypotenuse = Sqr (x ^ 2 + y ^ 2) ①
②
End Function
Private Sub Command1_Click()
③
…… s = Hypotenuse(a,b)
⑤④
……
End Sub
函数过程调用的执行流程图
子过程的定义跟函数过程的定义相类似,在代码窗口 中输入Sub及子过程名即可,系统会自动加上End Sub与子过 程名后的一对括号(),然后即可在子过程的框架中输入程 序代码。
子过程的定义格式: [Private|Public][Static] Sub <过程名>[(<参数列表>)]
[<语句块1>] [Exit Sub] [<语句块2>] End Sub ——————————— 说明: [Public]|[Private]与[Static]:它们的含义和作用与函数 过程中相应的这些关键词相同。 [(<参数列表>)]:该项中参数的形式和调用方法也与函数过 程相同。 [Exit Sub]:退出过程,该项一般嵌套在if结构中使用,在 满足if条件时退出该过程。
说明
5)ByRef:参数默认选项,表示参数为地址传递方式,实参 的值随形参值的改变而改变,数组只能以传地址的方式引用;
6) As <类型>表示函数返回值的类型,默认为变体型。在 函数体内至少应对对函数名赋值一次。
7) [函数名=<表达式>],用于函数运行后返回一个值。如 在定义中未对函数名赋值,则将返回一个默认值。其中,数 值型为0,字符型为“”,变量型为Empty。 8) [Exit Function]用于退出函数过程,该项一般嵌套在 if结构中使用,在满足if条件时退出该函数过程。
End Subຫໍສະໝຸດ 6.2 子过程的定义和调用
在Sub 过程与Function 过程之间的区别:
1)子过程名无类型说明,在子过程中不能对子过程
名进行赋值。
2) 子过程的形式参数没有具体的值,只代表