VFP-04-06-變量作用域、自定義函數(shù)_第1頁(yè)
VFP-04-06-變量作用域、自定義函數(shù)_第2頁(yè)
VFP-04-06-變量作用域、自定義函數(shù)_第3頁(yè)
VFP-04-06-變量作用域、自定義函數(shù)_第4頁(yè)
VFP-04-06-變量作用域、自定義函數(shù)_第5頁(yè)
已閱讀5頁(yè),還剩4頁(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)介

VFP-04-06變量作用域、自定義函數(shù).docNUMPAGES8-PAGE4變量作用域、自定義函數(shù)4.5.3內(nèi)存變量的作用域變量的作用域:變量的作范圍。程序由模塊(主、子程序)組成,模塊中有內(nèi)存變量,內(nèi)存變量有作用范圍。變量的作用域,從定義變量處開始,一直向下。1.定義全局內(nèi)存變量全局變量既可以是單個(gè)變量,也可以是數(shù)組。分別以下列格式定義。格式1:Public<內(nèi)存變量表>格式2:Public<數(shù)組名1>(上界1[,上界2[,...])[,…]功能:定義全局變量。①<內(nèi)存變量表>中既可含普通變量,也可含數(shù)組。②全局變量不會(huì)自動(dòng)釋放。只能用release命令顯式釋放,或退出VFP。③VFP命令窗口中定義的變量,默認(rèn)為全局變量。④全局?jǐn)?shù)組的每個(gè)元素都是全局的。第116頁(yè),例4.35主程序中使用子程序中定義的全局變量。*文件名Main.prgsettalkoffclearclearmemory&&清除所有內(nèi)存變量I=2&&默認(rèn)是私有的DoABC?"主程序中的輸出結(jié)果:"?"I="+str(I,2)+"J="+str(J,2)settalkonreturn*ProcedureABCpublicJJ=I*8J=J+5?"過(guò)程中的輸出結(jié)果:"?"I="+str(I,2)+"J="+str(J,2)return小提示:要檢測(cè)全局變量,請(qǐng)先clearmemory以排除干擾。2.定義局部?jī)?nèi)存變量(1)什么叫局部?更小的范圍就是局部。對(duì)于一個(gè)模塊,更后的部分是局部。對(duì)于主程序,子程序是局部。(2)Private定義局部變量格式1:Private<內(nèi)存變量表>格式2:Private<數(shù)組名1>(上界1[,上界2[,...])[,…]功能:定義局部變量。①未經(jīng)定義的變量,默認(rèn)是局部(Private)的。③無(wú)論全局還是局部變量,無(wú)初值的,一律自動(dòng)賦初值.F.。③局部變量作用域的子模塊擴(kuò)展規(guī)則Private變量的作用域,通過(guò)調(diào)用子模塊而擴(kuò)展到子模塊中。圖4-20Private變量作用域子模塊擴(kuò)展規(guī)則第117頁(yè),例4.36子程序中的局部變量,在主程序中找不到。R=100&&默認(rèn)為Private變量DoSub1&&調(diào)用子程序?P&&主程序中找不到這個(gè)變量Return*procedureSub1P=2*3.14*R&&主程序中的Private變量,子程序中可用return3.Private隱藏內(nèi)存變量的功能(1)同名變量就近使用規(guī)則(原理)程序中,對(duì)于同名的變量,默認(rèn)使用最近的。因此,①字段變量(因?yàn)樵诋?dāng)前工作區(qū)內(nèi))優(yōu)先于(即隱藏)同名內(nèi)存變量;注:什么叫隱藏?就是被遮住,看不見,用不上。圖4-22字段變量隱藏同名內(nèi)存變量例如usestudent.dbfusestudent.dbf有,Local變量,即本地變量。如:Localx,y,z。小提示:采用Local變量,是向C語(yǔ)言靠攏。4.調(diào)用過(guò)程時(shí)的數(shù)據(jù)傳遞教學(xué)提示:VFP的參數(shù)傳遞,過(guò)程中默認(rèn)傳址,函數(shù)中默認(rèn)傳值。向過(guò)程傳遞數(shù)據(jù),有兩種方法。(1)利用Private變量的作用域擴(kuò)展規(guī)則,不傳而傳過(guò)程中,可以直接使用主程序中的Private變量,不必傳。第118頁(yè),例4.38計(jì)算矩形面積。G=8&&長(zhǎng)K=6&&寬mj=0&&面積dosub3?Mjreturn*proceduresub3mj=G*Kreturn(2)在過(guò)程第一句用Parameters接收參數(shù)主程序中傳出參數(shù)格式:Do<過(guò)程名>With<實(shí)際參數(shù)表>子程序中接收參數(shù)格式:Parameters<內(nèi)存變量表>說(shuō)明:①子程序中,Parameters必須是第一句。Parameters變量是Private變量。②傳值:Parameters后的變量與主程序中對(duì)應(yīng)的實(shí)際參數(shù)無(wú)關(guān)。③傳引用:Parameters后的變量與主程序中對(duì)應(yīng)的實(shí)際參數(shù)是同一個(gè)變量,名稱可能不同而已,同時(shí)變化。④引用隱藏實(shí)參規(guī)則子模塊中,引用參數(shù)隱藏實(shí)際參數(shù),是因?yàn)橐脜?shù)與實(shí)際參數(shù)是同一個(gè)變量,只是在子模塊中另取了一個(gè)名字(別名)而已。因此,原來(lái)的實(shí)際參數(shù)被隱藏,才不會(huì)混亂,包括實(shí)際參數(shù)是Public變量的情況。⑤如何決定傳值、傳地址?由實(shí)際參數(shù)決定。過(guò)程的實(shí)際參數(shù)默認(rèn)引用。要傳值須實(shí)際參數(shù)加“()”,或者寫成表達(dá)式。圖4-27傳值與傳引用第119頁(yè),例4.39寫程序運(yùn)行結(jié)果。settalkoffx=1y=3dosub4withx,(y),5?x,yreturn*Proceduresub4parametersa,b,ca=a+b+cb=a+b-creturn&&答:9,3第120頁(yè),例4.40利用一個(gè)過(guò)程計(jì)算矩形面積,要求在主程序輸出該面積值。settalkoffclearinput"矩形長(zhǎng):"toLinput"矩形寬:"toWS=0doAreawithL,W,S?"矩形面積:",Sreturn*ProcedureAreaParametersC,K,MM=C*Kreturn4.5.41.自定義函數(shù)的結(jié)構(gòu)自定義函數(shù)實(shí)際上是一個(gè)過(guò)程,只不過(guò)其Return語(yǔ)句后帶有表達(dá)式,能向主函數(shù)返回值。格式:Function<函數(shù)名>[Parameters<形式參數(shù)表>]<語(yǔ)句序列>Return[<表達(dá)式>]說(shuō)明:①缺省[<表達(dá)式>]返回.T.。②與過(guò)程一樣,自定義函數(shù),可以單獨(dú)以同名程序文件存儲(chǔ),也可以存入過(guò)程文件中。2.自定義函數(shù)的調(diào)用小提示:過(guò)程中叫實(shí)際參數(shù)的,函數(shù)中叫自變量。格式:[[因變量]=]<函數(shù)名>(自變量表)說(shuō)明:函數(shù)查找規(guī)則調(diào)用函數(shù)時(shí),先在內(nèi)部函數(shù)中找;找不到再到打開的過(guò)程文件中找;再找不到,在當(dāng)前文件夾中找;再找不到,出錯(cuò)。①若自定義函數(shù)與內(nèi)部函數(shù)同名,將不被找到,用不到。②參數(shù)表要與自變量表相對(duì)應(yīng),包括類型和個(gè)數(shù)。③自變量表中,可以是變量,也可以是表達(dá)式。自變量默認(rèn)傳值。要傳引用,須在自變量前面加“@”,或SETUDFPARMSTOREFERENCE設(shè)置默認(rèn)為傳引用。④函數(shù)可以當(dāng)過(guò)程用,調(diào)用格式為“do<函數(shù)名>with自變量表”。但要注意,當(dāng)過(guò)程用時(shí),默認(rèn)傳引用,因?yàn)檫^(guò)程默認(rèn)傳引用;且放棄返回值。小提示:自變量默認(rèn)傳值,是向C語(yǔ)言靠攏。小提示:過(guò)程默認(rèn)傳引用,函數(shù)默認(rèn)傳值。第122頁(yè),例4.41定義一個(gè)函數(shù),將day()日期轉(zhuǎn)成“公元年月日”格式。Y=DA()?Yreturn*FunctionDAD="公元"+LTRIM(STR(YEAR(DATE())))+"年"D=D+LTRIM(STR(MONTH(DATE())))+"月"D=D+LTRIM(STR(DAY(DATE())))+"日"ReturnD第122頁(yè),例4.42用自定義函數(shù)計(jì)算組合數(shù)。y=c(5,3)?yreturn*FunctionFAC&&階乘factorparametersxf=1fork=1toxf=f*kendforreturnf*FunctionC&&組合數(shù)conbinationparametersm,ny=int(FAC(m)/(FAC(n)*FAC(m-n)))returny*附加4.5.5自定義函數(shù)“()”在VFP中是間接引用符,有傳值之意。1.自函數(shù)的“()式”結(jié)構(gòu)格式:Function<函數(shù)名>([<參數(shù)表>])<語(yǔ)句序列>Return[<表達(dá)式>]說(shuō)明:這是自定義函數(shù)的另一種格式。它只是將Function行和Parameter行合并成一行,其它并無(wú)差別;其調(diào)用方式也沒(méi)有區(qū)別。小提示:表單自定義函數(shù)不能用括號(hào)參數(shù)格式,故一般不學(xué)、不用。例自定義函數(shù)fun1(x,y,z),分別將其當(dāng)過(guò)程和“()式”函數(shù)調(diào)用。A=123B=234C="abc"cleard

溫馨提示

  • 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)論