VisualBasic過(guò)程和函數(shù)解析課件_第1頁(yè)
VisualBasic過(guò)程和函數(shù)解析課件_第2頁(yè)
VisualBasic過(guò)程和函數(shù)解析課件_第3頁(yè)
VisualBasic過(guò)程和函數(shù)解析課件_第4頁(yè)
VisualBasic過(guò)程和函數(shù)解析課件_第5頁(yè)
已閱讀5頁(yè),還剩31頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、二級(jí)考試考點(diǎn)概覽本講內(nèi)容在二級(jí)考試中所占比例較大,每次考試平均56道題,其中填空題占01題,合計(jì)1012分。1計(jì)算機(jī)學(xué)院第六章 過(guò)程和函數(shù)第1頁(yè),共36頁(yè)。 過(guò)程和函數(shù) 結(jié)構(gòu)化的程序中,經(jīng)常將一個(gè)較大的程序劃分成若干個(gè)較小的程序模塊,每個(gè)模塊只完成一個(gè)或若干個(gè)功能。這些模塊通過(guò)執(zhí)行一系列語(yǔ)句完成一個(gè)特定的操作,稱為“過(guò)程”。用過(guò)程編程的好處有:過(guò)程可使大程序分解成多個(gè)邏輯單元,容易編寫(xiě)、調(diào)試。一個(gè)程序中的過(guò)程可以為另一個(gè)程序使用。 VB中過(guò)程分為兩類:子程序過(guò)程(Sub過(guò)程)和函數(shù)過(guò)程(Function過(guò)程)。 Sub過(guò)程(子過(guò)程):完成一定的操作和功能,無(wú)返回值,通過(guò)程序調(diào)用和事件觸發(fā)而執(zhí)行

2、,分為事件過(guò)程和通用過(guò)程。 Function過(guò)程(函數(shù)過(guò)程):相當(dāng)于用戶自定義的函數(shù),通過(guò)程序調(diào)用才能被執(zhí)行,并且可將數(shù)據(jù)處理的結(jié)果返回。第2頁(yè),共36頁(yè)。1 Sub過(guò)程1. 事件過(guò)程 這類過(guò)程與對(duì)象有關(guān),對(duì)象事件觸發(fā)后被調(diào)用。 事件過(guò)程的過(guò)程名由系統(tǒng)自動(dòng)指定。 建立對(duì)象的事件過(guò)程:(1) 進(jìn)入代碼窗口(2) 選擇“對(duì)象”和“事件過(guò)程”,系統(tǒng) 自動(dòng)形成該事件過(guò)程的頭和尾(3) 編寫(xiě)該事件的程序代碼 “對(duì)象”“事件過(guò)程”Sub過(guò)程分為:事件過(guò)程和通用過(guò)程第3頁(yè),共36頁(yè)。2. 通用Sub過(guò)程 這類過(guò)程與對(duì)象無(wú)相關(guān),是用戶創(chuàng)建的一段共享代碼。 過(guò)程的名稱由用戶自己命名. 建立通用Sub過(guò)程: (1

3、) 建立過(guò)程框架方法1:在模塊的“通用”段中輸入過(guò)程名,按回車后系統(tǒng)自動(dòng)添加 End Sub。 方法2:“工具添加過(guò)程” (2) 編寫(xiě)該過(guò)程的程序代碼第4頁(yè),共36頁(yè)。格式:Private |PublicStatic Sub () Exit Sub End Sub其中:第5頁(yè),共36頁(yè)。 Pubic或Private:Pubic過(guò)程可在整個(gè)程序范圍內(nèi)被調(diào)用,而Private過(guò)程只能在本窗體或模塊中被調(diào)用。 Static:表示過(guò)程中的局部變量是靜態(tài)變量,在調(diào)用過(guò)程結(jié)束后,其值仍然被保留。 過(guò)程名:是該過(guò)程的唯一名字,命名規(guī)則如變量。 它指明了從調(diào)用過(guò)程傳送給子過(guò)程的變量個(gè)數(shù)及數(shù)據(jù)類型,之間用逗號(hào)分

4、隔,如:(a,b,x)。中出現(xiàn)的參數(shù)稱為形式參數(shù),簡(jiǎn)稱形參。第6頁(yè),共36頁(yè)。 形參并不代表一個(gè)實(shí)際存在的變量,也沒(méi)有固定的值。它完全由調(diào)用過(guò)程的程序決定其內(nèi)容,只是一個(gè)“形式上的變量參數(shù)”。只在被調(diào)用時(shí)被一確定的值代替,故形參的名字并不重要,重要的是其表示的對(duì)應(yīng)關(guān)系和調(diào)用時(shí)所給定的實(shí)際參數(shù)。 Exit Sub:退出過(guò)程。一個(gè)計(jì)算圓面積和周長(zhǎng)的過(guò)程(sr):Private Sub sr(a, c, b) ra,cArea Const pi = 3.1416 c = a * a * pi計(jì)算面積 b = 2*pi*a計(jì)算周長(zhǎng)End Sub第7頁(yè),共36頁(yè)。2 通用過(guò)程的調(diào)用1.使用Call語(yǔ)句調(diào)

5、用 格式:Call 過(guò)程名 是實(shí)際參數(shù)列表,參數(shù)之間用逗號(hào)分隔。實(shí)參的作用是:將實(shí)參中的實(shí)際變量或常數(shù)傳送給被調(diào)用過(guò)程中的形參,供其計(jì)算;或從過(guò)程中接收經(jīng)過(guò)程計(jì)算的結(jié)果,實(shí)現(xiàn)數(shù)據(jù)傳遞。 實(shí)參的個(gè)數(shù)、數(shù)據(jù)類型都應(yīng)與被調(diào)用過(guò)程的形參一一對(duì)應(yīng)。 如無(wú)參數(shù),可以省略()。第8頁(yè),共36頁(yè)。一個(gè)調(diào)用計(jì)算圓面積及周長(zhǎng)過(guò)程(sr)的Private Sub Command1_Click() Dim r, a, s As Single r = Val(InputBox(輸入半徑R) Call sr(r, a, s) Print: Print: Print Print “半徑:; r Print “面積:; a

6、Print “周長(zhǎng):; s End Sub實(shí)例。計(jì)算圓面積和周長(zhǎng)的子過(guò)程:Private Sub sr(a, c, b) Const pi = 3.1416 c = a * a * pi 計(jì)算面積 b = 2*pi*a 計(jì)算周長(zhǎng)End Sub第9頁(yè),共36頁(yè)。2.直接使用過(guò)程名調(diào)用 格式:過(guò)程名實(shí)參,實(shí)參Private Sub Command1_Click() Dim r, a, s As Single r = Val(InputBox(輸入半徑R) sr r, a, s Print: Print: Print Print “半徑:; r Print “面積:; a Print “周長(zhǎng):; s

7、End Sub 實(shí)例。求階層的例子第10頁(yè),共36頁(yè)。SUB過(guò)程的定義中_一定要有虛參 一定指明是公有的還是靜態(tài)的 一定要有過(guò)程的名稱 一定要指明其類型第11頁(yè),共36頁(yè)。3 函數(shù)過(guò)程的定義 函數(shù)也屬于過(guò)程。它與子過(guò)程的根本區(qū)別是可以返回一個(gè)值給調(diào)用程序。其定義方法同過(guò)程相似,也有兩種。1.利用“添加過(guò)程”對(duì)話框定義 打開(kāi)窗體或模塊的代碼窗口,單擊“工具”菜單,選擇“添加過(guò)程”,然后在對(duì)話框的“類型”中選擇“函數(shù)”即可。2.直接在代碼窗口定義 進(jìn)入代碼窗口后,在左側(cè)顯示對(duì)象名的下拉列表框中選擇“通用”,在右側(cè)顯示過(guò)程的下拉列表框中選擇“聲明”,然后輸入Function及函數(shù)名即可。第12頁(yè),共

8、36頁(yè)。格式:Function()As函數(shù)名=Exit Function函數(shù)名=End Function可以在Function前加上Public|Private|Static表示作用范圍。如:Private Function area(a) As Single第13頁(yè),共36頁(yè)。一個(gè)計(jì)算圓面積的函數(shù)過(guò)程(farea):Private Function farea(a) As Single ra Const pi = 3.1416 farea = a * a * pi計(jì)算面積End Function函數(shù)通過(guò)函數(shù)名返回計(jì)算值,子過(guò)程通過(guò)形參返回計(jì)算值。函數(shù)過(guò)程與sub過(guò)程的不同點(diǎn):一是函數(shù)過(guò)程需定

9、義過(guò)程名的類型,而sub過(guò)程則不必;二是函數(shù)名要被賦值,而sub不必.第14頁(yè),共36頁(yè)。4函數(shù)的調(diào)用1.使用Call語(yǔ)句調(diào)用如函數(shù)名為farea,則可用命令:Call farea(r)調(diào)用該函數(shù)。但用這種方法調(diào)用函數(shù)時(shí),沒(méi)有返回值。2.使用函數(shù)名調(diào)用如函數(shù)名為farea,也可用命令:farea r調(diào)用該函數(shù)。這種方法調(diào)用函數(shù)時(shí),同樣沒(méi)有返回值。第15頁(yè),共36頁(yè)。一個(gè)調(diào)用計(jì)算圓面積的函數(shù)過(guò)程(farea) Private Sub Command1_Click() Dim r As Single r = Val(InputBox(輸入半徑R) Print 半徑 :; r Print 圓面積 :

10、; Int(farea(r) * 10) / 10End Sub實(shí)例。 Private Function farea(a) As Single ra Const pi = 3.1416 farea = a * a * pi計(jì)算面積End Function第16頁(yè),共36頁(yè)。下列關(guān)于退出sub和function過(guò)程中,正確的是_過(guò)程的最后一條語(yǔ)句是end sub(或end funtion),因而一定要執(zhí)行到end sub(或end funtion)才會(huì)結(jié)束過(guò)程的執(zhí)行 一個(gè)過(guò)程可以沒(méi)有 exit sub(或exit funtion)語(yǔ)句,如果有則只能有一條. 一個(gè)過(guò)程既可以通過(guò) exit sub(

11、或exit funtion)語(yǔ)句結(jié)束過(guò)程的執(zhí)行,也可以通過(guò)end sub(或end funtion)結(jié)束過(guò)程的執(zhí)行. 可以用goto語(yǔ)句來(lái)退出sub過(guò)程.第17頁(yè),共36頁(yè)。在過(guò)程調(diào)用中,被調(diào)用的過(guò)程一定是sub過(guò)程的語(yǔ)句是_Call prol(a1,b1) pro2(a2,b2) print pro3(a3,b3) x=pro4(a4,b4)第18頁(yè),共36頁(yè)。5 形參與實(shí)參的傳送方式 在Sub、Function過(guò)程中參數(shù)列表的參數(shù)稱為形參。程序中調(diào)用Sub、Function過(guò)程時(shí),參數(shù)列表中的參數(shù)為實(shí)參。1.按位置傳送 按位置傳送方式是實(shí)參的次序與形參的次序應(yīng)匹配且一一對(duì)應(yīng)。如:Sub過(guò)程

12、中 Private Sub mysub(x as Integer,y()as double,z as String)即:Call mysub(a,b(),c) (ax,by,cz) 形參表中的第一個(gè)參數(shù)為整型變量,第二參數(shù)為雙精度數(shù)組,第三個(gè)參數(shù)為字符串。則調(diào)用時(shí),實(shí)參個(gè)數(shù)與其相等,且位置次序、類型必須與之對(duì)應(yīng)。第19頁(yè),共36頁(yè)。2傳址與傳值1.傳址方式(ByRef):實(shí)參與形參的數(shù)據(jù)傳遞方式,通過(guò)傳送數(shù)據(jù)地址方式進(jìn)行。是實(shí)參與形參傳送的默認(rèn)方式。 實(shí)參的數(shù)據(jù)值存放在內(nèi)存的某個(gè)地址中,當(dāng)調(diào)用某子過(guò)程時(shí),將實(shí)參的地址傳遞給形參。這樣,在被調(diào)用的子過(guò)程中,即可通過(guò)該地址獲得實(shí)參的數(shù)據(jù)。同時(shí),在該

13、子過(guò)程中對(duì)形參數(shù)據(jù)的修改,實(shí)際上也是對(duì)實(shí)參地址上數(shù)據(jù)的修改。 傳址方式中,對(duì)形參的數(shù)據(jù)修改就是對(duì)實(shí)參的修改。實(shí)例。第20頁(yè),共36頁(yè)。2. 傳值方式(ByVal) :實(shí)參與形參通過(guò)直接傳送數(shù)據(jù)值的方式傳遞數(shù)據(jù)。因?yàn)楸徽{(diào)用的子過(guò)程中的形參沒(méi)有直接訪問(wèn)實(shí)參地址中的原始數(shù)據(jù),因而也就不能修改實(shí)參的數(shù)據(jù)。 在傳值方式中,對(duì)形參的修改不會(huì)對(duì)實(shí)參數(shù)據(jù)進(jìn)行修改。實(shí)例。3. 傳送方式的選擇:傳址方式的效率比傳值要高,但形參并不是一個(gè)真正的局部變量,有可能使計(jì)算的數(shù)據(jù)產(chǎn)生不可預(yù)見(jiàn)的錯(cuò)誤。 傳值方式的效率雖然較低,但形參是一個(gè)真正的局部變量,其計(jì)算的數(shù)據(jù)可預(yù)見(jiàn)程度較高。第21頁(yè),共36頁(yè)。程序示例Private

14、sub command1_click() dim m as integer,n as integer m=15:n=20 call change(m,n) Print m=; m, n=; nEnd subPrivate sub change(byval x as integer,byval y as integer) x=x+20 y=x+y Print x=; x, y=; yEnd subPrivate sub change(x as integer,byval y as integer) x=x+20 y=x+y Print x=; x, y=; yEnd sub運(yùn)行結(jié)果X=35 y=

15、55M=15 n=20運(yùn)行結(jié)果X=35 y=55M=35 n=20第22頁(yè),共36頁(yè)。運(yùn)行下列程序執(zhí)行結(jié)果是()Private sub command1_click()Dim x as integer,y as integerX=12:y=34Call procl(x,y):print x;yEnd subPrivate sub procl(n as integer,byval m as integer)N=n mod 10:m=m10End subA) 12 34 B) 2 34 C) 2 3 D) 12 3第23頁(yè),共36頁(yè)。Private Sub Command1_Click()Dim

16、p(5) As VariantFor i = 1 To 5p(i) = iNext ik = 20Call hap(p(), k)Text1.Text = kEnd SubSub hap(a(), ByVal y As Integer)For i = 1 To 5y = y + a(i)Next iEnd Sub運(yùn)行下列程序執(zhí)行結(jié)果是()20第24頁(yè),共36頁(yè)。6 變量的作用域簡(jiǎn)介變量還可按作用域及生存期分類。 變量的作用域即變量的作用范圍。簡(jiǎn)言之即該變量只能在什么范圍內(nèi)使用。按作用域分類,變量有局部變量、窗體和模塊級(jí)變量、全局變量之分。 在簡(jiǎn)單的VB程序中,只用到局部變量。在一個(gè)過(guò)程內(nèi)部聲明

17、的變量是局部變量,又稱為過(guò)程變量。這種變量只在聲明它的過(guò)程內(nèi)有效。局部變量通常用 Dim、Static 聲明變量,也可用Private聲明變量。若按變量的生存期分類,則Dim聲明的變量是動(dòng)態(tài)變量;而Static是靜態(tài)變量。第25頁(yè),共36頁(yè)。變量的作用域可劃分為:局部變量、窗體(或模塊)級(jí)變量和全局變量3類。6 變量的作用域1.局部變量:在過(guò)程體內(nèi)用dim聲明的變量或不聲明直接使用的變量。特點(diǎn):只在聲明它的過(guò)程中使用,其它過(guò)程無(wú)法訪問(wèn)。例:private sub temp1()Dim x as integer x為局部變量。end sub注:當(dāng)過(guò)程結(jié)束時(shí),局部變量自動(dòng)消失。不同的過(guò)程可以有相同

18、的變量名稱,互不相干,但同一過(guò)程中不允許有相同的變量名稱。第26頁(yè),共36頁(yè)。6 變量的作用域2.窗體(或模塊級(jí))變量:在一個(gè)窗體(或模塊)的任何過(guò)程之外用dim聲明或用private聲明的變量。特點(diǎn):可本窗體(或模塊)的任何過(guò)程使用。注:當(dāng)窗體釋放時(shí),窗體(或模塊級(jí))變量才會(huì)消失。第27頁(yè),共36頁(yè)。例:Dim z as single 在窗體form1的通用聲明中定義z,z為窗體級(jí)變量。Private sub temp3()Dim a as single a 為局部變量a=10:z=z+aPrint a,zEnd subPrivate sub temp4()Dim a as single a

19、 為局部變量a=2:z=z*aPrint a,zEnd sub運(yùn)行后,單擊一次command1時(shí),輸出結(jié)果為:Private sub command_click()Call temp3Call temp4End sub 102 20第28頁(yè),共36頁(yè)。6 變量的作用域3.全局變量:在一個(gè)窗體(或模塊)的任何過(guò)程之外用public聲明的變量。特點(diǎn):可被應(yīng)用程序的任何過(guò)程使用。注:只有當(dāng)整個(gè)應(yīng)用程序執(zhí)行結(jié)束時(shí),它才會(huì)消失。Public x as integerPrivate sub form_click()x=x+1Print xEnd sub第1次單擊窗體時(shí),運(yùn)行結(jié)果為:1第2次單擊窗體時(shí),運(yùn)行

20、結(jié)果為:2第29頁(yè),共36頁(yè)。7 變量的生存期按變量的生存期可劃分為:動(dòng)態(tài)變量和靜態(tài)變量2類。如果不使用static聲明,則該變量為動(dòng)態(tài)變量,否則屬于靜態(tài)變量。靜態(tài)變量的特點(diǎn):這個(gè)變量只被初始化一次,且在程序運(yùn)行期間保留其值,在退出變量所在的過(guò)程時(shí),不釋放該變量所占的存儲(chǔ)單元,直至整個(gè)應(yīng)用程序結(jié)束。Private sub form_clickDim x as integerStatic y as integerx=x+1:y=y+1Print x,yEnd sub第1次單擊窗體時(shí),運(yùn)行結(jié)果為:1 1第2次單擊窗體時(shí),運(yùn)行結(jié)果為:1 2第30頁(yè),共36頁(yè)。第31頁(yè),共36頁(yè)。通過(guò)本例學(xué)習(xí)不同作用域變量的使用。在Form1窗體代碼窗口輸入如下程序: Public a% Private Sub Form_Click() Dim c%,s% 局部變量 c = 20 s = a + Form2.b + c 引用各級(jí)變量 Print s=;s End Sub 第32頁(yè),共36頁(yè)。 Private Sub Form_Load() a = 10 給窗體/模塊級(jí)變量

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論