过程学时理论学时上机PPT_第1页
过程学时理论学时上机PPT_第2页
过程学时理论学时上机PPT_第3页
过程学时理论学时上机PPT_第4页
过程学时理论学时上机PPT_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、关于过程学时理论学时上机第一张,PPT共四十七页,创作于2022年6月2过程的引入: 使同类的操作不重复编写,写一次多次用 把一项复杂的工作分成简单的功能块,分而治之过程: 完成一段独立功能,可供其他过程使用(调用)。调用过程: 调用其他过程的过程调用过程: 调用Sprg1调用Sprg1调用Sprg2子过程: Sprg1子过程: Sprg2第二张,PPT共四十七页,创作于2022年6月3 常用过程分类:Sub过程Function过程事件过程自定义子过程 内部函数(标准函数) 自定义函数过程第三张,PPT共四十七页,创作于2022年6月46.1 函数过程的定义和调用 引例6.1已知多边形各条边的

2、长度和对角线的长度,计算多边形的面积。计算多边形面积,可将多边形分解成若干个三角形。计算三角形面积的公式如下:x,y,z为三角形的三边长第四张,PPT共四十七页,创作于2022年6月5Private Sub Form_Click() Dim a!, b!, c!, d!, e!, f!, g!, x!, y!, z!, s1!, s2!, s3! a = InputBox(输入a): b = InputBox(输入b) c = InputBox(输入c): d = InputBox(输入d) e = InputBox(输入e): f = InputBox(输入f) g = InputBox(输

3、入g) x = (a + b + c) / 2 s1 = Sqr(x * (x - a) * (x - b) * (x - c) y = (c + d + e) / 2 s2 = Sqr(y * (y - c) * (y - d) * (y - e) z = (e + f + g) / 2 s3 = Sqr(z * (z - e) * (z - f) * (z - g) MsgBox (多边形面积= & s1 + s2 + s3)End Sub引例6.1第五张,PPT共四十七页,创作于2022年6月66.1.2 函数过程的定义 在窗体、模块等的代码窗口把插入点放在所有现有过程之外,直接输入函数

4、过程。定义函数过程的形式如下:Public 全局函数过程,可被程序任何模块调用Private 仅供本模块中的其它过程调用函数名命名规则同变量名的命名规则形参 只能是变量或数组名( ),仅表示参数的个数、类型,无值Public |Private Function 函数名(形参列表)As 类型 变量声明 语句块 函数名=表达式End Function形参名1As 类型,形参名2As 类型,必须要有第六张,PPT共四十七页,创作于2022年6月7定义函数过程 areaFunction area( ) As Single Dim c! c = (x + y + z) / 2 area = Sqr(c

5、* (c - x) * (c - y) * (c - z)End Functionx!, y!, z!使用函数解决引例6.1 Sub command1_click() 输入若干个三角形边长 S=area(a,b,c)+area(c,d,e)+area(e,f,g) msgbox(“面积=” & S)End Sub调用函数过程第七张,PPT共四十七页,创作于2022年6月8第五章 课后习题讲解n=12Dim a(1 to n) as integerDim b%()n=11Redim b(n)Dim c%2,3Dim d(1,1,2) as integerDim e%(10)Redim e(1 t

6、o 12)Dim f!()Redim f(3,2) as integerDim g%(2,3)Dim h(1 to 3 1 to 4) as integer第八张,PPT共四十七页,创作于2022年6月9实验2 Private Sub Command1_Click()Dim x!x = Val(Text1)If x = 10 And x = 50 Then y=2 * x if y150 then y=150End Ifprint yEnd Sub 第九张,PPT共四十七页,创作于2022年6月10Private Sub Command2_Click()Dim s%(5 To 9)For i

7、= 1 To 20 k = mark(i) 10 Select Case k Case 0 To 5 s(5) = s(5) + 1 Case 6 To 8 s(k) = s(k) + 1 Case 9 To 10 s(9) = s(9) + 1 End SelectNext iFor i = 5 To 9 Picture2.Print s(; i; )人数有; s(i); 个Next iEnd SubDim mark(1 To 20) As Integer 也可写成mark%(1 To 20)Private Sub Command1_Click()For i = 1 To 20 mark(i

8、) = Int(Rnd * 101) If i Mod 4 = 0 Then Picture1.Print mark(i) Else Picture1.Print mark(i); End IfNext iEnd Sub实验E3 第十张,PPT共四十七页,创作于2022年6月116.1.2 函数过程的定义 定义函数过程的形式如下:Public |Private Function 函数名(形参列表)As 类型 变量声明 语句块 函数名=表达式End Function形参名1As 类型,形参名2As 类型,必须要有第十一张,PPT共四十七页,创作于2022年6月Public Function gc

9、d( m%, n%) As IntegerEnd Function例6.2 编一求最大公约数的函数过程If m n Then t = m: m = n: n = tr = m Mod nDo While r 0 m = n : n = r : r = m Mod nLoop gcd = n第十二张,PPT共四十七页,创作于2022年6月136.1.3 函数过程的调用 调用形式:函数名(实参列表) 实参列表:必须与形参个数相同,位置与类型一一对应。可以是同类型的常量、变量、表达式。Sub Form_Click Dim x%, y%, z% x = 124 : y = 24 z = gcd (x,

10、 y) MsgBox(最大公约数是 & z)End Sub 程序运行流程 Function gcd( m%, n%) As Integer If m n Then t = m: m = n: n = t r = m Mod n Do While r 0 m = n : n = r : r = m Mod n Loop gcd = nEnd Function第十三张,PPT共四十七页,创作于2022年6月14Function sum (m,n)End Function练习:编一个计算m到n的和的函数过程,使用该函数求1+2+3+100的和,并输出s=0For i = m To n s = s +

11、 iNext isum = sPrivate Sub Form_Click() Print sum(1,100)End Sub第十四张,PPT共四十七页,创作于2022年6月15例6.3编一函数,统计字符串中汉字的个数。分析:字符以Unicode码存放,每个汉字和英文是一个字符、占有两个字节汉字的机内码最高位为1,若利用Asc函数求其码值为小于0(以补码表示)西文字符的最高位为0,Asc函数求其码值为大于0 第十五张,PPT共四十七页,创作于2022年6月16Function CountC%(s$) Dim i%, t%, k%, c$ For i = 1 To Len(s) c = Mid(

12、s , i , 1) 取一个字符 If Asc(c) 0 当i0说明找到 Count = Count + 1 统计个数加1 st = Mid(st, i + 1) 为找下一个准备 i = InStr(st, the ) Loop FuncThe = CountEnd FunctionPrivate Sub Command1_Click() 调用函数过程 Label3 = FuncThe(Text1)End Sub例6.5第二十二张,PPT共四十七页,创作于2022年6月23Sub ProcThe(ByVal s$, ByRef Count% ) Dim i%, st$ Count = 0 st

13、 = Trim(s) i = InStr(st, the ) Do While i 0 Count = Count + 1 st = Mid(st, i + 1) i = InStr(st, the ) Loop End SubPrivate Sub Command2_Click() 调用子过程 Dim n% Call ProcThe(Text1, n ) Label4 = nEnd Sub例6.5第二十三张,PPT共四十七页,创作于2022年6月246.3 参数传递 6.3.1 形参与实参在参数传递中,一般是按位置传送,与参数名没有关系。如:在调用标准函数时,用户根本不知道形参名,只要关心形

14、参的个数、类型、位置。见下面Mid函数形式: Mid ( 字符串$,起始位%,取几位%) 调用语句:s =Mid ( This is VB ,9,2) 则 s 中的结果为“VB”。第二十四张,PPT共四十七页,创作于2022年6月256.3.2 传地址(ByRef)与传值(ByVal)传址方式:当调用一个过程时,它将实参的地址传递给形参。因此在被调过程体中对形参的任何操作都变成了对相应实参的操作,实参的值就会随过程体内对形参的改变而改变。传值方式:当调用一个过程时,系统将实参的值复制给形参,实参与形参断开了联系。在过程体内对形参的任何操作不会影响到实参。 第二十五张,PPT共四十七页,创作于2

15、022年6月26例6.6 传地址与传值形参获得实参的值形参获得实参的地址实参必须是同类型的变量名(包括简单变量、数组名),不能是常量、表达式。第二十六张,PPT共四十七页,创作于2022年6月27Sub Swap1 ( ByVal x%, ByVal y%) Dim t% t = x : x = y : y = tEnd SubSub Swap2 ( x%, y%) Dim t% t = x : x = y : y = tEnd SubSub Command1_Click() Dim a%, b% a = 10 : b = 20 Print 调用Swap1前 a和b的值为:; Tab(40);

16、 a ; b Call Swap1 ( a, b ) Print 调用Swap1后按传值方式 a和b的值为:; Tab(40); a ; b a = 10 : b = 20 Call Swap2 ( a, b ) Print 调用Swap2后按传地址方式 a和b的值为:; Tab(40); a ; bEnd Sub编写交换两个数的过程, Swap1用传值方式, Swap2用传地址方式(ByRef x%, ByRef y%)例6.6第二十七张,PPT共四十七页,创作于2022年6月28传地址与传值方式选择 要将被调过程中的结果返回给主调程序,则形参必须是- 不希望过程修改实参的值,则应选用( )

17、,减少各过程间的关联。 形参是数组是地址传递。传址方式传值方式第二十八张,PPT共四十七页,创作于2022年6月形参是数组 要以数组名加圆括号表示,不要给出维数下/上界;在过程中通过Lbound() /Ubound()函数确定每维的上界。实参是数组 要给出数组名 (可以不加圆括号)。当数组作为参数传递时,系统将实参数组的起始地址传给过程,使形参数组也具有与实参数组相同的起始地址。 6.3.3 数组参数的传递Function f(a%(), x As Integer) As Long f = xEnd FunctionPrivate Sub Form_Click() Dim a%(1 To 10

18、) y = f(a, 10) Print yEnd SubDim a%(1 To 10)第二十九张,PPT共四十七页,创作于2022年6月30例6.7如下sum函数和子过程求数组a各元素和、并改变数组各元素值。Function sum% ( x() ) Dim i% sum = 0 For i = 0 To UBound(x) sum = sum + x(i) : x(i) = 2 * x(i) Next iEnd FunctionPrivate Sub Command1_Click() Dim b(), s% b = Array(1, 3, 5, 7, 9) s = sum ( b() )

19、Print 调用sum过程后数组b的各元素和为: ; s Print 调用sum过程后数组b的各元素值为: For i = 0 To UBound(b) Print b(i); ; Next i End Sub13579形参数组实参数组第三十张,PPT共四十七页,创作于2022年6月316.5 变量的作用域 过程级变量 在一个过程内用Dim或Static语句 声明的变量,只能在本过程中使用 模块级变量 在模块内、任何过程外用Dim、Private语句声明的变量,可被本模块的任何过程访问 全局变量 在模块级用Public语句声明的变量,可被应用程序的任何过程或函数访问 第三十一张,PPT共四十七

20、页,创作于2022年6月326.5.1 变量的作用域 例如:在下面一个标准模块文件中不同级的变量声明 Public Pa As integer 全局变量 Private Mb As string *10 窗体/模块级变量 Sub F1( ) Dim Fa As integer 过程级变量 End Sub Sub F2( ) Dim Fb As Single 过程级变量 End Sub第三十二张,PPT共四十七页,创作于2022年6月336.5.2 静态变量 静态变量 程序运行过程中可保留变量的值声明形式:Static 变量名 AS 类型用Dim声明的变量,每次调用过程时重新初始化例6.10比较

21、Dim和Static两者的区别。Private Sub Form_Click() Static count% count = count + 1 Print 已单击窗体; count; 次End Sub Dim count%第三十三张,PPT共四十七页,创作于2022年6月34Public a As Integer 全局变量Dim b As Integer 模块级变量Private Sub Command1_Click() Dim c As Integer 局部变量 Static d As Integer 局部变量+静态变量 a = 1 b = 1 c = 1 d = 1 Print a; b

22、; c; dEnd SubPrivate Sub Command2_Click() Dim a As Integer 局部变量,作用域小的优先于大的变量 a = a + 1 b = b + 1 c = c + 1 d = d + 1 Print a; b; c; dEnd Subd=d+1第三十四张,PPT共四十七页,创作于2022年6月35作业P277 实验F : 1, 2, 3复习书上例题第三十五张,PPT共四十七页,创作于2022年6月36上机题解答:Sub s (b(), min) Dim i% min = b(LBound(b) For i = LBound(b) + 1 To UB

23、ound(b) If b(i) min Then min = b(i) Next iEnd SubPrivate Sub Form_Click() Dim a(1 To 10), amin, i% 定义时要写上类型a%(1 To 10), amin% For i = 1 To 10 a(i) = -Int(Rnd * 101 + 300) Print a(i); Next i Call s( a(), amin ) Print Print 最小值为; aminEnd Sub实验F 1 求数组中最小值第三十六张,PPT共四十七页,创作于2022年6月37上机题解答:Function gcd(By

24、Val m! , ByVal n!) As Integer If m n Then t = m: m = n: n = t r = m Mod n Do While r 0 m = n: n = r: r = m Mod n Loop gcd = nEnd FunctionPrivate Sub command1_Click() Dim x!, y!, z! x = Val(Text1) y = Val(Text2) z = gcd (x, y) Picture1.Print x; y; zEnd Sub实验F 2 求最大公约数能去掉ByVal吗第三十七张,PPT共四十七页,创作于2022年6

25、月386.6 综合应用 1、数制转换不同进制数之间的转换,可通过编程来实现;也可通过VB提供的内部函数来实现。例6.13编一函数,实现一个十进制整数转换成二至十六任意进制的字符。分析:十进制正整数m转换成r进制数,将m不断除r取余数(若余数超过9,还要进行相应的转换,例如10变成A,11变成B等),直到商为零,以反序得到结果,即最后得到的余数在最高位。 第三十八张,PPT共四十七页,创作于2022年6月39综合应用-加密2、加密和解密信息加密有各种方法,最简单的加密方法是将每个字母平移一个位置( 称为密钥)。例如,后移5个位置,这时,AF,B G Y D,ZE ,a f ;解密是加密的逆操作。

26、例6.14 编一加密和解密的程序,即将输入的一行字符串中的所有字母加密,加密后还可再进行解密。 第三十九张,PPT共四十七页,创作于2022年6月40Welcome studWC87IAsc=Asc(C)92+5IAsc90 IAsc=IAsc-26B对取得的一个字符”放入变量中, 加密的过程如左所示:C=Chr(IAsc)第四十张,PPT共四十七页,创作于2022年6月41综合应用-查找3、查找什么是查找: 查找是在线性表(在此为数组)中,根据指定的关键值,找出与其值相同的元素。查找方法:一般有顺序查找和二分法查找。顺序查找根据查找的关键值与数组的元素逐一比较,若相同,查找成功,若找不到,则查找失败。 例6.15实现顺序查找(1, 3, 5, 7, 9, 2, 4)。第四十一张,PPT共四十七页,创作于2022年6月42综合应用-字符处理4、字符处理应用例6.16 编写一个英文打字训练的程序,要求如下(1) 在标签框内随机产生30个字母的范文;(2) 当焦点

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论