VB程序设计强化复习主题讲座.ppt

上传人:小飞机 文档编号:5451942 上传时间:2023-07-08 格式:PPT 页数:28 大小:275.99KB
返回 下载 相关 举报
VB程序设计强化复习主题讲座.ppt_第1页
第1页 / 共28页
VB程序设计强化复习主题讲座.ppt_第2页
第2页 / 共28页
VB程序设计强化复习主题讲座.ppt_第3页
第3页 / 共28页
VB程序设计强化复习主题讲座.ppt_第4页
第4页 / 共28页
VB程序设计强化复习主题讲座.ppt_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《VB程序设计强化复习主题讲座.ppt》由会员分享,可在线阅读,更多相关《VB程序设计强化复习主题讲座.ppt(28页珍藏版)》请在三一办公上搜索。

1、VB 语言程序设计(强化),函数过程和Sub过程,函数过程和Sub过程常用算法总结,function函数过程Sub过程参数传递规则(值传递、地址传递)数组名作为函数参数数组元素作为函数参数变量的作用域变量的生存期,Private Sub Command1_Click()Dim i as integer,s as longFor i=1 To 10 s=s+fact(i)Next iPrint 1!+2!+.+10!=&sEnd Sub,函数过程,Private Function fact(ByVal k As Byte)As LongDim i%fact=1For i=2 To k fact=

2、fact*iNext iEnd Function,主题一:函数过程,格式 Public|Private Static Function 函数名(形参列表)As 数据类型语句块函数名=表达式Exit Function语句块 End Function,函数体,说明Public公有过程,可被当前工程中其它窗体中的过 程调用.调用格式为:窗体名.函数名(实参列表)Private私有过程,只能被其所在窗体的过程调用.Static指定过程中局部变量的值保持不变形参列表ByVal|ByRef 参数名 As 数据类型,调用 函数名(实参列表)也可以用:Call 函数名(实参列表)调用,这样调用将得不到返回值.

3、,Public Sub Combination()Dim m As Integer Dim n As Integer Dim Cmn As Long.输入 m,n*错误1*Cmn=nFactor(m)/nFactor(n)*nFactor(m-n)Form1.Print 排列组合数为;CmnEnd SubPublic Function nFactor(ByVal n As Integer)As Double Dim i As Integer,temp As Double temp=1 For i=1 To n temp=temp*i Next i*错误 2*nFactor(n)=temp*错误

4、3*End Sub,该过程是用于计算在m个数据中取出n个数据的排列组合值,计算公式为 Cmn=m!/(n!*(m-n)!)。,编写过程用以验证一个偶数可以分解为两个素数之和;Isprime用以判断x是否是素数Public Sub even()从键盘输入一个大于4的偶数,将它所有的不重复的分解式求出 Dim x As Integer Dim i As Integer-1-保证x是大于4的偶数 x=Val(InputBox(x=)Loop For i=3 To x/2 Step 2 在不大于x的奇数中找素数-2-Form1.Print x;=;i;+;x-i End If Next iEnd Su

5、bPublic Function Isprime(x As Integer)As Boolean Dim i As Integer-3-For i=2 To x-1-4-Isprime=False Exit For End If Next iEnd Function,Public Sub total()该过程是计算s=7+77+777+(n个7组成的数),并输出。Const n=20 Dim s As Single Dim i As Integer For i=1 To n s=s+-1-Next i Form1.Print s=;sEnd SubPublic Function number(

6、-2-)As Single 该函数是求出n个7所组成的数。Dim k As Integer number=0 For k=1 To n-3-Next kEnd Function-Option Explicit,判断某年是否是闰年,Public Sub rn()该过程通过调用函数isLeapYear判断某年是否是闰年,若是,则打印今年是润年 否则,打印今年不是闰年。Const year=2023 If-1-Then Form1.Print 今年是闰年 Else Form1.Print 今年不是闰年 End If End Sub Function isLeapYear(y As Integer)A

7、s Boolean If-2-Or(-3-And-4-)Then isLeapYear=False Else isLeapYear=True End IfEnd Function,主题二:Sub 过程,格式Public|Private Static Sub 过程名(形参列表)语句块 Exit Sub 语句块End Sub,过程体,说明Public公有过程,当前工程中使用Private私有过程,所在窗体中使用 Static指定过程中局部变量的值保持不变形参列表ByVal|ByRef 参数名 As 数据类型,调用(1)Call 过程名(实参列表)(2)过程名 实参列表例题注意:事件过程也是 sub

8、 过程,可以被调用如 call form_click(),写出下列程序运行时,单击窗体后窗体上的显示结果。Sub prnt(b()As String*1,n As Integer)Dim i As Integer For i=1 To n Print b(i);Next i PrintEnd SubPrivate Sub Form_Click()Dim a(7)As String*1,i As Integer For i=1 To 7 a(i)=Chr(Asc(A)+i-1)Next i For i=7 To 4 Step-1 Call prnt(a,i)Next iEnd Sub,Priva

9、te Sub sort(a()As Single,ByVal n As Byte)Dim I as byte,j as byte,k as byte,temp as single For i=1 To n-1 k=i For j=i+1 To n If a(j)a(k)Then k=j Next j temp=a(k):a(k)=a(i):a(i)=temp Next iEnd Sub,例4-7编程,将数组 a()中元素按值从大到小排序,要求将数组排序编写为SUB过程,Modify.bas模块中的MaxLine过程用于查找一个5行4列的二维数组中行平均值最大的行,并将该行所有数据调整到第一行的

10、位置。Modify.bas模块中的DataProduce过程用于产生原始数据;Average过程用于计算各行的平均值;PrintArraay过程用于打印二维数组和行平均值。,主题三:参数传递规则,形参和实参形参(形式参数):过程定义中的参数实参(实在参数):过程调用中的参数过程调用示例Private Sub sort(a()As Single,ByVal n As Byte)Call sort(b(),6)实参和形参必须个数相同,类型一致实参可以是常量、变量、表达式、数组形参只能是变量,参数传递规则按值传递使用 ByVal把实参变量的值复制到形参变量中形参变量与实参变量使用不同的内存单元过程中

11、对形参值的修改,不会影响对应实参原来的值,按地址传递缺省属性(或用Byref)为地址传递把实参变量的地址传给形参变量形参变量与实参变量共享同一个内存单元过程中修改了形参的值,同时也改变了实参的值实参是数组时,按地址传递实参是常量、表达式时,虽然形参声明为传址,实际还是传值,6,A,B,实际参数,形式参数,Private Sub ff(ByRef x As Integer,ByVal y As Integer)x=x+1y=y+1Print x;yEnd SubPrivate Sub Form_Click()Dim a As Integer,b As Integera=1:b=1Call ff(

12、a,b)Print a;bEnd Sub,例题:在一维数组中找最大值和其所在的下标 Private Sub find(a()As Single,n As Integer,_)Dim I as integer max=a(1):m=1 for i=2 to n If a(n)max Then max=a(n):m=n next iEnd SubPrivate Sub Form_Click()Dim b(6)As Single,x As Single,y As integer,i%For i=1 To 6 b(i)=InputBox(b(+Str(i)+)=,)Next i_Print x,y E

13、nd sub,过程cloze用以求11000中的所有完数。所谓完数是指一个数的所有因子之和等于其自身。Option ExplicitDim a(50)As Integer 存放每个数分解出来的因子Public Sub cloze()Dim i As Integer,j As Integer Dim n As Integer 因子个数 Dim s As Integer 因子和 For i=1 To 1000 n=0 s=0 factor-1-For j=1 To n s=s+a(j)Next j-2-Form1.Print i End If Next iEnd SubPublic Sub fac

14、tor(ByVal x As Integer,ByRef k As Integer)Dim i As Integer a(1)=1 k=1-3-If x Mod i=0 Then k=k+1-4-End If Next iEnd Sub,2008春试题6,Private Sub f(b()As Integer,ByRef m As Integer)Dim i As Integer,j As Integer,k As Integer i=1 Do While i j Then For k=i To m-1:b(k)=b(k+1):Next k Exit For End If Next j If

15、j m Then i=i+1 Else m=m-1 LoopEnd SubPrivate Sub Command1_Click()Dim a(6)As Integer,i As Integer,n As Integer n=6 For i=1 To 6:a(i)=InputBox(a(:Next iEnd Sub,数组元素作为函数参数,以数组元素为参数的函数过程,地址或值传递形参用简单变量的形式Private Sub form_click()Dim b(6)As SingleFor i=1 To 6 b(i)=InputBox(b(&i&)=)Next iCall swap(b(1),b(6)

16、For i=1 To 6 Print b(i)Next iEnd Sub,Sub swap(m as integer,n as integer)temp=m:m=n:n=tempEnd sub,byval,byval,主题六:变量作用域,多模块程序设计工程文件(.vbp)由三种类型的模块:窗体模块(frm):包含窗体中各个对象的事件过程,控件属性信息。声明部分通用过程事件过程标准模块(*.bas):存放通用过程。声明部分通用过程类模块(*.cls)跨模块调用用private修饰的通用过程,只能被本模块中调用。在标准模块中用public修饰的通用过程,可以被工程中所有模块调用。在窗体模块中用pu

17、blic修饰的通用过程,必须标明窗体名称才可以被工程中所有其他模块调用,如call form1.xyz(),变量的作用域局部变量在事件、函数或sub过程内部用 Dim 语句定义的变量,所有形参作用域是变量所在的过程不同过程可定义同名的局部变量,若变量没有声明,也是局部变量模块级变量在窗体模块的通用对象声明部分,用 Dim 或 Private 定义的变量(包括数组)作用域是整个模块全局变量在窗体模块或标准模块的通用对象声明部分,用 Public 定义的变量作用域是整个工程,引用方法是:x=form2.k数组、定长字符串不可以用public 声明,写出四次单击命令按钮Command1后窗体上的输出

18、结果。Dim x As Integer,y As IntegerPrivate Sub f1()x=x/2End SubPrivate Sub f2()y=y/2End SubPrivate Sub Command1_Click()Call f1Call f2Print x,y End SubPrivate Sub Form_Load()x=64:y=64End Sub,写出四次单击命令按钮Command1后窗体上的输出结果。Dim x As Integer,y As Integer Private Sub f1()x=x/2End SubPrivate Sub f2()Dim y as in

19、tegery=y/2End SubPrivate Sub Command1_Click()Call f1Call f2Print x,y End SubPrivate Sub Form_Load()x=64:y=64End Sub,Dim x As Integer,y As IntegerPrivate Sub f1(a As Integer)a=a/2End SubPrivate Sub f2(ByVal b As Integer)b=b/2End SubPrivate Sub Command1_Click()Call f1(x)Call f2(y)Print x,y End SubPriv

20、ate Sub Form_Load()x=64:y=64End Sub,写出四次单击命令按钮Command1后窗体上的输出结果。,从变量的作用时间来说,局部变量有动态变量和静态变量两种。动态变量变量所在过程运行时,才给变量分配内存,过程运行结束后自动释放内存,其值消失每次执行过程时,变量都重新声明在过程中用 Dim 语句声明的局部变量是动态变量 静态变量程序运行期间一直存在,变量的值被保留下来 每次执行过程时,不会对变量重新声明定义方法Static 变量名 As 数据类型(在过程内)Static Sub 过程名()(在过程头部),主题七:变量的生存期,例:窗体每单击一次,背景色在红色和蓝色间变换(用静态变量或 模块级变量),

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号