VFP-04-06-變量作用域、自定義函數(shù)_第1頁
VFP-04-06-變量作用域、自定義函數(shù)_第2頁
VFP-04-06-變量作用域、自定義函數(shù)_第3頁
VFP-04-06-變量作用域、自定義函數(shù)_第4頁
VFP-04-06-變量作用域、自定義函數(shù)_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

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

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論