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 结果如何?怎么修改?
《Visual Basic程序设计基础》教材习题参考答案第六章

第6章图形控件和图形方法一、判断题1.√2.×3.√4.×5.√6.×7.×8.×9.√10.√二、选择题1.C 2.B 3.C 4.A 5.A 6.C 7.A 8.C 9.C 10.B 11.A 12.B 13.B 14.C 15.C三、填空题1.Circle (ScaleLeft + ScaleWidth / 2, ScaleTop + ScaleHeight / 2), 8002.LoadPicture 3.AutoSize、Stretch、False、False 4.选中、属性5.形状、矩形6.Picture1.Picture=LodePicture("C:\Windows\Cloud.bmp")7.图片框、其他控件8.缇、SclaeMode 9.颜色10.颜色、圆弧起点处转角、圆弧终点处转角、椭圆纵轴与横轴长度之比四、程序阅读题程序1. 转动一条红色直线,其轨迹形成一个圆程序2. 在窗体上随机的位置、用随机的颜色、半径绘制1000个空心的圆。
程序3. 在图片框内绘制多个黄色边框矩形,填充样式在“实心”、“透明”间交替变换。
五、程序填空题1.(1)Combo1.ListIndex (2)Shape1.BorderStyle (3)Combo2.AddItem Str(i) 2.(1)Call pic (2)False (3)n = n + 1 (4)LoadPicture("c:\windows\1.bmp") (4)LoadPicture(fn)六、程序设计题程序1.界面设计略,过程设计如下:Private Sub Form_Load()Picture1.ScaleMode = 3End SubPrivate Sub Command1_Click()Dim x1 As Single, y1 As Single, x2 As Single, y2 As Singlex1 = InputBox("x1="): y1 = InputBox("y1=")x2 = InputBox("x2="): y2 = InputBox("y2=")Picture1.Line (x1, y1)-(x2, y2), , BEnd Sub程序2.界面设计略,过程设计如下:Private Sub Form_click()Dim r As Single, xo As Single, yo As SingleIf Form1.ScaleHeight < Form1.ScaleWidth Thenr = Form1.ScaleHeight / 3Elser = Form1.ScaleWidth / 3End Ifxo = Form1.ScaleLeft + Form1.ScaleWidth / 2yo = Form1.ScaleTop + Form1.ScaleHeight / 2Form1.FillStyle = 0: Form1.FillColor = vbBlueForm1.DrawWidth = 2: Form1.ScaleMode = 6Form1.Circle (xo, yo), r, vbYellowEnd Sub程序3.界面设计略,过程设计如下:Private Sub Form_Load()Dim i As IntegerFor i = 1 To 7: List1.AddItem i: Next iForm1.ScaleMode = 1End SubPrivate Sub List1_Click()Form1.Cls: Form1.ScaleMode = List1.TextForm1.Circle (Form1.ScaleLeft + Form1.ScaleWidth / 2, _ Form1.ScaleTop + Form1.ScaleHeight / 2), 50End Sub。
vb6

Vb第六章编程题答案1.编写一个求3个数中最大值和最小值的VB程序,然后用这个过程分别求5个数和7个数的最大最小值.dim ssnum=val(inputbox ("输入要求的数的个数"))dim a(1 to num)for i=1 to numa(i)=texti.textnextfor m=num to 2for n=1 to m-1if a(n)>=a(n+1) thenss=a(n+1)a(n+1)=a(n)a(n)=ssend ifnextnextprint "MAX:" & a(num)print "MIN:" & a(1)2.编写程序,求S=A!+B!+C!,阶乘的计算分别用Sub过程和Function过程两种方法来实现方法一:(以前方法)Option Base 1Private Sub form_Click()Dim a(), s()Dim sum#, str$Dim m%m = Val(InputBox("输入要计算几个阶乘的数")): If m <= 0 Then MsgBox "请输入>=1的正数": Exit SubReDim a(1 To m)ReDim s(1 To m)For i = 1 To ma(i) = Val(InputBox("输入第" & i & "个需要计算阶乘的数")): If n < 0 Then Exit For Next iFor i = 1 To ms(i) = 1For j = 1 To a(i)s(i) = s(i) * jN ext jPrint a(i); "的阶乘数为:"; s(i)Next iFor i = 1 To msum = s(i) + sumNext iFor i = 1 To mIf i = m Thenstr = str & a(i) & "!"Elsestr = str & a(i) & "!" & "+"End IfN ext iPrint Tab(3); "所求的"; m; "个数的阶乘和为:"; str; "="; sumEnd Sub方法二:(sub过程1)Sub sub1(x As Long)Dim m%, i%m = 1For i = 1 To xm = m * iNextx = mEnd SubPrivate Sub Form_Click()Dim a&, b&, c&, i%, s#a = InputBox("1")b = InputBox("2")c = InputBox("3")sub1 asub1 bsub1 cs = a + b + cPrint sEnd Sub3.编写一个过程,以整形作为形参。
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课件第6章Visual Basic 循环结构

Do Until i = 100
例6-3:求 1+22+32+……n2大于1000的最小值。
选Do … Loop语句: 不知道要加到第几项,但知道累加和大于 1000,并且,第一次超过1000时就不再累 加了,所以选Do … Loop语句。
求项数(计数i): i=0(初值) ,i=i+1(重复执行)
例: 利用随机函数10个产生[20,90]的整数, 求其平均值.
界面设计: 单击窗体, 显
示结果如图.
例: 利用随机函数10个产生[20,90]的整数, 求其平均值.
分析: 产生数X 求和s
求平均a
产生一个X: X=Int(Rnd*71+20)
显示产生的值: Print x
计算和: s=s+x
重复10次 求得这10 个数的和s
Private Sub Form_Click( ) Dim i As Integer i=0 Do While i < 100 i=i+1 Print i; If i Mod 10 = 0 Then Print Loop
End Sub
用Do Until … Loop循环来编制 例6-2的程序
Private Sub Form_Click() Dim i As Integer i=0 Do While i < 100 i=i+1 Print i; If i Mod 10 = 0 Then Print Loop
If Max <= x Then Max = x Next i Print Print “最大值为:”; Max End Sub
6.4 循环嵌套
循环嵌套:在一个循环语句的循环体中又包含有另一 循环语句。 VB的三种循环可以自身嵌套与相互嵌套 要求:内层结构一定包含在外层结构中,不能交叉
VB-第6章 数组与自定义类型

数组的概念
数组并不是一种数据类型,而是一组相同类型数据的 集合。用一个统一的名字(数组名)代表逻辑上相 关的一批数据,每个元素用下标变量来区分;下标 变量代表元素在数组中的位置。 其表示形式: A(1),A(10) X(1,1), X1(1,10), X(2,10) Y(0,0,0), Y(1,2,5) Dim mark(1 to 100) as integer
4 4
若要求一个班100个学生的平均成绩,然后 统计高于平均分的人数。
aver = 0 :sum = 0 For i = 1 To 100 mark = InputBox("输入" + i + "位学生的成绩") sum = sum + mark Next i aver = sum / 100
mark是一个简单变量,存放的是最后一个学生的成绩。 已有知识解决方法:再重复输入成绩,带来两个问题: (1)输入数据的工作量成倍增加; (2)若本次输入的成绩与上次不同,则统计的结果不正确。 解决此问题的根本方法,引入数组,始终保持输入的数据, 一次输入,多次使用。
7 7
数组的概念
Visual Basic中的数组,按不同的方式分为以下几类:
按数组的大小(元素个数)是否可以改变来分为: 静态(定长)数组、动态(可变长)数组。 按元素的数据类型可分为: 数值型数组、字符串数组、日期型数组、变体数组等。 按数组的维数可分为: 一维数组、二维数组、多维数组。 对象数组:菜单对象数组、控件数组。
Preserve参数:保留数组中原来的数据
24
24
说明
(1)ReDim语句是一个可执行语句,只能出现在过程中,并且 可以多次使用,改变数组的维数和大小。 (2)定长数组声时中的下标只能是常量,而动态数组ReDim 语 句中的下标是常量,也可以是有了确定值的变量。 例: Private Sub Form_Click() dim a() Dim N As Integer N=Val(InputBox(“输入N=?”)) reDim a(N) As Integer „„. End sub
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.1 6.2 6.3 6.4 6.5 函数过程的定义与调用 子过程的定义与调用 参数传递 递归 变量、 变量、过程的作用域
6.6 综合应用 6.7 重点和难点
2011年9月21日星期三
Visual Basic程序设计
6.1 函数过程的定义
6.1.1 引例已知多边形的各条边的长度,计算 引例已知多边形的各条边的长度 已知多边形的各条边的长度, 多边形的面积。 多边形的面积。 计算多边形面积, 计算多边形面积, 可将多边形分解成若干个 三角形。 三角形。 计算三角形面积的公式如下: 计算三角形面积的公式如下:
2011年9月21日星期三
Visual Basic程序设计
6.2.4子过程与函数过程区别 子过程与函数过程区别 (1)函数过程名有值,有类型,在函数体内至少赋值一次; 函数过程名有值,有类型,在函数体内至少赋值一次; 函数过程名有值 子过程名无值,无类型,在子过程体内不能对子过程名赋值。 子过程名无值,无类型,在子过程体内不能对子过程名赋值。 (2)调用时,子过程调用是一句独立的语句; 调用时,子过程调用是一句独立的语句; 调用时 函数过程不能作为单独的语句加以调用,必须参与表达式运算。 函数过程不能作为单独的语句加以调用,必须参与表达式运算。 (3)一般当过程有一个返回值,使用函数过程较直观;反之若过程无返回值, 一般当过程有一个返回值,使用函数过程较直观;反之若过程无返回值, 一般当过程有一个返回值 或有多个返回值,使用子过程较直观。把某功能定义成函数或是过程, 或有多个返回值,使用子过程较直观。把某功能定义成函数或是过程, 没有严格的规定。但只要能用函数定义的,就肯定能用过程定义, 没有严格的规定。但只要能用函数定义的,就肯定能用过程定义,反之 不一定。 不一定。 6.2.5形参个数的确定 形参个数的确定 (1)形参是过程与主程序交互的接口,从主程序获得初值,或将计算结果返 形参是过程与主程序交互的接口,从主程序获得初值, 形参是过程与主程序交互的接口 回给主调程序。不要将过程中所有使用过的变量均作为形参。 回给主调程序。不要将过程中所有使用过的变量均作为形参。若只在过 程内部使用,则声明为局部变量。 程内部使用,则声明为局部变量。 (2)形参没有具体的值,只代表了参数的个数、位置、类型;只能是简单变 形参没有具体的值,只代表了参数的个数、位置、类型; 形参没有具体的值 数组名,不能是常量、数组元素、表达式。 量、数组名,不能是常量、数组元素、表达式。
VB第六章理论课件
6.1数组的基本概念(续)
数组元素:即数组中的变量,用下标表示数组中的 各个元素。表示方法:<数组名>(下标) 例如:A(3) 下标: 下标表示顺序号,可表示数组元素在数组中 的位置。每个数组有一个唯一的顺序号,下标不能超 过数组声明时的上、下界范围。 下标可以是整型的常数、变量、表达式,甚至又是 一个数组元素。 下标的取值范围是: 下界 To 上界 ,缺省下界时,系统默认取0。 数组维数: 由数组元素中下标的个数决定,一个下 标表示一维数组,二个下标表示二维数组。 VB中有一维数组、二维数组、……最多60维数组。
6.1数组的基本概念(续)
• 数组的维数:数组一般可以分为一维、多维,在多 维数组中我们一般讨论二维数组,有时也会使用三维 数组。一维数组只需用一个下标就能标识一个元素, Score(30)表示下标为30的数组元素;二维数组则需 要用两个下标来标识一个元素,形象地表达为行和列, 如有二维数组Arr(1 to 3,1 to 5),表示数组中有3行 5列的元素,其中Arr(2,3)表示第2行第3列元素; • 数组的分类:根据数组在内存中分配空间在程序执 行过程中是否可变,将VB中的数组分为静态数组和动 态数组。静态数组不允许用户在定义后再在程序中修 改数组的长度和维数,而动态数组允许用户在定义后 多次在程序中修改数组的长度或维数
例:在VB语言中,定义数组时,其下标允许是() A变量 B 常量 C算数表达式(可含变量) D变量、常量、算数表达式(可含变量)
例:若有说明:dim a(1 to 10)as integer,则下列 应用()合法 A a(1)=―adk‖ B a(7)=32768 C a(8)=―23‖ D a(0)=2
【格式】 Dim 数组名([下界To]上界[,下界 To]上界……)as 类型名称
vb教案(实用3篇)
vb教案(实用3篇)(经典版)编制人:__________________审核人:__________________审批人:__________________编制单位:__________________编制时间:____年____月____日序言下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。
文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!并且,本店铺为大家提供各种类型的经典范文,如计划总结、合同协议、管理制度、演讲致辞、心得体会、条据书信、好词好句、教学资料、作文大全、其他范文等等,想了解不同范文格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you!Moreover, our store provides various types of classic sample essays for everyone, such as plan summaries, contract agreements, management systems, speeches, insights, evidence letters, good words and sentences, teaching materials, complete essays, and other sample essays. If you want to learn about different sample formats and writing methods, please pay attention!vb教案(实用3篇)vb教案(1)教案设计学科 vb程序设计授课年级一年级教师姓名李新亮 1. 章节名称:第六章:键盘与鼠标控制第四节:鼠标拖放动画实例设计计划学时:一课时 2. 教学目标:①认识鼠标事件②正确分析题目已确定应当运用哪种鼠标事件课程标准:熟练掌握鼠标事件知识与能力:学会综合运用各种鼠标事件编写程序过程与方法:认识鼠标事件运用鼠标事件完成实例设计 3. 教学重点鼠标事件及其格式,案例程序分析 4. 教学难点几种鼠标事件:Click,Dblclick,DragDrop,DragOver,Drag的区别 5. 教学设计思路一、复习导入键盘事件keypress,keydown,keyup 二、初识鼠标事件三、几种鼠标事件的格式四、几种鼠标事件的区别五、实例程序分析六、界面设计七、程序分析八、程序运行与调试教学反思这节课的主要内容是,以分析鼠标拖拽的实例程序入手,来归纳总结常见的鼠标事件。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、过程与模块的概念 二、Sub子过程的定义Байду номын сангаас调用 Sub子过程的定义和调用 三、Function函数过程的定义和调用 Function函数过程的定义和调用 四、参数的传递 五、变量与过程的作用域 六、过程的递归调用 七、常用算法 八、多重窗体
一、过程与模块的概念
1. 过程 独立功能的子程序。 独立功能的子程序。 两类:系统提供的内部 两类:系统提供的内部函数过程和事件过程; 用户根据自己需要定义的通用过程。 用户根据自己需要定义的通用过程。 通用过程作用: 通用过程作用: • 程序模块化,结构清晰,易于修改和维护。 程序模块化,结构清晰,易于修改和维护。 • 可用于在程序中多处调用。 可用于在程序中多处调用。
参数列表: 称为实参或实在参数 实参或实在参数, 参数列表: 称为实参或实在参数,它必须与 形参保持个数相同,位置与类型一一对应。 形参保持个数相同,位置与类型一一对应。 个数相同 一一对应 参数传递:调用时把实参的值或地址传递给形参; 调用时把实参的值或地址传递给形参; 多个参数间用逗号分隔。 多个参数间用逗号分隔。
通用过程
函数过程 (Function) • 通用过程 子过程 (Sub) (有返回值) 有返回值) (没有返回值) 没有返回值)
属性过程 (Property) 事件过程 (Event)
按作用域分通用过程: 按作用域分通用过程: 公有过程(Public): 公有过程(Public):可被应用程序任意过程调用 私有过程(Private): 私有过程(Private):只能被同一模块中的过程调用
2、Function函数过程的调用: Function函数过程的调用: 函数过程的调用 调用格式: 调用格式:
变量名=函数过程名([参数列表]) 变量名=函数过程名([参数列表]) ([参数列表 注意: 注意:必须给实参加括号
如无实参, 如无实参,括号也可省略
例如: 例如: 调用例6 调用例6-3,求两个圆面积之和 Sum=Cir(20)+Cir(30)
:
• 参数列表形式: 参数列表形式:
[ ByVal ] 变量名 [ ( ) ] [ As 类型 ] _ [ , [ByVal] 变量名 [ ( ) ] [ As 类型 ] … ]
参数也称为形参 无参过程名后的( )不可缺省 也称为形参, 无参过程名后的 不可缺省 形参 ByVal 参数是值传递(Passed By Value), 参数是值传递( ) 缺省ByVal:引用传递(ByRef),即地址传递 :引用传递( ),即地址传递 缺省 ), • Sub子过程不能嵌套定义 Sub子过程不能嵌套定义
2、建立Sub子过程(有两种方法): 建立Sub子过程( Sub子过程
• 在VB中,利用“工具”菜单下的“添加过程” VB中 利用“工具”菜单下的“添加过程” 命令定义 • 利用代码窗口直接定义
在窗体/标准模块中:插入点放在现有过程之外, 在窗体/标准模块中:插入点放在现有过程之外, 之外 通用说明” 或在 “通用说明”处 键入: 过程名, 键入:Private Sub 过程名,回车
100之间的孪生素数 素数值相差2) 之间的孪生素数( 例6-5 求1-100之间的孪生素数(素数值相差2)
过程调用的执行: 过程调用的执行:
主调过程中执行到过程调用语句时,转去执行被调过程, 执行结束后,返回主调过程中本次调用的调用点,继续执行 调用点的后序语句。 被调过程1 …… 结束 主调过程 …… Call 过程1(参数列表) …… 结束 调用点
过程调用注意事项 过程调用注意事项: 注意事项
•
例6-2 求圆面积的函数过程: 求圆面积的函数过程:
Private Function Cir(ByVal r As Single) As Single Const PI = 3.1415926 Cir = PI * r * r End Function
例6-3 求N阶乘的函数过程: 阶乘的函数过程:
(Passed By Reference) )
例如: 例如:
Private Sub swap(x As Integer, y As Integer) Dim temp As Integer If x < y Then temp = x:x = y:y = temp : : End If End Sub Private Sub exl(ByVal x As Integer, y As Integer) x=x+2 y=y+x*2 Print x, y End Sub
实在参数
或
参数列表) CALL 子过程名(参数列表)
举例 . 输入两个整数,按从大到小输出。 输入两个整数,按从大到小输出。
Private Sub swap(x As Integer, y As Integer) Dim temp As Integer If x < y Then temp = x:x = y:y = temp : : End If End Sub Private Sub Command1_Click() Dim a As Integer, b As Integer a=Val(Text1.Text): b=Val(Text2.Text) If a<b Then call swap(a,b) End If Print a,b End Sub ‘过程的调用, 或swap a,b 过程的调用, 调用点 (主调过程 (主调过程) 主调过程) ‘过程定义 交换两个变量值 过程定义,交换两个变量值 过程定义 (被调过程 被调过程) 被调过程
注意: 注意:
建立Function函数过程的方法与建立Sub子过程相同 建立Function函数过程的方法与建立Sub子过程相同 例 Function函数过程的方法与建立Sub
3、Sub子过程的调用(主调过程) Sub子过程的调用(主调过程) 子过程的调用 调用格式: 调用格式:
参数列表] 子过程名 [参数列表]
Private Function Fact(ByVal N As Integer) As Long Dim k As Integer Fact = 1 If N = 0 Or N = 1 Then Exit Function Else For k = 1 To N Fact = Fact * k Next End If End Function
2. 模块 将不同类型的代码组织到一起而提供的一种结构。 将不同类型的代码组织到一起而提供的一种结构。 (1)窗体模块(.frm): 每个窗体对应一个窗体模块 窗体模块(.frm) (2)标准模块(.bas):多窗体中共享的代码 标准模块(.bas):多窗体中共享的代码 ):
可保存通用过程、相关说明(全局变量、 可保存通用过程、相关说明(全局变量、 模块级变量) 模块级变量) 工程”+“添加模块 添加模块” “ 工程”+“添加模块”
被调过程2 被调过程1 Call 过程2(参数列表) 2 结束 主调过程 …… Call 过程1(参数列表) …… 结束 调用点 …… 结束
例6-1,求组合数
m! C = n !( m − n )!
n m
'定义求阶乘的 定义求阶乘的Sub子过程 子过程fac 定义求阶乘的 子过程 Private Sub fac(ByVal n As Integer, f As Long) ‘过程定义 过程定义 Dim i As Integer f=1 For i = 1 To n f=f*i Next i End Sub
• •
过程调用注意事项 过程调用注意事项:
• 调用子过程的形式有两种: 调用子过程的形式有两种: Call关键字 若用Call关键字时 实参必须用圆括号括起, 若用Call关键字时,实参必须用圆括号括起,且左括号 与过程名间不能有空格;若实参为空,则可省略括号。 与过程名间不能有空格;若实参为空,则可省略括号。 若用过程名则无( ), 过程名则无 若用过程名则无( ),且第一个参数与过程名间要有 空格。 空格。 例:swap a,b call swap(a,b)
三. Function函数过程的定义及其调用 Function函数过程的定义及其调用
函数过程是带有返回值的特殊过程。 函数过程是带有返回值的特殊过程。 带有返回值的特殊过程
1、定义
[Public|Private][Static] Function 函数名([参数列表]) [AS 类型] Public|Private][Static] 局部变量或常数定义 语句块 函数名= 函数名=表达式 [Exit Function ] 语句块 函数名= 函数名=表达式
例如:调用例6 求阶乘的函数过程, 例如:调用例6-3求阶乘的函数过程,求例 6-1中的组合数。 中的组合数。 Private Sub Command1_Click() Dim m As Long Dim n as Integer m = Val(txtm) n= Val(txtn) txtResult = Fact(m) / (Fact(n) * Fact(m - n)) End Sub
(3)类模块(.cls):创建新的对象类的属性、 类模块(.cls):创建新的对象类的属性、 ):创建新的对象类的属性 事件、方法等 事件、
VB应用程序的结构
二. Sub 子过程的定义及其调用
1、定义Sub子过程 (被调过程) 定义Sub子过程 被调过程) Sub
局部变量或常数定义 语句块 [Exit Sub ] 语句块
比较函数过程与Sub 比较函数过程与Sub子过程 Sub子过程 • 不同之处: 不同之处: 函数过程通过函数名有返回值, 函数过程通过函数名有返回值,因 此定义时有返回值的类型说明。 此定义时有返回值的类型说明。 Sub子过程通过变量返回值 Sub子过程通过变量返回值 • 相同点: 相同点: 完成某种特定功能的一组程序代码。 完成某种特定功能的一组程序代码。