




已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第八章 過程-process,原來的結(jié)構(gòu)中可能出現(xiàn)的問題: (1)程序結(jié)構(gòu)不夠清晰 (2)代碼重復太多 所以引入模塊化,結(jié)構(gòu)化程序設計.vb6.0提供的過程(1)子過程sub(2)函數(shù)過程function(3)屬性過程property 子過程又分為通用過程和事件過程兩類.本章只討論函數(shù)過程和子過程.過程保存在模塊中.VB的模塊包括窗體模塊(.frm文件),標準模塊(.bas文件)和類模塊(.cls文件).我們只討論前兩種. VB應用程序可包含多個模塊.添加新模塊的方法是,在設計狀態(tài)下,選擇“工程”菜單中的“添加窗體”或“添加模塊”項,然后在彈出的相應對話框中單擊 “打開”按鈕.,8.1 函數(shù)過程-function process,函數(shù)分類為:內(nèi)部函數(shù),自定義函數(shù).VB包含大量的內(nèi)部函數(shù),比如前面所學的sin,int,spc等等.VB還允許用戶使用function語句編寫自己的函數(shù)過程. 函數(shù)過程是一個獨立的過程,可讀取參數(shù),執(zhí)行一系列語句并改變參數(shù)的值,并且可將一個值返回到調(diào)用的過程. 一.函數(shù)過程的定義(說明): 方法1:在VB6.0中利用“工具”菜單下的“添加過程”命令定義.其步驟如下: (1)為想要編寫函數(shù)和過程的窗體/標準模塊打開代碼窗口.打開方式有a) “查看代碼”按鈕b)雙擊控件或窗體,或從“視圖”菜單中選擇“代碼窗口”或按F7鍵. (2)選擇“工具”菜單下的“添加過程”命令,顯示“添加過程”對話框.,(3)在“名稱”框中輸入過程名 (4)在“類型”組中選取“函數(shù)”定義函數(shù)過程. (5)在“范圍”組中選取“公有的”定義一個公共級的全局過程;選取“私有的”定義一個標準模塊級或窗體級的局部過程. 方法2:利用代碼窗口直接定義 在窗體/標準模塊的代碼窗口中,把插入點放在所有現(xiàn)有過程之外,鍵入函數(shù)過程名就可以定義函數(shù)過程.利用代碼窗口定義的函數(shù)過程需要使用funtion語句. Function 語句的作用:用來聲明函數(shù)過程的名稱、參數(shù)以及構(gòu)成其主體的代碼。 Function語句的語法格式:,8.1 函數(shù)過程-function process,public |private|friendstaticfunction 函數(shù)過程名(參數(shù)列表)as 類型 局部變量或常數(shù)定義 語句序列 函數(shù)名=表達式 exit function 語句序列 函數(shù)名=表達式 end function 格式說明: (1)public|private|friend 在后面在講解 (2)過程名:不要與VB中的關鍵字windows API函數(shù)以及同一級別的變量重名.,8.1 函數(shù)過程-function process,(3)類型:函數(shù)過程的返回值的數(shù)據(jù)類型. (4) 函數(shù)名=表達式-要從函數(shù)返回一個值,只需將該值賦給函數(shù)過程名。在過程的任意位置都可以出現(xiàn)這種賦值.在函數(shù)過程內(nèi)至少對函數(shù)過程名賦值一次。如果沒有對函數(shù)過程名賦值,則過程將返回一個缺省值:數(shù)值函數(shù)返回0,字符串函數(shù)返回一個零長度字符串. Variant函數(shù)則返回empty.如果在返回對象引用的函數(shù)過程中沒有將對象引用賦值給函數(shù)過程名,則函數(shù)返回nothing.在過程的任意位置都可以出現(xiàn)這種賦值。 (5)參數(shù)列表:代表在調(diào)用時要傳遞過程的參數(shù)變量列表。多個變量應用逗號隔開。定義過程時參數(shù)列表中的參數(shù)也稱為參數(shù)(形參)或啞元。定義過程時參數(shù)沒有值。定義過程時,可以無參數(shù)。但函數(shù)過程即使無參數(shù),過程名后的括號也不能省略。 Eg:i2(I=1x ),8.1 函數(shù)過程-function process,二.函數(shù)過程的調(diào)用: 函數(shù)過程由函數(shù)過程名返回一個值,所以函數(shù)過程不能作為單獨的語句加以調(diào)用。通常,被調(diào)用的函數(shù)過程作為表達式或表達式中的一部分,再配以其他的語法成分構(gòu)成語句.在賦值語句中調(diào)用函數(shù)過程的格式為: 變量名=函數(shù)過程名(參數(shù)列表) 注意:(1)“參數(shù)表”稱為實際參數(shù)(實參)或?qū)嵲?它必須與形式參數(shù)保持個數(shù)相同,位置與類型一一對應.(2)調(diào)用時把實參的值傳遞給形參稱為參數(shù)傳遞。其中值傳遞時實參值不隨形參值的變化而變化,而引用傳遞時實參值隨形參值的改變而改變.(3)當參數(shù)是數(shù)組時,形參與實參在參數(shù)聲明時應省略其維數(shù),但括號不能省. eg:1+x+(xn/n!) 精度為 |xn/n!|eps,8.1 函數(shù)過程-function process,VB中的子過程分為通用過程和事件過程兩類.通用過程告訴應用程序如何完成一項指定的任務.在確定了通用過程后由應用程序來調(diào)用.而事件過程通??偸翘幱诳臻e狀態(tài)由用戶引發(fā)的事件或系統(tǒng)引發(fā)的事件調(diào)用事件過程來響應. 通用過程定義:不同的事件過程有時要響應相同的事件,完成同樣的操作。這時,可以將公共語句放入一分離開的過程即通用過程,然后由事件過程來調(diào)用它.通用過程可以實現(xiàn)代碼的重用,并且容易維護應用程序。 一.通用子過程的定義: 1.在VB6.0中利用“工具”菜單下的“添加過程”命令定義.,8.2 通用子過程-current sub or function,2.利用代碼窗口直接定義 格式: private|public|friendstatic sub 過程名(參數(shù)序列) 局部變量或常量定義 語句序列 exit sub 語句序列 end sub 說明:語句序列-子過程中所執(zhí)行的任何語句組。所有的可執(zhí)行代碼都必須屬于某個過程。不能在別的子過程,函數(shù)過程或?qū)傩赃^程中定義子過程. 參數(shù)序列-在調(diào)用時要傳遞給子過程的參數(shù)的變量列表.多個變量間用逗號隔開.定義過程時參數(shù)列表中的參數(shù)稱為形參,調(diào)用過程時參數(shù)列表中的參數(shù)稱為實參.,8.2 通用子過程-current sub or function,運行機制:子過程通過形參與實參的傳遞得到返回值,而不能通過子過程名返回值. 程序舉例:給定半徑求圓的面積并輸出. 二.子過程的引用 調(diào)用格式:子過程名 參數(shù)列表或 call 子過程名(參數(shù)列表) 子過程與函數(shù)過程的相似之處: (1)它們都是一個可以獲得參數(shù),執(zhí)行一系列獲取參數(shù),執(zhí)行一系列語句,以及改變其參數(shù)的值的獨立過程. (2)都可以修改傳遞給它們的任何變量的值. 子過程與函數(shù)過程的不同點: 子過程不能用名字返回一個值,而通過形參與實參的傳遞得到結(jié)果.子過程不能用于表達式. 程序舉例:eg:1+x+(xn/n!) 精度為 |xn/n!|eps,8.2 通用子過程-current sub or function,8.3 過程與變量的作用域-process&variants work area,前兩節(jié)的內(nèi)容概要: (1)引入模塊化,結(jié)構(gòu)化程序設計的原因;模塊的概念。 (2)過程的分類:子過程sub、函數(shù)過程function、屬性過程property (3)函數(shù)過程的定義,引用方法(4)子過程的定義,引用方法 作用域-標識符可被訪問的范圍。(空間) 生存期-變量在整個程序運行過程中的有效生存時間(時間)。 與作用域有關的關鍵字極其含義如下: public:缺省值.表示所有模塊的所有其他過程都可訪問. Private:表示只有包含其聲明的模塊的其他過程可以訪問該標識符 friend:只能在類模塊中使用.表示該標識符在整個工程中都是可見的,可以被工程的任何模塊中的過程訪問.但對于對象實例的控制者是不可見的.friend過程不會在其父類的類型庫中出現(xiàn),且friend過程不能被后期綁定.,一.過程的作用域: 過程的作用域分為模塊級和全局級. 1.模塊級(又稱文件級) 在某文件(模塊)內(nèi)定義的過程。定義時使用private.只能被定義所在文件(模塊)中的其他過程調(diào)用. 2.全局級(又稱項目級或工程級) 缺省 定義時使用關鍵字public.可被整個應用程序所有文件(模塊)中定義的過程調(diào)用,即其作用域為整個應用程序(工程) 注意:全局級過程所處的位置不同,定義所在的文件性質(zhì)不同,則調(diào)用時的規(guī)則也略有區(qū)別.,8.3 過程與變量的作用域-process&variants work area,(1)在某一窗體模塊(.frm文件)中定義的全局級過程被在該窗體(文件)外定義的過程調(diào)用時,必須在過程名前加上窗體名稱. (2)在某一標準模塊(.bas文件)中定義的全局級過程,如果與其他標準模塊中定義的全局級過程均不同名,這時只要主調(diào)過程所在的文件中沒有與它同名的過程,就可以直接用過程名調(diào)用,無須在過程名前加模塊名. (3)在不同文件(模塊)中定義的全局級過程也可同名.調(diào)用時要在過程名前加上模塊名. 程序舉例:在窗體模塊中和標準模塊中定義的函數(shù)過程(已知半徑求圓的面積)在兩個窗體中分別引用的方法有什么不同?,8.3 過程與變量的作用域-process&variants work area,二.變量作用域: 變量的作用域分為過程級(局部級),模塊級(文件級)和全局級(項目級或工程級). 1.局部級變量(過程層變量) 局部變量- 在過程或函數(shù)內(nèi)部使用的變量。在過程內(nèi)部用dim 或 static 定義. 用dim 聲明的變量,只當過程調(diào)用時才分配存儲單元并隨著包含它的過程或函數(shù)的運行終止而釋放。用static 聲明的變量,第一次調(diào)用該過程或函數(shù)時分配存儲單元并初始化,再次調(diào)用時VB將仍然用原來的分配單元,其值為上次過程或函數(shù)被調(diào)用完成后的值,直到工程結(jié)束時才釋放存儲單元。(主要用于計數(shù),控制控件可見不可見間的轉(zhuǎn)換,以及用作調(diào)試工具),8.3 過程與變量的作用域-process&variants work area,若要使某一過程或函數(shù)中的所有局部變量都成為static變量,可把static關鍵字放在該過程或函數(shù)頭的前面. eg.static function myfun(num) 此過程或函數(shù)中無論是用dim 還是用static聲明的變量都是static類型的. 2.模塊級變量 是在文件中各過程之外的通用聲明部分,用dim 或private 聲明的變量,可被本文件內(nèi)定義的各過程使用,作用域為本文件或過程模塊在整個應用程序運行期間分配一個固定存儲單元. 程序舉例:在form的general declare區(qū)聲明一個變量,在click過程中聲明一個同名變量比較它們的異同。,8.3 過程與變量的作用域-process&variants work area,3.全局變量 全局變量-任一文件內(nèi)各過程之外的聲明段用public語句定義的變量.可被應用程序中任一過程使用,作用域為整個項目或工程.在程序運行期間分配一個固定存儲單元.不能在過程中聲明公用變量用public 和global(只能在模塊中使用) 在模塊中定義的模塊層變量則可以在整個工程中使用。但如用public在窗體的公共聲明區(qū)聲明的變量的引用方法是用“模塊名.變量名”的方式 程序舉例:在模塊中用public定義一個變量,在通用聲明區(qū)用public定義一個同名變量比較它們的不同點 說明:(1)在同一模塊不同過程中的變量可以同名.(2)同一模塊中不同級的變量可以同名.但要注意他們的作用范圍的不同。(3)不同模塊中定義的全局變量可以同名.但要注意他們的作用范圍的不同。(4) 過程中引用的變量,總是同名變量中作用范圍最小的那一個變量. (5) 引用另一模塊中的全局變量時,必須在變量名前加模塊名.,8.3 過程與變量的作用域-process&variants work area,Def:過程中的代碼通常要獲取某些關于程序狀態(tài)的信息才能完成它的工作,信息在調(diào)用過程時傳遞到過程內(nèi)的變量中.當變量傳遞到過程時,稱變量為參數(shù). 格式:optionalbyval|byrefparamarray變量名()as 類型=缺省值, 說明:optional表示參數(shù)不是必須的.如果使用了該選項,則參數(shù)列表中的后續(xù)參數(shù)都必須是可選的,而且必須都使用optional關鍵字聲明.如果使用了paramarray,則任何參數(shù)都不能使用optional聲明. Byval該參數(shù)按值傳遞. Byref該參數(shù)按地址傳遞. Paramarray只用于參數(shù)列表的最后一個參數(shù),指明最后這個參數(shù)是一個variant元素的optional數(shù)組(僅返回一個可變類型的值).使用Paramarray關鍵字可以提供任意數(shù)目的參數(shù)(但形參必須是以一個可變類型的數(shù)組的形式體現(xiàn),且返回一個值). Paramarray關鍵字不能與byval,byref,或optional一起使用.,8.4 過程的參數(shù)-parameter of process,類型傳遞給該過程的參數(shù)的數(shù)據(jù)類型,可以是標準數(shù)據(jù)類型或?qū)ο箢愋秃涂勺冾愋?。如果參?shù)不是optional,則也可以是用戶定義類型或?qū)ο箢愋汀?一.參數(shù)的數(shù)據(jù)類型 過程的參數(shù)的缺省類型為variant數(shù)據(jù)類型.同時,也可以聲明參數(shù)為其他數(shù)據(jù)類型.例如:byte,boolean,integer,long,currency,single,double,date,string,object 二.參數(shù)的傳遞方式 過程的參數(shù)傳遞:當子過程或函數(shù)過程被調(diào)用時,調(diào)用語句中的實際參數(shù)就與定義語句中的形式參數(shù)一一對應起來,并以某種方式把實際參數(shù)值傳遞給形式參數(shù),供過程使用.這個過程就叫過程的參數(shù)傳遞.,8.4 過程的參數(shù)-parameter of process,VB中過程的參數(shù)傳遞有兩種方式:按值傳遞,按地址傳遞 1.按值傳遞: 格式:參數(shù)前使用關鍵字byval 原理:實際參數(shù)的值復制一份給形式參數(shù)所代表的臨時存儲單元,此后形式參數(shù)名與實際參數(shù)名之間沒有任何聯(lián)系.形式參數(shù)的任何變化對實際參數(shù)不會產(chǎn)生任何影響。按值傳遞參數(shù)時,傳遞的只是變量的副本.如果過程改變了這個值,則所變動只影響副本而不會影響變量本身.,8.4 過程的參數(shù)-parameter of process,傳值的結(jié)合過程是:當調(diào)用一個過程時,系統(tǒng)將實參的值復制給形參,實參與形參斷開了聯(lián)系.被調(diào)用過程中的操作是在形參自己的存儲單元中進行,當過程調(diào)用結(jié)束時,這些形參所占用的存儲單元也同時被釋放.因此在過程中對形參的任何操作不會影響到實參. 2.按地址傳遞(默認方式) 格式:在形式參數(shù)前加關鍵字byref。也可以在形式參數(shù)前不加任何關鍵字 傳址的結(jié)合過程是 :當調(diào)用一個過程時,它將實參的地址傳遞給形參.因此在被調(diào)過程體中對形參的任何操作都變成了對相應實參的操作,實參的值就會隨形參的改變而改變.,8.4 過程的參數(shù)-parameter of process,注意:使用傳址方式時,對應的實參不能是表達式、常數(shù)。 程序舉例:求圓的面積的函數(shù)分別用傳值和傳址定義后在調(diào)用過程后輸出變量。 Eg2:P141 8-12 三.可選參數(shù): 在過程的參數(shù)列表中列入optional關鍵字,就可以指定過程的參數(shù)為可選項。如果指定了可選參數(shù),則參數(shù)列表中此參數(shù)后面的其他參數(shù)也必是可選的,并且要用optional關鍵字來聲明。Optional參數(shù)可以帶缺省值,可以是除variant之外的任何類型。在未提供某個可選參數(shù)時,實際上是將該參數(shù)作為具有empty值的變體來賦值。 程序舉例:p142,8.4 過程的參數(shù)-parameter of process,四.不定數(shù)量參數(shù) 一般來說,過程調(diào)用中的參數(shù)個數(shù)應等于過程說明的參數(shù)個數(shù)。但如果使用paramarray關鍵字,過程將接受任意個數(shù)的參數(shù)。 程序舉例:p144例8-16 五.數(shù)組參數(shù) 過程定義時,形式參數(shù)表中的數(shù)組用數(shù)組名后一對中空的圓括號表示。在過程調(diào)用時,實際參數(shù)表中的數(shù)組可以只用數(shù)組名表示,省略圓括號。 程序舉例:p144例8-17,8.4 過程的參數(shù)-parameter of process,六.對象參數(shù) VB中可以用對象(窗體和控件)作為過程的參數(shù),其類型是control.把已創(chuàng)建的對象作為實際參數(shù)傳遞給過程,在過程中可以修改該對象的屬性,使用該對象的方法. sub change_caption(ctl as control,st as string) ctl.caption=st end sub private sub command1_click() dim st as string st=inputbox(“請輸入caption屬性的值”) call change_caption(command1,st) end sub,8.4 過程的參數(shù)-parameter of process,一個控件的事件過程名由控件的名字、下劃線和事件名構(gòu)成。 格式:private sub controlname_eventname(arguments) statements end sub 說明:可以在開始為控件編寫事件過程之前先設置控件的名稱屬性。也可以對控件附加一個過程之后又更改控件的名字。但要注意將事件的名字與控件的名字對應起來。 一.鼠標事件過程 1.click事件-在一個對象上單擊一個鼠標按鈕時發(fā)生。也會在一個控件的值改變時發(fā)生。,8.5 事件子過程-sub process of event,格式:private sub object_click (index as integer) 程序舉例: 2 .dblclick事件-當在一個對象上雙擊鼠標按鈕時,該事件發(fā)生。 格式:private sub object_dblclick(index as integer) 注意:(1)若在click事件中有代碼,則dblclick事件不會發(fā)生。 (2)如果dblclick在系統(tǒng)雙擊時間限制內(nèi)沒有出現(xiàn),則對象識別一個click事件。雙擊時間限制可在控制面板通過設置雙擊速度改變。 程序
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中醫(yī)法法律法規(guī)培訓
- 原料驗收培訓課件
- 職業(yè)生涯人物訪談
- 2025電氣基礎培訓
- 育齡婦女生殖健康知識
- 防物體打擊培訓
- 2026年高考政治一輪復習:統(tǒng)編版必修4《哲學與文化》知識點考點提綱
- 笑氣在神經(jīng)內(nèi)科領域的應用與研究進展
- 2025年智能家居軟裝搭配市場趨勢與商業(yè)布局報告
- 2025年城市污水處理廠智能化升級改造與智能監(jiān)測預警平臺應用案例深度分析報告
- GB/T 38807-2020超級奧氏體不銹鋼通用技術條件
- GB/T 27773-2011病媒生物密度控制水平蜚蠊
- 質(zhì)量風險識別項清單及防控措施
- 【課件超聲】常見的超聲效應與圖象偽差
- 2022年石家莊交通投資發(fā)展集團有限責任公司招聘筆試試題及答案解析
- 中國華電集團公司信訪事項處理程序
- 特種設備制造內(nèi)審及管理評審資料匯編經(jīng)典版
- EDI超純水系統(tǒng)操作說明書
- 金屬監(jiān)督監(jiān)理實施細則
- 2022年鎮(zhèn)海中學提前招生模擬卷科學試卷
- 國土空間規(guī)劃 教學大綱.docx
評論
0/150
提交評論