- Visual FoxPro程序設(shè)計(jì)教程(第3版)
- 劉瑞新 汪遠(yuǎn)征 曹歡歡等
- 2994字
- 2020-05-28 17:19:55
2.2 常量與變量
在程序的運(yùn)行過(guò)程中,需要處理的數(shù)據(jù)存放在內(nèi)存儲(chǔ)器中,可以稱始終保持不變的數(shù)據(jù)為“常量”,稱存放可變數(shù)據(jù)的存儲(chǔ)器單元為“變量”,其中的數(shù)據(jù)稱為變量的值。
2.2.1 常量
常量是一個(gè)具體的數(shù)據(jù)項(xiàng),在整個(gè)操作過(guò)程中其值保持不變。Visual FoxPro定義了如下類型的常量。
1.?dāng)?shù)值型常量
數(shù)值型常量即常數(shù),用來(lái)表示一個(gè)數(shù)量的大小,如2.134。數(shù)值型常量可以表示為定點(diǎn)形式也可表示為浮點(diǎn)形式,定點(diǎn)形式如98、3.14159、?0.76等。浮點(diǎn)形式如8.67E2、?4.51E-2等,分別表示8.67×102和?4.51×10?2,其中E(E為半角字符,以后不作特別說(shuō)明時(shí)均表示要求使用半角符號(hào),全角符號(hào)值只允許出現(xiàn)在字符型數(shù)據(jù)中)不區(qū)分大、小寫。
2.字符型常量
字符型常量即字符串,凡是使用Visual FoxPro允許的定界符(單引號(hào)、雙引號(hào)或方括號(hào))引導(dǎo)的符號(hào)可視為字符串。定界符必須成對(duì)出現(xiàn),字符中已包含某一定界符時(shí),可采用其他定界符引導(dǎo),如"AAA"、'數(shù)據(jù)庫(kù)應(yīng)用'、[Visual Foxpro]、"單價(jià):'245.78'"等,定界符僅僅起到說(shuō)明數(shù)據(jù)類型的作用,不是數(shù)據(jù)的一部分,如果定界符之間不出現(xiàn)任何字符(包括空格)稱為“空串”,如""。
3.邏輯型常量
邏輯型常量只有“邏輯真”和“邏輯假”兩個(gè)值,凡是可由兩種情況表示的數(shù)據(jù)均可采用邏輯常量,如男與女、及格與不及格等。
邏輯型常量使用“.”作為定界符,用.T.、.t.、.Y.、.y.表示邏輯真,用.F.、.f.、.N.、.n.表示邏輯假。
4.日期型常量
日期型常量必須用一對(duì)花括號(hào)“{”和“}”作為定界符,花括號(hào)中包含用分隔符“/”或“?”分隔的年、月、日3部分內(nèi)容,其格式分為嚴(yán)格格式和傳統(tǒng)格式兩種。
①傳統(tǒng)格式:{mm/dd/yy},系統(tǒng)默認(rèn)的格式為美國(guó)日期格式“月/日/年”,其中月、日、年各為兩位數(shù)字。
傳統(tǒng)格式的日期型常量要受到命令語(yǔ)句SET DATE TO和SET CENTURY設(shè)置的影響。即不同的設(shè)置,Visual FoxPro會(huì)對(duì)同一個(gè)日期型常量做出不同的解釋,如{10/08/02}可以被解釋為2002年10月8日、2102年8月10日、2010年8月2日等。
②嚴(yán)格格式:{^yyyy-mm-dd},其中,花括號(hào)中第一個(gè)字符必須是字符“^”,年份必須是4位,年月日的順序不能顛倒或缺省。
用嚴(yán)格格式書寫的日期常量可以表示一個(gè)確切的日期,不受命令語(yǔ)句SET DATE TO和SET CENTURY設(shè)置的影響。
5.日期時(shí)間型常量
日期時(shí)間型常量包括日期和時(shí)間兩部分的內(nèi)容:{〈日期〉,〈時(shí)間〉},日期部分與日期型常量相似,時(shí)間格式為“hh[:mm[:ss]][a|p]”,其中hh表示時(shí)(系統(tǒng)默認(rèn)12)、mm表示分(系統(tǒng)默認(rèn)0)、ss表示秒(系統(tǒng)默認(rèn)0)、a表示上午(系統(tǒng)默認(rèn))、p表示下午。時(shí)間也可以使用24小時(shí)制。
日期時(shí)間型常量也有傳統(tǒng)與嚴(yán)格兩種格式。如嚴(yán)格格式的日期時(shí)間型常量:{^1999-10-0110:00:00am},其中am表示上午。空的日期時(shí)間型常量值表示為{:}。
6.貨幣型常量
貨幣型常量的書寫格式與數(shù)值型常量類似,但要加上一個(gè)前置符$,如$123.456。貨幣型數(shù)據(jù)不能使用浮點(diǎn)法表示,最多保留四位小數(shù),多余小數(shù)采用四舍五入法截取。
2.2.2 變量
Visual FoxPro有3種形式的變量:內(nèi)存變量、數(shù)組變量和字段變量。內(nèi)存變量是存放單個(gè)數(shù)據(jù)的內(nèi)存單元,數(shù)組變量是存放多個(gè)數(shù)據(jù)的內(nèi)存單元組,而字段變量則是存放在數(shù)據(jù)表中的數(shù)據(jù)項(xiàng)。本節(jié)討論的變量?jī)H指內(nèi)存變量。
1.變量的命名
每個(gè)變量都有一個(gè)名稱,叫做變量名,Visual FoxPro通過(guò)相應(yīng)的變量名來(lái)使用變量。變量名的命名規(guī)則包括:
①以字母、數(shù)字及下畫線組成,中文Visual FoxPro可以使用漢字作變量名。
②以字母或下畫線開始,中文Visual FoxPro可以漢字開始。
③長(zhǎng)度為1~128個(gè)字符,每個(gè)漢字占2個(gè)字符。
④不能使用Visual FoxPro的保留字。
如果當(dāng)前數(shù)據(jù)表中有同名的字段變量,則訪問內(nèi)存變量時(shí),必須在變量名前加上前綴“M.”或“M->;”(減號(hào)、大于號(hào)),否則系統(tǒng)將訪問同名的字段變量。
2.變量的賦值
在Visual FoxPro中,變量必須定義以后才能被使用。但是向內(nèi)存變量賦值無(wú)須事先定義,變量的定義和賦值同時(shí)完成。賦值命令的格式有以下兩種。
命令格式1:

命令格式2:

說(shuō)明:
①首先計(jì)算〈表達(dá)式〉,然后將值賦給內(nèi)存變量。
②〈內(nèi)存變量表〉表示用逗號(hào)分隔的多個(gè)內(nèi)存變量。格式1一次僅給一個(gè)變量賦值,格式2一次可以給多個(gè)變量賦值。
【例2-1】給內(nèi)存變量x,y,z賦值。

在命令窗口依次輸入上面的命令并按〈Enter〉鍵,顯示如圖2-1所示的結(jié)果。

圖2-1 給變量賦值
3.變量的類型
變量的類型是指其存放的數(shù)據(jù)的值。在Visual FoxPro中,有6種類型的內(nèi)存變量。
(1)數(shù)值型(N)
數(shù)值型變量存放數(shù)值型數(shù)據(jù),當(dāng)數(shù)值的位數(shù)大于或等于數(shù)值型數(shù)據(jù)的最大寬度20位時(shí),則用浮點(diǎn)形式表示。如12345678901234567890浮點(diǎn)形式表示為1.2345678901234E+19。
(2)字符型(C)
字符型變量又稱字符串變量,用于存放字符型數(shù)據(jù)。
(3)邏輯型(L)
邏輯型變量用于存放邏輯型數(shù)據(jù),只能存放真(.T.、.t.、.Y.、.y.)或假(.F.、.f.、.N.、.n.)兩種邏輯值。
(4)日期型(D)
日期型變量用于存放日期。
(5)日期時(shí)間型(T)
日期時(shí)間型變量同時(shí)存放日期和時(shí)間。
(6)貨幣型(Y)
貨幣型變量用于存放貨幣型數(shù)據(jù)。
(7)對(duì)象型(O)
對(duì)象型變量用于存放對(duì)象型數(shù)據(jù)。
建立變量時(shí)不必指定變量的類型,在內(nèi)存變量中存放什么類型的數(shù)據(jù),該變量就具有什么類型。可以通過(guò)賦值命令隨時(shí)建立、修改變量的類型和值。
4.變量的作用域
命令窗口定義的變量在本次Visual FoxPro運(yùn)行期間都可以使用,直到使用CLEARMEMORY命令或RELEASE命令將其清除。但如果是在程序中定義的變量,情況有所不同。一般來(lái)說(shuō),變量的作用域包括定義它的程序以及該程序所調(diào)用的子程序范圍。也就是說(shuō),在某個(gè)過(guò)程代碼中定義的變量只能在該過(guò)程以及該過(guò)程所調(diào)用的過(guò)程中使用。
【例2-2】在表單的Init事件代碼中寫下命令:

在同一表單的Activate事件代碼中寫下命令:

運(yùn)行該表單,依次出現(xiàn)如圖2-2a、圖2-2b所示的提示。
由于表單的Init事件先于Activate事件被激發(fā),因此當(dāng)表單開始運(yùn)行,變量k在Init事件代碼中被定義為0,此值被該事件代碼調(diào)用的過(guò)程—Activate事件代碼中的函數(shù)MESSAGEBOX()使用,如圖2-2a所示。接下來(lái)Activate事件重新被激發(fā),出現(xiàn)“程序錯(cuò)誤”提示信息“找不到變量'K'。”,如圖2-2b所示,說(shuō)明Init事件過(guò)程中定義的變量不能在Activate事件過(guò)程中使用。

圖2-2 變量的作用域
a)Init事件被激發(fā) b)Activate事件被激發(fā)
在Visual FoxPro中,可以使用LOCAL、PRIVATE和PUBLIC命令強(qiáng)制規(guī)定變量的作用范圍。
①用LOCAL創(chuàng)建的變量只能在創(chuàng)建它們的過(guò)程中使用和修改,不能被更高層或更低層的過(guò)程訪問,因此被稱為局部變量。
②PRIVATE創(chuàng)建的變量稱為私有變量。它用于定義當(dāng)前過(guò)程中的變量,并將以前過(guò)程中定義的同名變量保存起來(lái),在當(dāng)前過(guò)程中使用私有變量而不影響這些同名變量的原始值。系統(tǒng)默認(rèn)定義的都屬于私有變量。私有變量可以被當(dāng)前過(guò)程及所調(diào)用的過(guò)程使用,見例2-2。
③PUBLIC用于定義全局變量。在本次Visual FoxPro運(yùn)行期間,所有過(guò)程及程序都可以使用這些全局變量。在命令窗口中定義的變量都屬于全局變量。
在例2-2中,如果修改表單的Init事件代碼為如下形式:

則在表單的運(yùn)行中不會(huì)出現(xiàn)錯(cuò)誤,將會(huì)出現(xiàn)兩次圖2-2a中所示的提示框。
說(shuō)明:為了避免使用全局變量,可以使用一種特殊的變量——屬性。
5.變量的釋放
當(dāng)程序結(jié)束或在程序的剩余部分不再使用某些變量時(shí),可以將這些變量從內(nèi)存中釋放掉。從內(nèi)存中刪除或釋放變量的命令是:

這里,〈內(nèi)存變量表〉中的各個(gè)變量用逗號(hào)分隔。
還可以使用CLEAR MEMORY命令清除所有的內(nèi)存變量。
6.變量的顯示
顯示內(nèi)存變量的命令格式有兩種:

說(shuō)明:
①使用LIKE可以篩選出需要的變量,可以不寫該選項(xiàng),系統(tǒng)會(huì)默認(rèn)為全體變量。
②通配符包括“*”和“?”。*代表多個(gè)字符,?代表一個(gè)字符,如*、A*、?和?B?分別代表所有變量、變量名以A開頭的變量、變量名是1個(gè)字符的變量和變量名是3個(gè)字符中間為B的變量。
③選項(xiàng)TO PRINT可將顯示內(nèi)容輸出到打印機(jī),PROMPT顯示打印提示窗口;選項(xiàng)TO FILE〈文件名〉則將顯示內(nèi)容保存到文本文件(擴(kuò)展名為TXT)。
- Oracle從入門到精通(第3版)
- SQL Server 2016從入門到精通(視頻教學(xué)超值版)
- PowerCLI Cookbook
- C語(yǔ)言程序設(shè)計(jì)實(shí)訓(xùn)教程
- Clojure Reactive Programming
- HTML5與CSS3基礎(chǔ)教程(第8版)
- Python Data Structures and Algorithms
- Natural Language Processing with Java and LingPipe Cookbook
- 時(shí)空數(shù)據(jù)建模及其應(yīng)用
- OpenCV 3 Blueprints
- 計(jì)算機(jī)應(yīng)用技能實(shí)訓(xùn)教程
- Mastering VMware Horizon 7(Second Edition)
- Elasticsearch搜索引擎構(gòu)建入門與實(shí)戰(zhàn)
- VMware vSphere Design Essentials
- Java程序設(shè)計(jì)