vb自定義函數(shù)_第1頁
vb自定義函數(shù)_第2頁
vb自定義函數(shù)_第3頁
vb自定義函數(shù)_第4頁
vb自定義函數(shù)_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、 第43講過程和令定義因數(shù)VB應(yīng)用程序是按模塊化的方式組成的,一個(gè)程序模塊是程序的一部分,每個(gè)模塊負(fù)責(zé)解決整個(gè)應(yīng)用問題的一部分任務(wù)。程序模塊分為過程和函數(shù)兩種。過程強(qiáng)調(diào)的是動(dòng)作,而函數(shù)強(qiáng)調(diào)的是值的計(jì)算。1、過程可以將程序劃分成一個(gè)個(gè)較小的邏輯單元,每個(gè)這樣的邏輯單元可以構(gòu)成一個(gè)過程。過程中的代碼可以被重復(fù)地調(diào)用,從而避免了不必要的代碼的重復(fù)編制,減少了編程的工作量。過程可以分成兩類:一類是事件處理過程,另一類是通用過程。事件處理過程描述的是,當(dāng)對(duì)象X上發(fā)生某個(gè)事件Y時(shí),需要執(zhí)行一段程序來響應(yīng)這個(gè)事件;某個(gè)事件Y(如:Click點(diǎn)擊)通用過程而通用過程則是一個(gè)獨(dú)立的程序段,不同的事件可能需要使用

2、同一個(gè)程序段時(shí),可以把這個(gè)程序段單獨(dú)地建立成一個(gè)通用過程,供其他事件處理過程或其他通用過程調(diào)用。在本書中,我們只關(guān)心事件處理過程。2.函數(shù)實(shí)際上,函數(shù)也是一個(gè)程序模塊,與過程相比,不同之處是函數(shù)執(zhí)行完成后,函數(shù)的計(jì)算結(jié)果(稱為“函數(shù)返回值”)被送到函數(shù)的調(diào)用點(diǎn)(即調(diào)用該函數(shù)的程序位置)上,供程序的后繼部分繼續(xù)進(jìn)行處理,而過程是沒有返回值的。一、事件處理過程P83可以按下面的方式構(gòu)造一個(gè)事件處理過程:Sub事件處理過程名(參數(shù)表)語句塊EndSub這里,事件處理過程名必須符合下面的規(guī)則:對(duì)象名_事件的標(biāo)準(zhǔn)名例如,在VB編程窗口中,建立一個(gè)“命令”對(duì)象如下:F1ia:SubCommand_Clic

3、k()語句塊EndSub貝lj:對(duì)象夕i_事件的標(biāo)準(zhǔn)夕i是Command_Click,而Click表示鼠標(biāo)點(diǎn)擊執(zhí)行語句塊;X_Y乂例如:設(shè)Textl是一個(gè)文本框?qū)ο?,一般我們用于輸入、輸出?shù)據(jù),但雙擊Textl文本框?qū)ο螅M(jìn)入編程狀態(tài)如下:FmSubTextl_Change()語句塊EndSubChange是改變、變化的意思,用于輸入、輸出數(shù)據(jù)的改變,如果要寫一個(gè)事件處理過程,處理用戶單擊該文本框這樣的事件,則該事件處理過程的名稱必須是:Textl_Click(演示:在程序代碼窗II頂部欄有對(duì)彖名事件框,可改選對(duì)象名和事件標(biāo)準(zhǔn)名,如:把Change改選為Click,可鼠標(biāo)點(diǎn)擊執(zhí)行語句塊)表4.

4、4.1VB的一些常用對(duì)象上的常見事件的標(biāo)準(zhǔn)名如下:對(duì)象事件的標(biāo)準(zhǔn)名說明文本框TextClick在文本框內(nèi)單擊鼠標(biāo)DblClick在文本框內(nèi)雙擊鼠標(biāo)KeyPress文本框被激活后,用戶在鍵盤上按下了某一個(gè)鍵命令按鈕CommandClick在命令按鈕上單擊鼠標(biāo)DblCKck在命令按鈕上雙擊鼠標(biāo)標(biāo)簽LabelKeyPress在標(biāo)簽上單擊鼠標(biāo)如果應(yīng)用程序必須關(guān)心對(duì)彖X上發(fā)生的事件Y,就應(yīng)編寫一個(gè)事件處理過程X_Y,按照設(shè)計(jì)好的算法來處理這個(gè)事件;否則,這樣的事件將由VB按照標(biāo)準(zhǔn)的方式自動(dòng)地進(jìn)行處理。例如,用鼠標(biāo)拖動(dòng)滾動(dòng)條,列表框就會(huì)顯示文本的不同部分。本章以后的人部分應(yīng)用程序?qū)嵗?,我們將把?yīng)用問題的

5、計(jì)算過程,放在命令按鈕上發(fā)生單擊鼠標(biāo)事件的事件處理過程中。這是因?yàn)?,?dāng)用戶在某些文本框內(nèi)輸入了必要的原始數(shù)據(jù)之后,應(yīng)用程序的計(jì)算才能進(jìn)行。數(shù)據(jù)輸入是否完成,必須要由用戶來通知應(yīng)用程序,常規(guī)的做法是在應(yīng)用程序的窗體上,安排一個(gè)字面為“計(jì)算”或“開始”的命令按鈕,一旦用戶的數(shù)據(jù)輸入完成后,就可用鼠標(biāo)單擊該命令按鈕,它意味著這個(gè)事件的發(fā)生.應(yīng)用程序已經(jīng)具備了開始計(jì)算的必要條件,能夠啟動(dòng)執(zhí)行整個(gè)計(jì)算過程了。例1:上節(jié)課的求計(jì)算一元二次方程ax+bx+c二0的實(shí)數(shù)根的程序,程序界面要求見課本P77,程序清單見:一元二次方程.FRM,其中程序的輸出部分代碼為:Ifk=0ThenLabel6.Caption

6、=無解!字符串無解!顯示在標(biāo)簽6的屬性名Caption;Text4Text二Text5.Text二Textd.BackColor=vbBlue:Text5.BackColor=&HFF0000藍(lán)色的16進(jìn)制碼Else底色屬性名:BackColorLabel6Caption=k系統(tǒng)符號(hào)常量(藍(lán)色)vbBlue二&HFF0000(藍(lán)色的16進(jìn)制碼)Textd.Text=XIText5.Text=X2EndIf演示:本應(yīng)用程序窗體中使用對(duì)象屬性值的設(shè)置:另外,我給大家提一下全局變量的概念,例如:有卜面是課本P87的應(yīng)用程序的代碼結(jié)構(gòu)如F:#01Dimd(lTo500)AsDouble#02Dimnc

7、AsInteger#03SubCommandl.Click0#04DimsumAsDouble#05DimiAsInteger定義數(shù)組變量d(lTo500)供下面3個(gè)子程序公用;定義簡單變量nc供下面3個(gè)子程序公用;這樣的1(1To500)和nc稱為全局變量sum、i是子程序Commandl.Click0的局部變量:#15EndSub#16SubTextl.CliekODimsumAsInteger這里的sum因?yàn)槭蔷植孔兾?,和上面子程序的sumnJ以是無關(guān)的:#19nc=10如果是全局變量nc,在子程序Textl_Cliek()中就不要再定義了;#20EndSub#21SubTextl_Ke

8、yPressf(KeyAsciiAsInteger)#24nc二nc+1這里的全局變量nc在各個(gè)子程序中是同一個(gè)變量;#25d(nc)=Val(Textl.Text)#31EndSubd(lTo500)由500個(gè)雙精度實(shí)數(shù)類型的元素構(gòu)成的數(shù)組變量,用來存儲(chǔ)用戶的輸入數(shù)據(jù)。nc計(jì)數(shù)器,用來記錄用戶已經(jīng)輸入的數(shù)據(jù)的個(gè)數(shù)。這兩個(gè)變量是在事件處理過程的外部說明的,這樣的變量被稱為“全局的”(Global)變量,在所有的事件處理過程中,都可以使用這些全局變量。二、函數(shù)P88-89雖然VB提供了常用的標(biāo)準(zhǔn)函數(shù)P71,可以使用這些標(biāo)準(zhǔn)函數(shù)來實(shí)現(xiàn)某些數(shù)學(xué)計(jì)算或數(shù)據(jù)類型的轉(zhuǎn)換,但許多應(yīng)用程序常常需要自己來定義函

9、數(shù),以實(shí)現(xiàn)某種特定的計(jì)算??梢园聪旅娴姆绞阶约簛順?gòu)造(規(guī)定)一個(gè)函數(shù):Function函數(shù)名(參數(shù)表)As數(shù)據(jù)類型名 講解:課木P77(實(shí)踐體驗(yàn))的求一元二次方程根的程序(注意:對(duì)象屈性名如何選擇?)語句塊EndFunction這里,函數(shù)名是程序設(shè)計(jì)者為函數(shù)指定的名稱。參數(shù)表是對(duì)于函數(shù)需要的原始數(shù)據(jù)的類型一一地進(jìn)行說明。As后的類型名,是說明函數(shù)的計(jì)算結(jié)果,即函數(shù)返回值的數(shù)據(jù)類型,函數(shù)計(jì)算完成后,VB自動(dòng)地把函數(shù)返回值送到函數(shù)的調(diào)用點(diǎn)上,這樣,程序的其他部分能對(duì)這個(gè)結(jié)果作進(jìn)一步的處理,最終完成計(jì)算任務(wù)。例20設(shè)計(jì)一個(gè)函數(shù)Leap,判斷y年是否是閏年,若是,就返回1,否則,就返回0。我們先構(gòu)造一

10、個(gè)函數(shù)Leap(Y):判斷y年是否是閏年方法見課本P74的問題和練習(xí)第3題:FunctionLeap(yASInteger)AsIntegerIfymod100=0ThenFod是求余數(shù)運(yùn)算符,例:8mod5=3,見課本P72表421Ifymod400=0ThenLeap=lElseLeap二0ElseIfymod4=0ThenLeap=lElseLeap二0EndlfEndFunctionEndFunction之前的語句塊,描述了函數(shù)的計(jì)算過程,在這些語句中,至少要有一個(gè)形如函數(shù)名二表達(dá)式例如:上函數(shù)模塊中的Leap二1、Leap二0的語句,這樣,表達(dá)式的計(jì)算結(jié)果才能作為函數(shù)的返回值,被VB

11、送到函數(shù)的調(diào)用點(diǎn)上。把“判斷y年是否是閏年”這樣一個(gè)計(jì)算過程從整個(gè)應(yīng)用程序中分離出來,成為一個(gè)獨(dú)立的模塊(模塊可以是一個(gè)函數(shù),也可以是一個(gè)過程),這是一種模塊化的程序設(shè)計(jì)方法。使用這種方法的好處是:在設(shè)計(jì)(構(gòu)造)這個(gè)模塊時(shí),需要處理的計(jì)算任務(wù)比起整個(gè)應(yīng)用程序來相對(duì)地要簡單些,例如,在這里需要設(shè)計(jì)的計(jì)算過程僅僅是按一定的規(guī)則判斷y年是否是閏年,并按規(guī)定返回0或1這兩個(gè)結(jié)果之一,而不需要考慮數(shù)據(jù)y是怎么獲得的,y年是閏年要進(jìn)行怎樣的處理,y年不是閏年又要進(jìn)行怎樣的處理等問題,這些是應(yīng)用程序其他部分的任務(wù)。構(gòu)造了一個(gè)程序模塊后,在程序的各個(gè)部分中可以使用這個(gè)模塊??勺远x一個(gè)函數(shù):Leap(y)=丫

12、不是閏年;丫是閏年;則:D2=D2+Leap(2012)“上面我們已經(jīng)構(gòu)造一個(gè)函數(shù)Leap(Y)例如:下面我們要要編制一個(gè)完整的程序,輸入一個(gè)年份y(設(shè)y=1900),輸出該年2月份的天數(shù):分析如下:廠28丁不是閏年;2月份的天數(shù):D2=-29了是閏年:可先設(shè)D2=28,則:IFy是閏年thenD2=D2+1 # #因此,輸出該年2月份的天數(shù)的子程序如下:SubCommand1_C1ick0講解:課木P77(實(shí)踐體驗(yàn))的求一元二次方程根的程序(注意:對(duì)象屈性名如何選擇?) DimyAsIntegerDimnAsStringn=InputBoxC請(qǐng)輸入年份:)y=Vai(n)d2二28d2=d24-Leap(y)調(diào)用函數(shù)Leap(y),并把的返回值1或0,被VB送到函數(shù)的調(diào)用點(diǎn)Textl.Text=d2EndSub演示:把上子程序模塊和構(gòu)造的函數(shù)Leap(Y)程序

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論