2013第8部分(模塊化)ppt課件_第1頁
2013第8部分(模塊化)ppt課件_第2頁
2013第8部分(模塊化)ppt課件_第3頁
2013第8部分(模塊化)ppt課件_第4頁
2013第8部分(模塊化)ppt課件_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Visual Foxpro 6.0,程序設(shè)計基礎(chǔ),重慶工商大學(xué)計算機學(xué)院計算機基礎(chǔ)教研室,第八講 程序設(shè)計初步(3),要點: 1、建立模塊化程序設(shè)計的觀念 2、掌握自定義方法的使用 3、掌握變量的作用域,程序設(shè)計的三種基本結(jié)構(gòu): 順序結(jié)構(gòu) 分支結(jié)構(gòu) 循環(huán)結(jié)構(gòu),一、程序設(shè)計為什么要引入模塊化,模塊化設(shè)計思想,【例1】設(shè)計如圖所示表單,計算組合數(shù)C(m,n)。其中,m和n是正整數(shù),且mn。,“計算”命令按鈕的CLICK事件代碼如下:,M=thisform.text1.value N=thisform.text2.value p1=1 for i=1 to m p1=p1*i endfor p2=1 for i=1 to n p2=p2*i endfor,p3=1 for i=1 to m-n p3=p3*i endfor result=p1/(p2*p3) Thisform.text3.value=result return,數(shù)據(jù)輸入,求m!,求n!,求(m-n)!,將求階乘的問題寫成一個共有的代碼,代碼如下:,*自定義方法JC parameters x y=1 for i=1 to x y=y*i endfor Return Y,*“計算”命令按鈕的CLICK事件: M=THISFORM.TEXT1.VALUE N=THISFORM.TEXT2.VALUE S1=THISFORM.JC(M) S2=THISFORM.JC(N) S3=THISFORM.JC(M-N) THISFORM.TEXT3.VALUE=S1/(S2*S3),二、模塊化的基本思想,分而治之的策略是人們處理復(fù)雜問題時的一般策略。它將一個大的任務(wù)分解為多個任務(wù),分而治之,協(xié)作處理,共同完成。,分解優(yōu)化。不同的人分解的策略是不一樣,因此分解也有好有壞。,模塊化程序就是采用“自頂向下、逐步求精”的方法,從整體到局部,從抽象到具體的分解過程。,(1)精簡主程序 提高可讀性,同時便于以后程序的維護。 (2)減少重復(fù)片段 sub1內(nèi)的命令原本在主程序會出現(xiàn)兩次,而改成調(diào)用子程序后,便只出現(xiàn)兩次“調(diào)用sub1”命令,因此可以減少重復(fù)片段,并且以后sub1內(nèi)的命令若需修改時,只要改一個地方就可以了,而不需要同時修改多處。,三、模塊化程序設(shè)計的主要優(yōu)點,在Visual FoxPro中,子程序的結(jié)構(gòu)可分為下列幾種: 過程 自定義函數(shù) 自定義方法,自定義方法,(1)方法的分類 VFP的方法分為兩類:內(nèi)部方法和用戶自定義方法。 內(nèi)部方法是VFP預(yù)制的子程序,可供用戶直接調(diào)用或修改后使用,如在前面章節(jié)中所使用過的Release、SetFocus等方法。 用戶自定義方法其實就是用戶為某種需要編寫的子程序。,1、自定義方法的建立和調(diào)用,(2)方法的命名規(guī)則 VFP中方法的命名規(guī)則如下: 由字母、漢字、下劃線和數(shù)字組成,并且必須以字母、漢字或下劃線開頭。 可以是1128個字符。 不能使用vfp的保留字 方法名不要與變量名、數(shù)組名相同,取名盡量“見名知意”。 (3)方法建立的步驟 定義方法 編寫方法代碼。,(教材P71) 【例3-15】自定義方法addtxt,將文本框中輸入的文本添加到編輯框中,并將文本框中的文本設(shè)置為藍顏色,編輯框中的文本設(shè)置為紅顏色。,1)方法定義 (1)添加新方法addtxt。 打開表單設(shè)計器選擇“表單”中的“新建方法程序”命令打開的“新建方法程序”對話框在“名稱”框中輸入方法的名稱(如圖所示) 單擊添加按鈕單擊關(guān)閉按鈕,退出該對話框。,注意:只有表單對象可以添加自定義方法。,輸入方法名,輸入對該方法的描述,也可以不加,(2)編寫addtxt方法的代碼。 雙擊表單空白處,打開“代碼”窗口,在“過程”下拉列表中選擇“addtxt”,然后編寫代碼,如圖所示。,將文本框中輸入的內(nèi)容添加到編輯框,2)編寫控件的事件代碼 (1)“添加”命令按鈕的“Click”事件代碼如下: thisform.addtxt() (2)“關(guān)閉”命令按鈕的“Click”事件代碼如下: thisform.release,文本框的內(nèi)部方法,3)運行結(jié)果,2、參數(shù)傳遞與方法的返回值,(1)參數(shù)傳遞 如果需要方法能夠接收參數(shù),則在方法代碼開始部分增加下面的命令行: PARAMETERS 或 LAPRAMETERS 調(diào)用時使用括號將實參括起來: 對象名.方法名(),說明:見教材P75,(2)方法的返回值 如果需要一個返回值,則要在方法代碼的結(jié)束處增加下面的命令行: RETURN 如果缺省,vfp將自動返回.T.。當代碼執(zhí)行到 RETURN命令時,程序流程立即返回到主程序中。,(3)方法的調(diào)用形式 在主程序中可以使用以下形式調(diào)用方法: 在表達式中調(diào)用方法,例如, y=2+Thisform.New(x)。 在賦值語句中調(diào)用方法,例如,y=Thisform.New(x)。 以等號命令調(diào)用方法,例如,=Thisform.New(x)。以該形式調(diào)用的方法將舍棄返回值。,(教材P74) 【例3-16】編寫分數(shù)化簡程序,在其中調(diào)用求最大公約數(shù)的自定義方法gys。,編寫求最大公約數(shù)的自定義方法gys代碼,編寫“=”按鈕的Click事件代碼: a=Thisform.Text1.Value b=Thisform.Text2.Value IF a*b0 s= Thisform.gys(a,b) Thisform.Text3.value=INT(a/s) Thisform.Text4.value=INT(b/s) ENDIF,在賦值語句中調(diào)用方法,EXM1(p83):利用自定義方法,設(shè)計圓面積程序。,Command1的click事件代碼: r=thisform.text1.value thisform.text2.value=thisform.mj(r),自定義方法程序mj: para x y=pi()*x2 return y,EXM2(p83):設(shè)計如圖所示表單,3文本框的初值為0,運行表單后,在3個文本框中都輸入1,單擊“command1”按鈕,標簽label2和label3分別會顯示什么?,Command1的click事件代碼: i=thisform.text1.value a=thisform.text2.value b=thisform.text3.value y1=“ DO WHILE i=3 g1( ) y1=y1+“P(“+STR(i,1)+“)=“+STR(a,2)+“ “ i=i+1 ENDDO thisform.label2.caption=y1 thisform.label3.caption=“b=“+STR(b,2),自定義方法程序prog1: a=a*2 b=b+a return,P(1)=2 P(2)=4 P(3)=8 b=15,變量的作用域,根據(jù)使用范圍,可以將變量分成以下3類: 私有變量 全局變量 局部變量,私有變量 私有變量的使用原則是:上層程序(主程序)中,所定義的私有變量,可以在下層程序(子程序)中使用,而下層程序(子程序)中,所定義的私有變量,卻不可以在上層程序(主程序)中使用;這是因為定義該私有變量的子程序結(jié)束時,私有變量便被釋放的緣故。,定義私有變量: Private ,教材P77,假設(shè)一私有變量在“子程序SUB2”中定義時,則子程序SUB2A、SUB2B也可以使用該私有變量,但主程序與其他子程序(SUB1、SUB1A、SUB1B),則無法使用該私有變量。,(教材P75-76) 【例3-17】表單界面如圖所示,計算按鈕的click事件代碼和自定義方法代碼如下,當文本框text1、text2中分別輸入1、2,單擊“計算“按鈕,文本框text3、text4中顯示什么?,計算按鈕的Click事件代碼: a=thisform.text1.value b=thisform.text2.value s=0 thisform.summ() thisform.text4.value=s,自定義方法summ代碼: private s s=a+b thisform.text3.value=s,全局變量 全局變量的使用范圍包括整個應(yīng)用程序,從主程序到所有子程序都可以使用全局變量的內(nèi)容;因此通常是用來存放密碼、當天日期、用戶ID或其他常用的系統(tǒng)信息等。 但因全局變量的生命周期相當長,從應(yīng)用程序開始到結(jié)束,全局變量會一直占據(jù)內(nèi)存空間,除非必要否則盡量少用。,定義全局變量: PUBLIC ,教材P77,假設(shè)一個全局變量在子程序SUB1中定義時,則從主程序到全部子程序(SUB1、SUB2、SUB1A、SUB1B、SUB2A、SUB2B),都可以使用該全局變量。,(教材P77) 【例3-18】如【例3-17】中如下圖所示表單,若計算按鈕的click事件代碼和自定義方法代碼如下,當文本框text1、text2中分別輸入1、2,單擊“計算“按鈕,文本框text3、text4中顯示什么?,計算按鈕的Click事件代碼: a=thisform.text1.value b=thisform.text2.value thisform.summ() thisform.text4.value=s,自定義方法summ代碼: Public s s=a+b thisform.text3.value=s,局部變量 局部變量是Visual FoxPro新增的變量種類,但與私有變量非常相似,私有變量的使用范圍是程序本身及下層的子程序,而局部變量的使用的范圍則只限于定義變量的程序本身。,定義局部變量: LOCAL ,教材P78,假設(shè)一局部變量在“子程序SUB1”中自定義時,則只有“子程序SUB1”可以使用此局部變量,主程序和其它子程序(SUB2、SUB1A、SUB1B、SUB2A、SUB2B)都無法使用該局部變量。,變量的屏蔽,為了避免在不同層次的模塊中因為使用相同名字的變量而相互影響值的變化,可在子模塊中使用private、local、parameters命令屏蔽掉主模塊或上級模塊中同名的變量,使得這些變量在子模塊中暫時無效。只要返回主模塊或上級模塊,原來同名變量會重新出現(xiàn),并且其值保持不變。,EXM3:設(shè)計如圖所示表單,文本框text1、text2、text3的初值為0,運行表單后,在文本框text1、text2、text3中分別輸入數(shù)值2、3、4,單擊“command1”按鈕,文本框text412中分別會顯示什么?,Command1的click事件代碼: a=thisform.text1.value b=thisform.text2.value c=thisform.text3.value thisform.sub1() thisform.text10.value=a thisform.text11.value=b thisform.text12.value=c retu,自定義方法程序sub1: private b,c a=20 b=30 c=40 thisform.sub2() thisform.text7.value=a thisform.text8.value=b thisform.text9.value=c retu,自定義方法程序sub2: private a a=100 b=2*a thisform.text4.value=a thisform.text5.value=b thisform.text6.value=c retu,100 200 40 20 200 40 20 3 4,EXM4:設(shè)計如圖所示表單,運行表單后,在文本框text1和text2中都輸入數(shù)值1,單擊“command1”按鈕,文本框text36中分別會顯示什么?,Form1的load事件代碼:public a,b Command1的click事件代碼: a=thisform.text1.v

溫馨提示

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

評論

0/150

提交評論