第10章 子程序、過程、自定義函數(shù)_第1頁
第10章 子程序、過程、自定義函數(shù)_第2頁
第10章 子程序、過程、自定義函數(shù)_第3頁
第10章 子程序、過程、自定義函數(shù)_第4頁
第10章 子程序、過程、自定義函數(shù)_第5頁
已閱讀5頁,還剩65頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第10章子程序、過程、自定義函數(shù)、內(nèi)存變量與數(shù)組10.1子程序一、子程序與主程序的概念結(jié)構(gòu)化程序設計方法的一個核心思想是程序的模塊化,它可把一個大的復雜的應用程序按功能分解成若干個相對獨立的模塊,這個模塊就叫做子程序。通過模塊的組合來完成一個大的復雜的應用程序的編寫。子程序是一個為實現(xiàn)某個功能的獨立程序。其特點是:它總被其它程序調(diào)用而一般不能單獨執(zhí)行。通常把調(diào)用它的程序稱為主程序,被主程序調(diào)用的程序稱為子程序。當然,其概念也是相對的,即子程序也可以調(diào)用其他子程序。二、子程序的建立與修改1.建立、修改子程序ModifyCommand<子程序文件名>參數(shù)說明:◆子程序的建立、修改和存盤與其它VFP程序一樣,用ModifyCommand<程序文件名>命令或用菜單建立和修改,其擴展名也是Prg?!糇映绦蛞欢ㄒ肦eturn命令結(jié)束。2.Return命令Return參數(shù)說明:◆Return如不作任何選項,該語句結(jié)束子程序文件的運行,返回到調(diào)用子程序的主程序的下一個語句,繼續(xù)執(zhí)行。三、子程序的調(diào)用Do〈子程序文件名〉主程序調(diào)用子程序后,會通過子程序中的Return命令返回到主程序調(diào)用子程序的下一條命令繼續(xù)運行。例:編程求N!+M!的和Sum=0P1=1DoJcSum=Sum+P1DoJcSum=Sum+P1?”N!+M!的值=”+Str(Sum)ReturnModiCommJc&&建立子程序jcP1=1Input“請輸入計算階乘的值”ToAForI=1ToAP1=P1*IEndForReturn例:編寫一個完成對“學生檔案表”按“姓名”查詢或按“學號”刪除的程序。主程序名Main.Prg。查詢子程序名Cx.Prg,Sc.Prg刪除子程序名Sc.Prg。*主程序main.PrgUse學生檔案表DoWhile.T.ClearK=0@6,12Say"1.按姓名查詢"@8,12Say"2.按學號刪除記錄"@10,12Say"3.退出系統(tǒng)"@12,12Say"請輸入相應的選擇號"GetKReadDoCaseCaseK=1DoCx&&調(diào)用子程序cx.PrgCaseK=2DoSc&&調(diào)用子程序sc.PrgOtherwise@14,20Say“輸入的選擇號有錯!”EndcaseWait"是否繼續(xù)(Y/N)?"ToAIfUpper(A)<>"Y"ExitEndifEnddoReturn子程序Cx.Prg功能:輸入姓名查詢記錄DoWhile.T.ClearAccept"請輸入待查詢的姓名"ToXmLocateFor姓名=XmIfEof()?"查無此人!"ElseDisplayEndifWait"是否繼續(xù)查詢(Y/N)?"ToAIfUpper(A)<>"Y"ExitEndifEnddoReturn

**子程序Sc.Prg功能:輸入學號刪除記錄DoWhile.T.ClearAccept"請輸入要刪除的記錄的學號:"ToXhLocateFor學號=XhIfFound()DeleDisplayWait"是否要作物理刪除(Y/N?)"ToBIfUpper(B)=="Y"PackEndIfElse?"輸入有錯,沒有該學號!"EndifWait"是否繼續(xù)刪除(Y/N)?"ToAIfUpper(A)<>"Y"ExitEndIfEndDoReturn10.2過程過程是子程序的另一種形式,一個過程也是一個為了實現(xiàn)某個功能的程序段。過程是主程序文件的一個組成部分,習慣上常把它寫在主程序的最后。一個主程序可以包括多個過程,但每個過程都要用Procedure〈過程名〉開頭來說明過程名、用Return來結(jié)束一個過程。

一、過程的編寫格式Procedure〈過程名〉&&以過程說明語句開頭〈過程體命令序列〉&&過程體Return[ToMaster/To<程序名>]&&過程的結(jié)束語句參數(shù)說明:◆Procedure〈過程名〉:過程總是寫在主程序的后面,每個過程都要用Procedure〈過程名〉開頭來說明過程名,主程序通過Do命令能夠直接調(diào)用過程?!簟催^程體命令序列〉:是一個完成指定任務的程序段,是過程的核心部分?!鬜eturn:是過程的結(jié)束語句,每個過程必須用Return結(jié)束。二、過程的調(diào)用Do〈過程名〉例:對任意給的正整數(shù)A、B、C,用過程編寫程序計算S=A!+(3/5)*B!+(C!/2)*主程序JSG.PRGSetTalkOffClearT=1Input“A=”ToXDoJcA1=TInput“B=”ToXDoJcB1=TInput“C=”ToXDoJcC1=T?”S=”,A1+(3/5)*B1+(C1/2)Return求階乘的過程Jc,注意:應直接寫在主程序后面。ProcedureJcT=1ForI=1ToXT=T*IEndforReturn10.3過程文件如果在主程序中過程太多,那么,主程序調(diào)用多個過程、多次訪問磁盤會影響到程序的運行速度。為了克服調(diào)用多個過程、多次訪問磁盤的問題,一般使用過程文件來解決。過程文件是由若干個過程組成的一個獨立程序文件。它把多個過程放在一個過程文件中,其文件類型仍為Prg。過程文件一旦被打開,過程文件中包含的所有過程都被打開。從而,克服了調(diào)用多個過程、多次訪問磁盤的問題,提高了程序運行的速度。一、建立過程文件ModifyCommand〈過程文件名〉過程文件是一個獨立程序文件,同樣是用ModifyCommand〈過程文件名〉建立的。二、過程文件的編寫格式過程文件中的每一個過程都要用Procedure<過程名>開始來說明一個過程名,用Return來結(jié)束一個過程。Procedure〈過程名1〉〈過程體命令序列1〉Return&&每個過程都要用return結(jié)束……Procedure〈過程名n〉〈過程體命令序列n〉Return三、過程文件的使用使用過程文件一般要經(jīng)過以下幾步:打開過程文件、調(diào)用過程文件和關(guān)閉過程文件。1.打開過程文件SetProcedureTo<過程文件名>在主程序調(diào)用過程前,一定要打開包含該過程的過程文件。過程文件一旦打開,包含在該過程文件中的所有過程都已打開。系統(tǒng)規(guī)定,某一時刻只能打開一個過程文件。2.過程文件中的過程的調(diào)用

Do〈過程名〉過程文件被打開后,能用DO〈過程名〉命令來調(diào)用過程文件中的任何一個過程。主程序執(zhí)行到過程調(diào)用語句,就轉(zhuǎn)去執(zhí)行指定的過程,執(zhí)行到Return語句則返回主程序調(diào)用過程的下一條命令。3.過程文件的關(guān)閉SetProcedureToCloseProcedure過程文件打開后,若不再調(diào)用過程。為了節(jié)省內(nèi)存空間和保護過程文件,應將過程文件關(guān)閉。例:假設主程序名為MAIN.PRG,過程文件名為GCWJ.PRG,過程文件中包含二個名為PA和PB的過程。過程文件及主程序內(nèi)容如下:*主程序MAIN.PRGSetProcedureToGcwj&&打開過程文件DoPa&&調(diào)用過程paDoPb&&調(diào)用過程pb?"這是主程序"CloseProcedure&&關(guān)閉過程文件Return*過程文件gcwj.PrgProcedurePa?"這是過程pa"ReturnProcedurePb?"這是過程pb"Return例:把主菜單程序中的追加記錄、修改記錄、刪除記錄作為3個過程編寫成一個過程文件。*主程序Main.PrgSetTalkOffK=0UseXsdaSetProcedureToGcDoWhile.T.ClearK=0@6,12Say”1.追加記錄”@8,12Say“2.修改記錄”@10,12Say“3.刪除記錄”@12,12Say”4.退出系統(tǒng)”@14,12Say“請輸入相應的選擇號”GetKReadDoCaseCaseK=1DoZj&&調(diào)用追加記錄過程zj.PrgCaseK=2DoXg&&調(diào)用修改記錄過程xg.PrgCaseK=3DoSc&&調(diào)用刪除記錄過程sc.PrgCaseK=4ExitOtherwiseWait”輸入的選擇號有錯,請重新選擇輸入!”EndcaseEnddoSetProcedureToReturn*Gc.Prg過程文件ProcedureZj&&追加記錄的過程zjAppend&&用全屏幕追加記錄ReturnProcedureXg&&修改功能過程xgInput"請輸入修改記錄的學號:"ToXhLocateFor學號=XhIfFound()Edit&&用edit修改該記錄Else?“查無該學生!”EndIfReturnProcedureSc&&刪除功能過程scAccept"請輸入刪除記錄的條件表達式:"ToNrLocateFor&NrIfFound()DisplayDeleteWait“是否要作物理刪除(Y/N)?”ToA1IfSupper(A1)=”Y”PackEndIfElse?“查無滿足條件的記錄!”EndifReturn10.4自定義函數(shù)盡管VisualFoxPro系統(tǒng)提供了豐富的標準函數(shù),但有時它們并不能滿足某些應用程序的設計要求。這時,用戶就可以為應用程序定義一些特殊的函數(shù),用戶自定義函數(shù)。一、自定義函數(shù)的基本概念自定義函數(shù)和子程序、過程相似,也是實現(xiàn)某個功能的一個程序塊。自定義函數(shù)既可以寫在主程序的后面,也可以是一個獨立的程序。所不同的是自定義函數(shù)必須通過Return<表達式>返回一個函數(shù)值。二、自定義函數(shù)的建立1、自定義函數(shù)可以和調(diào)用程序共處同一程序文件中,習慣上常把它寫在主程序的最后。2、也可以用ModifyCommand<程序文件名>命令建立一個獨立的程序,程序名應定義為函數(shù)名,其擴展名也是Prg。三、自定義函數(shù)的編寫格式不論自定義函數(shù)是寫在主程序的后面,還是作為一個獨立的程序來建立,其編寫格式均為:Function〈函數(shù)名〉[Parameters〈形式參數(shù)表〉]〈函數(shù)體〉Return〈表達式〉參數(shù)說明:◆<函數(shù)名>:它是由字母、數(shù)字或下劃線組成,必須以字母或下劃線開頭,不能與系統(tǒng)提供的標準函數(shù)名同名。◆必須用Function〈函數(shù)名〉說明語句開頭?!鬚arameters:如果要向函數(shù)中傳遞參數(shù),則必須用該語句定義形式參數(shù)表,各參數(shù)間用逗號隔開。尤其注意,形式參數(shù)表中各參數(shù)的類型必須與主程序的實際參數(shù)表相一致。◆Return<表達式>:將<表達式>的值作為函數(shù)值返回到調(diào)用程序中。四、自定義函數(shù)的調(diào)用自定義函數(shù)的調(diào)用與系統(tǒng)標準函數(shù)的調(diào)用方法相同,其形式為:<函數(shù)名>[<參數(shù)表>]例:用自定義函數(shù)的形式,編寫程序計算圓面積

*主程序ClearInput"請輸入圓的半徑:"ToA

&&輸入要計算圓的半徑

P=Area(A)

&&調(diào)用自定義函數(shù)area,(A)為實際參數(shù)?“圓面積s=”,PReturn*自定義函數(shù)FunctionArea&&定義函數(shù)名為areaParametersR&&定義函數(shù)的形參RS=3.14159*R*RReturnS&&返回函數(shù)的值

例:用自定義函數(shù)計算組合數(shù)cmn=M!/N!/(M-N)!*主程序ClearInput“請輸入m的值”ToMInput“請輸入n的值”ToNCmn=Jc(M)/Jc(N)/Jc(M-N)?“Cmn=”,CmnReturn*自定義階乘函數(shù)FunctionJcParameterKT=1ForI=1ToKT=T*IEndforReturnT10-5參數(shù)的傳遞在實際應用中,有時需要在調(diào)用程序與被調(diào)用的子程序之間進行一些參數(shù)的傳遞來提高程序設計的靈活性。無論是在子程序、過程,還是在自定義函數(shù)中,參數(shù)傳遞都是一個非常重要的應用。一、傳送參數(shù)與接受參數(shù)的命令1.傳遞參數(shù)的命令格式Do<子程序名/過程名>With<實際參數(shù)表>2.接受參數(shù)的命令格式Parameters<形式參數(shù)表>3.參數(shù)傳送與接受的規(guī)則<實際參數(shù)表>與<形式參數(shù)表>應一一對應。接受參數(shù)的Parameters<形式參數(shù)表>命令必須是被調(diào)用程序(子程序、過程)的第一條可執(zhí)行語句。當<實際參數(shù)表>的數(shù)量少于<形式參數(shù)表>的數(shù)量,多余的形式參數(shù)取邏輯假的值。二、參數(shù)傳送方式子程序、過程、函數(shù)與主程序之間的數(shù)據(jù)通信是通過實際參數(shù)與形式參數(shù)的對應傳送來實現(xiàn)的,參數(shù)傳送有值傳送和地址傳送兩種方式。1.值傳送方式當With<實際參數(shù)表>是常量、內(nèi)存變量表達式列表和加圓括號的簡單內(nèi)存變量時,這種傳遞接受參數(shù)的方式是值傳送方式。值傳送方式是一種單向傳送,在調(diào)用時With<實際參數(shù)表>中的變量值會按順序傳遞給Parameters<形式參數(shù)表>對應的變量。但返回時With<實際參數(shù)表>中的變量值不會隨Parameters<形式參數(shù)表>對應變量值的變化而變化,With<實際參數(shù)表>中的內(nèi)存變量在子程序中也不會被隱含。函數(shù)的參數(shù)傳送方式默認為值傳送方式。2.地址傳送方式在實際變量參數(shù)前加@符號為地址傳送方式。當With<實際參數(shù)表達式列表>是簡單內(nèi)存變量列表時,這種傳遞接受參數(shù)的方式是地址傳送方式。地址傳送是一種雙向傳送,在調(diào)用時With<實際參數(shù)表>中的變量值會按順序傳遞給Parameters<形式參數(shù)表>對應的變量。而返回時With<實際參數(shù)表>中的變量值會隨Parameters<形式參數(shù)表>對應變量值的變化而變化,With<實際參數(shù)表>中的內(nèi)存變量在子程序中會被隱含。例:已知半徑為R,求圓面積S。其程序及過程如下:*主程序ClearS=0Input"請輸入圓的半徑:"ToR1DoSubWithR1,S&&6,S為實際參數(shù)表,必須在過程的調(diào)用中說明?"圓面積S=",SReturn*Sub過程ProcedureSub&&Sub過程說明語句ParametersR2,Area&&R、Area為過程的形式參數(shù)表,與實參表對應Area=3.14159*R2*R2Return例:求S=A!+B!+C!的值。*主程序

Store0ToS,P1ForJ=1To3Input"請輸入求階乘的值"ToX1DoPpWithX1,P1S=S+P1Endfor?"S=",SReturn*過程ppProcedurePp&&過程說明語句ParametersX2,P2&&形式參數(shù)表P2=1ForK=1ToX2P2=P2*KEndForReturn10-6內(nèi)存變量的作用域在多模塊程序中,每一個內(nèi)存變量都有自己的有效作用范圍,通常稱之為作用域。內(nèi)存變量根據(jù)其作用域可分為全局變量、私有變量(普通)、局部(本地)變量和隱蔽變量四類。一、全局變量1.全局變量的概念所謂全局變量是一種可在所有程序的任何位置中定義、賦值、調(diào)用或更改的變量。在VisualFoxpro運行期間,全局變量可以被所有的程序使用,而不管它是在那一層程序中定義的。所以,不管在哪一層程序改變了全局變量的值,這個改變都會反映到其他程序中。因此,定義全局變量要特別小心。程序執(zhí)行結(jié)束后,除非用命令清除。否則,全局變量將一直保留在內(nèi)存中。2.全局變量的定義Public<內(nèi)存變量表>用Public定義的變量是全局變量,它將<內(nèi)存變量表>指定的變量定義為全局變量,并同時將這些變量的初值賦以邏輯假.F.。如果定義多個內(nèi)存變量,<內(nèi)存變量表>中各變量名之間用逗號隔開。3.全局變量的作用域在VisualFoxpro運行期間,全局變量可以在所有的程序中起作用。在上層程序中定義的全局變量,如果在下層程序中只是被重新賦值而沒有改變變量類型,那么返回上層程序后,重新賦的值仍然有效。上層程序中定義的全局變量在下層程序中允許重新定義為同名的隱蔽型變量。這時,則把上層程序中定義的全局變量隱蔽起來。在該層程序中,只是重新定義的那個隱蔽型變量起作用。但返回上層程序后,隱蔽型變量被釋放,全局變量恢復作用。例:全局變量示例。PublicA,B,CA=25B=125C=A+B?"主程序中變量C的值="+Str(C)DoGc1?"調(diào)用過程后C的值="+Str(C)ReturnProcedureGc1C=2*A+B?"過程中C的值="+Str(C)Return6-2普通(私有)變量1.普通(私有)變量的概念普通(私有)變量是一種直接用賦值方法定義的變量。普通(私有)變量可以在任何一層程序中定義,普通(私有)變量可以在定義變量那層程序中或下層程序中起作用。如果對其進行修改,也只能影響到建立它的那層程序或下層程序。程序執(zhí)行結(jié)束后,則這些普通變量也隨之被釋放。2.普通變量的定義普通(私有)變量的定義有直接賦值法和間接賦值法兩種方法。(1)直接賦值法A=123(2)間接賦值法Store“Abcd”ToA1,A2,A33.普通(私有)變量的作用域普通(私有)變量可以在定義變量那層程序中或下層程序中起作用。上層程序中定義的普通(私有)變量在下層程序中允許重新定義為同名的隱蔽型變量。這時,則把上層程序中定義的普通(私有)變量隱蔽起來。在該層程序中,只是重新定義的那個隱蔽型變量起作用。但返回上層程序后,隱蔽型變量被釋放,上層程序中定義的普通(私有)變量恢復作用。普通(私有)變量若在下層程序中只是重新賦值,則在返回上層程序仍然有效。例:普通(私有)變量的示例。ClearX=10Y=Fuc(20)W=30??X,Y,WReturnFunctionFucParaZM=X+ZW=40?X,M,WReturnM6-3局部(本地)變量1.局部(本地)變量的概念局部變量是一種使用范圍最為嚴謹?shù)淖兞俊>植孔兞恐荒茉诙x它的那層程序起作用,而不能被高層的或低層的程序訪問。一旦包含局部變量的程序執(zhí)行結(jié)束后,則這些局部變量也自動隨之被釋放。局部變量可以區(qū)別于同名的全局變量,在程序中優(yōu)先使用同名的局部變量。當你希望某些內(nèi)存變量只能在某一層程序中起作用,那就需要將變量定義為局部變量,以防止與其它變量發(fā)生干擾。2.局部(本地)變量的定義Local<內(nèi)存變量表>用Local定義的變量是局部變量,它將<內(nèi)存變量表>指定的變量定義為局部變量,并同時將這些變量的初值賦以邏輯假.F.。如果定義多個內(nèi)存變量,<內(nèi)存變量表>中各變量名之間用逗號隔開。3.局部(本地)變量的作用域局部變量可以區(qū)別于同名的全局變量,在程序中優(yōu)先使用同名的局部變量。局部變量只能在定義它的那層程序起作用,而不能被高層的或低層的程序訪問。上層程序中定義的局部變量變量在下層程序中允許重新定義為同名的隱蔽型變量。這時,則把上層程序中定義的局部變量隱蔽起來。在該層程序中,只是重新定義的那個隱蔽型變量起作用。但返回上層程序后,隱蔽型變量被釋放,上層程序中定義的局部變量恢復作用。例:下面是一個有關(guān)局部變量使用的例題,請分析錯誤。ReleaseallmemoryLocalAPublicBA="ABCD"?"主程序中的A值:",A??"主程序中的B值:",BDOGC2?"調(diào)用后的A值:",A?"調(diào)用后的B值:",B?"調(diào)用后的C值:",CProcedureGC2LocalCC=123?"過程中的A值:",A?"過程中的B值:",B?"過程中的C值:",CReturn§6-4隱蔽型變量1.隱蔽型變量的概念隱蔽型變量只是在當前的程序?qū)又?,把上層程序中已定義的同名的全局變量、普通(私有)變量和局部變量隱蔽起來。隱蔽后,你便可以在當前的程序?qū)又袆?chuàng)建和使用同名的變量。隱蔽型變量定義后,一定要賦值。否則,會提示“找不到變量”。2.隱蔽型變量的定義Private〈內(nèi)存變量名表〉嚴格地說Private并不是在創(chuàng)建變量,只是把上層程序中已定義的同名的全局變量、普通(私有)變量和局部變量隱蔽起來。3.隱蔽型變量的作用域隱蔽型變量只能在當前定義的程序中有效,當Private所在的程序執(zhí)行結(jié)束后,隱蔽型變量將自動被釋放,它所隱蔽的上層程序中的變量可恢復作用。而且,它的值與隱蔽前一樣,不會有任何改變。例:理解主程序調(diào)用子程序過程中的變量屏蔽作用。*程序一PublicAA="ABC"B=123LocalCC="456"?A,B,CDoSub1?A,B,CProcSub1PrivateA,B,CA="BCD“B=456C="CDE"?A,B,CReturn*程序二ClearPublicI,JStore1ToI,J,KDoScx2?'主程序的輸出結(jié)果:'?'I='+Str(I,2)+'J='+Str(J,2)+'K='+Str(K,2)CancelProcedureScx2ClearPrivateJ,KI=I*2J=2&&J不賦值可否?K=J+1?'過程中的輸出結(jié)果:'?'I='+Str(I,2)+'J='+Str(J,2)+'K='+Str(K,2)Return程序運行結(jié)果:過程中的輸出結(jié)果:I=2J=2K=3主程序的輸出結(jié)果:I=2J=1K=17數(shù)組一、數(shù)組的概念內(nèi)存變量,其特點是一個內(nèi)存變量只能存放一個數(shù)據(jù)。VisualFoxPro還有另一種內(nèi)存變量類型,即數(shù)組變量。數(shù)組是一種特殊的內(nèi)存變量,是以同一個名字組織起來的N個內(nèi)存變量的集合。其中,每一個內(nèi)存變量稱為一個數(shù)組元素,每個數(shù)組元素都有各自的標識符。VisualFoxPro在內(nèi)存允許的情況下,最多可建立65000個數(shù)組,每個數(shù)組最多可擁有65000個元素,每個數(shù)組元素的數(shù)據(jù)類型可以不同。對內(nèi)存變量進行命名、賦值、保存、恢復、釋放等操作對數(shù)組同樣有效。數(shù)組在使用之前需要先定義,由專門的數(shù)組定義語句來實現(xiàn)。數(shù)組元素默認的初始值是邏輯值.F.。每個數(shù)組元素的數(shù)據(jù)類型可以不同,數(shù)組分為一維數(shù)組和二維數(shù)組。二、數(shù)組的定義在通常情況下,數(shù)組在使用之前需要先定義,所謂定義數(shù)組,就是指明該數(shù)組的名稱、確定數(shù)組的維數(shù)與大小、確定數(shù)組的作用范圍。數(shù)組名以字符、下劃線開頭,可以包括字符、數(shù)字及下劃線,最長可達254字符。VisualFoxPro支持一維及二維數(shù)組。一個數(shù)組的維數(shù)與大小決定了一個數(shù)組所能保存的元素的個數(shù)。如果是一維數(shù)組的話,該數(shù)組有幾個元素。如果是二維數(shù)組,則該數(shù)組有幾列、幾行。根據(jù)數(shù)組的作用范圍,數(shù)組又可分為局部數(shù)組和全局數(shù)組。1.局部數(shù)組定義Dimension數(shù)組名1(<數(shù)值表達式1>[,<數(shù)值表達式2>])[,數(shù)組名2(<數(shù)值表達式3>[,<數(shù)值表達式3>])……]2.全局數(shù)組定義Public數(shù)組名1(<數(shù)值表達式1>[,<數(shù)值表達式2>])[,數(shù)組名2(<數(shù)值表達式3>[,<數(shù)值表達式3>])……]參數(shù)說明:◆數(shù)組的定義包括二個內(nèi)容:定義數(shù)組名、數(shù)組的維數(shù)或數(shù)組元素的個數(shù)?!魯?shù)組定義后,數(shù)組所有元素被自動賦為邏輯假“.F.”◆如果是定義一維數(shù)組,則<數(shù)值表達式1>表示數(shù)組元素的個數(shù),如果是定義二維數(shù)組,,則<數(shù)值表達式1>和<數(shù)值表達式2>表示二維數(shù)組的行數(shù)和列數(shù)。如果是定義多個數(shù)組,則各數(shù)組之間用逗號“,”分隔?!魯?shù)組定義后,數(shù)組的最小下標是1?!魯?shù)組可以重新定義,而且原數(shù)組元素的值可以根據(jù)重新定義的情況保持或刪除。例:數(shù)組定義示例。DimeAr1(6),Mn(12)

&&定義二個一維局部數(shù)組publicabc(12),Bcd(5,8)

&&定義一個一維全局數(shù)組和一個二維全局數(shù)組7-3數(shù)組元素的表示與引用數(shù)組元素的表示是對數(shù)組元素訪問的標識符。數(shù)組元素的表示有數(shù)組下標和數(shù)組元素序號二種表示方法:數(shù)組下標表示方法:數(shù)組名<行號,列號>,數(shù)組元素序號表示方法:數(shù)組名<序號>。對于一維數(shù)組而言,數(shù)組元素的下標表示方法與序號表示方法是相同的。對于二維數(shù)組而言,數(shù)組元素的下標表示法與序號表示法是不相同的,例:數(shù)組元素的下標與序號示例。DimeAB(6)下標表示:AB(1),AB(2),AB(3),AB(4),AB(5),AB(6)序號表示:AB(1),AB(2),AB(3),AB(4),AB(5),AB(6)DimeCD(2,4)下標表示:CD(1,1),CD(1,2),CD(1,3),CD(1,4),CD(2,1),CD(2,2),CD(2,3),CD(2,4)序號表示:CD(1),CD(2),CD(3),CD(4),CD(5),CD(6),CD(7),CD(8)例:數(shù)組元素下標表示與數(shù)組元素序號表示。DimeA(5,8)Store5ToAA(3,6)=A(1)+A(38)?A(2,7)+A(22)+A(1)7-4數(shù)組的賦值數(shù)組的賦值和內(nèi)存變量賦值一樣,有間接賦值和直接賦值二種,賦值的形式有給整個數(shù)組賦值和給數(shù)組元素賦值二種。沒有賦值的數(shù)組元素的值自動為.F.。1.數(shù)組間接賦值Store〈表達式〉To〈數(shù)組名|數(shù)組元素〉Input"輸入數(shù)據(jù):"ToX(i)例:定義數(shù)組并給數(shù)組間接賦值。DimensionAr(6),Mn(4,6)Store12ToAr&&給Ar局部數(shù)組所有元素賦值為12DisplayMemoryLikeArStore“字符”ToMn(2,1)&&給Mn局部數(shù)組Mn(2,1)元素賦值為“字符”Store{2005-11-08}ToMn(2,2)&&給Mn局部數(shù)組Mn(2,2)元素賦值為{2005-11-08}Store.T.ToMn(2,3)&&給Mn局部數(shù)組Mn(2,3)元素賦值為邏輯值.T.Store24ToMn(2,4)&&給Mn局部數(shù)組Mn(2,4)元素賦值為24,其余為.F.DisplayMemoryLikeMn例:建立一個X(N)、AB(5,8

溫馨提示

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

最新文檔

評論

0/150

提交評論