




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、8.3.1 全局變量與局部變量的說明 在Foxpro中,按照變量的作用范圍可將內(nèi)存變量劃分為全局變量和局部變量。只要對內(nèi)存變量進行適當?shù)恼f明,就可以直接使用內(nèi)存變量在調(diào)用程序和被調(diào)用程序之間相互傳遞數(shù)據(jù)。 全局變量的說明 所謂“全局變量”是指在Foxpro中運行的任何程序都可以使用該變量(引用或賦值),其中包括說明它的程序、過程或自定義函數(shù)以及各級被調(diào)用的程序、過程或自定義函數(shù),直到使用內(nèi)存變量清除命令RELEASE或CLEAR ALL清除為止。 全局變量在使用之前, 必須使用PUBLIC命令進行說明。 【格式】PUBLIC 其中,為待說明的內(nèi)存變量名或數(shù)組名,含有多個變量時,變量名之間用逗號
2、“,”分隔。 【功能】 定義全局變量。 【說明】 使用PUBLIC命令定義的全局變量的初值均為邏輯假值.F.。 全局變量必須先說明,后使用。 局部變量的說明 所謂“局部變量”是指那些只能在說明它的程序、過程或自定義函數(shù)中使用的內(nèi)存變量,其中包括被它調(diào)用的各級程序、過程或自定義函數(shù)。一旦退出說明它的程序、過程或自定義函數(shù),局部變量將自動消失,其值不能再被引用。 在Foxpro中,一旦對內(nèi)存變量進行了賦值,該變量就算定義了,如果沒有事先對其進行全局說明,則自動說明為局部變量。同樣,在程序中通過DECLARE或DIMENSION命令定義的數(shù)組,如果沒有事先對其進行全局說明,也視為局部變量。 由于局部
3、變量也適用于各級被調(diào)用的程序、過程或自定義函數(shù),所以當調(diào)用程序中的內(nèi)存變當調(diào)用程序中的內(nèi)存變量與被調(diào)用的程序、過程或自定義函數(shù)中的內(nèi)存量與被調(diào)用的程序、過程或自定義函數(shù)中的內(nèi)存變量同名時,變量同名時,將會產(chǎn)生意想不到的副作用。為了避免這種情況發(fā)生,F(xiàn)oxpro提供了PRIVATE命令, 可將調(diào)用程序中的同名內(nèi)存變量暫時隱藏起來,即在執(zhí)行被調(diào)用的程序、過程或自定義函數(shù)時,只有該程序、過程或自定義函數(shù)中的局部變量參加運算,不會影響調(diào)用程序中的內(nèi)存變量。一旦調(diào)用結(jié)束返回調(diào)用程序時,自動恢復被隱藏的內(nèi)存變量?!靖袷健?PRIVATE ALL LIKEEXCEPT ARRAY 其中,表示要說明的局部內(nèi)存
4、變量名列表,可以是一個或多個用逗號分隔的內(nèi)存變量。是指含有*和?的變量名,可以表示某一類變量。表示要說明為局部數(shù)組的名稱列表。 【功能】說明局部內(nèi)存變量或數(shù)組。 【說明】 使用PRIVATE命令只能說明局部變量,不能用來定義或建立變量,也就是說, 必須通過賦值或其它途徑來建立。 在程序、過程或自定義函數(shù)中,使用PRIVATE命令說明的局部變量, 只能在該程序、過程或自定義函數(shù)中使用。 在編程時,如果希望在調(diào)用程序和被調(diào)用程序中使用相同的內(nèi)存變量名,可在被調(diào)用程序中使用PRIVATE命令將其說明為局部變量,這樣在被調(diào)用程序執(zhí)行過程中, 調(diào)用程序中的這些同名內(nèi)存變量將被隱藏起來,以確保其值不被破壞
5、。一旦調(diào)用返回,自動恢復原來那些被隱藏起來的同名變量。 區(qū)域變量的說明 在Foxpro中,除了可以使用全局變量和局部變量之外,還可以使用區(qū)域變量。區(qū)域變量與局部變量類似,當其它內(nèi)存變量與區(qū)域變量重名時,它們之間互不干擾,因為區(qū)域變量在一個區(qū)域中被保護。在Foxpro中建立區(qū)域變量時,首先使用#REGION定義一個區(qū)域, 然后利用REGIONAL命令對存放到該區(qū)域的變量進行說明。 【格式】#REGION REGIONAL 其中,#REGION為Foxpro提供的預處理程序指令,它根據(jù)指定的(0-31)建立一個區(qū)域以便存放區(qū)域變量。REGIONAL命令用來說明一個或多個欲存放在該區(qū)域的內(nèi)存變量或內(nèi)
6、存變量數(shù)組。當中含有多個變量時,變量之間用逗號“,”分隔。 【功能】建立區(qū)域內(nèi)存變量。 例:prog8_918.3.2 變量的作用域 所謂變量的作用域是指該變量可以使用的范圍,也就是說,這個變量在哪個程序、過程或自定義函數(shù)中有效。 全局變量的作用域是從該全局變量的定義開始, 一直到退出Foxpro程序時所執(zhí)行的任何程序、過程或自定義函數(shù)。 使用PRIVATE 命令說明的局部變量(或使用REGIONAL命令說明的區(qū)域變量)的作用域就是它所在的那個程序、過程或自定義函數(shù)。 自動說明(即非PRIVATE命令說明)的局部變量的作用域是從該變量的定義(如賦值)開始,到結(jié)束該程序時所執(zhí)行過的所有命令、程序
7、、過程或自定義函數(shù)。(例prog8_10.prg 例prog8_11.prg 例prog8_12.prg) 8.4 遞歸8.4.1 遞歸的概念 在Foxpro中,過程和自定義函數(shù)除了能夠嵌套調(diào)用外,還可以自己調(diào)用自己,我們把這種調(diào)用稱為遞歸調(diào)用(簡稱遞歸)。其中,遞歸又可分為直接遞歸和間接遞歸兩種形式。所謂“直接遞歸”是指在一個過程(或自定義函數(shù))內(nèi)部又出現(xiàn)了調(diào)用自身的調(diào)用。所謂“間接遞歸”是指在過程(或自定義函數(shù))中,調(diào)用了另外一個過程(或自定義函數(shù)),而在中,又出現(xiàn)了對的調(diào)用。 在程序設(shè)計中,采用遞歸來求解問題簡單而自然,并且編寫出的程序代碼也比較短,但并不是所有的問題都能夠采用遞歸來求解
8、。采用遞歸求解的問題必須滿足以下三個條件: 可以把要求解的問題轉(zhuǎn)化為一個新的問題,而這個新問題的求解方法與原問題的求解方法相同,只是所處理的對象不同,而且它們只是有規(guī)律的遞增或遞減。 可以通過轉(zhuǎn)化過程使問題得到求解。 必須存在一個能夠終止遞歸的條件,使得經(jīng)過有限次遞歸后,得到問題的解。 【例8.13】采用過程遞歸調(diào)用,編寫一個把任意位正整數(shù)逆轉(zhuǎn)的程序。例如,輸入整數(shù) 12345,逆轉(zhuǎn)后為54321。 Prog8_13.prg【例8.14】分析輸入K值為5時下面程序的輸出結(jié)果。 Prog8_14.prg 【例8.15】編寫一個利用函數(shù)遞歸調(diào)用,計算任意正整數(shù)的階乘的程序。 Prog8_15.pr
9、g 【例8.16】分析下面程序的運行結(jié)果。Prog8_16.prg9.1 數(shù)組程序設(shè)計 同其它高級程序設(shè)計語言一樣,在Foxpro中也可以使用數(shù)組。數(shù)組是具有相同名字的有序數(shù)據(jù)的集合,由若干個數(shù)組元素組成。數(shù)組中的每個元素相當于一個內(nèi)存變量,因此所有對內(nèi)存變量進行操作的命令均可適用于數(shù)組元素,但數(shù)組元素使用起來要比普通的內(nèi)存變量方便得多。Foxpro支持一維數(shù)組和二維數(shù)組,與其它高級語言不同的是,F(xiàn)oxpro中的數(shù)組元素可以具有不同的數(shù)據(jù)類型,并且允許重復定義數(shù)組。利用數(shù)組進行程序設(shè)計,可以簡化程序的編寫,便于復雜問題的求解。第九章 Foxpro實用編程技術(shù) 9.1.1 數(shù)組的定義 在Foxp
10、ro中,使用數(shù)組之前通常需要先進行定義。也就是說,使用數(shù)組說明命令對數(shù)組的名稱、維數(shù)、大?。磾?shù)組元素的個數(shù))進行說明?!靖袷健?DECLAREDIMENSIONPUBLIC (,),(,), 其中,、為要定義數(shù)組的名稱,其命名規(guī)則同內(nèi)存變量完全相同。當同時定義多個數(shù)組時,數(shù)組名之間用逗號“,”分隔。 數(shù)組名后括號內(nèi)的數(shù)值表達式用來指定所定義數(shù)組的維數(shù)和大小。若數(shù)組名后面的括號內(nèi)只用一個數(shù)值表達式,則表示要定義一維數(shù)組,數(shù)值表達式的值代表該數(shù)組中元素的個數(shù)。若數(shù)組名后面的括號內(nèi)同時使用兩個數(shù)值表達式,則表示要定義二維數(shù)組,這兩個數(shù)值表達式的乘積為該二維數(shù)組所擁有元素的個數(shù)。 【說明】 這三條命
11、令都可以用來定義數(shù)組。其中,DECLARE命令和DIMENSION命令的功能完全相同,PUBLIC命令用來定義全局數(shù)組變量。 使用這三條命令所定義的數(shù)組,數(shù)組元素的初值均初始化成邏輯值.F., 因此引用數(shù)組元素值之前,必須先對其賦值。 定義數(shù)組時,數(shù)組名后面的數(shù)值表達式必須使用一對小括號或中括號括起來。 9.1.2 數(shù)組元素的引用與賦值 數(shù)組元素的引用 由于數(shù)組元素在內(nèi)存中是按順序存儲的,所以引用數(shù)組元素時必須指定該元素在數(shù)組中的位置。數(shù)組元素在數(shù)組中的位置可以用下標來表示,一旦下標確定,數(shù)組元素也就確定了。 1. 一維數(shù)組的引用格式如下:數(shù)組名稱下標表達式 或 數(shù)組名稱(下標表達式) 其中,
12、下標表達式用來指定所引用的元素在數(shù)組中的位置,可以是正的數(shù)值常量、賦過值的變量或數(shù)值表達式,且下標表達式必須使用一對小括號或中括號括起來。 2.二維數(shù)組可以理解為由M行N列組成的一張二維表,因此引用二維數(shù)組中的某個元素,必須指定其行、列位置。引用格式如下: 數(shù)組名稱行下標表達式,列下標表達式 3.在引用數(shù)組元素時,如果指定的下標表達式的值超過定義數(shù)組時所規(guī)定的最大下標值,將產(chǎn)生“下標超界”錯誤信息。例如,對于前面定義的數(shù)組A中元素的引用,若使用A11,F(xiàn)oxpro將報告“下標超界”錯誤信息。 數(shù)組元素的賦值 在Foxpro中,一旦數(shù)組定義后其元素自動被初始化成邏輯假值.F., 因此在使用數(shù)組元
13、素的值之前,必須對其重新賦值。對數(shù)組元素的賦值既可以通過賦值命令實現(xiàn),也可以使用有關(guān)數(shù)組操作的命令實現(xiàn)。 利用賦值命令為數(shù)組元素賦值有以下兩種方式: 用變量賦值命令為數(shù)組元素賦值。 用賦值命令直接對整個數(shù)組賦值 當對數(shù)組中的元素賦相同的值時,F(xiàn)oxpro允許使用賦值命令直接對數(shù)組名進行賦值。 數(shù)組元素的查找ASCAN() 【格式】ASCAN(,) 其中,為要查找的一維數(shù)組或二維數(shù)組。指定要查找的數(shù)組元素,可以是任何類型的表達式。指定查找的起始位置, 省略時從數(shù)組中第一個元素開始查找。指定查找的范圍,省略時為指定查找位置開始的全部元素。【功能】在數(shù)組中查找指定的數(shù)組元素。【說明】如果查找成功,則
14、返回該元素在數(shù)組中的序號,否則返回0值。 若查找的元素為字符類型,則查找結(jié)果將受SET EXACT的設(shè)置影響。 數(shù)組的排序ASORT() 【格式】ASORT(,) 其中,為要排序的一維數(shù)組或二維數(shù)組。表示數(shù)組元素的序號,指定排序的起始位置,省略時從第一個元素開始排序。 指定一維數(shù)組中要排序的元素個數(shù)或二維數(shù)組中要排序的元素的行數(shù),省略時將從指定的起始位置開始,一直到數(shù)組結(jié)束。指定排序的方向,為0時表示升序(由小到大)排序,為1 時表示降序(由大到?。┡判?,省略時按升序排序?!竟δ堋堪瓷蚧蚪敌?qū)?shù)組中的元素進行排序?!菊f明】 參加排序的數(shù)組元素必須具有相同的數(shù)據(jù)類型,否則將產(chǎn)生“數(shù)據(jù)類型不匹配”錯誤信息。 一維數(shù)組是以元素為單位進行排序的,即從指定的元素開始,直到指定的元素個數(shù)為止。 【例9.9】假設(shè)有兩個數(shù)據(jù)庫結(jié)構(gòu)完全相同的數(shù)據(jù)庫RSDA1.DBF和RSDA2.DBF, 為了保證輸入數(shù)據(jù)的可靠性,這兩個數(shù)據(jù)庫中的記錄分別由兩個操作員按照同樣的數(shù)據(jù)建立。要求編程檢查兩個數(shù)據(jù)庫中的記錄是否完全相同,如果發(fā)現(xiàn)不相同的記錄,需要將RSDA2.DBF 中不一致記錄的記錄號和記錄
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 教育機構(gòu)師資管理的法律責任及合規(guī)要求
- 教育心理學-指導教師提升教學效果的鑰匙
- 2025年中國N-甲基乙酰胺數(shù)據(jù)監(jiān)測研究報告
- 智能科技背景下的教育心理學發(fā)展趨勢
- 探究教育政策變革與教育水平提升的關(guān)聯(lián)性
- 抖音商戶主播話術(shù)標準執(zhí)行制度
- 抖音商戶市場專員流量渠道拓展制度
- 山東醫(yī)學高等??茖W?!度肆Y源管理綜合實訓》2023-2024學年第一學期期末試卷
- 長沙幼兒師范高等??茖W?!度毡靖艣r》2023-2024學年第一學期期末試卷
- 西安歐亞學院《中國文學經(jīng)典鑒賞》2023-2024學年第一學期期末試卷
- 國際海域劃界測量技術(shù)方法
- 市政設(shè)施維護服務(wù)項目方案
- 橫紋肌溶解癥課件
- GB/T 23312.1-2009漆包鋁圓繞組線第1部分:一般規(guī)定
- 交通運輸行業(yè)建設(shè)工程生產(chǎn)安全事故統(tǒng)計調(diào)查制度
- SAP聯(lián)產(chǎn)品生產(chǎn)訂單結(jié)算過程x
- 2021年呼倫貝爾農(nóng)墾集團有限公司校園招聘筆試試題及答案解析
- 宮外孕右輸卵管妊娠腹腔鏡下盆腔粘連分解術(shù)、右輸卵管妊娠開窗取胚術(shù)手術(shù)記錄模板
- 教科版 科學小學二年級下冊期末測試卷及參考答案(基礎(chǔ)題)
- 混凝土重力壩設(shè)計說明書
- 弱電設(shè)備維護保養(yǎng)方案
評論
0/150
提交評論