![第5章 過程與函數(shù)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/3/46a24440-3d63-46ed-906e-e352bca82141/46a24440-3d63-46ed-906e-e352bca821411.gif)
![第5章 過程與函數(shù)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/3/46a24440-3d63-46ed-906e-e352bca82141/46a24440-3d63-46ed-906e-e352bca821412.gif)
![第5章 過程與函數(shù)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/3/46a24440-3d63-46ed-906e-e352bca82141/46a24440-3d63-46ed-906e-e352bca821413.gif)
![第5章 過程與函數(shù)_第4頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/3/46a24440-3d63-46ed-906e-e352bca82141/46a24440-3d63-46ed-906e-e352bca821414.gif)
![第5章 過程與函數(shù)_第5頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/3/46a24440-3d63-46ed-906e-e352bca82141/46a24440-3d63-46ed-906e-e352bca821415.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、第5章 過程與函數(shù)1 掌握掌握Sub子程序和子程序和Function函數(shù)過程的定義和調(diào)函數(shù)過程的定義和調(diào)用方法;用方法;掌握傳址和傳值兩種參數(shù)傳遞方式的區(qū)別及其掌握傳址和傳值兩種參數(shù)傳遞方式的區(qū)別及其用途;用途;熟悉數(shù)組參數(shù)的使用方法;熟悉數(shù)組參數(shù)的使用方法;了解過程的嵌套調(diào)用和遞歸調(diào)用的執(zhí)行過程;了解過程的嵌套調(diào)用和遞歸調(diào)用的執(zhí)行過程;掌握過程作用域的有關概念;掌握過程作用域的有關概念;掌握變量的作用域和生存期掌握變量的作用域和生存期 本章要求:本章要求:第六章 過程與函數(shù) 第5章 過程與函數(shù)2本章重點:本章重點: Sub過程及過程及Function過程的定義與調(diào)用過程的定義與調(diào)用; 過程調(diào)
2、用中數(shù)據(jù)的傳遞。過程調(diào)用中數(shù)據(jù)的傳遞。本章難點:本章難點:過程調(diào)用中數(shù)據(jù)的傳遞。過程調(diào)用中數(shù)據(jù)的傳遞。第六章 過 程 第5章 過程與函數(shù)35.1 過程概述過程概述在在VB5.0/6.0中,除了系統(tǒng)提供的內(nèi)部函數(shù)過程和中,除了系統(tǒng)提供的內(nèi)部函數(shù)過程和事件過程外,用戶可自定義過程下列四種過程:事件過程外,用戶可自定義過程下列四種過程: “Sub” 保留字開始的為子過程保留字開始的為子過程“Function” 保留字開始的為函數(shù)過程保留字開始的為函數(shù)過程 “Property”保留字開始的為屬性過程保留字開始的為屬性過程“Event”保留字開始保留字開始的事件過程的事件過程第5章 過程與函數(shù)4 在在V
3、B中,的中,的Sub子過程分為:子過程分為:事件過程和通用過程事件過程和通用過程 5.2.1 事件過程事件過程 (1)窗體事件的語法)窗體事件的語法Private Sub Form_事件名事件名(參數(shù)列表參數(shù)列表) 語句組語句組End Sub (2)控件事件的語法)控件事件的語法Private Sub 控件名控件名_事件名事件名(參數(shù)列表參數(shù)列表) 語句組語句組 End Sub5.2 Sub過程過程第5章 過程與函數(shù)5子過程的定義形式如下:子過程的定義形式如下:Public|PrivateStatic Sub 子過程名子過程名(形參表形參表) 語句組語句組 Exit Sub 語句組語句組End
4、 Sub 5.2.2 通用過程(通用過程(Sub過程)的定義過程)的定義 說明:說明:(1)子過程名:子過程名:命名規(guī)則與變量名規(guī)則相同。命名規(guī)則與變量名規(guī)則相同。子過程名不返回值,而是通過形參與實參的傳遞得到結(jié)果,子過程名不返回值,而是通過形參與實參的傳遞得到結(jié)果,調(diào)用時可返回多個值。調(diào)用時可返回多個值。5.2 Sub過程過程第5章 過程與函數(shù)6(2)形式參數(shù)列表:形式參數(shù)列表:形式參數(shù)通常簡稱形式參數(shù)通常簡稱“形參形參”,僅表示,僅表示形參的類型、個數(shù)、位置,定義時是無值的,只有在過程被形參的類型、個數(shù)、位置,定義時是無值的,只有在過程被調(diào)用時,虛實參結(jié)合后才獲得相應的值。調(diào)用時,虛實參結(jié)
5、合后才獲得相應的值。(3)過程可以無形式參數(shù),但括號不能省。過程可以無形式參數(shù),但括號不能省。(4)參數(shù)的定義形式:參數(shù)的定義形式:ByValByRef變量名變量名( )As 類型類型,,ByVal表示當該過程被調(diào)用時,參數(shù)是按值傳遞的;缺省或表示當該過程被調(diào)用時,參數(shù)是按值傳遞的;缺省或ByRef表示當該過程被調(diào)用時,參數(shù)是按地址傳遞的。表示當該過程被調(diào)用時,參數(shù)是按地址傳遞的。 5.2 Sub過程過程第5章 過程與函數(shù)7例例5.1 編一個交換兩個整型變量值的子過程。編一個交換兩個整型變量值的子過程。Private Sub Swap( X As Integer, Y As Integer)D
6、im temp As Integer Temp=X : X=Y : Y=TempEnd Sub5.2 Sub過程過程Private Sub command1_click()Dim a%,b% a=val(inputbox(“a=“) b=val(inputbox(“b=“) print “a=“;a,”b=“,b call swap(a,b) print “a=“;a,”b=“,bEnd Sub第5章 過程與函數(shù)85.2.3 子過程的建立子過程的建立 通過通過 “工具工具”菜單中的菜單中的“添加過程添加過程”命令,出現(xiàn)命令,出現(xiàn)“添加添加過程過程”對話框(見圖對話框(見圖5.1),選擇過程類型
7、(子過程、函數(shù)、),選擇過程類型(子過程、函數(shù)、屬性、事件)及作用范圍(公有的屬性、事件)及作用范圍(公有的Public、私有的、私有的Private),),單擊確定后得到一個過程或函數(shù)定義的結(jié)構(gòu)框架(模板),單擊確定后得到一個過程或函數(shù)定義的結(jié)構(gòu)框架(模板),如:如:Public Sub Sort( ) End Sub5.2 Sub過程過程第5章 過程與函數(shù)95.2.4 過程的調(diào)用過程的調(diào)用 1、子過程的調(diào)用、子過程的調(diào)用 子過程名子過程名 參數(shù)列表參數(shù)列表 或或 Call 子過程名子過程名(參數(shù)列表參數(shù)列表)說明:說明: (1)參數(shù)列表參數(shù)列表稱為實參或?qū)嵲?,它必須與形參保持個數(shù)稱為實參或
8、實元,它必須與形參保持個數(shù)相同,位置與類型一一對應。相同,位置與類型一一對應。 (2)調(diào)用時把實參值傳遞給對應的形參。其中值傳遞)調(diào)用時把實參值傳遞給對應的形參。其中值傳遞(形參前有(形參前有ByVal說明)時實參的值不隨形參的值變化而改變。說明)時實參的值不隨形參的值變化而改變。而地址傳遞時實參的值隨形參值的改變而改變。而地址傳遞時實參的值隨形參值的改變而改變。5.2 Sub過程過程第5章 過程與函數(shù)10 (3)當參數(shù)是數(shù)組時,形參與實參在參數(shù)聲明時應省略)當參數(shù)是數(shù)組時,形參與實參在參數(shù)聲明時應省略其維數(shù),但括號不能省。其維數(shù),但括號不能省。 (4)調(diào)用子過程的形式有兩種,用)調(diào)用子過程的
9、形式有兩種,用Call關鍵字時,實參關鍵字時,實參必須加圓括號括起,反之則實參之間用必須加圓括號括起,反之則實參之間用“,”分隔。分隔。 例:調(diào)用上面定義的例:調(diào)用上面定義的Swap子過程的形式:子過程的形式: Swap a,b Call Swap(a,b)5.2 Sub過程過程第5章 過程與函數(shù)11Private Sub CmdOK() Call Swap(a,b) Swap a,bEnd SubPrivate Sub Swap(x%,y%) Dim temp% Temp=X X=Y Y=TempEnd Sub 過程調(diào)用的執(zhí)行過程:過程調(diào)用的執(zhí)行過程:5.2 Sub過程過程第5章 過程與函數(shù)
10、125.3 Function過程過程 Visual Basic函數(shù)分為內(nèi)部函數(shù)和外部函數(shù),外部函數(shù)是函數(shù)分為內(nèi)部函數(shù)和外部函數(shù),外部函數(shù)是用戶根據(jù)需要用用戶根據(jù)需要用Function關鍵字定義的函數(shù)過程,關鍵字定義的函數(shù)過程,與子過程與子過程不同的是函數(shù)過程將返回一個值不同的是函數(shù)過程將返回一個值 。 5.3.1 函數(shù)過程(函數(shù)過程(Function過程)的定義過程)的定義Public|PrivateStaticFunction 函數(shù)名函數(shù)名()As 函數(shù)名函數(shù)名=返回值返回值 Exit Function 函數(shù)名函數(shù)名=返回值返回值 End Function函數(shù)體第5章 過程與函數(shù)13說明:說
11、明: (1)函數(shù)名:函數(shù)名:命名規(guī)則與變量名規(guī)則相同。命名規(guī)則與變量名規(guī)則相同。 (2)在函數(shù)體內(nèi),函數(shù)名可以當變量使用,函數(shù)的返回值)在函數(shù)體內(nèi),函數(shù)名可以當變量使用,函數(shù)的返回值就是通過對函數(shù)名的賦值語句來實現(xiàn)的,就是通過對函數(shù)名的賦值語句來實現(xiàn)的,在函數(shù)過程中至少要在函數(shù)過程中至少要對函數(shù)名賦值一次。對函數(shù)名賦值一次。 (3)AS類型:類型:是指函數(shù)返回值的類型,若省略,則函數(shù)返是指函數(shù)返回值的類型,若省略,則函數(shù)返回變體類型值(回變體類型值(Variant)。)。 (4)Exit Function:表示退出函數(shù)過程,常常是與選擇結(jié):表示退出函數(shù)過程,常常是與選擇結(jié)構(gòu)(構(gòu)(If或或Sel
12、ect Case語句)聯(lián)用,即當滿足一定條件時,退出語句)聯(lián)用,即當滿足一定條件時,退出函數(shù)過程。函數(shù)過程。 (5)形參數(shù)列表形參數(shù)列表:形參的定義與子過程完全相同。:形參的定義與子過程完全相同。 例例5.2 5.3 Function過程過程第5章 過程與函數(shù)145.3.2 函數(shù)的調(diào)用函數(shù)的調(diào)用調(diào)用形式如下:調(diào)用形式如下: 函數(shù)名(實參列表)函數(shù)名(實參列表)說明:說明: 在調(diào)用時實參和形參的數(shù)據(jù)類型、順序、個數(shù)必須在調(diào)用時實參和形參的數(shù)據(jù)類型、順序、個數(shù)必須匹配。函數(shù)調(diào)用只能出現(xiàn)在表達式中,其功能是求得函匹配。函數(shù)調(diào)用只能出現(xiàn)在表達式中,其功能是求得函數(shù)的返回值。數(shù)的返回值。例例5.3 5.
13、3 Function過程過程第5章 過程與函數(shù)155.4 過程之間參數(shù)的傳遞過程之間參數(shù)的傳遞Visual Basic中不同模塊(過程)之間數(shù)據(jù)的傳遞有兩種方式:中不同模塊(過程)之間數(shù)據(jù)的傳遞有兩種方式: 通過過程調(diào)用實參與形參的結(jié)合實現(xiàn);通過過程調(diào)用實參與形參的結(jié)合實現(xiàn);使用全局變量來實現(xiàn)各過程中共享數(shù)據(jù)。使用全局變量來實現(xiàn)各過程中共享數(shù)據(jù)。 5.4.1 5.4.1 形式參數(shù)與實際參數(shù)形式參數(shù)與實際參數(shù)1、形式參數(shù)、形式參數(shù) 是指在定義通用過程時,出現(xiàn)在是指在定義通用過程時,出現(xiàn)在Sub或或Function語句中語句中的的變量名后面園括號內(nèi)的數(shù)變量名后面園括號內(nèi)的數(shù),是用來接收傳送給子過程
14、的是用來接收傳送給子過程的數(shù)據(jù)數(shù)據(jù),形參表中的各個變量之間用逗號分隔。,形參表中的各個變量之間用逗號分隔。 第5章 過程與函數(shù)162、實際參數(shù)、實際參數(shù) 實際參數(shù)是指在調(diào)用實際參數(shù)是指在調(diào)用Sub或或Function過程時,寫入子過程過程時,寫入子過程名或函數(shù)名后括號內(nèi)的參數(shù),其作用是名或函數(shù)名后括號內(nèi)的參數(shù),其作用是將它們的數(shù)據(jù)(數(shù)值或?qū)⑺鼈兊臄?shù)據(jù)(數(shù)值或地址)傳送給地址)傳送給Sub或或Function過程與其對應的形參變量。過程與其對應的形參變量。 實參可由常量、表達式、有效的變量名、數(shù)組名(后加左、實參可由常量、表達式、有效的變量名、數(shù)組名(后加左、右括號,如右括號,如A( ))組成,
15、實參表中各參數(shù)用逗號分隔。)組成,實參表中各參數(shù)用逗號分隔。5.4.2 參數(shù)傳遞(虛實結(jié)合)參數(shù)傳遞(虛實結(jié)合) 參數(shù)傳遞指主調(diào)過程的實參(調(diào)用時參數(shù)傳遞指主調(diào)過程的實參(調(diào)用時已有確定值和內(nèi)存已有確定值和內(nèi)存地址的參數(shù)地址的參數(shù))傳遞給被調(diào)過程的形參,參數(shù)的傳遞有兩種方)傳遞給被調(diào)過程的形參,參數(shù)的傳遞有兩種方式:按值傳遞、按地址傳遞。形參前加式:按值傳遞、按地址傳遞。形參前加“ByVal”關鍵字的是關鍵字的是按按值傳遞值傳遞,缺省缺省或加或加“ByRef”關鍵字的為按關鍵字的為按地址傳遞地址傳遞。 5.4 過程之間參數(shù)的傳遞過程之間參數(shù)的傳遞第5章 過程與函數(shù)17 傳址與傳值傳址與傳值 傳
16、址:傳址: 形參得到的是實參的地址,當形參值的改變同時形參得到的是實參的地址,當形參值的改變同時也改變實參的值。也改變實參的值。 傳值:傳值: 形參得到的是實參的值,形參值的改變不會影響形參得到的是實參的值,形參值的改變不會影響實參的值。實參的值。Sub Swap2(x%, y%) Dim Temp% Temp = x: x = y: y = Temp End SubSub Swap1(ByVal x%, ByVal y%)Dim Temp% Temp = x: x = y: y = TempEnd Sub例例5.4 5.4 過程之間參數(shù)的傳遞過程之間參數(shù)的傳遞第5章 過程與函數(shù)18Priva
17、te Sub CmdOK_Click() Dim a%,b% a = 10: b = 20 Swap1 a, b 傳傳 值值 Print A1=; a, B1=; b a = 10: b = 20 Swap2 a, b 傳地址傳地址 Print A2=; a, B2=; bEnd SubSub Swap2(x%, y%) Dim Temp% Temp = x: x = y: y = Temp End SubSub Swap1(ByVal x%, ByVal y%) Dim Temp% Temp = x: x = y: y = TempEnd Sub5.4 過程之間參數(shù)的傳遞過程之間參數(shù)的傳遞第
18、5章 過程與函數(shù)19值傳遞的執(zhí)行過程如下圖:值傳遞的執(zhí)行過程如下圖:5.4 過程之間參數(shù)的傳遞過程之間參數(shù)的傳遞第5章 過程與函數(shù)20通過地址傳遞數(shù)據(jù)的執(zhí)行過程通過地址傳遞數(shù)據(jù)的執(zhí)行過程 5.4 過程之間參數(shù)的傳遞過程之間參數(shù)的傳遞第5章 過程與函數(shù)215.4.3 有關過程之間數(shù)據(jù)傳遞的幾點說明有關過程之間數(shù)據(jù)傳遞的幾點說明 1. .參數(shù)的數(shù)據(jù)類型參數(shù)的數(shù)據(jù)類型2. 按值傳遞參數(shù)按值傳遞參數(shù)3.3.按地址傳遞參數(shù)按地址傳遞參數(shù) 注意:注意:在子過程和函數(shù)過程調(diào)用時,如果實參是常量在子過程和函數(shù)過程調(diào)用時,如果實參是常量(包括系統(tǒng)常量、用(包括系統(tǒng)常量、用Const自定義的符號常量)或表達式,無
19、自定義的符號常量)或表達式,無論在定義時使用值傳遞還是地址傳遞,此時都是按值傳遞方論在定義時使用值傳遞還是地址傳遞,此時都是按值傳遞方式將常量或表達式計算的式將常量或表達式計算的值傳遞給形參變量值傳遞給形參變量。 如果形參定義是按傳地址方式,但調(diào)用時想使實參變量如果形參定義是按傳地址方式,但調(diào)用時想使實參變量按值方式傳遞,可以把實參變量加上括號,將其轉(zhuǎn)換成表達按值方式傳遞,可以把實參變量加上括號,將其轉(zhuǎn)換成表達式即可。式即可。 例例5.5參數(shù)的傳遞問題:參數(shù)的傳遞問題:第5章 過程與函數(shù)224使用子過程還是使用函數(shù)過程使用子過程還是使用函數(shù)過程 解決一個問題既可以使用子過程,也可以使用函數(shù)過程
20、,解決一個問題既可以使用子過程,也可以使用函數(shù)過程,是使用子過程還是使用函數(shù)過程呢?是使用子過程還是使用函數(shù)過程呢?如果是需要求得一個值,如果是需要求得一個值,一般情況使用函數(shù)過程一般情況使用函數(shù)過程,如不是為了求一個值,而是完成一如不是為了求一個值,而是完成一些操作,些操作,或需要返回多個值或需要返回多個值,則使用子過程比較方便,則使用子過程比較方便。 例例5.6分別編寫計算下面級數(shù)的子過程和函數(shù)過程,并在分別編寫計算下面級數(shù)的子過程和函數(shù)過程,并在窗體的單擊事件中調(diào)用。窗體的單擊事件中調(diào)用。級數(shù)為,級數(shù)為, 要求精度為:要求精度為:)!2(.! 4! 2)12(3nxxxsn610)!2(
21、nxn第5章 過程與函數(shù)235.4.4 數(shù)組作過程的參數(shù)數(shù)組作過程的參數(shù) Visual Basic允許把數(shù)組作為實參傳送到過程中。數(shù)組作允許把數(shù)組作為實參傳送到過程中。數(shù)組作參數(shù)是通過傳地址方式傳送。在傳送數(shù)組時,除遵守參數(shù)傳參數(shù)是通過傳地址方式傳送。在傳送數(shù)組時,除遵守參數(shù)傳送的一般規(guī)則外,還應注意以下幾點:送的一般規(guī)則外,還應注意以下幾點: 1為了把一個數(shù)組的全部元素傳送給一個過程,應將數(shù)為了把一個數(shù)組的全部元素傳送給一個過程,應將數(shù)組名分別寫入形參表中,并略去數(shù)組的上下界,但括號不能組名分別寫入形參表中,并略去數(shù)組的上下界,但括號不能省略。省略。Private Sub Sort(a()
22、As single) End Sub其中形參其中形參“a( )”即為數(shù)組。即為數(shù)組。第5章 過程與函數(shù)24 2被調(diào)過程可通過被調(diào)過程可通過Lbound和和Ubound函數(shù)確定實參數(shù)組函數(shù)確定實參數(shù)組的上、下界。的上、下界。 3當用數(shù)組作形參時,對應的實參必須也是數(shù)組,且類當用數(shù)組作形參時,對應的實參必須也是數(shù)組,且類型一致。型一致。 4實參和形參結(jié)合是按地址傳遞,即形參數(shù)組和實參數(shù)實參和形參結(jié)合是按地址傳遞,即形參數(shù)組和實參數(shù)組共用一段內(nèi)存單元。組共用一段內(nèi)存單元。 例如:定義了實參數(shù)組例如:定義了實參數(shù)組b(1 to 8),給它們賦了值,調(diào)用,給它們賦了值,調(diào)用Sort()函數(shù)過程的形式如下
23、:函數(shù)過程的形式如下: Sort b( ) 或或 Call Sort( b() ) 實參數(shù)組后面的括號可以省略,但為便于閱讀,建議一實參數(shù)組后面的括號可以省略,但為便于閱讀,建議一般不要省略為好。般不要省略為好。 5.4.4 數(shù)組作過程的參數(shù)數(shù)組作過程的參數(shù)第5章 過程與函數(shù)25 調(diào)用時形參數(shù)組調(diào)用時形參數(shù)組a和實參數(shù)組和實參數(shù)組b虛實結(jié)合,共用一段內(nèi)存單虛實結(jié)合,共用一段內(nèi)存單元,如圖元,如圖6-7所示。因此在所示。因此在Sort()過程中改變數(shù)組過程中改變數(shù)組a的各元素值,的各元素值,也就相當于改變了實參數(shù)組也就相當于改變了實參數(shù)組b中對應的元素的值,當調(diào)用結(jié)束中對應的元素的值,當調(diào)用結(jié)束
24、時,形參數(shù)組時,形參數(shù)組a成為無定義。成為無定義。 b(1) b(2) b(3) b(4) b(5) b(6) b(7) b(8) a(1) a(2) a(3) a(4) a(5) a(6) a(7) a(8)參數(shù)為數(shù)組時虛實結(jié)合示意圖參數(shù)為數(shù)組時虛實結(jié)合示意圖 例例5.7改寫上章例改寫上章例5.3的排序程序,分別將排序用子過程的排序程序,分別將排序用子過程Sort(),產(chǎn)生,產(chǎn)生N個隨機整數(shù)用子過程個隨機整數(shù)用子過程GetData(),輸入,輸入N個數(shù)組個數(shù)組元素用元素用PrData()子過程來完成。子過程來完成。5.4.4 數(shù)組作過程的參數(shù)數(shù)組作過程的參數(shù)第5章 過程與函數(shù)265.5 過程
25、的嵌套和遞歸調(diào)用過程的嵌套和遞歸調(diào)用5.5.1 過程的嵌套過程的嵌套 在程序中調(diào)用一子過程,而在子過程中又調(diào)用另外的子過在程序中調(diào)用一子過程,而在子過程中又調(diào)用另外的子過程,這種程序結(jié)構(gòu)稱為程,這種程序結(jié)構(gòu)稱為過程的嵌套。過程的嵌套。過程的嵌套調(diào)用執(zhí)行過過程的嵌套調(diào)用執(zhí)行過程如程如下圖:下圖:第5章 過程與函數(shù)275.5.2 過程的遞歸調(diào)用過程的遞歸調(diào)用 用自身的結(jié)構(gòu)來描述自身,稱遞歸。例如,對階乘的定義:用自身的結(jié)構(gòu)來描述自身,稱遞歸。例如,對階乘的定義:)!2() 1()!1()!1(!nnnnnn Visual Basic允許在一個允許在一個Sub子過程和子過程和Function過程的定
26、過程的定義內(nèi)部調(diào)用自己,即遞歸義內(nèi)部調(diào)用自己,即遞歸Sub子過程和遞歸子過程和遞歸Function函數(shù)。函數(shù)。例例5.8編求階乘編求階乘fac(n)=n! 的遞歸函數(shù)的遞歸函數(shù)5.5 過程的嵌套和遞歸調(diào)用過程的嵌套和遞歸調(diào)用第5章 過程與函數(shù)28Private Function fac(n As Integer) As Integer If n = 1 Then fac = 1 Else fac = n * fac(n - 1) End IfEnd FunctionPrivate Sub Form_Click() Print “fac(4)=”;fac(4)End Sub程序的遞歸過程:5.5
27、 過程的嵌套和遞歸調(diào)用過程的嵌套和遞歸調(diào)用第5章 過程與函數(shù)29說明:說明:遞歸處理分遞推和回歸兩個過程,如上圖所示。遞歸處理分遞推和回歸兩個過程,如上圖所示。使用遞歸算法必須要滿足以下的遞歸條件:使用遞歸算法必須要滿足以下的遞歸條件: (1)存在遞歸結(jié)束條件及結(jié)束時的值;)存在遞歸結(jié)束條件及結(jié)束時的值; (2)能用遞歸形式表示,且遞歸向終止條件發(fā)展。)能用遞歸形式表示,且遞歸向終止條件發(fā)展。5.5 過程的嵌套和遞歸調(diào)用過程的嵌套和遞歸調(diào)用第5章 過程與函數(shù)30 在在第第1 1章章我們介紹了我們介紹了VBVB應用程序(通常稱為工程)的組織應用程序(通常稱為工程)的組織結(jié)構(gòu),它由結(jié)構(gòu),它由窗體模
28、塊、標準模塊和類模塊窗體模塊、標準模塊和類模塊組成。組成。VBVB程序代碼就程序代碼就保存在窗體模塊文件(保存在窗體模塊文件(.Frm.Frm)、標準模塊文件()、標準模塊文件(.Bas.Bas)或)或類模塊文件(類模塊文件(.Cls.Cls)中。它們形成了工程的一種模塊層次結(jié))中。它們形成了工程的一種模塊層次結(jié)構(gòu),如下圖所示。構(gòu),如下圖所示。5.6 過程和變量的作用域過程和變量的作用域第5章 過程與函數(shù)31窗體模塊窗體模塊(文件擴展名為文件擴展名為 .FRM ) 窗體模塊。窗體模塊。窗體模塊可以包含處理事件的過程、窗體模塊可以包含處理事件的過程、通用過程以及變量、常數(shù)、類型和外部過程的窗體通
29、用過程以及變量、常數(shù)、類型和外部過程的窗體級聲明級聲明。如果要在文本編輯器中觀察窗體模塊,則。如果要在文本編輯器中觀察窗體模塊,則還會看到窗體及其控件的描述,包括它們的屬性設還會看到窗體及其控件的描述,包括它們的屬性設置值。寫入窗體模塊的代碼是該窗體所屬的具體應置值。寫入窗體模塊的代碼是該窗體所屬的具體應用程序?qū)S玫?;它也可以引用該應用程序?nèi)的其它用程序?qū)S玫?;它也可以引用該應用程序?nèi)的其它窗體或?qū)ο?。窗體或?qū)ο蟆?.6 過程和變量的作用域過程和變量的作用域第5章 過程與函數(shù)32標準模塊標準模塊 (文件擴展名為文件擴展名為BAS) 它們它們可以包含變量、常數(shù)、類型、外部過程和全可以包含變量、常
30、數(shù)、類型、外部過程和全局過程的全局局過程的全局(在整個應用程序范圍內(nèi)有效的在整個應用程序范圍內(nèi)有效的)聲明或聲明或模塊級聲明模塊級聲明。寫入標準模塊的代碼不必綁在特定的應。寫入標準模塊的代碼不必綁在特定的應用程序上,則在許多不同的應用程序中可以重用標準用程序上,則在許多不同的應用程序中可以重用標準模塊。模塊。5.6 過程和變量的作用域過程和變量的作用域第5章 過程與函數(shù)33類模塊類模塊(文件擴展名為文件擴展名為 .CLS) 在在 Visual Basic 中類模塊是面向?qū)ο缶幊痰幕A。中類模塊是面向?qū)ο缶幊痰幕A??稍陬惸K中編寫代碼建立新對象。這些新對象可以可在類模塊中編寫代碼建立新對象。這
31、些新對象可以包含自定義的屬性和方法。實際上,窗體正是這樣一包含自定義的屬性和方法。實際上,窗體正是這樣一種類模塊,在其上可安放控件,可顯示窗體窗口。種類模塊,在其上可安放控件,可顯示窗體窗口。5.6 過程和變量的作用域過程和變量的作用域第5章 過程與函數(shù)345.6.1 過程的作用域過程的作用域Public|Private Sub 子過程名子過程名(形式參數(shù)列表形式參數(shù)列表) . End Sub概念概念 通用子過程和函數(shù)過程既可寫在通用子過程和函數(shù)過程既可寫在窗體模塊中窗體模塊中也也可寫在可寫在標準模塊中標準模塊中,在定義時可選用關鍵字,在定義時可選用關鍵字PrivatePrivate(局部)(
32、局部)和和PublicPublic(全局)(全局),來決定它們,來決定它們能被調(diào)用的范圍。能被調(diào)用的范圍。 第5章 過程與函數(shù)351、窗體窗體/模塊級過程:模塊級過程: 加加Private關鍵字的過程,只能被定義的窗體或模關鍵字的過程,只能被定義的窗體或模 塊中的塊中的過程調(diào)用。過程調(diào)用。2、全局級過程:全局級過程: 加加Public關鍵字關鍵字(或缺?。ɑ蛉笔。┑倪^程,可供該應用程序的的過程,可供該應用程序的所有窗體和所有標準模塊中的過程調(diào)用。所有窗體和所有標準模塊中的過程調(diào)用。按過程的作用范圍來劃分,過程可分為:按過程的作用范圍來劃分,過程可分為: 模塊級過程模塊級過程 全局級過程全局級
33、過程用例用例7.1來說明過程的作用域來說明過程的作用域 5.6.1 過程的作用域過程的作用域第5章 過程與函數(shù)36總結(jié)歸納過程的定義及作用域如下表(教材總結(jié)歸納過程的定義及作用域如下表(教材Pg.163)幾點說明:(教材幾點說明:(教材Pg.164)5.6.1 過程的作用域過程的作用域第5章 過程與函數(shù)375.6.2 變量的作用域變量的作用域概述:概述: 在在VB中,由于可以在過程中和模塊中聲明變量,中,由于可以在過程中和模塊中聲明變量,根據(jù)定義變量的位置和定義變量的語句不同,變量根據(jù)定義變量的位置和定義變量的語句不同,變量可以分為:可以分為:局部變量局部變量(過程級變量)(過程級變量)窗體窗
34、體/模塊級變量模塊級變量(私有的模塊級變量,能被本模(私有的模塊級變量,能被本模塊的所有過程和函數(shù)使用)塊的所有過程和函數(shù)使用)全局級變量全局級變量(公有的模塊級變量)。(公有的模塊級變量)。第5章 過程與函數(shù)381.過程級變量過程級變量局部變量局部變量 局部變量:局部變量:在過程內(nèi)用聲明的變量,只能在在過程內(nèi)用聲明的變量,只能在本過程中使用。本過程中使用。 在過程內(nèi)部使用在過程內(nèi)部使用 Dim 或者或者 Static 關鍵字來聲明關鍵字來聲明的變量,只在聲明它們的過程中才能被訪問或改變該的變量,只在聲明它們的過程中才能被訪問或改變該變量的值,別的過程不可訪問。所以可以在不同的過變量的值,別的
35、過程不可訪問。所以可以在不同的過程中聲明相同名字的局部變量而互不影響。程中聲明相同名字的局部變量而互不影響。 5.6.2 變量的作用域變量的作用域第5章 過程與函數(shù)39例:例:Private Sub Form_Load() Dim n% n= 10End SubPrivate Sub From_Click() Dim n% Print “n=“;nEnd Sub程序運行后單擊窗體,其輸出結(jié)果是什么?程序運行后單擊窗體,其輸出結(jié)果是什么?5.6.2 變量的作用域變量的作用域第5章 過程與函數(shù)402.窗體窗體/模塊級變量模塊級變量 窗體窗體/模塊級變量:模塊級變量:在在“ “通用通用聲明聲明” ”
36、段中用段中用Dim語句或用語句或用Private語句聲明的變量,可被本窗體語句聲明的變量,可被本窗體/模模塊的任何過程訪問。但其他模塊塊的任何過程訪問。但其他模塊卻不能訪問該變量。卻不能訪問該變量。 例如:在例如:在“ “通用聲明通用聲明” ”段聲明如段聲明如下變量下變量:Private s As StringDim a As Integer5.6.2 變量的作用域變量的作用域例:例:Dim n% Private Sub Form_Load() n= 10End SubPrivate Sub From_Click() Print “n=“;nEnd Sub第5章 過程與函數(shù)413 全局變量全局
37、變量 全局變量全局變量也稱公有的模塊級變量,在窗體模塊也稱公有的模塊級變量,在窗體模塊或標準模塊的頂部的或標準模塊的頂部的“通用通用”聲明段用聲明段用Public關鍵關鍵字聲明,它的作用范圍是整個應用程序,即可被本字聲明,它的作用范圍是整個應用程序,即可被本應用程序的任何過程或函數(shù)訪問。應用程序的任何過程或函數(shù)訪問。例如:例如: Public a As Integer,b As single5.6.2 變量的作用域變量的作用域第5章 過程與函數(shù)423種變量聲明及使用規(guī)則如下表:種變量聲明及使用規(guī)則如下表:5.6.2 變量的作用域變量的作用域第5章 過程與函數(shù)43 不同過程內(nèi)的局部變量可以同名,
38、它們互不影響。不同過程內(nèi)的局部變量可以同名,它們互不影響。 不同窗體或模塊間的窗體不同窗體或模塊間的窗體/模塊級變量也可以同名。模塊級變量也可以同名。 不同窗體或模塊中定義的全局變量也可以同名,但在使用時不同窗體或模塊中定義的全局變量也可以同名,但在使用時應在變量名前加上定義該變量的窗體或模塊名。應在變量名前加上定義該變量的窗體或模塊名。 如果局部變量與同一窗體或模塊中定義的窗體如果局部變量與同一窗體或模塊中定義的窗體/模塊級變量模塊級變量同名,則在定義該局部變量的過程中優(yōu)先訪問該局部變量。同名,則在定義該局部變量的過程中優(yōu)先訪問該局部變量。 如果局部變量與全局變量同名,則在定義該局部變量的過
39、程如果局部變量與全局變量同名,則在定義該局部變量的過程中優(yōu)先訪問該局部變量,如果要訪問同名的全局變量,應該中優(yōu)先訪問該局部變量,如果要訪問同名的全局變量,應該在全局變量名前加上全局變量所在窗體或模塊的名字。在全局變量名前加上全局變量所在窗體或模塊的名字。關于變量同名問題的關于變量同名問題的幾點說明幾點說明:5.6.2 變量的作用域變量的作用域第5章 過程與函數(shù)44 1.動態(tài)變量動態(tài)變量概念概念 在過程中使用在過程中使用Dim語句定義的局部變量稱為動態(tài)變量語句定義的局部變量稱為動態(tài)變量只有當過程被調(diào)用時,系統(tǒng)才為動態(tài)變量分配存儲只有當過程被調(diào)用時,系統(tǒng)才為動態(tài)變量分配存儲空間空間 ,動態(tài)變量才能
40、夠在本過程中使用,動態(tài)變量才能夠在本過程中使用 過程調(diào)用結(jié)束后,動態(tài)變量的存儲空間被系統(tǒng)重新過程調(diào)用結(jié)束后,動態(tài)變量的存儲空間被系統(tǒng)重新收回,動態(tài)變量又無法使用了收回,動態(tài)變量又無法使用了 5.6.3 變量的生存期變量的生存期動態(tài)變量的生存期就是過程的調(diào)用期動態(tài)變量的生存期就是過程的調(diào)用期第5章 過程與函數(shù)452. 靜態(tài)變量靜態(tài)變量 在過程中使用在過程中使用Static語句定義局部變量,這種局部變量稱語句定義局部變量,這種局部變量稱為靜態(tài)變量:為靜態(tài)變量: 除作用域之外,變量還有存活期,在這一期間變量能夠保除作用域之外,變量還有存活期,在這一期間變量能夠保持它們的值。持它們的值。 在應用程序的
41、存活期內(nèi)一直保持在應用程序的存活期內(nèi)一直保持模塊級變量模塊級變量和和全局變量全局變量的的值。但是,對于值。但是,對于Dim聲明的局部變量聲明的局部變量僅當過程執(zhí)行期間存在,僅當過程執(zhí)行期間存在,當一個過程執(zhí)行完畢,它的局部變量的值就已經(jīng)不存在,而當一個過程執(zhí)行完畢,它的局部變量的值就已經(jīng)不存在,而且且變量所占據(jù)的內(nèi)存也被釋放變量所占據(jù)的內(nèi)存也被釋放。當下一次執(zhí)行該過程時,它。當下一次執(zhí)行該過程時,它的所有局部變量將重新初始化。的所有局部變量將重新初始化。 概念概念局部變量的存活期由其定義的關鍵詞來決定。局部變量的存活期由其定義的關鍵詞來決定。5.6.3 變量的生存期變量的生存期第5章 過程與函
42、數(shù)46局部變量聲明:局部變量聲明: Dim聲明:聲明:隨過程的調(diào)用而分配存貯單元,變量的初始化;隨過程的調(diào)用而分配存貯單元,變量的初始化;過程體結(jié)束,變量的內(nèi)容自動消失,存貯單元釋放。過程體結(jié)束,變量的內(nèi)容自動消失,存貯單元釋放。 Static聲明聲明,每次調(diào)用過程,變量保持上次調(diào)用結(jié)束時的值。,每次調(diào)用過程,變量保持上次調(diào)用結(jié)束時的值。 聲明形式:聲明形式: Static 變量名變量名 AS 類型類型Static Function 函數(shù)過程名函數(shù)過程名(參數(shù)列表參數(shù)列表) As 類型類型 Static Sub 子過程名子過程名(參數(shù)列表參數(shù)列表) 注意:過程名前加注意:過程名前加Static
43、,表示該過程內(nèi)的局,表示該過程內(nèi)的局部變量都是靜態(tài)變量。部變量都是靜態(tài)變量。5.6.3 變量的生存期變量的生存期第5章 過程與函數(shù)47例例5.10 編寫一個驗證密碼的程序,要求每單擊一次命令按鈕編寫一個驗證密碼的程序,要求每單擊一次命令按鈕cmdOK就驗證一次用戶在文本框就驗證一次用戶在文本框txtInput中輸入的密碼,只中輸入的密碼,只允許用戶輸入允許用戶輸入3次密碼,次密碼,3次都錯則自動退出。次都錯則自動退出。 const PWD = pass 預先設定密碼預先設定密碼Private Sub cmdOK_Click() Static times As Integer 定義靜態(tài)變量統(tǒng)計驗
44、證次數(shù)定義靜態(tài)變量統(tǒng)計驗證次數(shù) If txtInput PWD Then times = times + 1 times的初始值為的初始值為0 MsgBox Invalid Password! If times = 3 Then End Else MsgBox Welcome! times = 0 End IfEnd sub5.6.3 變量的生存期變量的生存期如果使用如果使用Dim語句定義語句定義times,則程序執(zhí)行情況如,則程序執(zhí)行情況如何?為什么在驗證成功后,何?為什么在驗證成功后,要把要把times賦值為賦值為0?第5章 過程與函數(shù)485.7 多重窗體與多模塊程序設計多重窗體與多模塊程
45、序設計 一個稍微復雜的應用程序,不僅有多個窗體,還可能有標一個稍微復雜的應用程序,不僅有多個窗體,還可能有標準模塊和類模塊,如下圖所示。準模塊和類模塊,如下圖所示。 本節(jié)介紹在多模塊程序本節(jié)介紹在多模塊程序中,關于啟動對象的設置、中,關于啟動對象的設置、窗體的加載與卸載、窗體的窗體的加載與卸載、窗體的加載與卸載時的事件、多模加載與卸載時的事件、多模塊間數(shù)據(jù)的傳遞等。塊間數(shù)據(jù)的傳遞等。第5章 過程與函數(shù)495.7.1 設置啟動對象設置啟動對象 在程序運行時,首先被加載并執(zhí)行的對象,稱為程序的在程序運行時,首先被加載并執(zhí)行的對象,稱為程序的啟啟動對象動對象。一個程序的啟動對象可以是。一個程序的啟動
46、對象可以是一個窗體一個窗體,也可以是標,也可以是標準模塊中名為準模塊中名為Main的自定義的自定義Sub過程過程。缺省情況下,第一個。缺省情況下,第一個創(chuàng)建的窗體被指定為啟動對象。創(chuàng)建的窗體被指定為啟動對象。 1、設置方法:、設置方法: 從從“工程工程”菜單中的最后一項菜單中的最后一項“*屬性屬性” ,在,在“*工程工程屬性屬性”對話框中進行設置。對話框中進行設置。 2、如果設置從主過程、如果設置從主過程Main()啟動,則必須在標準模塊啟動,則必須在標準模塊中編寫中編寫Main()過程代碼。過程代碼。例:例:Pg170.5.7 多重窗體與多模塊程序設計多重窗體與多模塊程序設計第5章 過程與函
47、數(shù)505.7.2 窗體的加載與卸載過程窗體的加載與卸載過程 當一個窗體要顯示在屏幕之前,必須先建立,當一個窗體要顯示在屏幕之前,必須先建立,接著被裝入內(nèi)存(接著被裝入內(nèi)存(Load語句語句),最后顯示(),最后顯示(Show方方法法)在屏幕上。同樣,當窗體要結(jié)束之前,會先從)在屏幕上。同樣,當窗體要結(jié)束之前,會先從屏幕上隱藏(屏幕上隱藏(Hide方法方法),接著從內(nèi)存中刪除),接著從內(nèi)存中刪除(Unload方法方法) 5.7多重窗體與多模塊程序設計多重窗體與多模塊程序設計第5章 過程與函數(shù)51 在窗體的加載過程的各階段所用一的語句或方法以及所在窗體的加載過程的各階段所用一的語句或方法以及所觸發(fā)
48、的事件可用下面的圖來說明:觸發(fā)的事件可用下面的圖來說明:5.7 多重窗體與多模塊程序設計多重窗體與多模塊程序設計第5章 過程與函數(shù)52 在窗體的卸載過程的各階段所用一的語句或方法以及在窗體的卸載過程的各階段所用一的語句或方法以及所觸發(fā)的事件如下圖:所觸發(fā)的事件如下圖: Unload 語句QueryUnloadUnload5.7 多重窗體與多模塊程序設計多重窗體與多模塊程序設計第5章 過程與函數(shù)531、窗體的加載與顯示、窗體的加載與顯示(1)Load語句:裝入窗體到內(nèi)存語句:裝入窗體到內(nèi)存 Load 窗體名稱窗體名稱 說明:執(zhí)行說明:執(zhí)行Load語句后,窗體并不顯示出來,但可引用語句后,窗體并不
49、顯示出來,但可引用該窗體中的控件及各種屬性。該窗體中的控件及各種屬性。 注意:這里的窗體名稱是窗體的注意:這里的窗體名稱是窗體的Name屬性,屬性, 而不是窗體的文件名,以下相同。而不是窗體的文件名,以下相同。(3)Show方法:顯示一個窗體方法:顯示一個窗體 窗體名稱窗體名稱.Show 模式模式 0 Modeless(非模式):可以對其它窗體進行操作(非模式):可以對其它窗體進行操作 1 Model,關閉才能對其它窗體進行操作。,關閉才能對其它窗體進行操作。5.7 多重窗體與多模塊程序設計多重窗體與多模塊程序設計第5章 過程與函數(shù)542、窗體的隱藏與卸載窗體的隱藏與卸載 (1)Unload語
50、句:從內(nèi)存刪除窗體語句:從內(nèi)存刪除窗體 Unload 說明:說明: 當窗體卸載之后,所有在運行時放到該窗體上的控件都當窗體卸載之后,所有在運行時放到該窗體上的控件都不再是可訪問的。在設計時放到該窗體上的控件將保持不再是可訪問的。在設計時放到該窗體上的控件將保持不變不變 在卸載窗體時,只有顯示的部件被卸載。與該窗體模塊在卸載窗體時,只有顯示的部件被卸載。與該窗體模塊相關聯(lián)的代碼還保持在內(nèi)存中。相關聯(lián)的代碼還保持在內(nèi)存中。(2)Hide方法:隱藏,沒有刪除方法:隱藏,沒有刪除 窗體名稱窗體名稱. Hide5.7 多重窗體與多模塊程序設計多重窗體與多模塊程序設計第5章 過程與函數(shù)555.7.3 與窗
51、體加載與卸載過程的關的事件與窗體加載與卸載過程的關的事件1Initialize事件事件 2Load事件事件3Paint事件事件 4QueryUnLoad事件事件 5UnLoad事件事件 6Activate事件與事件與Deactivate事件事件 7Terminate事件事件 例例5.11 驗證與窗體加載與卸載過程相關的事件被觸發(fā)的驗證與窗體加載與卸載過程相關的事件被觸發(fā)的先后順序。先后順序。 5.7多重窗體與多模塊程序設計多重窗體與多模塊程序設計第5章 過程與函數(shù)565.8 應用舉例應用舉例5.8.1 查找問題查找問題例例5.12使用順序查找法,在一組數(shù)中查找某給定的數(shù)使用順序查找法,在一組數(shù)中查找某給定的數(shù)x 算法設計:算法設計: 設一組數(shù)據(jù)存放在數(shù)組設一組數(shù)據(jù)存放在數(shù)組a(1)-a(n)中,待查找的數(shù)據(jù)放在中,待查找的數(shù)據(jù)放在x 中,把中,把x與與a數(shù)組中的元素從頭到尾一數(shù)組中的元素從頭到尾一 一進行比較查找。用變量一進行比較查找。用變量p表示表示a數(shù)組元素下標,數(shù)組元素下標,p初值為初值為1,使,使x與與a(p)比較,如果比較,如果x不等不等于于a(p),則使,則使p=p+1,不斷重復這個過程;一旦,不斷重復這個過程;一旦x等于等于a(p)則退則退出循環(huán);另外,如果出循環(huán);另外,如果p大于數(shù)組長度,循環(huán)也應該停止,則可大于數(shù)組長度,循環(huán)也應該停止,則可由以
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023三年級英語上冊 Module 1 Getting to know you Unit 3 Are you Kitty說課稿 牛津滬教版(三起)
- 21《古詩三首》說課稿-2024-2025學年語文四年級上冊統(tǒng)編版001
- 6《摸一摸》說課稿-2024-2025學年科學一年級上冊青島版
- 2024-2025學年高中生物 第3章 植物的激素調(diào)節(jié) 第1節(jié) 植物生長素的發(fā)現(xiàn)說課稿 新人教版必修3001
- 2024年五年級英語下冊 Module 7 Unit 2 I will be home at seven oclock說課稿 外研版(三起)
- 2025住宅裝修物業(yè)管理合同(合同范本)
- 8《池子與河流》(說課稿)-2023-2024學年統(tǒng)編版語文三年級下冊
- 2025鍋爐拆除安全施工合同
- 2025有關電梯廣告的合同范本
- Unit 6 Disaster and Hope Understanding ideas 說課稿-2023-2024學年外研版高中英語(2019)必修第三冊
- 職業(yè)衛(wèi)生培訓課件
- 柴油墊資合同模板
- GB/T 44489-2024高級輔助駕駛地圖審查要求
- 2024-2030年中國體外除顫器行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略分析報告
- 2024-2030年中國人力資源行業(yè)市場發(fā)展前瞻及投資戰(zhàn)略研究報告
- 2024-2030年中國樺樹汁行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略分析報告
- 全冊(教案)外研版(一起)英語四年級下冊
- 偏差行為、卓越一生3.0版
- 國網(wǎng)浙江電科院:2024浙江工商業(yè)儲能政策及收益分析報告
- 中國兒童幽門螺桿菌感染診治專家共識2022
- JJG 4-2015鋼卷尺行業(yè)標準
評論
0/150
提交評論