版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第7章過程在一個程序中,如果需要在多處執(zhí)行完成同一功能的程序段,那么,重復書寫一相同的程序段,是一項相當繁瑣且容易出錯的工作。能否對這樣的程序段只書寫一次而又多次調(diào)用呢?VisualBasic提供了設計過程和自定義函數(shù)的功能,利用過程和自定義函數(shù)就能滿足以上的需要。把需要在多處重復使用的程序段編寫成一個相對獨立的程序模塊,這個程序模塊就稱為過程或自定義函數(shù)。這樣,在一個程序中,需要完成這個程序模塊功能的地方就不用再重復編制程序了,而是通過調(diào)用該過程或用戶自定義函數(shù)來完成,這就是“結構化”程序設計的思想。
結構化程序設計思想的重點之一就是對一個復雜的問題采用“分而治之”的策略—模塊化,把一個較大的程序劃分為若干個模塊,每個模塊只完成一個或若干個功能。使用“過程”是實現(xiàn)結構化程序設計思想的重要方法。。
【主要內(nèi)容】本章要求用戶重點掌握以下內(nèi)容。Sub過程和Function過程的定義格式。Sub過程和Function過程的調(diào)用。重點掌握Sub過程和Function過程中參數(shù)的傳遞方式,掌握值傳遞和地址傳遞的區(qū)別,并能靈活應用。了解Shell函數(shù)的使用。
7.1引例【引例】在名稱為Form1的窗體畫兩個名稱分別為Command1和Command2,外觀屬性分別為“輸入成績”和“成績處理”的命令按鈕,四個標簽分別作提示性的說明,通過四個文本框分別用來輸出數(shù)據(jù),從鍵盤輸入10個學生的成績,求他們的平均成績,最高分,最低分,并從高到低排名。程序的運行界面如圖7.1所示。
圖7.1【引例】運行界面
分析:在【引例】中,要求用戶完成五項功能:輸入10個學生的成績,求平均成績,最高分,最低分,排名。當然,這五項功能可以編寫在一個事件過程中完成,但程序顯得很復雜,如果把程序分成幾個獨立功能模塊來完成,而由主程序調(diào)用,程序結構就顯得比較清晰,容易調(diào)試和修改。
程序設計步驟(1)設計用戶界面圖7.2【引例】設計界面根據(jù)題目的分析,設計如圖7.2所示用戶界面。圖7.2【引例】設計界面
(2)屬性設置各相關控件的屬性設置見表7.1。表7.1【引例】屬性設置控件名稱屬性屬性值Label1Caption最高成績Label2Caption最低成績Label3Caption平均成績Label4Caption從高到底排序Text1TextText1Text2TextText2Text3TextText3Text4TextText4Command1Caption輸入成績Command2Caption成績處理
完成屬性設置的用戶界面如圖7.3所示。圖7.3【引例】設計界面
(3)編寫程序代碼'在窗體模塊中定義數(shù)組stscore(1To10),全局變量的定義Dimstscore(1To10)AsSingle'初始化輸出控件PrivateSubForm_Load()Text1=""'初始化輸出控件,使文本框的初始內(nèi)容為空
Text2=""Text3=""Text4=""EndSub
'輸入10個學生的成績PrivateSubCommand1_Click()Fori=1To10
stscore(i)=InputBox("請輸入學生的成績")NextiEndSub
'對成績進行處理PrivateSubCommand2_Click()
st_sum'調(diào)用st_sum過程
Max_min'調(diào)用Max_min過程
sort'調(diào)用sort過程EndSub
'編寫求平均成績過程st_sumPublicSubst_sum()Fori=1To10Sum=Sum+stscore(i)NextiText3=Sum/10'在文本框中輸出EndSub'編寫求最高,最低成績過程Max_minPublicSubMax_min()Max=stscore(1)Min=stscore(1)Fori=1To10IfMax<stscore(i)ThenMax=stscore(i)IfMin>stscore(i)ThenMin=stscore(i)NextiText1=Max'在文本框中輸出
Text2=Min'在文本框中輸出EndSub
'編寫排名過程sortPublicSubsort()Fori=1To9Forj=i+1To10Ifstscore(i)<stscore(j)Thent=stscore(i):stscore(i)=stscore(j):stscore(j)=tEndIfNextjNextiFori=1To10Text4=Text4&stscore(i)&Space(1)'在文本框中輸出NextiEndSub
(4)運行程序
程序運行時,單擊“輸入成績”命令按鈕,彈出輸入成績對話框,如圖7.4所示,依次輸入10個學生的成績,單擊“確定”按鈕,把輸入的10個學生的成績保存在全局數(shù)組stscore(1To10)中,單擊“成績處理”命令按鈕,在文本框中顯示程序對成績處理的結果。如圖7.1所示。圖7.4【引例】運行界面
說明:在程序【引例】中,通過命令按鈕Command1_Click()事件過程,完成了數(shù)據(jù)的輸入,同時編寫了求平均成績過程st_sum,求最高和最低成績過程Max_min,排名過程sort,并通過命令按鈕Command2_Click()事件過程調(diào)用通用過程st_sum,Max_min,sort,從而完成了對數(shù)據(jù)的處理。在程序【引例】中,實際上把一個復雜的問題分成幾個獨立的功能模塊來實現(xiàn)。如果某個模塊沒有實現(xiàn)預定的功能,便可有針對性的去修改,而不必檢查整個程序,從而簡化了程序設計的任務,避免重復的工作,便于設計和修改。這是處理問題的一個重要方法,同時,過程也可以被其它程序所共享。下面就過程的定義和使用作詳細說明。
7.2過程7.2.1過程的概念1過程過程是構成程序的一個模塊,往往用來完成一個相對獨立的功能。過程可以使程序更清晰,更具有結構性,所以把程序分割成較小的邏輯部件就可以簡化程序設計的任務,這些部件稱為過程。2用過程編程有兩大好處
(1)過程可以把程序劃分成離散的,較小的邏輯單元,每個單元都比無過程的整個程序容易調(diào)試,而且過程可用于壓縮重復任務或共享任務。(2)一個程序中的過程,往往不必修改或只需稍作改動,便可以成為另一個程序的構件。3VisualBasic中過程的分類
(1)通用過程通用過程包括子程序過程(或稱作Sub過程)和函數(shù)過程(或稱作Function過程)。(2)事件過程
7.2.2過程的建立定義子過程和函數(shù)過程有以下兩種方法。1利用“工具”菜單下的“添加過程”命令定義過程。(1)為想要編寫函數(shù)和子程序過程的“窗體”或“標準模塊”打開代碼窗口,如圖7.5。(2)單擊“工具”菜單下的“添加過程”命令,顯示“添加過程”對話框,如圖7.6。(3)在圖7.6中的“名稱”框中輸入過程名mypro(過程名中不允許有空格)。(4)在類型組中選取“子程序”定義子過程,選取“函數(shù)”定義函數(shù)過程。(5)在范圍組中選取“公有的”定義一個公共級的全局過程,選取“私有的”定義一個標準模塊級或窗體級的局部過程。(6)單擊“確定”按鈕,這時VisualBasic會自動在“代碼”窗口中創(chuàng)建一個子過程或函數(shù)過程的框架,即過程的開始和結束語句,如圖7.5所示。用戶就可以在該過程中編寫所需要的代碼。
圖7.6添加過程對話框圖7.5向mypro過程添加代碼
2利用代碼窗口直接定義過程為想要編寫函數(shù)或子程序過程的窗體/標準模塊打開代碼窗口,把插入點放在所有過程之外,鍵入Sub子過程名或Function函數(shù)過程名,然后按回車即可,如圖7.5所示的mypro過程的編寫。
7.3子程序過程7.3.1子程序過程的定義Sub過程的定義格式
[Private|Public][Static]Sub
過程名(參數(shù)列表)
語句
[ExitSub]
語句EndSub
1格式說明
Sub過程以Sub開頭,以EndSub結束,在Sub和EndSub之間是描述過程操作的語句塊,稱為“過程體”或“子程序體”。其中,過程名的命名規(guī)則與變量的命名規(guī)則相同,注意不要與VisualBasic關鍵字重名,也不要與WindowsAPI函數(shù)重名,也不能與同一級別的變量名重名,過程名在一個程序中要具有唯一性。2關鍵字說明格式中的Private,Public,Static用來指定過程的訪問類型,“參數(shù)列表”含有在調(diào)用時傳送給該過程的簡單變量名或數(shù)組名,名字與名字之間用逗號隔開?!皡?shù)列表”指明了調(diào)用時傳送給過程的參數(shù)的類型和個數(shù)。
(1)Private:表示Sub過程是私有過程,只能被本窗體中的其它過程訪問,不能被其它窗體(指多窗體工程)中的過程訪問。該窗體中的任何事件過程都可調(diào)用該過程,下一次調(diào)用時,該過程中的所有局部變量被重新初始化(數(shù)值類型初始化為0,字符類型初始化為空串)。(2)Static:指定過程中的局部變量在內(nèi)存中的存儲方式。如果使用了Static關鍵字,則該過程中的局部變量就是“Static”類型,局部變量的值保持不變;如果省略了“Static”,則局部變量就默認為“自動”類型,即在每次調(diào)用過程時,局部變量被初始化為0或空字符串,Static對在過程之外定義的變量沒有影響。其它窗體調(diào)用時,必須加上該過程所在的窗體名稱。(3)Public:表示Sub過程是公有過程,可以在程序的任何地方調(diào)用。主要應用于標準模塊或窗體模塊中,而且關鍵字Public可以省略。
在窗體模塊中定義的Public過程,在其它窗體模塊也可以使用,但必須加過程所在的窗體名稱,如:Form1.add,而且每次調(diào)用該過程,過程中的局部變量被重新初始化?!纠?.1】求1*2+2*3+3*4+…+n*(n+1)的值,假定n=5。要求:求1*2+2*3+3*4+…+n*(n+1)的值的過程用過程實現(xiàn)。程序的運行界面如圖7.7(a)所示。分析:1*2+2*3+3*4+…+n*(n+1)中每一項的通項公式為n*(n+1),可通過循環(huán)結構,用累加求和的方式來完成,程序的中心語句為:sum=sum+(i+1)*i。
圖7.7(a)【例7.1】運行界面
設計步驟(1)設計用戶界面根據(jù)題目的要求,在窗體上創(chuàng)建兩個命令按鈕和文本框,設計如圖7.7(b)所示的用戶界面,并根據(jù)圖7.7(a)設置相關控件屬性。圖7.7(b)【例7.1】設計界面
(2)屬性設置【例7.1】各控件的主要屬性設置見表7.2。表7.2【例7.1】屬性設置控件名稱屬性屬性值Text1TextText1Command1Caption第一次調(diào)用Command2Caption第一次調(diào)用Form1Caption用Private定義過程
(3)編寫代碼'定義過程PrivateSubfunc(nAsInteger)DimsumAsInteger'過程中的局部變量
Fori=1Tonsum=sum+(i+1)*iNextiText1=sumEndSub'第一次調(diào)用過程PrivateSubCommand1_Click()DimaAsIntegera=5
funca'過程調(diào)用EndSub
'第二次調(diào)用過程PrivateSubCommand2_Click()DimaAsIntegera=5
funca'過程調(diào)用EndSub
(4)運行程序程序運行時,如果單擊“第一次調(diào)用”命令按鈕,則在文本框中顯示運行結果70,單擊“第二次調(diào)用”命令按鈕,在文本框中顯示運行結果仍然是70。說明:為什么兩次調(diào)用的結果相同呢?原因是在定義過程func時用Private關鍵字指明了該過程的訪問類型,則該過程中的局部變量sum的值在第二次調(diào)用該過程時被重新初始化為0,所以兩次調(diào)用的結果完全相同。如果在【例7.1】中把定義過程func中的關鍵字Private改為Static,則程序的運行結果將完全不同。
程序運行時,如果單擊“第一次調(diào)用”命令按鈕,則在文本框中顯示運行結果70,單擊“第二次調(diào)用”命令按鈕,則在文本框中顯示運行結果140。原因是在定義過程func時用Static關鍵字指明了該過程的訪問類型,則該過程局部變量sum的值在第二次調(diào)用該過程時并沒有被重新初始化,而是保留了第一次調(diào)用結束時sum的值70。當再次執(zhí)行sum=sum+(i+1)*i語句時,sum的初始值是70,而不是0,所以運行結果為140。
通過【例7.1】的學習,讀者應掌握以下知識點:①用Private關鍵字定義過程,該過程中的局部變量在每次調(diào)用時重新初始化。②用Static關鍵字定義的過程,在程序退出之前的每次調(diào)用,該過程中的局部變量都保留上一次調(diào)用結束時的值。③累加器的使用:sum=sum+(i+1)*i
7.3.2子程序過程的調(diào)用通過【引例】和【例7.1】的學習,讀者對過程的調(diào)用格式有了初步的認識,那么究竟如何調(diào)用過程呢?過程調(diào)用實際上是過程的執(zhí)行,即要執(zhí)行一個過程,必須調(diào)用該過程。子程序過程的調(diào)用有兩種方式,一種是把過程名放在一個Call語句中,另一種是把過程名作為一個語句來使用。1用Call語句調(diào)用Sub過程格式:Call過程名[(實際參數(shù))]Call語句把程序控制傳送到一個VisualBasic的Sub過程?!皩嶋H參數(shù)”是傳送給Sub過程的變量或常數(shù)。如:Callcompute(1,2)。其中:compute是過程名,1,2是實參列表。2把過程名作為一個語句來使用
在調(diào)用Sub過程時,如果省略關鍵字Call,就成為調(diào)用Sub過程的第二種方式。與第一種方式相比,它有兩點不同:(1)去掉關鍵字Call;(2)去掉實際參數(shù)的括號。如:Compute1,2。其中:Compute為過程名。在過程名和實參之間至少要有一個空格?!纠?.2】合并排序,將兩個有序的數(shù)組合并成為另一個有序的數(shù)組。假設有序的數(shù)組為a,b。合并后的數(shù)組為c。程序的運行結果見7.8圖。
圖7.8【例7.2】合并排序
分析:要進行合并排序,首先介紹合并排序的思想:(1)先在a,b數(shù)組中各取第一個元素進行比較,將小(遞增次序)的元素放入c數(shù)組中。(2)取小的元素所在數(shù)組的下一個元素與上次比較后較大的元素比較,重復上述比較過程,直到某個數(shù)組被先排完。(3)將另一個數(shù)組剩余元素抄入c數(shù)組中,合并排序完成。設計步驟(1)設計程序界面在當前窗體上建立三個名稱為Picture1、Picture2和Picture3的圖片框,用三個名稱為Label1,Label2和Label3的標簽控件作提示性的說明,一個名稱為Command1,外觀屬性為“合并”的命令按鈕,設置完屬性的界面如圖7.8所示。
第一種方法Dima()AsVariant,b()AsVariant,c(100)AsVariantPrivateSubForm_Load()a=Array(2,4,6,8,10)'對a,b數(shù)組賦初值
b=Array(1,3,5,7,9,11,13,15)EndSub下面的輸出數(shù)組代碼沒有使用過程輸出數(shù)組PrivateSubCommand1_Click()Fori=0ToUBound(a)'在Picture1中輸出數(shù)組aPicture1.Printa(i);If(i+1)Mod10=0ThenPicture1.PrintNexti
Fori=0ToUBound(b)'在Picture2中輸出數(shù)組bPicture2.Printb(i);If(i+1)Mod10=0ThenPicture2.PrintNextiCallinsort(a,b,c)'調(diào)用合并排序過程
Fori=0ToUBound(c)'在Picture3中輸出數(shù)組cPicture3.Printc(i);If(i+1)Mod10=0ThenPicture3.Print'每行輸出10個元素
NextiEndSub
'定義合并排序過程PublicSubinsort(x()AsVariant,y()AsVariant,z()AsVariant)DimixAsInteger,iyAsInteger,izAsIntegerDoWhileix<=UBound(x)Andiy<=UBound(y)Ifx(ix)<y(iy)Then
z(iz)=x(ix):ix=ix+1
Else
z(iz)=y(iy):iy=iy+1EndIf
iz=iz+1Loop
DoWhileix<=UBound(x)'a數(shù)組的剩余元素抄入c數(shù)組
z(iz)=x(ix):ix=ix+1:iz=iz+1LoopDoWhileiy<=UBound(y)'b數(shù)組的剩余元素抄入c數(shù)組
z(iz)=y(iy):iy=iy+1:iz=iz+1LoopEndSub
第二種方法'對數(shù)組進行初始化Dima()AsVariant,b()AsVariant,c(100)AsVariantPrivateSubForm_Load()a=Array(2,4,6,8,10)'對a,b數(shù)組賦初值
b=Array(1,3,5,7,9,11,13,15)EndSub用調(diào)用輸出數(shù)組的過程輸出結果。PrivateSubCommand1_Click()Callprarray(a,Picture1)'調(diào)用輸出數(shù)組過程
Callprarray(b,Picture2)Callinsort(a,b,c)'調(diào)用合并排序過程
Callprarray(c,Picture3)EndSub
'定義輸出數(shù)組過程PublicSubprarray(x()AsVariant,pAsControl)Fori=0ToUBound(x)
p.Print
x(i);If(i+1)Mod10=0Thenp.Print'每行輸出10個元素
NextiEndSub
'定義合并排序過程PublicSubinsort(x()AsVariant,y()AsVariant,z()AsVariant)DimixAsInteger,iyAsInteger,izAsIntegerDoWhileix<=UBound(x)Andiy<=UBound(y)Ifx(ix)<y(iy)Then
z(iz)=x(ix):ix=ix+1
Else
z(iz)=y(iy):iy=iy+1EndIf
iz=iz+1LoopDoWhileix<=UBound(x)'a數(shù)組的剩余元素抄入c數(shù)組
z(iz)=x(ix):ix=ix+1:iz=iz+1LoopDoWhileiy<=UBound(y)'b數(shù)組的剩余元素抄入c數(shù)組
z(iz)=y(iy):iy=iy+1:iz=iz+1LoopEndSub
說明:在【例7.2】中,數(shù)組的輸出分別用兩種方法輸出,從第一種方法來看,對數(shù)組a,b,c輸出格式完全相同,重復書寫代碼,很繁瑣,而在第二種方法中,把數(shù)組的輸出用一個過程來完成,壓縮了重復任務,簡化了程序代碼,程序顯得很清晰,修改也很方便。這就是采用過程編程的優(yōu)勢。知識點:①比較用過程編程和非過程編程的優(yōu)缺點。②掌握合并排序的思想。③掌握如何用圖片框輸出數(shù)據(jù)。④掌握用Array函數(shù)對數(shù)組賦值,該函數(shù)只能對一維數(shù)組賦值。
7.4函數(shù)過程前面介紹了子程序過程,它不直接返回值,可以作為獨立的基本語句調(diào)用。而函數(shù)過程要返回一個值,通常出現(xiàn)在表達式中。這一節(jié)將介紹函數(shù)過程的定義和調(diào)用。7.4.1函數(shù)過程的定義VisualBasic包含許多內(nèi)部函數(shù),如Sqr、Cos
或Chr。此外,還可用Function語句編寫自己的Function過程。函數(shù)實際是實現(xiàn)一種映射,它通過一定的映射規(guī)則,完成運算并返回結果。函數(shù)的定義方式與Sub過程很相似,可以說只不過用Function關鍵字取代Sub關鍵字,同時加入返回值類型說明即可定義函數(shù)過程。自定義函數(shù)過程的語法格式為:
[Private|Public|Static]Function過程名([參數(shù)表列])[As類型]
語句 函數(shù)名=表達式
ExitFunction
語句塊EndFunction
說明:(1)Function過程以Function開頭,以EndFunction結束,在兩者之間是描述函數(shù)過程操作的語句塊,即“過程體”或“函數(shù)體”。(2)調(diào)用Sub函數(shù)相當于執(zhí)行一個語句,不直接返回值;而調(diào)用Function過程要返回一個值,因此可以象內(nèi)部函數(shù)一樣在表達式中使用。(3)因為過程不能嵌套,因而不能在事件過程中定義通用過程,只能在事件過程內(nèi)調(diào)用通用過程?!昂瘮?shù)名=表達式”中,函數(shù)名是函數(shù)過程的名稱,它遵循變量的命名規(guī)則,表達式的值是函數(shù)過程的返回值,通過賦值符號將其賦給函數(shù)名。如果無此項,則函數(shù)過程返回一個默認值,數(shù)值型函數(shù)返回0,字符型函數(shù)返回空字符串。
7.4.2函數(shù)過程的調(diào)用Function過程的調(diào)用比較簡單,可以像使用VisualBasic內(nèi)部函數(shù)一樣來調(diào)用Function過程。實際上,由于Function過程只能返回一個值,因此完全可以把它看成是一個函數(shù),它與內(nèi)部函數(shù)(如Sqr、Str$、Chr$等)沒有什么區(qū)別,只不過內(nèi)部函數(shù)由語言系統(tǒng)提供,而Function過程由用戶自己定義。
【例7.3】在文本框中輸出所有的“水仙花數(shù)”。要求:求“水仙花數(shù)”的過程用函數(shù)實現(xiàn)。程序的運行界面如圖7.9所示。圖7.9【例7.3】運行界面
分析:所謂“水仙花數(shù)”是指一個三位數(shù)整數(shù),其各位數(shù)字的立方和等于該數(shù)本身。例如153是一個水仙花數(shù),因為13+53+33=153。所以,處理問題的關鍵是如何求出一個三位整數(shù)中個位,十位,百位上的數(shù)字??梢酝ㄟ^hadr=Int(n/100)語句求得百位上的數(shù)字,ten=Int((n-hadr*100)/10)語句求得十位上的數(shù)字,div=n-hadr*100-ten*10求得個位上的數(shù)字。
該過程用函數(shù)來實現(xiàn),可定義一個返回值為Boolean類型的函數(shù),通過該函數(shù)判斷每一個數(shù)是否為“水仙花數(shù)”,若函數(shù)的返回值為True,則把該數(shù)顯示在文本框中。設計步驟(1)設計用戶界面根據(jù)程序的運行界面,在窗體上建立一個名稱為Label1的標簽,一個名稱為Text1的文本框和一個名稱為Command1的命令按鈕,并設置相關的屬性,如圖7.9所示。(2)編寫代碼PrivateSubForm_Load()Text1=""EndSub
'函數(shù)的調(diào)用PrivateSubCommand1_Click()DimiAsInteger,xAsIntegerFori=100To999Ifsxh(i)=TrueThenText1=Text1&i&Space(1)'函數(shù)的調(diào)用
EndIfNextiEndSub
'求“水仙花數(shù)的函數(shù)”PublicFunctionsxh(nAsInteger)AsBooleanDimdivAsInteger,tenAsInteger,hadrAsInteger'求3位數(shù)中各位上的數(shù)字
hadr=Int(n/100)'百位數(shù)字
ten=Int((n-hadr*100)/10)'十位數(shù)字
div=n-hadr*100-ten*10'個位數(shù)字
Ifhadr^3+ten^3+div^3=nThen'條件
sxh=True'函數(shù)的返回值
EndIfEndFunction
(3)運行程序程序運行時,如果單擊“水仙花數(shù)”命令按鈕,則在文本框中顯示所有的“水仙花數(shù)”如圖7.9所示。通過【例7.3】的學習,讀者應掌握以下知識點:①掌握“水仙花數(shù)”的定義和算法。②掌握如何定義函數(shù)和函數(shù)返回值的類型。③掌握用文本框輸出數(shù)據(jù)的形式——字符串的連接,中心語句為:Text1=Text1&i&Space(1)。通過以上的介紹,讀者已掌握了如何定義函數(shù)和過程,并掌握了函數(shù)和過程的調(diào)用方式。希望讀者能夠上機通過編程來實現(xiàn)和掌握。
7.5事件過程7.5.1事件過程的定義事件過程也是Sub過程,但它很特殊,它附加在窗體和控件上。一個控件的事件過程由控件的實際名字、下劃線和事件名組成;而窗體事件過程由“Form”、下劃線和事件名組成。控件事件過程的定義格式如下:[Private|Public]Sub
控件名_事件名(參數(shù)表)語句組EndSub窗體事件的一般格式為:[Private|Public]SubForm_事件名(參數(shù)表)語句組EndSub
7.5.2事件過程的調(diào)用可以看出,除了名字外,控件事件過程與窗體事件過程的格式基本上一樣。多數(shù)情況下是事件過程調(diào)用通用過程。通用過程可以放在標準模塊中,也可以放在窗體模塊中,而事件過程只能放在窗體模塊中,不同模塊中的過程可以互相調(diào)用。當過程名唯一時,可以直接通過過程名調(diào)用;如果兩個或兩個以上的標準模塊中含有相同的過程名,則在調(diào)用時必須用模塊名限定,其一般格式為:模塊名.過程名(參數(shù)表)如:假定已經(jīng)建立一個Command1_Click()的事件過程,能否通過Command2_Click()的事件來調(diào)用Command1_Click()呢?下面的程序說明了事件過程之間的相互調(diào)用方式。
'Command1_Click()的事件PrivateSubCommand1_Click()Print"事件過程的調(diào)用"EndSub'在Command2的事件過程中調(diào)用Command1的事件過程PrivateSubCommand2_Click()Command1_Click()EndSub
7.6參數(shù)的傳遞在調(diào)用一個過程時,必須把實際參數(shù)傳送給過程,完成形式參數(shù)與實際參數(shù)的結合,然后用實際參數(shù)執(zhí)行調(diào)用的過程。那么,什么叫形參,什么叫實參,形參和實參有何區(qū)別,它們?nèi)绾问褂?,這是本節(jié)的難點,也是重點。7.6.1形參與實參通過以上內(nèi)容的介紹,讀者對如何定義和調(diào)用過程和函數(shù)有了比較深刻的認識,在函數(shù)和過程的調(diào)用過程中,參數(shù)的傳遞是一個十分重要的內(nèi)容,直接影響到過程和函數(shù)的執(zhí)行結果。下面的章節(jié)就參數(shù)傳遞的各種形式作一個歸納和說明,希望讀者通過本節(jié)的學習能夠靈活應用。
參數(shù)可分為兩種類型,一種是在Sub、Function過程定義中出現(xiàn)的變量名,稱為形式參數(shù)(簡稱形參),另一種是在調(diào)用Sub或Function過程時傳送給Sub或Function過程的常數(shù)、變量、表達式或數(shù)組,稱為實際參數(shù)(簡稱實參)。實參與實參之間用逗號分隔,它必須與形參保持一致,位置與類型一一對應,但它們的名字可以不相同。
【例7.4】用函數(shù)來完成計算兩個數(shù)的和,要求:從文本框中輸入兩個數(shù),把結果從第三個文本框中輸出。程序設計和運行界面如圖7.10所示。圖7.10【例7.4】程序設計和運行界面
根據(jù)題目的要求,設計如圖7.10所示的程序界面,同時設置相關控件的屬性,程序的代碼為:'初始化控件PrivateSubForm_Load()Text1=""Text2=""Text3=""EndSub'定義求和函數(shù)過程PrivateFunctionadd(xAsInteger,yAsInteger)'x,y為形參
DimsumAsIntegersum=y+xadd=sumEndFunction
'用事件過程調(diào)用函數(shù)過程:PrivateSubCommand1_Click()Text3=add(Val(Text1),Val(Text2))'Val(Text1),Val(Text2)為實參EndSub
說明:該函數(shù)過程add(xAsInteger,yAsInteger)中的參數(shù)x,y稱為函數(shù)的形參,而把事件過程Command1_Click()中調(diào)用函數(shù)語句Text3=add(Val(Text1),Val(Text2))時的參數(shù)Val(Text1),Val(Text2)稱為函數(shù)的實參。在【例7.4】中,調(diào)用add函數(shù)時,把文本框中輸入的數(shù)值12和23作為實參分別傳遞給形參x和y,這種傳遞按參數(shù)一一對應。通過【例7.4】的學習,讀者應掌握以下知識點:①形參和實參的概念②參數(shù)傳遞時,只能由實參傳遞給形參。③參數(shù)傳遞時形參和實參一一對應。其實在VisualBasic中,參數(shù)傳遞有各種各樣的形式,每一種如何使用,它們之間有何差別,這是參數(shù)傳遞的重點和難點,需要讀者上機反復實踐才能熟練掌握。
7.6.2參數(shù)的傳送方式1按位置傳送按位置傳送是指實參的位置次序與形參的位置次序必須一致,形參的個數(shù)和實參的個數(shù)必須相等,實參與形參的類型必須相同。形式參數(shù)表中各個變量之間用逗號隔開,形參表中的變量可以是除定長字符串之外的合法變量名;后面跟有左、右括號的數(shù)組名。實際參數(shù)表中的各項用逗號隔開,實參可以是:常數(shù);表達式;合法的變量名;后面跟有左、右括號的數(shù)組名等。
【例7.5】從鍵盤輸入任意三個整數(shù),求出它們的最大值和最小值,并分別顯示在兩個文本框中。要求:求最大值和最小值用過程來完成,輸入數(shù)據(jù)用InputBox函數(shù)輸入,用命令按鈕的單擊事件來調(diào)用過程。程序的運行界面如圖7.11所示。分析:一個函數(shù)只能返回一個值,而一個過程可以返回或輸出多個值,因此,求最大值和最小值的過程只能用子程序過程來完成,而不能用函數(shù)過程。圖7.11【例7.5】運行界面
設計步驟(1)設計程序界面根據(jù)題目的要求,在窗體上創(chuàng)建一個名稱為Command1,外觀屬性為“確定”命令按鈕,兩個名稱分別為Text1,Text2的文本框,并用兩個標簽作提示性說明,設計完成以后的界面如圖7.11。(2)編寫程序代碼'求最大值和最小值的Sub過程
PublicSubMax_Min(xAsInteger,yAsInteger,zAsInteger)'先從小到大排序
DimtAsIntegerIfx>yThent=x:x=y:y=tEndIf
Ifx>zThent=x:x=z:z=t
EndIfIfy>zThent=y:y=z:z=tEndIfText1=xText2=zEndSub
PrivateSubCommand1_Click()DimaAsInteger,bAsInteger,cAsIntegera=InputBox("請輸入a的值")b=InputBox("請輸入b的值")c=InputBox("請輸入c的值")CallMax_Min(a,b,c)'調(diào)用過程EndSub
(3)運行程序程序運行時,單擊“確定”命令按鈕,則彈出“輸入對話框”,在數(shù)據(jù)輸入?yún)^(qū)域依次輸入12,1,45數(shù)值,則a=12,b=1,c=45,在調(diào)用過程CallMax_Min(a,b,c)時,對輸入的3個數(shù)進行從小到大排序,并且a中存放最小值,c中存放最大值。通過【例7.5】的學習,讀者應掌握以下知識點:①子程序過程和函數(shù)過程的選擇:只有一個返回值時,可以用子程序過程,也可以用函數(shù)過程;如果有多個返回值時,只能用子程序過程。②按位置傳送參數(shù)傳遞時,只能由實參傳遞給形參,而且形參和實參一一對應。在本例中,實參a只能傳遞給形參x,實參b只能傳遞給形參y,實參c只能傳遞給形參z,而且實參的個數(shù)必須與形參相同,位置必須一致。③不改變實參變量的順序,把數(shù)據(jù)按升序或降序排序。
2指名傳送所謂指名參數(shù)傳送,就是顯式的指出與形參結合的實參,把形參用“:=”與實參連接起來。與按位置傳送方式不同,指名傳送方式不受位置次序的限制。如果在【例7.5】中把參數(shù)的傳遞改為指名傳送,程序的代碼應改變?yōu)椋?/p>
'求最大值和最小值的Sub過程PublicSubMax_Min(xAsInteger,yAsInteger,zAsInteger)'先從小到大排序
DimtAsIntegerIfx>yThent=x:x=y:y=tEndIf
Ifx>zThent=x:x=z:z=t
EndIfIfy>zThent=y:y=z:z=tEndIfText1=xText2=zEndSub
'求最大值和最小值的Sub過程PrivateSubCommand1_Click()DimaAsInteger,bAsInteger,cAsIntegera=InputBox("請輸入a的值")b=InputBox("請輸入b的值")c=InputBox("請輸入c的值")CallMax_Min(y:=a,z:=b,x:=c)'調(diào)用過程EndSub
說明:從CallMax_Min(y:=a,z:=b,x:=c)語句可以看出,指名傳送明確的指出了與形參結合的實參,只要參數(shù)的傳遞方式是指名傳送,則形參y:=a,z:=b,x:=c的位置次序可以任意改變,但無論如何變化,實參a只能傳遞給形參y,實參b只能傳遞給形參z,實參c只能傳遞給形參x,而且實參的個數(shù)必須與形參相同,跟按位置傳送的唯一區(qū)別是,形參的位置不受限制。知識點:①在表面上來看,指名結合傳送比按位結合傳送繁瑣,因為要多寫一些東西,但它能改善過程調(diào)用的可讀性,能明確表示出與形參結合的實參;此外,當參數(shù)較多時,指名結合比按位置結合出錯的可能性小。但應注意,有些方法的調(diào)用不能使用指名參數(shù),在使用時請查閱相關的幫助信息。
②圖7.12(a),7.12(b)是按位置傳送和指名傳送的比較,請讀者注意它們的區(qū)別。過程調(diào)用:CallMax_Min(a,b,c)過程定義SubMax_Min(xAsInteger,yAsInteger,zAsInteger)圖7.12(a)按位置傳送參數(shù)過程調(diào)用:CallMax_Min(y:=a,z:=b,x:=c)過程定義SubMax_Min(xAsInteger,yAsInteger,zAsInteger)圖7.12(b)指名傳送參數(shù)
3按值傳遞和按地址傳遞參數(shù)在VisualBasic中,按參數(shù)傳遞的內(nèi)容,參數(shù)傳遞的形式可分為兩種,即傳地址和傳值,其中傳地址習慣上稱為引用。傳地址是指在調(diào)用一個過程時,將實參的地址傳遞給形參,所以,實參和形參在內(nèi)存中公用同一內(nèi)存單元,形參值的改變將改變實參的值,傳遞地址在VisualBasic中是缺省的,有時也可以用ByRef關鍵字來指明是地址傳送。值傳遞是指在調(diào)用一個子過程時,系統(tǒng)將實參的值復制給形參,形參與實參斷開了聯(lián)系。被調(diào)用過程中的操作是在形參的存儲單元中進行,當過程調(diào)用結束時,形參所占存儲單元同時被釋放,因此在過程中對形參的任何操作都不會影響到實參。值傳遞必須用ByVal關鍵字指明。
【例7.6】交換任意兩個整數(shù)的值,分別用值傳遞和地址傳遞來定義交換過程。程序的運行界面如圖7.13(a)所示。圖7.13(a)【例7.5】運行界面
設計步驟(1)界面設計根據(jù)圖7.13(a)設計如圖7.13(b)所示的程序設計界面。圖7.13(b)【例7.6】設計界面界面
(2)屬性設置見表7.3。表7.3【例7.6】屬性設置控件名稱屬性屬性值Label1Caption交換前Label2Caption交換后Label3Caption實參aLabel4Caption實參bText1Text空白Text2Text空白Text3Text空白Text4Text空白Command1Caption值傳遞Command2Caption地址傳遞Form1Caption值傳遞和地址傳遞
(3)編寫代碼'值傳遞過程PublicSubswap1(ByValxAsInteger,ByValyAsInteger)DimtempAsIntegertemp=xx=yy=tempEndSub'地址傳遞過程PublicSubswap2(xAsInteger,yAsInteger)DimtempAsIntegertemp=xx=yy=tempEndSub
'調(diào)用值傳遞過程PrivateSubCommand1_Click()DimaAsInteger,bAsIntegera=10b=20Text1=aText2=bswap1a,b'調(diào)用過程swap1Text3=aText4=bEndSub'調(diào)用地址傳遞傳遞過程PrivateSubCommand2_Click()DimaAsInteger,bAsIntegera=10b=20Text1=aText2=bCallswap2(a,b)'調(diào)用過程swap2Text3=aText4=bEndSub
(4)運行程序程序運行時,單擊“值傳遞”命令按鈕,則在文本框中顯示在調(diào)用值傳遞過程swap1之前和之后實參的變化,由程序的運行結果可以看出,程序在調(diào)用值傳遞過程swap1之后,實參的值沒有發(fā)生變化。單擊“地址傳遞”命令按鈕,則在文本框中顯示在調(diào)用地址傳遞過程swap2之前和之后實參的變化,由程序的運行結果可以看出,程序在調(diào)用地址傳遞過程swap2之后,實參a和b的進行了交換。如圖7.13(a)所示。
說明:在調(diào)用值傳遞過程swap1時,首先把實參a,b的值復制到形參的存儲單元x,y中,然后被調(diào)用過程中的操作是在形參的存儲單元x,y中進行,所以,當過程swap1調(diào)用結束時,形參x,y的值發(fā)生了變化,而實參a,b的值不變。如圖7.14(a),7.14(b)所示。20101020實參a形參bxy7.14(b)過程調(diào)用結束hou20102010實參a形參bxy7.14(a)調(diào)用過程前在形式上看,值只能由實參傳遞給形參,而不能由形參傳遞給實參,所以,值傳遞是“單向傳遞”。
20101020實參a形參bxy7.14(b)過程調(diào)用結束hou
20102010實參a形參bxy7.14(a)調(diào)用過程前
地址傳遞實際是把實參的地址傳遞給形參,所以形參x和實參a公用同一存儲單元,形參y和實參b公用同一存儲單元,實參a,b的值隨著形參x和y值的變化而變化,在形式上看,值好象是由實參傳遞給了形參,又由形參傳遞給了實參,所以,地址傳遞是“雙向傳遞”。見圖7.14(c)。使用地址傳送參數(shù),提高了程序的效率。a,xb,y圖7.14(c)地址傳遞2010
本節(jié)知識點:①值傳遞是把實參的內(nèi)容復制到形參的存儲單元,是“單向”傳遞。②地址傳遞是把實參的地址傳遞給形參,是“雙向”傳遞。③值傳遞時,形參必須用ByVal關鍵字指明,地址傳遞時,形參可以用ByRef關鍵字指明,也可以省略。④使用地址傳遞參數(shù)時,對應的實參不能是表達式,常數(shù)和數(shù)值,但可以是變量,數(shù)組名。
4數(shù)組參數(shù)的傳遞如果用子程序過程或函數(shù)過程來處理大批量的數(shù)據(jù),那么傳遞給形參的變量就不是一個或多個簡單變量,而是整個數(shù)組的起始地址。VisualBasic允許把數(shù)組作為實參傳送到過程中。例如,定義了如下過程:SubS(a(),b())……EndSub該過程有兩個形參,這兩個形參都是數(shù)組??梢杂孟旅娴恼Z句調(diào)用該過程:CallS(p(),q())這樣就把數(shù)組p和q傳送給過程中的數(shù)組a和b。當數(shù)組作為過程的參數(shù)時,使用的是“傳地址”方式,而不是“傳值”方式。即不是把p數(shù)組中每個元素的值一一傳送給過程中的a數(shù)組,而是把p數(shù)組的起始地址傳給該過程,使a數(shù)組也具有與p數(shù)組相同的起始地址。
【例7.7】從鍵盤輸入一個二維數(shù)組,如圖7.15所示,求數(shù)組中最大元素的值,最大元素所在的行號和列號。要求:求二維數(shù)組中元素的最大值,以及最大值元素所在的行號和列號用過程來實現(xiàn)。圖7.15【例7.7】運行界面
分析:從鍵盤輸入數(shù)組元素可以通過多種方式,為了使輸入的數(shù)據(jù)更加靈活,采用InputBox函數(shù)輸入數(shù)組元素。首先把數(shù)組中第一個元素arr(1,1)看作是最大值,即Max=arr(1,1),然后把Max的值依次和所有的數(shù)組元素進行比較,如果Max<arr(i,j),則Max=arr(i,j),同時記錄arr(i,j)的行號row=i和列號col=j,最后輸出最大值Max,行號row和列號col。
設計步驟:(1)界面設計根據(jù)圖7.15程序的運行界面,在窗體上創(chuàng)建兩個命令按鈕,三個文本框控件用來輸入和輸出數(shù)據(jù),同時用三個標簽控件作提示性的說明,設計界面如圖7.15所示(2)編寫代碼'定義全局數(shù)組Dimarr(1To3,1To3)AsInteger'求二維數(shù)組中的元素的最大值,以及最大值元素所在的行號和列號的過程
PrivateSubcult(x()AsInteger)'數(shù)組作為形參
Max=x(1,1)Fori=1To3Forj=1To3IfMax<x(i,j)ThenMax=x(i,j)'最大值
row=i'行號
col=j'列號
EndIfNextjNexti'在文本框中顯示結果
Text1=MaxText2=rowText3=colEndSub
'給數(shù)組賦初值PrivateSubCommand1_Click()Fori=1To3Forj=1To3
arr(i,j)=InputBox("請輸入數(shù)組元素的值")NextjNexti'輸出二維數(shù)組
Fori=1To3PrintForj=1To3Printarr(i,j);NextjNextiEndSub
'調(diào)用過程cult,數(shù)組作為實參PrivateSubCommand2_Click()cultarr'調(diào)用過程cult,數(shù)組作為實參EndSub
(3)運行程序程序運行時,單擊“輸入”命令按鈕,則從鍵盤輸入一個二維數(shù)組并在窗體上輸出,單擊“確定”命令按鈕,則在相應文本框中輸出最大值,最大值元素所在的行號和列號。程序的運行結果如圖7.15所示。知識點:①數(shù)組作為函數(shù)的形參,定義數(shù)組的形參時,一定要用“數(shù)組名()”,如:sub過程名(a()asinteger),當然,也可以用一個參數(shù)來傳遞數(shù)組元素的個數(shù),如:sub過程名(a()asinteger,nasinteger)。②數(shù)組作為函數(shù)的實參,定義數(shù)組的實參時,如果傳遞的是整個數(shù)組元素,則實參的形式必須是“數(shù)組名”或“數(shù)組名()”,而如果只傳遞某一個數(shù)組元素,則一定要指明下標。
5記錄(結構體)的傳送當子程序過程或函數(shù)過程中的參數(shù)是記錄類型時,必須先定義記錄類型的數(shù)據(jù),可以在窗體模塊中關鍵字Private定義記錄類型,也可在標準模塊中用關鍵字Public定義記錄類型,【例7.8】說明了當過程中傳遞的參數(shù)是記錄類型時,如何定義數(shù)據(jù)類型以及參數(shù)為記錄類型時如何傳遞。用戶自定義類型用途很廣,也很使用,要熟練掌握。
【例7.8】編寫程序,要求用戶輸入一個學生的基本信息:“姓名”,“年齡”,“身高”,然后將輸入的數(shù)據(jù)通過文本框控件顯示出來,顯示用過程完成。程序的運行界面如圖7.16(a)所示。圖7.16(a)【例7.8】運行界面
設計步驟(1)設計程序界面在窗體上建立三個文本框用來輸出學生信息,三個標簽作提示性說明和一個命令按鈕用來輸入數(shù)據(jù),程序設計截面和屬性設置見圖7.16(a)所示。(2)程序代碼'定義數(shù)據(jù)類型PrivateTypetstudentNameAsString*10AgeAsIntegerHeightAsDoubleEndType
'顯示過程,傳送記錄類型的數(shù)據(jù)PrivateSubShowStudent(stuAststudent)'形式參數(shù)為記錄類型
Text1.Text=stu.NameText2.Text=stu.AgeText3.Text=stu.HeightEndSub'調(diào)用過程PrivateSubCommand1_Click()DimstudentAststudent
student.Name=InputBox("請輸入學生的“姓名”")
student.Age=InputBox("請輸入學生的“年齡”")
student.Height=InputBox("請輸入學生的“身高”")CallShowStudent(student)'實參為整體傳送EndSub
(3)運行程序圖7.16(b)【例7.8】數(shù)據(jù)輸入程序運行時,依次在輸入框中輸入每個學生的基本信息,如圖7.16(b)所示,然后單擊圖7.16(a)中的“輸出”按鈕,將在文本框中顯示學生相應的信息。圖7.16(b)【例7.8】數(shù)據(jù)輸入
知識點:①學會定義記錄類型的數(shù)據(jù)②如何引用記錄類型變量的成員③記錄類型的變量作為函數(shù)或過程的參數(shù)時,形參和實參必須是整體傳送。6可選的參數(shù)和可選參數(shù)的缺省值如果一個過程中的形式參數(shù)是固定的,調(diào)用時提供的實參也是固定的,也就是說,如果一個過程有3個形參,則調(diào)用時必須按相同的順序和類型提供3個實參。在VisualBasic6.0中,可以指定一個或多個參數(shù)作為可選參數(shù)。例如:假定建立了一個計算兩個數(shù)的和的過程,該過程可選擇地求第三個數(shù)的和。在調(diào)用時,既可以給它傳送2個參數(shù),也可以給它傳送3個參數(shù)。
為了定義具有可選參數(shù)的過程,必須在過程的參數(shù)列表中列入Optional關鍵字,指定過程的參數(shù)為可選的。并且在過程中通過IsMissing函數(shù)測試調(diào)用時是否傳遞可選參數(shù)?!纠?.9】求10,11或10,11,12的和,求和用“一個”過程來完成。分析:以前學過的過程,一個過程中的參數(shù)的個數(shù)是固定的,例如:過程頭部為Submypro(xAsInteger,yAsInteger)的過程,每調(diào)用過程mypro一次,則只能求出兩個參數(shù)的操作,如果把過程的頭部改為Submypro(xAsInteger,yAsInteger,OptionalkAsVariant),由于參數(shù)k前面列入了關鍵字Optional,所以參數(shù)k為可選參數(shù),通過過程mypro,既可求出兩個參數(shù)x和y的操作,也可以求出x、y和k三個數(shù)的操作。這樣,大大提高了過程的通用性。
編寫具有可選參數(shù)的過程'可選參數(shù)的應用PrivateSubadd1(xAsInteger,yAsInteger,OptionalkAsVariant)DimsumAsIntegersum=x+yIfNotIsMissing(k)Thensum=sum+kEndIfPrintsumEndSub調(diào)用具有可選參數(shù)的過程PrivateSubCommand1_Click()add110,11'提供了2個參數(shù),結果為21。
add110,11,12'提供了第3個參數(shù)(可選參數(shù)),結果為33。EndSub
【例7.9】的知識點:①可選參數(shù)要用Optional關鍵字來聲明,而且可選參數(shù)的類型必須是Variant。②如果指定了可選參數(shù),則參數(shù)表中此參數(shù)后面的其它參數(shù)也必須是可選。③是否傳遞可選參數(shù),用IsMissing(可選參數(shù)名)來測試。也可以給可選參數(shù)指定缺省值。在【例7.9】中,如果未將可選參數(shù)傳遞到函數(shù)過程,則返回一個缺省值。如果把例題【例7.9】可改為:
'定義可選參數(shù)的確省值PrivateSubadd2(xAsInteger,yAsInteger,OptionalkAsVariant=10)DimsumAsIntegersum=x+yIfNotIsMissing(k)Thensum=sum+kEndIfPrintsumEndSub下面的事件過程在調(diào)用Subadd2(xAsInteger,yAsInteger,OptionalkAsVariant=10)時,雖然只提供了2個參數(shù),但第3個可選參數(shù)按確省值10計算,結果為13PrivateSubCommand2_Click()add21,2EndSub
7使用不定數(shù)量的參數(shù)一般說來,過程調(diào)用中的參數(shù)個數(shù)應等于過程說明的參數(shù)個數(shù),如果參數(shù)(形參和實參)的個數(shù)不確定,可用ParamArray
關鍵字指明,這時,過程將接受任意個數(shù)的參數(shù)??勺儏?shù)過程的一般格式為:Sub過程名(ParamArray
數(shù)組名)這里的“數(shù)組名”是形式參數(shù),只有名字和括號,沒有上下界。由于省略了類型變量,“數(shù)組”的類型默認為Variant。
【例7.10】計算任意個數(shù)據(jù)的和。分析:通過定義一個可選參數(shù)過程,可以實現(xiàn)對多個參數(shù)的操作,但最多能對多少個數(shù)據(jù)進行操作,主要看可選參數(shù)過程中固定參數(shù)和可選參數(shù)的個數(shù),比如:Subadd2(xAsInteger,yAsInteger,OptionalkAsVariant=10,Optionalz)過程中有兩個必須提供的參數(shù)x和y,還有兩個可選參數(shù)k和z,因此該過程最多可操作四個參數(shù),最少可操作兩個參數(shù),因此仍然有一定的局限。能不能定義這樣一個過程,可以實現(xiàn)對任意個數(shù)的參數(shù)進行操作,答案是肯定的。
'使用不定量參數(shù)的過程PrivateSubSum(ParamArray
intNums())DimxAsVariant,intSumAsIntegerForEachxInintNumsintSum=intSum+xNextxPrintintSumEndSubPrivateSubCommand1_Cl
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 腹腔鏡前列腺癌根治術中恥骨課件
- 預防艾滋病宣傳部
- 大學總平面規(guī)劃
- 版應急管理培訓
- 成人學生的家庭教育理念更新考核試卷
- 固體飲料行業(yè)市場定位與產(chǎn)品定位考核試卷
- 初等教育的教學方法與策略考核試卷
- 文體設備安裝施工合同
- 電信設備合同執(zhí)行要點
- 節(jié)能改造招投標辦公室職責
- 酒店組織架構圖以及各崗位職責(完整版)
- 環(huán)境地質學試題庫(共45頁)
- 新噸公里計算
- 某熱力管道工程施工組織設計方案
- 重慶12.23特大井噴案例
- 外墻面磚脫落維修施工方案完整
- 煤場機械車輛操作規(guī)程
- GB_T4897-2015刨花板(高清版)
- 制作天氣瓶--認識溶液教學設計
- 地下水環(huán)境監(jiān)測井施工設計方案(共10頁)
- 圍手術期重癥監(jiān)護
評論
0/150
提交評論