vb过程
第7章VB过程和参数传递
VB程序设计教程
沈美莉 马银晓 陈孟建 编著
10
Function过程 第二节 Function过程
二、调用Function过程 调用 过程
Function过程的调用比较简单,可以象一个函数一样调用,其调用格式为: <过程名> = ([<实参表列>]) 【例题5.16】 编写一个求最大公约数(GCD)的函数过程,并调用该函数。 【程序代码】 (1)创建GCD函数 Function gcd(ByVal x As Integer, ByVal y As Integer) As Integer Dim reminder As Integer Do While y <> 0 reminder = x Mod y x = y y = reminder Loop gcd = x End Function
VB程序设计教程
沈美莉 马银晓 陈孟建 编著
5
Sub过程 第一节 Sub过程
二、调用sub过程 调用 过程 调用Sub过程有两种方法,一种方法是使用Call调用过程语句来调 用过程,另一种方法是将过程名作为一个语句来使用。 call调用语句 1.用call调用语句 (1)格式 Call 过程名 [(<实参表>)] (2)功能 Call语句把程序控制传递到一个Visual Basic语言的Sub过程。 Call语句调用一个过程时,如果过程本身没有参数,则<实参表> 和括号可以省略;否则,应给出相应的实际参数,并把参数放在 括号中。实际参数是传递给sub过程的变量或常数的。 例如: Call ppa(a,b)
VB程序设计教程
沈美莉 马银晓 陈孟建 编著
18
第三节 参数的传递
例如: Function fac(a,b) …… …… fac = fa End Function 调用fac函数时,可以使用以下语句来完成: Private Sub Command1_Click() …… …… Call fac(x,y) End sub 以上程序中的a和b是两个形式参数,而 x和y是两个实际参数。这样就完成了形参 与实参的结合,其关系如下图所示。
VB教程 第六章 过程、模块与类
2.按地址传递参数 按地址传递参数使过程用变量的内存地址去访问实际变量 的内容。结果,将变量传递给过程时,通过过程可永远改 变变量值。按地址传递参数在 Visual Basic 中是缺省的。 例如: Sub PostAccounts (intAcctNum as Integer) . '这里放语句。 End Sub 3.使用可选的参数 4.提供可选参数的缺省值 5.使用不定数量的参数
下面分别对被调用过程在窗体模块、类模块和标准模块三种 情况说明: ① 窗体中的过程 ② 类模块中的过程 ③ 标准模块中的过程
一个很好的例子: 交通信号灯控制的例子
一个重要的思想(递归 一个重要的思想 递归) 递归
递归就是一个过程调用自己来完成某个特定的 任务。在递归过程中,一个过程的某一步要用 到其自身的上一步或几步的结果。递归分为两 种类型:直接递归和间接递归。Visual Basic的 过程具有递归调用功能。 递归可能会导致堆栈上溢。通常 Static 关键字 和递归过程不在一起使用。使用递归过程要特 别小心,不加控制的递归通常会引起溢出堆栈 空间错误信息。如下例:
作用域不同([Private | Public | Friend]) 生命期不同([Static]) 但是arglist语法较简单:可选的。代表在调用时要传递给 Function 过程的参数变量列表。多个变量应用逗号隔开。 一点注意:若 Function 过程会改变某个数学表达式中变 量的值,则应避免在此表达式中使用该函数。例如: I=2 J=3 X=(Sum (I,J)+1)/Sum(I,J) Function Sum (A As Integer, B As Integer) As String A=A+2 Sum=A+B End Function 结果如何?怎么修改?
VB教程之 “过程”
5.4 过程递归调用
说明:
递归处理分递推和回归两个过程,如下图所示。
使用递归算法必须要满足以下的递归条件: (1)存在递归结束条件及结束时的值;
(2)能用递归形式表示,且递归向终止条件发展。
32
5.4 过程的递归调用
例2:编求菲波纳契数列f(n)的递归函数。
F(1) = 1 F(2) = 1 F(n) = F(n-1) + F(n-2)
17
一、判断正确与错误 1、在定义了一个函数后,可以象调用任何一个VB 内部函数一样使用它,即可以在任何表达式、 语句或函数中引用它。 ( ) 2、以下两个语句都调了名为Year(Now)的函 数 Call Year(Now) ( ) Year Now ( ) 二、Sub过程与Function 过程最根本的区别是 ___. A. Sub过程可以使用Call语句或直接使用过程名 调用,而Function过程不可以。 B. Function过程可以有参数,Sub过程不可以。 C. 两种过程参数的传递方式不同。 D. Sub过程不能返回值,而Function 过程能返回 值。 18
调用形式: 函数名(实参列表)
说明:调用函数不能独立成为一条语句,它必须是
语句的一部分。 如果不需要函数的返回值,则:
Call 函数名([参数列表]) 或 函数名 [参数列表]
注意:有Call关键字时,函数名后面必须有括号。
14
例5.3 设计一个由三角形的3条边长,计算其 面积的函数,如果3条边不能构成三角形,则弹 出消息框,提示出错。
21
例5.4:编写一个子过程,实现两个数据的交 换。
Sub Exchange(ByRef a As Double, ByRef b As Double) Dim t As Double t=a a=b b=t End Sub
VB第8章 过程
教案讲稿第八章过程[旧课复习]:复习内容:1.常用控件的使用,个人信息2.计时器Interval属性,Timer事件复习目的:加强控件和计时器的使用复习时长:大约5分钟[新课导入]:导入方式:通过调用函数引入函数的概念导入目的:增强学生的学习主动性导入时长:大约5分钟[新课讲授]:重点:掌握函数过程的概念,掌握sub过程的概念难点:变量的作用域和生产周期方法:运用多媒体辅助教学,采用案例教学和任务驱动等教学法。
8.1 过程概述VB应用程序是由各种过程组成的,但在为一个实际问题编写代码的过程中,会遇到一些比较复杂的问题,而利用简单的内部函数过程和事件过程往往不能解决此类问题。
此时根据应用的复杂程度,往往需要将应用程序按功能或目的划分为若干个模块,而根据具体情况又可将各个模块继续划分为子模块,直到一个适当的难度为止,即将问题自上而下逐步细化,分层管理。
将模块划分为子模块主要有如下优点:(1)便于调试和维护。
将一个复杂的问题分解为若干个子问题,降低每一个子问题的复杂程度,使每一个子问题的功能相当稳定,便于程序的调试和维护。
(2)提高了代码的利用率。
当多个事件过程都需要使用一段相同的程序代码时,可将这段代码独立出来,作为一个独立的过程。
它可以单独建立,也可以被其他事件过程调用,成为一个可重复使用的独立的过程,提高代码的使用率。
一个VB工程包括工程文件(.Vbp)、窗体文件(.Frm)、窗体的二进制数据文件(.Frx)、标准模块(.Bas)、类模块(.Cls)、资源文件(.Res)、ActiveX 控件文件(.Ocx)、用户控件(.Ctl)和属性页模块(.Pag)、其他ActiveX 控件文件、设计器可插入对象等部件和引用。
VB大致的应用程序模块结构如图8-1 所示图8-1VB应用程序模块结构8.2 函数过程8.2.1函数过程的定义Function函数过程的定义与Sub子过程的定义类似,但不同的是Function 函数过程的定义语句中需要有返回函数值的语句。
vb过程
9.3.4
数组参数的传送
Visual Basic允许把数组作为实参传送到过程中。如定义: Sub S(a(),b()) …… End Sub 可以用下面的语句调用该过程: Call S(a(),b())
数组参数一般通过传地址方式传送。在传送数组时,除遵 守参数传送的一般规则外,还应注意以下几点: (1)为了把一个数组的全部元素传送给一个过程,应将 数组名分别放入实参表和形参表中,并略去数组的上下界, 但括号不能省略。 (2)如果不需要把整个数组传给通用过程,可以只传送 指定的单个元素,这需要在数组名后面的括号中写上指定 元素的下标。例如:
全国计算机等级考试二级教程
主讲教师
潘大胜
结构化程序设计思想的要点之一就是对一个 复杂的问题采用模块化,把一个较大的程序划 分为若干个模块,每个模块只完成一个或若干 个功能。这些模块通过执行一系列的语句来完 成一个特定的操作过程,因此被称为“过程”。
9.1 9.3 9.4 9.5 9.7
Sub过程 参数传送
9.2.1
建立Function过程
1.定义Sub过程
Static|Private|Public Function <过程名>[ (参数列表) ] [As 类型]
[<语句组>]
[过程名=表达式] [Exit Function] [<语句组>] End Function
说明: (1)Function过程以Function开头,以End Function结束, 在两者之间是描述过程操作的语句块,即“过程体”或 “函数体”。格式中的“过程名”、“参数表列”、 “Static”、“Private”、“Public”、“Exit Function”的 含义与Sub过程相同。“As 类型”是Function过程返回 值的数据类型,可以是Integer、Long、Single、Double、 Currency或String,如果省略,则为Variant。
VB过程专业知识讲座
7.2.3 函数过程旳调用
Private Sub Form_Click()
Dim x As Integer, mj as single
x = Val(InputBox("请输入半径x"))
mj = circle_area(x)
‘此语句是函数过程旳调用
print mj
End Sub
Public Function Circle_area (ByVal r As single) As single
End Sub
局部变量
Private Sub Command1_Click() dim n As Integer n=n+1 Print "command1被按下了" & n & "次"
End Sub
静态变量 。
静态变量是指:
✓ 用Static 申明旳变量
✓ 或过程名前加关键字Static旳过程内用Dim申明 旳局部变量
CONST Pi=3.14159
'定义一圆周率常量Pi
Circle_area = Pi*r*r
'把成果赋给函数名
End Function
函数过程旳定义
[Static][Private][Public] Function 函数过程名([参数列表]) [As 类型] 局部变量或常数定义 语句块 [函数名 = 返回值(函数值)]
Private Sub swap1(ByVal x%, ByVal y%) Dim t% t = x: x = y: y = t
End Sub
Private Sub swap2(ByRef x%, ByRef y%) Dim t% t = x: x = y: y = t
VB应用程序的开发过程
第六章第1、2讲
可视化编程
程序设计语言与程序设计
人们想用计算机解决一个问题,必须事先设计 好计算机处理信息的步骤,把这些步骤用计算 机能够识别的指令编写出来并送入计算机执行, 计算机才能按照人的意图完成指定的工作。我 们把计算机能执行的指令序列称为程序,而编 写程序的过程称为程序设计。
学习版<专业版<企业版
三、启动 Visual Basic
步骤:
1. 单击任务条上的“启动”。 2. 选择“程序”,接着选取“Microsoft Visual Basic 6.0 中文版”。 3. 双击 Visual Basic 6.0的 快捷键图标。 4. 使用“Windows 资源管理器”寻找 Visual Basic 可执行文件。
在设计模式中,通过双击窗体或窗体上任何对象或通过 “工程资源管理器”窗口中的“查看代码”按钮来打开代码编 辑器窗口。代码编辑器是输入应用程序代码的编辑器。
4. 属性(properties)窗 口 属性是指对象的特征,如大小、标题或颜色等
数据。在Visual Basic6.0设计模式中,属性窗口列出 了当前选定窗体或控件的属性的值,用户可以对这
Visual Basic的功能与特点
面向对象的可视化程序设计。 事件驱动的程序设计和运行机制。 易学易用的应用程序集成开发环境。 结构化的程序设计语言。 强大的数据库访问功能。 支持DDE、DLL、OLE等技术。 完备的联机帮助功能。
9
3.VB中的类和对象
VB程序设计-过程和函数
Private Sub Command1_Click()
Print sum(5, 3)
调用函数
End Sub
Function sum(x, y)
s=x+y sum = s
定义函数
End Function
函数和过程的相互转换
Private Sub Command1_Click()
Call sum(5, 3, s) 调用过程
function title(tit,n)
if len(tit)>n then
title=left(tit,n)&"…"
'返回函数值
else
title=tit
'返回函数值
end if
end function
5.7 参数传递
5.7.1 形参与实参
• 形参:置于过程定义时,参数列表中的变 量或数组;在过程被调用前,系统不对其 分配空间;
6.3 子过程与函数的参数传递
1.参数传递方式
过程的参数有两种传递方式:
传值(ByVal)
传地址(ByRef)(默认方式)。
按值传递参数:在形式参数前加上关键字ByVal 表示指定按值传递参数。调用时实际参数仅将值
传递给形式参数,形式参数的任何改变不会影响 实际参数。
按地址传递参数:
在形式参数前加上关键字ByRef表示指定按地址传递参 数。
调用函数 –变量= Function 函数名(参数1,参数2,…) –函数可以向变量一样引用和参与运算
6.2 定义Function过程
定义Function过程说明: 1)Function过程以Function语句开头,以End Function结束;中间代码部分为函数体; 2)函数名有返回值,其值类型由As 数据类型指定; 3)函数体内一般都会至少为函数名赋值一次;如果 不赋值,函数返回值默认为0或空; 4)函数中途可以利用Exit Function退出。
(VB二级)第4章 VB语言基础
(5)求余运算a Mod b,a、b一般为整数, 若a或b带有小数点时,VB首先对其四舍五入 (按照“奇进偶不进”原则处理)。a Mod b的 符号由a的符号确定,当a为正数时a Mod b 为正数;当a为负数时,a Mod b为负数。 例如:-13 Mod 6=-1,而13 Mod –6=1。如 果a、b都是Integer型,运算结果是Integer 型,否则运算结果为Long型。 (6)参加算术运算的操作数都应是数值型, 若是字符型或逻辑型,则系统自动将其转换 成数值型后再运算。
4.4.1 算术运算符
算术运算符
运算符 ^ * / \ Mod + 名称 乘方 取负 乘 除 整除 取余 加 减
设a=3
优先级 例 结果 1 a^2 9 2 -a -3 3 a*a 9 3 10/a 3.333 4 10\a 3 5 10 mod a 1 6 10+a 13 6 10 - a 7
4.1.7 使用缩进格式
Private Sub Form_Click( ) x = Val(InputBox("请输入x的值")) If x > 0 Then Print "x > 0" Else Print "x < 0" End If End Sub
4.2 使用适当的数据类型来自(2) 乘方运算a^b,若a为负数则b必须是整数, 例如(-8)^(1/3)是错误的。乘方运算的结果是 Double型。
(3)除法运算a/b,无论a、b是整型还是实型, VB都将a、b转换为Double型数据再进行运算, 其结果是Double型。 (4)整除运算a\b,a、b一般为整数,若a或 b带有小数点时,VB首先将其四舍五入为整数 (注意,这里的四舍五入按“奇进偶不进”的原 则进行)。 例如:3.5\2=2,而4.51\2=2。),然后进 行整除运算。运算结果简单地截取整数部分,小 数部分不作四舍五入处理。如果a、b都是 Integer型,运算结果是Integer型,否则运算结 果为Long型。
VB课件-第14讲 过程定义
【例6.2】字符图形的输出
8
四、两种过程的差异 【例6.3】子过程与函数过程比较
通 • 函数过程通过函数名返回一个结果 常 • 子过程通过形参返回若干个结果9来自【练习】 编写过程求n!
那么
Cnm
m! n!(m n)!
10
内容小结
1. Sub 和 Function 过程的定义 2. 二者执行流程与返回方式的区别
老师:汗!!!
主要内容: 定义Function、Sub过程
2
看那程序“开小差”的地方吧。。。
任务:输出 10、100、1000以内正整数和
Sub Button1_Click: Label1.Text = sum(10)
End Sub
Function sum(N%) For i = 0 to N sum = sum + i Next i
思考:为什么可以传递成功呢?
11
编程小贴士
1. 设置属性确定事件; 2. 构思算法草拟代码; 3. 多写注释调整思路; 4. 全面检查就这一招!
编程思路:“初始化->输入->处理->输出”
引例: 中学语文课堂。。。
学生:(开小差中~ ~)
老师:<鲁提辖拳打镇关西>用的什么(修辞)手法
学生:
手法~ ~???
这三拳是少林长拳、七伤拳和通臂拳
调用:函数名[(实参列表)] 调用完带值返回到调用处
如:Function gcd(n%) As Integer
5
【例6.1】最大公约数
• 实参与形参个数、位置、类型应匹配
6
三、Sub子过程的定义和调用 • 定义: Sub 过程名([形参列表])
[ 语句块 ] End Sub 调用: • 子过程名 ([实参列表]) • Call 子过程名([实参列表])
vb练习题,电子版 第9章 过程
第九章过程教学要求:了解VB 6.0过程的分类,掌握Sub过程和Function过程的建立、定义、调用的不同方法;掌握形参、实参的概念,掌握引用、传值、可选参数、可变参数以及对象参数的概念;掌握数组参数、窗体参数、控件参数的概念和使用,熟练使用Sub过程和Function过程设计应用程序;局部内存分配方法;过程嵌套调用和递归调用;Shell函数的使用。
知识点:Sub过程和Function过程的定义、调用;形参和实参的语法和使用;各种类型的参数传递;局部内存分配方法;过程嵌套调用和递归调用;Shell函数的使用。
内容导航:一、过程(一)Sub过程1.建立Sub过程通用Sub过程的一般格式如下:[Static][Private][Public]Sub 过程名[(参数列表)]语句块[Exit Sub][语句块]End Sub2.调用Sub过程调用引起过程的执行。
也就是说,要执行一个过程,必须调用该过程。
Sub过程的调用有两种方式如下:第一种方式:把过程的名字放在Call语句中,调用格式为:Call 过程名[(实际参数)]第二种方式:把过程名作为语句来使用,在调用Sub过程时,如果省略关键字Call,就成为调用Sub过程的第二种方式。
3.通用过程与事件过程控件事件过程的一般格式为:[Private| Public]Sub 控件名_事件名(参数表)语句组End Sub窗体事件过程的一般格式为:[Private|Public]Sub Form_事件名(参数表)语句组End Sub(二)Function过程1.建立Function过程Function过程定义的格式如下:[Static][Private][Public] Function 过程名[(参数列表)][As 类型][语句块][过程名= 表达式][Exit Function][语句块]End Function2.调用Function过程Function过程的调用比较简单,因为可以像使用Visual Basic内部函数一样来调用Function 过程。
第一章 vb教程
字符串型(String,类型符$)
用于存放字符型数据,字符是由ASCII字符和 汉字组成,字符数据必须用双引号括起来。 如: "Visual Basic" , " VB程序设计" , " 123 " 等都表示字符型数据。 说明: 1.双引号为分界符,输入和输出时并不显示; 2.字符串中包含字符的个数称为字符串长度; 3.长度为零的字符串称为空字符串; 4.字符串中包含的字符区分大小写。 5.若字符串中包含字符“″”,可以将双引号 连写两次,例如应电"601 " 。 "应电""601"""
从对象入手,在应用程序中放入一个个对象,程序员所 要作的工作只是修改对象的一些属性,调用对象的一些方法实 现某些功能,或者在事件中编写少量的代码实现某些特殊的功 能
可视化的含义:控件可视;变成环境可视 事件驱动机制
在事件驱动的程序中,是在响应不同的事件时执行 不同的代码,代码的执行由用户决定
开发应用程序的步骤
1991年,微软推出了Visual Basic1.0版。这在当时 引起了很大的轰动。许多专家把VB的出现当做是软件 开发史上的一个具有划时代意义的事件。其实,以我 们现在的目光来看,VB1.0的功能实在是太弱了。但在 当时,它是第一个“可视”的编程软件。这使得程序 员欣喜之极,都尝试在VB的平台上进行软件创作。微 软也不失时机地在四年内接连推出VB2.0,VB3.0,4.0 三个版本。并且从VB3.0开始,微软将ACCESS的数据库 驱动集成到了VB中,这使得VB的数据库编程能力大大 提高。从VB4.0开始,VB也引入了面向对象的程序设计 思想。VB功能强大,学习简单。而且,VB还引入了 “控件:的概念,使得大量已经编好的VB程序可以被 我们直接拿来使用,如今,VB已经有了6.0版。
vb过程7.1-7.3
盐城工学院
Visual Basic 程序设计
7.1.2 通用过程
一般形式 ([参数列表 参数列表]) [ Private | Public ] Sub 过程名 ([参数列表]) 局部变量和常数声明] [局部变量和常数声明] 语句块 [ Exit Sub ] 语句块 End Sub
盐城工学院
Visual Basic 程序设计
盐城工学院
Visual Basic 程序设计
通用Sub Sub过程调用 7.3.2 通用Sub过程调用
Call语句 Call语句 <过程名 过程名> 实在参数表) Call <过程名> (实在参数表) • 实参是传送给被调用的Sub过程的变量、常 实参是传送给被调用的Sub过程的变量、 Sub过程的变量 数或表达式; 数或表达式; • 它的个数、类型和顺序,应与被调过程的形 它的个数、类型和顺序, 参相配; 参相配; • 有多个参数时,用逗号隔开; 有多个参数时,用逗号隔开; • 无参数时,括号可省 无参数时,
盐城工学院
Visual Basic 程序设计
7.1 Sub过程 过程
7.1.1 事件过程 –事件过程是为窗体或控件编写的代码 事件过程是为窗体或控件编写的代码 –由VB中的事件调用而执行 由VB中的事件调用而执行 –保存在窗体模块中 保存在窗体模块中 –分为窗体事件过程和控件事件过程 分为窗体事件过程 分为窗体事件过程和
盐城工学院
Visual Basic 程序设计
7.3 .2过程调用 过程调用
直接用过程名 实参1 [,实参2 过程名 [ 实参1 [,实参2 . . . ] ] • 不需要关键字Call 不需要关键字Call • 实参表不需要加括号
VB经典教程-精心整理(快速入门)
VB从入门到实践
1.1.5 数据访问
在现代信息技术高度发达的今天,数据信息已经成为最重要 资源之一。Visual Basic为开发人员提供了强大的数据访 问技术,能够更快捷、更迅速、更高效地存储和读取数据 信息。Visual Basic提供了更为强大功能来支持大中型数 据库,如Oracle、SQL Server、Sybase等。
VB从入门到实践
1.2 Visual Basic 6安装
本节将介绍如何安装Visual Basic 6开发环境。将Visual Basic 6 的安装光盘放入计算机的光驱内,一般情况下计算机可以自 动运行其中的安装程序。如果计算机没有自动运行安装程序 ,双击光盘盘符下的Setup.exe文件,将显示Visual Basic安装 程序界面,按照安装程序的提示进行相应的操作。
双精度型(Double) D
货币型(Currency) C
在Visual Basic环境下,开发人员利用事件驱动的编程机制、 新颖易用的可视化设计工具,使用Windows内部的应用程 序接口(API)函数、动态链接库(DLL)、对象的链接 与嵌入(OLE)、开放式数据连接(ODBC)等技术,可 以高效、快速地开发Windows环境下功能强大、图形界面 丰富的应用软件系统。
Visual Basic特点 Visual Basic安装 Visual Basic集成开发环境
VB从入门到实践
1.1 Visual Basic简介
Visual Basic是一种可视化的、面向对象和采用事件驱动机制 的结构化高级程序设计语言。它可用于开发Windows环境 下的各类应用程序。它具有简单易学、效率高、功能强大 的特点,可以与Windows专业开发工具SDK相媲美。
vb第7章过程jh
4. 过程的调用
Private Sub Command1_Click() Dim a As Integer Dim b As Integer a = Val(InputBox("请输入第一个加数")) b = Val(InputBox("请输入第二个加数")) Call Add(a, b) Call Add(100, 200) Add 400, 500 End Sub Private Sub Add(x As Integer, y As Integer) Dim z As Integer z=x+y Print x; "+"; y; "="; z End Sub
7.2 Sub子过程
(2)定义一行输出10个星号的过程:
Private Sub f2()
Dim i% For i=1 To 10 Print "*"; Next i
End Sub 过程可以有参数,也可以不带任何参数。没有参 数的过程称为无参过程。
7.2 Sub子过程
(3)定义一个过程,要完成的功能是:已知两 整型数据x、y,计算这两个数的和并输出。
7.2 Sub子过程
2. 建立Sub过程
(1)在代码窗口中直接定义
(2)利用“工具”菜单下的“添加过程”命令
定义
7.2 Sub子过程
3.过程定义举例
(1)定义一行输出n个星号的过程: Private Sub f1(n As Integer) Dim i% For i=1 To n Print "*"; Next i Print End Sub 该过程的名字是f1,参数只有一个,是一个整型变量n, 它限制了一行输出“*”的个数。
第六 章 vb过程
例2:
Sub continue query() do response$=inputbox$(“continue(y or n)?) if response$=“N” or response$=“n” then end if response$=“Y” or response$=“y” then exit do loop Ensub 过程可以不带参数,不进行任何数据交换,调用是只写上过程名.
3. 函数过程的调用 127 使用函数时要注意函数过程的特点: ① 数过程一旦定义(系统函数是系统已经定义的),都
可以象系统函数一样调用。 ② 调用出现的位置:程序中凡是表达式可以出现的地方 都可以出现函数调用。(可以出现在赋值号的右端。 可以出现在PRINT 语句中。) ③ 调用方法:写上函数名,后跟括号,括号中填上与形 式参数个数一样、类型一致的实元。 即:函数过程名([参数列表]) ④ 调用过程: 先计算实元,再进行虚实结合,然后转到 函数计算其值,最后由函数名将结果带回到调用点。
public:表示 sub 是一个公用过程,可以在程序的任何地方被调 用。 各个窗体通用的过程都在标准模块中用 public 定义。 在窗体层定义的通用过程,通常在本窗体模块中使用。若要在 其他窗体模块中使用,应加上窗体名做为前缀。
过程名:
过程名不能超过255个字符, 同一模块中过程名必须唯一,过程名不能再做函数名或子 程序名。
function 函数
说明:
以function 开始,以 end function 结束,中 间是完成任务的一组语句。 语句中最少有一个语句为函数名赋值,否则返回 缺省值。 可以用 exit function 转出函数。 过程定义不能嵌套。
vb第7章过程
……
Call fact End Sub
Private Sub Command1_Click(Index As Integer) Dim a As Integer, b As Integer, c As Integer, tot As Long n = Index Select Case n Sub fact(m As Integer, Case 0 a=5 total As Long) Call fact(a, tot) Dim i As Integer Label1.Caption = a & "!=" & tot total = 1 Case 1 For i = 1 To m a=6 total = total * i Call fact(a, tot) Next I Label1.Caption = a & "!=" & tot End Sub Case 2 a=8 Call fact(a, tot) Label1.Caption = a & "!=" & tot Case 3 a = 5: b = 6: c = 8 Call fact(a, tot) s = tot Call fact(b, tot) s = s + tot Call fact(c, tot) s = s + tot Label1.Caption = a & "!+" & b & "!+" & c & "!=" & s End Select
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
与子过程一样,可以在“代码编辑器”窗口中直 接输入代码来创建函数过程,也可以使用“添加过 程”对话框来创建函数过程,只是在选择类型时要 选择“函数”。
例如,以下函数RectArea可计算并返回矩形的面 积:
Private Function RectArea(a As Single, _
b As Single) As Single
'求阶乘(N!)的函数过程 Private Function jc(N As Integer) As Long Dim i As Integer, p As Long p = 1 For i = 1 To N p = p * i '累乘 Next jc = p '对函数名赋值,返回函数值 End Function
4.3.2 传址
按地址传送时传送的是实参的地址,在调用时,被调用 过程直接将接受到的地址里的值进行修改,从而实参值被改 变。所以执行完调用语句后,实参的值将会有所改变。 按址传递形参的语法特点: • 形式变量前没有修饰词;
【例4】编写一个计算矩形面积的Sub过程,然后调用该过程计算矩形 面积。 Private Function rectArea(a As Single, b As Single) As Single RectArea = a * b End Function Private Sub Form_Click() Dim a As Single, b As Single, s as single a = Val(InputBox("请输入矩形长度?")) b = Val(InputBox("请输入矩形宽度?"))
第4章
过程
4.1 子过程的定义和调用 4.2 函数过程的定义和调用 4.3 参数传送 4.4 过程的作用域
4.5 递归
【例】1!+2!+3!+……n!
将多次被重复使用的程序段设计成一个 具有一定功能的独立程序段,即为通用过程。
4.1 子过程
4.1.1 子过程的定义
4.1.2 子过程的调用
例7:求1!~n!之和
Public Function fac(n%) As Integer fac = 1 For i = 1 To n fac = fac * i Next i End Function 分析: Private Sub Command1_Click() (1)函数过程: Dim sum as integer,k As integer 完成求任一数n! For k = 1 To 5 (2)Command1_Click中: Sum = Sum + fac(k) 各阶乘值的累加,和 Next 函数调用及输出 print Sum
1. 通用过程的语法格式
通用过程的语法格式如下: [Public | Private] [Static] Sub 过程名([形参表]) [局部变量或常数声明] [语句块] [Exit Sub] [语句块] End Sub Public可选的。表示所有模块的所有其它过程都可访问这个 Sub 过程。 Private可选的。表示只有在包含其声明的模块中的其它过程可以访问该 Sub 过程。 Friend可选的。只能在类模块中使用。表示该 Sub 过程在整个工程中都是可见的, 但对对象实例的控制者是不可见的。 Static可选的。表示在调用之间保留 Sub 过程的局部变量的值。
在VB中,的Sub子过程分为:事件过程和通用 过程 1. 事件过程 (1)窗体事件的语法 Private Sub Form_事件名(参数列表) <语句组> End Sub
(2)控件事件的语法 Private Sub 控件名_事件名(参数列表) <语句组> End Sub
4.1.1 通用过程的定义
2. 通用过程的创建
创建通用过程有两种方法:使用“添加过程”对话 框;直接在代码编辑器窗口中输入过程代码。 (1)使用“添加过程”对话框创建。 (2)直接在代码编辑器窗口中输入。
图 【添加过程】对话框
图 过程模板
【例1】
编一个交换两个整型变量值的子过程。
Private Sub Swap( X As Integer, Y As Integer) Dim temp As Integer Temp=X : X=Y : Y=Temp End Sub Private Sub command1_click() Dim a%,b% a=val(inputbox(“a=“)) b=val(inputbox(“b=“)) print “a=“;a,”b=“,b call swap(a,b) print “a=“;a,”b=“,b End Sub
多边形的的面积
area c(c x)(c y )(c z ) 1 c ( x y z) 2
【例6】计算1~10阶乘之和。运行结果如图所示。 思路:首先编制一个求阶乘(N!)的函数过程,在窗体的 单击事件中调用此过程,依次求出1!、2!…10!的值,并将 其累加。 代码如下:
RectArea = a * b End Function
a
【例3】计算多边形的面积
g
S1 c e
b S2 d
如: Public Function area(x!,y!,z!) As Single c=0.5*(x+y+z) area=sqr(c*(c-x)*(c-y)*(c-z)) End Function 注意: • 函数不能作为独立语句使用调用,必须与其他成分结 合使用 • 实参列表中的参数个数、位置和类型与形参一一对应
Private Sub Form_Click()
'单击窗体
Dim Sum As Long, i As Integer
'在循环中调用函数过程求1~10的阶乘并累加 For i = 1 To 10
Sum = Sum + jc(i)
Next Print " 1!+2!+...+10! ="; Sum End Sub '显示结果
4.1.2 子过程的调用
子过程的Sub与End Sub之间的语句序列称为过程体, 每次调用子过程都会执行过程体中的语句。在程序 中,既可以调用通用过程,也可以调用事件过程。
1. 调用通用过程
调用子过程有两种方法:使用Call语句;直接使用 过程名。语法格式如下: Call 过程名[(实参表)] 或者: 过程名 [实参表]
4.3 参数传送
4.3.1 传值
4.3.2 传址
4.3.1 传值
按值传送时传送的不是实参的值,仅传送实参变量的副 本,执行完调用语句后,调用程序中的实参值不会改变。
按值传递形参的语法特点: • 在相应的形式变量前加“ByVal”关键词 如:Public Sub test(ByVal j As Integer) …… End Sub
4.2.1 函数过程的定义
函数过程的定义与子过程的定义相似。不同的是, 由于函数过程可以返回一个值,因此要在定义中加 入返回值类型说明。语法格式为:
[Private|Public] [Static] Function 函数名([形参表]) [As 类型]
[语句块] [函数名=表达式] [Exit Function] [语句块] [函数名=表达式]
调用事件过程实际上就是执行事件过程中的语句序列, 如同通用过程一样,亦可起到复用和简化代码的作用。
4.2 函数过程
4.2.1 函数过程的定义 4.2.2 函数过程的调用
Function(函数)过程也是独立的过程,可 读取参数、执行一系列语句并改变其参数的值, 这一点与前面介绍的Sub过程相同。Function过程 与子过程不同的是:子过程没有返回值,只能作 为独立的基本语句被调用,不能出现在表达式中; 而Function过程有返回值,既可以出现在表达式 中,也可以作为独立的语句被调用。
说明: (1)[Public | Private]:可选。指定过程的作用范围。若省略,则 默认为Public(全局)。 (2)Static:可选。指定本过程内的所有局部变量均为静态变量。 (3)过程名:命名规则与变量命名规则相同。无参数时,过程名后的 括号不能省略。 (4)形参表:形参表类似于变量声明,指明本过程被调用时传送给本 过程的变量个数和类型。若有多个变量,各变量之间用逗号间隔。形参 表中出现的参数称为形式参数,简称形参。每个形参的格式为: [ByVal | ByRef] 形参名[()][ As 类型] ByVal表示该参数按值传递,ByRef表示该参数按地址传递(默认)。 (5)Exit Sub语句表示立即退出子过程,通常将其置于选择结构中。 (6)在过程内不能再定义过程,但可以调用其他过程。
说明:
(1)实参表是实际参数(简称实参)列表,若有多个参数, 参数之间要用逗号间隔。各实参与形参在参数列表中的位置 相互对应,实参与对应位置的形参必须是同一类型,可以是 常数、变量、数组元素或表达式。
(2)当用Call语句调用子过程时,若有参数,则参数必须 放在圆括号内;若无参数,则省略过程名后的圆括号。 (3)若不使用Call关键字,则过程名后不能加括号。若有 参数,则参数直接跟在过程名之后,参数与过程名之间用空 格间隔,参数与参数之间用逗号间隔。
2. 调用事件过程
在程序中不仅可以调用通用过程,也可以调用事件过程, 二者的语法格式相同。
例如: '执行窗体加载事件过程中的语句 Form_Load '或:Call Form_Load '调用命令按钮cmdAdd的单击事件过程
command1_Click
'或:Call command1_Click
s= rectarea(3, 5)
Call Recarea(A, B) ‘recarea a,b’ End Sub