子过程与函数过程精品文稿.ppt
第1页,本讲稿共40页6.1 子过程 6.1.1子过程的定义 6.1.2 子过程的调用 第2页,本讲稿共40页6.1.1 6.1.1 子过程的定义子过程的定义 【实例6.1】定义一个名为num的子过程,该子过程用来计算1+2+n的和。第3页,本讲稿共40页Private Sub sum(m As Integer,s As Long)For i=1 To m s=s+i Next iEnd Sub(2)自定义名为sum的Sub过程过程名过程名形式参数 形式参数 不能通过用户的动作触发此过程 第4页,本讲稿共40页子程序过程的一般定义格式 StaticPrivate|PublicSub子程序名 (形参列表)语句组1 Exit Sub 语句组2End Sub 已知条件、计算结已知条件、计算结果的个数及类型果的个数及类型提前结束子程序过程只能被本窗体中的只能被本窗体中的只能被本窗体中的只能被本窗体中的过程调用过程调用过程调用过程调用能被程序中的所能被程序中的所能被程序中的所能被程序中的所有过程调用有过程调用有过程调用有过程调用第5页,本讲稿共40页6.1.2 子程序过程的调用【实例6.2】程序运行时单击“1+100”按钮,在标签中显示1至100的和;单击“1+n”按钮,由用户在输入框中输入n值,并在标签中显示1至n的和。第6页,本讲稿共40页操作步骤(1)设计界面第7页,本讲稿共40页Private Sub sum(m As Integer,s As Long)For i=1 To m s=s+i Next iEnd Sub(2)自定义名为sum的Sub过程防止越界防止越界用户输入用户输入用户输入用户输入的的的的n n值值值值累加和值累加和值累加和值累加和值第8页,本讲稿共40页Private Sub cmdSum1_Click()Dim ss As Long sum 100,ss lblShow.Caption=1+100=&ssEnd Sub(3)编写cmdSum1的Click事件过程第9页,本讲稿共40页Private Sub cmdSum2_Click()Dim n As Integer :Dim ss As Long lblShow.Caption=n=InputBox()If n 1 Then Call sum(n,ss)lblShow.Caption=Else MsgBox End IfEnd Sub(4)编写cmdSum2的Click事件过程第10页,本讲稿共40页子程序过程的调用格式(两种形式)子程序过程的调用格式(两种形式)Call 过程名(实际参数)过程名过程名 实际参数实际参数 1 1、必须有确定值、必须有确定值、必须有确定值、必须有确定值2 2、个数、类型必须与形参一一对应、个数、类型必须与形参一一对应、个数、类型必须与形参一一对应、个数、类型必须与形参一一对应第11页,本讲稿共40页6.2 函数过程 6.2.1 函数过程的定义6.2.2 函数过程的调用 第12页,本讲稿共40页6.2.1 函数过程的定义【实例6.3】定义一个函数过程,计算n!。第13页,本讲稿共40页Private Function fac(m As Integer)As Double Dim s As Double s=1 For i=1 To m s=s*i Next i fac=sEnd Function求求m!通过函数名返回阶乘值通过函数名返回阶乘值防止数据防止数据溢出溢出(2)自定义名为fac的函数过程函数名函数名形参形参返回值类返回值类型型第14页,本讲稿共40页函数过程的一般定义格式 StaticPrivate|Public Function 函数名 (形参列表)As 类型 语句组1 函数名返回值 Exit Function 语句组2 函数名返回值End Function 必有该语句必有该语句提前结束函数提前结束函数第15页,本讲稿共40页6.2.2函数过程的调用【实例6.4】窗体中有1个标签和3个命令按钮(控件数组)。程序运行时,单击命令按钮,在标签中显示所求的阶乘。第16页,本讲稿共40页操作步骤(1)设计界面 第17页,本讲稿共40页Private Function fac(m As Integer)As Double Dim s As Double s=1 For i=1 To m s=s*i Next i fac=sEnd Function求求m!通过函数名返回阶乘值通过函数名返回阶乘值防止数据防止数据溢出溢出(2)编写名为fac的函数过程第18页,本讲稿共40页Private Sub cmdCal_Click(Index As Integer)Dim i As Integer:Dim sum As Double Select Case Index Case 0 lblCal.Caption=5!=&fac(5)Case 1 lblCal.Caption=7!=&fac(7)Case 2 For i=1 To 11 Step 2 sum=sum+fac(i)Next i lblCal.Caption=&sum End SelectEnd Sub求求5!求求7!求求1!+3!+9!+11!(3)编写命令按钮控件数组的Click事件过程第19页,本讲稿共40页函数过程的调用格式变量名=函数名(实际参数)1 1、必须有确定值、必须有确定值、必须有确定值、必须有确定值2 2、个数、类型必须与形参一一对应、个数、类型必须与形参一一对应、个数、类型必须与形参一一对应、个数、类型必须与形参一一对应第20页,本讲稿共40页6.3 变量定义位置的确定 6.3.1 在本过程内使用的变量 6.3.2 在本窗体内使用的变量 6.3.3 在所有窗体内使用的变量 第21页,本讲稿共40页6.3.1 在本过程内使用的变量【实例9.9】单击“和”按钮,求两随机数的和,同时使“平均值”按钮可用;单击“平均值”按钮,求两随机数的平均值,且使“平均值”按钮禁用。第22页,本讲稿共40页操作步骤(1)设计界面 第23页,本讲稿共40页Private Sub cmdSum_Click()Dim a As Integer,b As Integer a=Int(Rnd*100)b=Int(Rnd*100)lblShow.Caption=a&+&b&=&a+b cmdAve.Enabled=TrueEnd Sub过程级变量过程级变量(2)编写cmdSum的Click事件过程第24页,本讲稿共40页Private Sub cmdAve_Click()Dim a As Integer,b As Integer lblShow.Caption=(&a&+&b&)/2=&(a+b)/2 cmdAve.Enabled=FalseEnd Sub 不是前面的变量不是前面的变量 过程级变量只在其所在的过程中起作用(3)编写cmdAve的Click事件过程计算结果错!计算结果错!第25页,本讲稿共40页6.3.2 在本窗体内使用的变量【实例9.10】修改实例9.9,使其能够正确计算平 均值。第26页,本讲稿共40页操作步骤(1)在“通用”|“声明”部分定义窗体级变量 Dim a As Integer,b As Integer窗体级变量窗体级变量 第27页,本讲稿共40页(2)修改cmdSum的Click事件过程Private Sub cmdSum_Click()Dim a As Integer,b As Integer a=Int(Rnd*100)b=Int(Rnd*100)lblShow.Caption=a&+&b&=&a+b cmdAve.Enabled=TrueEnd Sub窗窗体体级级变变量量第28页,本讲稿共40页Private Sub cmdAve_Click()Dim a As Integer,b As Integer lblShow.Caption=(&a&+&b&)/2=&(a+b)/2 cmdAve.Enabled=FalseEnd Sub 窗体级变量窗体级变量(3)修改cmdAve的Click事件过程第29页,本讲稿共40页6.3.3 在所有窗体内使用的变量【实例9.11】在窗体1单击“查看”按钮,在标签中显示变量a的值;单击“进入”按钮进入窗体2。单击窗体2中“测试”按钮,在标签中显示a的值;单击“返回”按钮切换到窗体1。第30页,本讲稿共40页操作步骤(1)设计界面 第31页,本讲稿共40页(2)定义全局变量a 在工程中添加标准模块Module1.bas。【工程】|【添加模块】第32页,本讲稿共40页全局变量,各窗体中通用第33页,本讲稿共40页Private Sub cmdShow_Click()a=Int(Rnd*32767)lblShow.Caption=aEnd Sub(3)编写窗体1中命令按钮的Click事件过程Private Sub cmdIn_Click()frmEx9_11_2.Show frmEx9_11_1.HideEnd Sub第34页,本讲稿共40页Private Sub cmdTest_Click()txtShow.Text=a If a=Then MsgBox a为空值End Sub(4)编写窗体2中命令按钮的Click事件过程Private Sub cmdReturn_Click()frmEx9_11_2.Hide frmEx9_11_1.ShowEnd Sub第35页,本讲稿共40页6.4 静态变量的使用【实例9.12】单击“开始”按钮,在图像框中轮流显示哭脸和笑脸,同时该按钮的标题变为“暂停”;单击“暂停”按钮,图像框停止变换,同时该按钮的标题变为“开始”。第36页,本讲稿共40页操作步骤(1)设计界面第37页,本讲稿共40页Private Sub cmdCtrl_Click()If cmdCtrl.Caption=开始 Then tmrShow.Enabled=True cmdCtrl.Caption=暂停 Else tmrShow.Enabled=False cmdCtrl.Caption=开始 End IfEnd Sub(2)编写cmdCtrl的Click事件过程第38页,本讲稿共40页Private Sub tmrShow_Timer()Dim i As Integer If i Mod 2=0 Then imgShow.Picture=LoadPicture (d:face02.ico)Else imgShow.Picture=LoadPicture (d:face01.ico)End If i=Not i End Sub静态变量静态变量 i的值在的值在0与与-1间轮流变化间轮流变化(3)编写计时器的Timer事件过程程序错误!程序错误!StaticStatic第39页,本讲稿共40页变量过程级变量窗体级变量全局变量静态静态静态静态动态变量Static静态变量Dim第40页,本讲稿共40页