东北大学,可视化程序设计(VB),课件04第4章.ppt_第1页
东北大学,可视化程序设计(VB),课件04第4章.ppt_第2页
东北大学,可视化程序设计(VB),课件04第4章.ppt_第3页
东北大学,可视化程序设计(VB),课件04第4章.ppt_第4页
东北大学,可视化程序设计(VB),课件04第4章.ppt_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

Visual Basic.NET 程序设计,主讲人:蒋忠中 东北大学工商管理学院,第 4 章 过 程,教学目的,教学要求,重点难点,教学内容,教学目的,学习本章的目的是了解模块化程序设计的思想,通过学习和上机实践,掌握Sub过程和Function过程的定义和调用方法。 参数传递是学习本章的重要内容之一,通过本章的学习掌握形参与实参的作用,传值调用和引用调用的特点和区别,数组作为参数在过程定义中的意义和作用。 学习本章还需了解变量的作用域和生存期、递归过程的特点以及其执行过程。 学习本章的重要目标是在程序设计中合理的定义Sub过程和Function过程。,BACK,教学要求,了解模块化程序设计的概念、“自顶向下、逐步求精”的程序设计方法。 掌握Sub过程的定义和调用方法,会将某一功能用Sub过程来实现。 掌握Function过程的定义和调用方法,能正确区分Sub过程和Function过程之间的区别,会将某一功能利用Function过程来实现。 掌握形参和实参的意义和作用,形参与一般变量的区别。掌握形参与实参之间传值调用和引用调用的特点,在程序设计中能合理的使用形参与实参之间的传值调用和引用调用,能正确理解数组参数在过程定义中的作用。 正确理解变量的作用域以及变量的生存期。 了解递归的概念,会顺利的阅读递归程序,了解递归程序的特点。 会举一反三,正确的定义和调用Sub过程和Function过程。,BACK,重点难点,重点: Sub过程和Function过程的定义格式和调用方法,区分这两种过程的异同点。 形参与实参的作用,传值调用和引用调用的特点及其区别,数组作为参数在过程定义中的作用。 变量的作用域。 递归过程的特点及其执行过程。 理解Sub过程和Function过程的执行流程。 在程序设计中,正确使用Sub过程和Function过程。,重点难点,难点: 模块化分的原则,将一个复杂的问题分解为多个程序模块来实现。 形参的作用,形参与实参之间的关系。 Sub过程与Function过程之间的异同。 传值调用和引用调用的特点,在过程设计中合理的选用形参与实参之间的传值调用和引用调用。 静态变量的特点。 递归过程的执行流程,其中的递归执行条件的正确选用。,BACK,教学内容,4.1 模块化程序设计概述,4.2 Sub过程,4.3 Function过程,4.4 参数传递,4.5 变量的作用域与生存期,4.6 递归,过程可分为事件过程和通用过程。 事件过程是当某个事件发生时,对该事件做出响应的程序段。 将这一段代码抽象出来,建立一个独立的、可供其它过程调用的过程,这样的过程称为通用过程。 通用过程主要包括Sub过程和Function过程两类,前者也被称作子过程,后者称作函数过程。,4.1 模块化程序设计概述,过程,事件过程,通用过程,Sub过程,Function过程,4.1 模块化程序设计概述,4.1 模块化程序设计概述,4.1.1 程序的模块化,模块化程序设计是分而治之策略在程序设计中的应用。人们在解决复杂问题时往往采用分而治之的策略。,4.1 模块化程序设计概述,4.1.1 程序的模块化,4.1 模块化程序设计概述,4.1.2 模块间的层次结构,具有严密的正确的层次结构; 具有合理的隶属关系; 上层模块可以调用所有隶属于它的下层模块; 下属模块只能通过唯一的出口返回到调用它的上层模块; 整个程序按隶属关系分成若干层次,每一层次由若干个模块组成。,4.1 模块化程序设计概述,4.1.3“自顶向下、逐步求精”的程序设计方法,强调的是程序总体结构,即要求程序设计人员首先确定主控模块。 分层向下细化,即按照上一层模块已确定的功能,把它再细化为一些子模块。 如此继续下去,直到所有模块功能能够很容易地用计算机语言实现。,4.1 模块化程序设计概述,4.1.3“自顶向下、逐步求精”的程序设计方法,MENU,4.2 Sub过程,4.2.1 Sub过程的定义,Sub过程的定义形式: Public|Private Static Sub 过程名(形式参数列表) Exit Sub End Sub,4.2 Sub过程,4.2.1 Sub过程的定义,【例4.1】实现两个浮点型变量值之间的交换。,Private Sub Swap(ByRef A As Single,ByRef B As Single),Dim T As Single,T=A,End Sub,:,A=B,:,B=T,4.2 Sub过程,4.2.1 Sub过程的定义,Sub过程以Sub开头,以End Sub结束,两者之间称为“过程体”。 过程名的命名规则与变量名相同。 Sub过程通过形参与实参的传递得到结果,调用时可返回多个值。 Exit Sub的功能是退出Sub过程,其目的是用于提前结束本次过程调用。,4.2 Sub过程,4.2.1 Sub过程的定义,ByVal|ByRef 变量名( ) As 类型, 仅表示形式参数的类型、个数和次序; 在过程定义时并无具体值,也不分配存储空间; 在过程被调用时,通过与实际参数结合获得具体的值。 ByVal表示当该过程被调用时,参数是按值传递的; ByRef表示当该过程被调用时,参数是按地址传递的。 形式参数也可以是数组。 在例4.1中,也可以将形式参数写成如下形式: Private Sub Swap(ByRef A!,ByRef B!),4.2 Sub过程,4.2.2 Sub过程的调用,Sub过程的调用格式如下: 过程名(实参列表) 为形参分配临时的存储单元; 将实参的值传递给形参对应的临时单元; 执行过程体中的语句; 当过程运行结束后把临时单元释放掉; 执行调用语句的下一条语句。,4.2 Sub过程,4.2.2 Sub过程的调用,Private Sub _ Button1_Click(ByVal sender _ As System.Object, ByVal e _ As System.EventArgs) _ Handles Button1.Click,Swap(X,Y),TxtOutput.Text = “X=” + _ X.ToString( ) + “ Y=” + _ Y.ToString( ),End Sub,Dim X,Y As Single X=3.95 :Y=-12.2,Private Sub Swap(ByVal _ A As Single,ByVal B As _ Single),Dim T As Single,End Sub,Swap(X,Y),3.95,-12.2,3.95,-12.2,T=A:,A=B:,B=T,3.95,3.95,-12.2,传值过程,调用过程,实参: X Y,形参:A B,T,MENU,4.3 Function过程,4.3.1 Function过程的定义,Function过程的定义形式: Public|Private Static Function 过程名(形式参数列表)As 类型 Exit Function End Function,4.3 Function过程,4.3.1 Function过程的定义,Function过程以Function开头,以End Function结束,两者之间称为“过程体”。 过程体中至少有一条Return语句: Return 表达式。调用时,过程的返回值即该表达式的值。 “As 类型”指定Function过程返回值的数据类型。,4.3 Function过程,4.3.1 Function过程的定义,计算阶乘的Function过程。 Function Fact(ByVal N As Integer) As Long Dim i As Integer Dim Result As Long Result=1 For i=1 to N Result = Result * i Next i Return Result End Function,4.3 Function过程,4.3.2 Function过程的调用,Function过程可以作为表达式的一个运算分量来使用。它的调用形式为: 过程名 (实际参数表),4.3 Function过程,4.3.1 Function过程的定义,例如,调用计算阶乘的Function过程的程序段代码: Dim X As Integer,Y As Long X=Val(InputBox(“请输入一个不大于10的自然数:”) Y=Fact(X),MENU,4.4 参数传递,设计过程时要指定形式参数,包括形式参数的个数及其类型; 在调用过程时,必须提供实际参数; 完成实际参数与形式参数的结合,称为参数传递。 参数传递分传值和引用两种方式。,4.4 参数传递,4.4.1 形参与实参,形式参数是指在定义通用过程时,出现在过程名后一对圆括号的变量。 实际参数是指在调用通用过程时,出现在过程名后一对圆括号内的变量、常量或表达式。 实参可以是常量、变量、表达式或数组名等形式。 形、实参表中的各个参数用逗号分隔。 在过程调用时,实际参数应在个数、类型和次序上与形式参数保持一致。,4.4 参数传递,4.4.1 形参与实参,Function Fact(ByVal N As Integer) As Long Dim i As Integer Dim Result As Long Result=1 For i=1 to N Result = Result * i Next i Return Result End Function,Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Dim X As Integer,Y As Long X=Val(InputBox(“请输入一个不大于10的自然数:”) Y=Fact(X) End Sub,形参,实参,4.4 参数传递,4.4.2 传值,ByVal表明调用过程时对应的实参与形参之间按传值方式传递数据。 系统为形参分配临时存储单元,并将实参的值传送给形参; 在过程内部改变形参的值时,并不会影响到实参的值。 实参可以是常量、变量或表达式,而变量必须有确定的值。,4.4 参数传递,4.4.2 传值,【例4.2】 Private Function fun1(ByVal x%,ByVal y%) As Integer Dim sum As Integer x=x*x y=y*y sum=x+y Return sum End Function Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Dim A ,B ,C As Integer A=5 B=8 C=fun1(A,B) TxtOutPut.Text = “A=“ + A.ToString() + “ “ + “B=“ + _ B.ToString() + “ 计算结果=“ + C.ToString() End Sub,Private Function fun1(ByVal x%,ByVal y%) As Integer Dim sum As Integer x=x*x y=y*y sum=x+y Return sum End Function,Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Dim A ,B ,C As Integer A=5 B=8 C=fun1(A,B) TxtOutPut.Text = “A=“ + A.ToString() + “ “ + “B=“ + _ B.ToString() + “ 计算结果=“ + C.ToString() End Sub,4.4 参数传递,4.4.3 引用,ByRef表明调用过程时对应的形参与实参之间按引用方式传递数据。 参数的传递是将实参的地址传递给形参,即形参与实参共享相同的存储单元。 当过程中对形参的值更改时,将更改相应实参的值。 实参可以是变量或数组,而不能是常量或表达式。,4.4 参数传递,4.4.3 引用,Private Sub _ Button1_Click(ByVal sender _ As System.Object, ByVal e _ As System.EventArgs) _ Handles Button1.Click,Swap(X,Y),TxtOutput.Text = “X=” + _ X.ToString( ) + “ Y=” + _ Y.ToString( ),End Sub,Dim X,Y As Single X=3.95 :Y=-12.2,Private Sub Swap(ByRef _ A As Single,ByRef B As _ Single),Dim T As Single,End Sub,Swap(X,Y),3.95,-12.2,3.95,-12.2,T=A:,A=B:,B=T,3.95,3.95,-12.2,引 用 过 程,调 用 过 程,调 用 后,实参: X Y,形参:A B,T,4.4 参数传递,4.4.4 数组参数,数组作为过程的参数,称为数组参数。 不需指出数组的下标上界; 需要指明数组的维数; 数组名后的括号不能省略; 参数传递只能是引用。 例如,定义以下过程: Private Sub fun2(ByRef a() As Integer) End Sub,4.4 参数传递,4.4.4 数组做参数(例4.3),Private Function ArrSum(ByRef X() As Integer) As Integer Dim Sum,i As Integer Sum = 0 For i = 1 To X.GetUpperBound(0) Sum = Sum + X(i) Next i Return Sum End Function Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Dim a(12) As Integer Dim i, b As Integer For i = 1 To 12 a(i) = Val(InputBox(“请收入“ + i.ToString() + “月份的收入:“) Next i b = ArrSum(a) MsgBox(“该职工的年输入为:“ + b.ToString() End Sub,Private Function ArrSum(ByRef X() As Integer) As Integer Dim Sum,i As Integer Sum = 0 For i = 1 To X.GetUpperBound(0) Sum = Sum + X(i) Next i Return Sum End Function,Private Sub Button1_Click(ByVal sender As System.Object, ByVal _ e As System.EventArgs) Handles Button1.Click Dim a(12) As Integer Dim i, b As Integer For i = 1 To 12 a(i) = Val(InputBox(“请收入“ + i.ToString() + “月份的收入:“) Next i b = ArrSum(a) MsgBox(“该职工的年输入为:“ + b.ToString() End Sub,MENU,4.5 变量的作用域与生存期,4.5.1 变量的作用域,1块范围,块是由End、Else、Loop或Next语句终止的语句集合。例如: ForNext IfThenElseEnd If 在某块内声明的变量只能在该块内使用。例如: If XYThen Dim T As Integer T=X : X=Y : Y=T End If,T的作用域,4.5 变量的作用域与生存期,4.5.1 变量的作用域,2过程范围,在某过程内声明的变量只能在该过程内部使用,该变量称为“局部变量”。例如: Private Sub Button1_Click(ByVal sender As _ System.Object, ByVal e As System.EventArgs) _ Handles Button1.Click Dim AA As Integer End Sub,AA的作用域,4.5 变量的作用域与生存期,4.5.1 变量的作用域,Private Sub S1( ) Dim a, b As Integer a = 11 : b = 22: a = a + 1: b = b + 1 TxtOutPut.Text = “a=“ + a.ToString() + “ b=“ + b.ToString() End Sub Private Sub S2( ) Dim a, c As Integer a = 33 : c = 44: a = a 1: c = c 1 TxtOutPut.Text = “a=“ + a.ToString() + “ b=“ + b.ToString() End Sub Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Call S1() MsgBox(“按任意键继续!“) Call S2() End Sub,2过程范围,Private Sub S1( ) Dim a, b As Integer a = 11 : b = 22: a = a + 1: b = b + 1 TxtOutPut.Text = “a=“ + a.ToString() + “ b=“ + b.ToString() End Sub,Private Sub S2( ) Dim a, c As Integer a = 33 : c = 44: a = a 1: c = c 1 TxtOutPut.Text = “a=“ + a.ToString() + “ b=“ + b.ToString() End Sub,Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Call S1() MsgBox(“按任意键继续!“) Call S2() End Sub,4.5 变量的作用域与生存期,4.5.1 变量的作用域,2过程范围,全局变量在过程外部定义,可以被该模块的所有过程调用。 【例4.5】局部变量与全局变量的区别。,Dim a As Integer Private Sub S1() Dim b As Integer b = 20 a = a + 1 b = b + 1 TxtOutPut.Text = “a=” + a.ToString() + “ b=” + b.ToString() End Sub Private Sub S2() Dim b As Integer b= 30 a = a +1 b = b +1 TxtOutPut.Text = “a=“ + a.ToString() + “ b=“ + b.ToString() End Sub Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click a=10 Call S1() MsgBox(“按任意键继续!“) Call S2() End Sub,Dim a As Integer,Private Sub S1() Dim b As Integer b = 20 a = a + 1 b = b + 1 TxtOutPut.Text = “a=” + a.ToString() + “ b=” + b.ToString() End Sub,Private Sub S2() Dim b As Integer b= 30 a = a +1 b = b +1 TxtOutPut.Text = “a=” + a.ToString() + “ b=” + b.ToString() End Sub,Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click a=10 Call S1() MsgBox(“按任意键继续!“) Call S2

温馨提示

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

评论

0/150

提交评论