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 调用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章 过程
教案讲稿第八章过程[旧课复习]:复习内容: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编程6.0 过程
形式ห้องสมุดไป่ตู้数
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过程结束时,返回调用过程的调用处继 过程结束时, 过程结束时 续执行。 续执行。
VB的发展过程
上一页
返回章首
下一章
2 在VB集成环境中创建VB应用程序时,除了工具箱 窗口、窗体窗口、属性窗口外,必不可少的窗 口是______。 A. 窗体布局窗口 B. 立即窗口 C. 代码窗口 D. 监视窗口
上一页 返回章首 下一页
第一章 Visual Basic简介
3.在设计阶段,当双击窗体的任意位置时, 所打开的窗口是______。 A. 工程资源管理器窗口 B. 工具箱窗口 C. 代码窗口 D.属性窗口 4. 工程文件的扩展名是______。 A..frm B..vbp C..cls 5. 窗体文件的扩展名是_____。 A..frm B..vbp C..cls
1.3 运行环境、安装、启动与退出
2. VB系统的安装 将标有Microsoft Visual Basic 6.0的光盘放入光 驱中。 自动加载或运行光盘上的setup.exe程序。 按提示设置目录和选择要安装的VB6.0组件。 安装完成后,在 Windows 的“开始”菜单的“程序” 项 中 , 将 自 动 增 加 一 项 “ Microsoft Visual Basic 6.0中文版”。 若在编程中想得到全面的帮助,还需另外安装MSDN, MSDN一般放在两张光盘上。
第一章 Visual Basic简介
1.4 VB系统的集成开发环境
8.窗体布局窗口
(form layout window)
打开“视图”菜单中的 “窗体布局窗口”命令。 单击工具栏上的“窗体 布局窗口”图标
上一页
返回章首
下一页
第一章 Visual Basic简介
1.5 对象的有关概念
1.5.1 对象和类 对象(Object) 现实中实际存在的实体。 类(Class) 将具有相同的结构、操作,并遵守相同规则的 对象聚合在一起,这组对象就称为类。同一类中 的不同对象(实例)有一些共同的性质和功能。 对象和类的关系: 对象是类的实例,由某一个类来来创建一个对 象,类是同种对象的集合与抽象。
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第7章过程
6
第七章 过程
6.1 引言
1. 引例 2. 过程的定 义与使用
2)过程的定义与使用
定义过程
首先用户必须自定义一个子过程,这个子过 程通常可以完成一个特定的功能,该子过程以一 个名字来标识,可以被其他过程调用,其名字后 面的变量表称为形式参数。
用户自定义子过程与事件过程的区别是: 事件过程的名字是有一定规律的,且不能 改变,即控件名_事件名,而用户自定义 的过程名则由用户自己定义。事件过程的 参数是由系统根据事件给出,面用户自定 义的过程则是根据用户的需要。
辽宁科技大学 < Visual Basic 程序设计>教学课件③ 2007-2
10
第七章 过程
6.2 Sub过程
2)Sub过程的调用
1. Sub过程 的定义 2. Sub过程 的调用
格式:
Call 过程名 (实参列表) 或 过程名 实参列表
说明: ① 实参的个数、类型、顺序应与相应的形参保 持一致,子过程中如果没有形参,则调用中 也无实参。 ② 第2种调用方式与第1种相比,结果一样,只 是去掉Call和一对括号( )。
辽宁科技大学 < Visual Basic 程序设计>教学课件③ 2007-2
9
第七章 过程
6.2 Sub过程
1)Sub过程的定义
1. Sub过程 的定义 2. Sub过程 的调用
Sub过程说明 (1) 在VB中,Sub过程又称为子过程。 (2)子过程名、参数列表、语句块等与函数过程 的要求基本相同。 (3)子过程定义格式中“Sub过程名”和“End Sub”是必不可少的,子过程由“Sub”开始定义, 由End Sub结束,在这两者之间的程序便是能完 成某个功能的程序主体。 (4)在子过程中如果没有形参,调用时括号() 必须省略。
第六 章 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)。
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