vb过程

合集下载

第7章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教程 第六章 过程、模块与类

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教程之 “过程”

VB教程之  “过程”
31
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 调用sub过程

vb 调用sub过程

局部内存分配
一般来讲在运行程序时VB会为全局变量分配内存,而局部变量 在过程开始时为变量分配内存,过程结束时会清除这些变量 而收回内存。当再次调用该过程时重新建立这些变量。 当过程结束时如果需要保存在局部变量中的数据,则需要把该变 量声明为全局变量或模块级变量。如果声明的变量只在一个 过程中使用则使用static语句,该语句如下: static 变量表 变量表格式如下: 变量 [( )] [as 类型][,变量[( )][as 类型]]…… 注意:static语句只能在事件过程、sub过程、function过程中, 过程中的static变量只在本过程中可见,本过程结束后变量的 值与模块级变量一样其值可以保留。
参数传递
形参:在sub、function过程定义中出现的变量名。 形参 实参:在调用sub、function过程中传送给sub、function过程的常数、 实参 变量、表达式或数组。 传送方式: 传送方式:按位置传送和指名传送 按位置传送:是大多数语言处理子程序调用时使用的方式,当使用这 种方式时实际参数的次序必须和形式参数的次序匹配,即位置次序 必须一致。 如下例子: 过程定义:sub test_sub(p1 as interger,p2 as single,p3 as string) 过程调用:call test_sub( a%, b!, “test”) 在传送实参时形参表与实参表中对应变量的名字不必相同,但是包含 的个数必须相同,同时实参与相应参数的类型必须相同。
对象参数
在VB中允许对象(窗体或控件)作为通用过程的 参数。格式为: sub 过程名(形参表) 语句块 [exit sub] …… end sub 注意:形参表中形参的类型通常为control或form。 对象只能通过传地址方式传送,不在参数前加 关键字byval

VB第8章 过程

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过程

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第六章第12讲可视化编程2程序设计语言与程序设计?人们想用计算机解决一个问题必须事先设计好计算机处理信息的步骤把这些步骤用计算机能够识别的指令编写出来并送入计算机执行计算机才能按照人的意图完成指定的工作
第六章第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编程6.0 过程

VB 程 序 设 计 —— 过 程
形式ห้องสมุดไป่ตู้数
Fact = s
End Function
' 给函数过程名赋值




Sub Command1_Click()
N = Val(Text1.Text) s=1
程 序 设 计 —— For i = 1 To N S=Fact(N) s=s*i Next Label1.Caption = s VB
例1:
VB
s
n
程 序 s=0 设 计 N=val(inputbox(―N=―)) —— 过 程
如果是S=1!+2!+3!+ ┅ +n!
For i=1 to N
s=s+sqr(i)
Next Print s
Print s




例2: 排列组合:从N个数中取M个数有多少种组合?
M 分析: 公式 C N
VB 程 序 设 计 ——
Call SubTest( 10 , 1+2 )
Sub SubTest( n As Integer,Sum As Single) 字ByVal来实现。
过 程 (2) 实参是变量时,要实现按值传递需要在形参之前通过关键




示例: Sub过程的调用参数传递
Sub Command1_Click() 实参 …… Call Fact ( x , y ) ‗Fact x , y 程 …… 序 End Sub 设 计 内存: 过 程
End Sub
Private Sub Command1_Click()
VB 程 序 设 计 —— 过 程

vb9-过程


下午1时21分41秒 VB9-过程
16
二、Function过程的调用 Function过程的调用
3. Function过程的调用举例 过程的调用举例
通用过程代码: 通用过程代码: Private Function Fact(N As Integer) Dim I As Integer ,F As Long F=1 For I = 1 To N : F = F * I : Next I Fact = F End Function 调用代码: 调用代码: Private Sub Command1_Click() Dim N As Integer N = Val(Text1.Text) Label3.Caption = Str(Fact(N)) End If
下午1时21分41秒 VB9-过程
18
二、Function过程的调用 Function过程的调用
通用过程代码: 通用过程代码: Private Function Fact(n As Integer) As Double Dim I As Integer,Dim F As Double , F=1 For I = 1 To n :F = F * I : Next I Fact = F End Function 调用代码: 调用代码: Private Sub Command1_Click() M = Val(Text1.Text) :N = Val(Text1.Text) c = Fact(m) / (Fact(n) * Fact(m - n)) Label3.Caption = Str(c) End If
调用Function过程时,将实参的值按顺序传递给 过程时, 调用 过程时 形参,从调用过程转到 过程去执行。 形参,从调用过程转到Function过程去执行。 过程去执行 在Function过程中遇到 Exit Function 语句或 过程中遇到 Function过程结束时,返回调用过程的调用处继 过程结束时, 过程结束时 续执行。 续执行。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
End Function
Private Sub Form _ Click() a=5 : b=4 : c=3 : d=3 e=4 : f=5 : g=4 s1=area(a,b,c) s2=area(c,d,e)
End Sub
多边形的的面积
area c(c x)(c y)(c z) c 1 (x y z)
End Sub
例7:求1!~n!之和
Public Function fac(n%) As Integer
fac = 1
For i = 1 To n
fac = fac * i
Next i
End Function
分析:
(1)函数过程:
Private Sub Command1_Click()
完成求任一数n!
s= rectarea(3, 5)
Call Recarea(A, B) ‘recarea a,b’ End Sub
【例5】计算多边形的面积
a S1 b c
g
e S2 d
S3
Public Function area(x!,y!,z!) As Single c=0.5*(x+y+z) area=sqr(c*(c-x)*(c-y)*(c-z))
4.2.1 函数过程的定义
函数过程的定义与子过程的定义相似。不同的是, 由于函数过程可以返回一个值,因此要在定义中加 入返回值类型说明。语法格式为:
[Private|Public] [Static] Function 函数名([形参表]) [As 类型]
[语句块] [函数名=表达式]
[Exit Function] [语句块] [函数名=表达式]
在表达式中调用
格式: 函数名([实参表]) 这种调用方式与大部分VB内部函数的调用相同,即将函 数名及其实参写在表达式中。例如,以下语句均可调用前 面8.2.1小节中计算矩形面积的函数过程: Print "矩形面积为:"; RectArea(6, 8) MsgBox "矩形面积为:" & RectArea(3, 4)
Private Function RectArea(a As Single, _
b As Single) As Single
RectArea = a * b
End Function
【例3】计算多边形的面积
a S1 b c
g
e S2 d
如: Public Function area(x!,y!,z!) ASs3 Single
【例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("请输入矩形宽度?"))
子过程的Sub与End Sub之间的语句序列称为过程体, 每次调用子过程都会执行过程体中的语句。在程序 中,既可以调用通用过程,也可以调用事件过程。
1. 调用通用过程
调用子过程有两种方法:使用Call语句;直接使用 过程名。语法格式如下:
Call 过程名[(实参表)] 或者:
过程名 [实参表]
说明:
说明:
(1)[Public | Private]:可选。指定过程的作用范围。若省略,则 默认为Public(全局)。
(2)Static:可选。指定本过程内的所有局部变量均为静态变量。
(3)过程名:命名规则与变量命名规则相同。无参数时,过程名后的 括号不能省略。
(4)形参表:形参表类似于变量声明,指明本过程被调用时传送给本 过程的变量个数和类型。若有多个变量,各变量之间用逗号间隔。形参 表中出现的参数称为形式参数,简称形参。每个形参的格式为: [ByVal | ByRef] 形参名[()][ As 类型]
(3)若不使用Call关键字,则过程名后不能加括号。若有 参数,则参数直接跟在过程名之后,参数与过程名之间用空 格间隔,参数与参数之间用逗号间隔。
【例2】编写一个计算矩形面积的Sub过程,然后调用该过 程计算矩形面积。
Sub area (x As Single, y As Single)
Dim s As Single
通用过程的语法格式如下: [Public | Private] [Static] Sub 过程名([形参表])
[局部变量或常数声明] [语句块] [Exit Sub] [语句块] End Sub
Public可选的。表示所有模块的所有其它过程都可访问这个 Sub 过程。 Private可选的。表示只有在包含其声明的模块中的其它过程可以访问该 Sub 过程。 Friend可选的。只能在类模块中使用。表示该 Sub 过程在整个工程中都是可见的, 但对对象实例的控制者是不可见的。 Static可选的。表示在调用之间保留 Sub 过程的局部变量的值。
调用事件过程实际上就是执行事件过程中的语句序列, 如同通用过程一样,亦可起到复用和简化代码的作用。
4.2 函数过程
4.2.1 函数过程的定义
4.2.2 函数过程的调用
Function(函数)过程也是独立的过程,可 读取参数、执行一系列语句并改变其参数的值, 这一点与前面介绍的Sub过程相同。Function过程 与子过程不同的是:子过程没有返回值,只能作 为独立的基本语句被调用,不能出现在表达式中; 而Function过程有返回值,既可以出现在表达式 中,也可以作为独立的语句被调用。
s=x*y MsgBox "总面积是 " & s
End Sub
Private Sub Form_Click()
Dim a As Single, b As Single
a = Val(InputBox("请输入矩形长度?"))
b = Val(InputBox("请输入矩形宽度?"))
Call area(a, b)
按值传递形参的语法特点: • 在相应的形式变量前加“ByVal”关键词 如:Public Sub test(ByVal j As Integer) …… End Sub
4.3.2 传址
按地址传送时传送的是实参的地址,在调用时,被调用 过程直接将接受到的地址里的值进行修改,从而实参值被改 变。所以执行完调用语句后,实参的值将会有所改变。
(1)实参表是实际参数(简称实参)列表,若有多个参数, 参数之间要用逗号间隔。各实参与形参在参数列表中的位置 相互对应,实参与对应位置的形参必须是同一类型,可以是 常数、变量、数组元素或表达式。
(2)当用Call语句调用子过程时,若有参数,则参数必须 放在圆括号内;若无参数,则省略过程名后的圆括号。
‘或area a,b’
End Sub
2. 调用事件过程
在程序中不仅可以调用通用过程,也可以调用事件过程, 二者的语法格式相同。
例如:
'执行窗体加载事件过程中的语句
Form_Load
'或:Call Form_Load
'调用命令按钮cmdAdd的单击事件过程
command1_Click '或:Call command1_Click
按址传递形参的语法特点: • 形式变量前没有修饰词; • 或在形式变量前加“ByRef”关键词 如:Public Sub test(i!,ByRef j As Integer) …… End Sub
第4章 过程
4.1 子过程的定义和调用 4.2 函数过程的定义和调用 4.3 参数传送 4.4 过程的作用域 4.5 递归
【例】1!+2!+3!+……n!
将多次被重复使用的程序段设计成一个 具有一定功能的独立程序段,即为通用过程。
4.1 子过程
4.1.1 子过程的定义 4.1.2 子过程的调用
(2)直接在代码编辑器窗口中输入。
图 【添加过程对话框
图 过程模板
【例1】 编一个交换两个整型变量值的子过程。
Private Sub Swap( X As Integer, Y As Integer) Dim temp As Integer Temp=X : X=Y : Y=Temp
End Sub
ByVal表示该参数按值传递,ByRef表示该参数按地址传递(默认)。 (5)Exit Sub语句表示立即退出子过程,通常将其置于选择结构中。
(6)在过程内不能再定义过程,但可以调用其他过程。
2. 通用过程的创建
创建通用过程有两种方法:使用“添加过程”对话 框;直接在代码编辑器窗口中输入过程代码。 (1)使用“添加过程”对话框创建。
End Function
说明:
(1)“函数名”即函数过程的名称,命名规则与变量相同。
(2)[As 类型] 指定函数过程返回值的类型 ,可以是 Integer、Long、Single、Double、Currency、String 或 Boolean。若省略,则默认的数据类型为Variant。
(3)“表达式”的值是函数返回的结果,通过赋值语句将 其赋给函数名。若在函数过程中省略“函数名=表达式”, 则该过程返回一个默认值。数值函数过程返回0,字符串函 数返回空字符串。因此,为了能使一个函数过程完成所指 定的操作并获取返回值,通常要在过程中为函数名赋值。
p=1
For i = 1 To N p=p*i
'累乘
Next jc = p
相关文档
最新文档