版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第二章VisualFoxPro
語(yǔ)言基礎(chǔ)薛春香xcx516@163.com12本章要點(diǎn)本章主要講解VisualFoxpro中數(shù)據(jù)類(lèi)型、常量和變量的的基本概念,表達(dá)式和函數(shù)的基本知識(shí)。通過(guò)本章學(xué)習(xí),應(yīng)該掌握以下內(nèi)容:數(shù)據(jù)類(lèi)型變量和常量表達(dá)式函數(shù)
2.1數(shù)據(jù)類(lèi)型3數(shù)據(jù)類(lèi)型是指數(shù)據(jù)對(duì)象的取值集合,以及對(duì)之可施行的運(yùn)算集合。數(shù)據(jù)類(lèi)型規(guī)定了具有該類(lèi)型的變量或表達(dá)式的取值范圍,也規(guī)定了與之相聯(lián)系的運(yùn)算的集合。創(chuàng)建表時(shí)需要用戶指明表中每個(gè)字段的數(shù)據(jù)類(lèi)型,變量或數(shù)組的數(shù)據(jù)類(lèi)型則由保存在其中的值來(lái)決定。數(shù)據(jù)類(lèi)型表示符號(hào)數(shù)據(jù)類(lèi)型表示符號(hào)數(shù)據(jù)類(lèi)型表示符號(hào)字符型C數(shù)值型N貨幣型Y備注型M浮點(diǎn)型F邏輯型L日期型D雙精度型B通用型G日期時(shí)間型T整型I2.1.1字符型(C)由任意字符(字母、數(shù)字、空格、符號(hào)等)組成每個(gè)字符占一個(gè)字節(jié),最多可有254個(gè)字符使用時(shí)要用英文的單引號(hào)、雙引號(hào)或方括號(hào)括起來(lái)(不可用中文標(biāo)點(diǎn))
如:“A0001”、‘?dāng)?shù)學(xué)系’
、[214]注意:如果將阿拉伯?dāng)?shù)字定義為字符型數(shù)據(jù)時(shí),它不具備數(shù)學(xué)上的數(shù)值含義,不能參加數(shù)學(xué)運(yùn)算,如電話號(hào)碼,郵編等。42.1.2數(shù)值型(N)用于表示數(shù)值數(shù)據(jù)由數(shù)字0-9、小數(shù)點(diǎn)、正負(fù)號(hào)和字母E組成取值范圍是:
-0.9999999999E+19~0.9999999999E+20其長(zhǎng)度(數(shù)據(jù)位數(shù))最大20位,在內(nèi)存中,數(shù)值型數(shù)據(jù)占用8個(gè)字節(jié)。小數(shù)點(diǎn)和小數(shù)位數(shù)是字段總長(zhǎng)度的一部分通常用于表示實(shí)數(shù)。如23,-103.45,1.3E-5(即1.3×10-5)等;52.1.3整型(I)用于存儲(chǔ)無(wú)小數(shù)的數(shù)值寬度為4字節(jié),其取值范圍是:-2147483647~214748364762.1.4貨幣型(Y)當(dāng)涉及貨幣時(shí)使用,取代數(shù)值型寬度為8字節(jié),默認(rèn)保留4位小數(shù),其取值范圍是:
-922337203685477.5808~922337203685477.5807使用貨幣型數(shù)據(jù)要在前面加上符號(hào)“$”,如:$10072.1.5其他數(shù)值型雙精度型(B)用于存儲(chǔ)精度較高、位數(shù)固定的數(shù)值寬度為8字節(jié),其取值范圍是:
+/-4.94065645841247E-324~
+/-8.9884656743115E307浮點(diǎn)型(F)與數(shù)值型等價(jià),主要是為了得到較高的計(jì)算精度。包含此類(lèi)型是為了提供兼容性82.1.6日期型日期型(D)用于存儲(chǔ)有關(guān)年月日的數(shù)據(jù)寬度為8字節(jié),取值范圍是01/01/0001~12/31/9999表示日期型的數(shù)據(jù)通常要用花括號(hào),
如:{09/10/2001}、{}(空日期)系統(tǒng)默認(rèn)格式為{mm/dd/yyyy},可通過(guò)SETDATE、SETCENTURY命令設(shè)置日期格式,或通過(guò)系統(tǒng)的“選項(xiàng)”對(duì)話框中的“區(qū)域”卡中設(shè)置92.1.6日期型日期時(shí)間型(T)在保存日期、時(shí)間或二者兼有時(shí)使用日期時(shí)間的默認(rèn)格式是{mm/dd/yyyyhh:mm:ss},其中mm、dd、yyyy的意義與日期型相同,而hh表示小時(shí),mm表示分鐘,ss表示秒數(shù)。寬度為8字節(jié)與日期型一樣,要用“{}”將數(shù)據(jù)括起來(lái),{10/01/200210:30:30}表示2002年10月1日10時(shí)30分30秒這一日期時(shí)間數(shù)據(jù)。若要指定空日期時(shí)間值,要在花括號(hào)中加一個(gè)冒號(hào),如:{:}102.1.7邏輯型(L)是用來(lái)進(jìn)行各種邏輯判斷的數(shù)據(jù)只含有兩個(gè)值:真(.T.,.Y.)、假(.F.,.N.)寬度固定,為1字節(jié)112.1.8備注型(M)存放較多字符的數(shù)據(jù)類(lèi)型??梢园阉闯墒亲址蛿?shù)據(jù)的特殊形式。備注型數(shù)據(jù)沒(méi)有數(shù)據(jù)長(zhǎng)度限制,僅受限于磁盤(pán)空間。它只用于表中字段類(lèi)型的定義,字段長(zhǎng)度固定為4字節(jié),實(shí)際數(shù)據(jù)存放在與表文件同名的備注文件(.FPT)中,長(zhǎng)度根據(jù)數(shù)據(jù)的內(nèi)容而定。122.1.9其他數(shù)據(jù)類(lèi)型通用型(G)用于存儲(chǔ)OLE對(duì)象,可以是電子表格、文檔、圖形圖片等。它只用于表中字段類(lèi)型的定義。通用型數(shù)據(jù)字段長(zhǎng)度固定為4位,寬度為4字節(jié),實(shí)際數(shù)據(jù)長(zhǎng)度僅受限于磁盤(pán)空間。表中存儲(chǔ)的是指向OLE對(duì)象的引用二進(jìn)制字符型(C)二進(jìn)制備注型(M)13浮點(diǎn)型、雙精度型、整型、備注型、通用型、二進(jìn)制字符型、二進(jìn)制備注型只能用于字段。2.2數(shù)據(jù)的存儲(chǔ)
在VisualFoxPro系統(tǒng)環(huán)境下,數(shù)據(jù)輸入、輸出是通過(guò)數(shù)據(jù)的存儲(chǔ)設(shè)備完成的。通常我們都是將數(shù)據(jù)存入到常量、變量、數(shù)組中,而在VisualFoxPro系統(tǒng)環(huán)境下,數(shù)據(jù)還可以存入到記錄和對(duì)象中。我們把這些供數(shù)據(jù)存儲(chǔ)的常量、變量、數(shù)組、記錄和對(duì)象稱(chēng)為數(shù)據(jù)存儲(chǔ)容器。142.2.1常量(1/5)常量的值在操作過(guò)程中始終保持不變。字符型常量:用定界符(單引號(hào)、雙引號(hào),方括號(hào))括起來(lái)的字符串。示例:“ade”
,‘568’
,“
book的中文意思是‘書(shū)’?!弊⒁猓?)不能使用中文的定界符;
(2)定界符必須成對(duì)匹配;(3)如果某個(gè)定界符也是字符的內(nèi)容,則用另一種定界符表示該字符串;(4)不含任何字符的字符串稱(chēng)為“空串”(‘’),不同于包含空格的字符串(‘
’);(5)字符串中的字符大小寫(xiě)不等價(jià)。152.2.1常量(2/5)數(shù)值型常量(示例:538,-10.5)貨幣型常量(示例:$10.23
)默認(rèn)四位小數(shù),超過(guò)部分四舍五入。邏輯型常量(示例:.t..T..f..F..Y..y..N..n.)162.2.1
常量(3/5)日期型常量:用花括號(hào)作為定界符,有效的日期型和日期時(shí)間型數(shù)據(jù)分隔符為:連字符“-”、正斜杠“/”、點(diǎn)“.”傳統(tǒng)型日期常量的表示為系統(tǒng)所指定的方式,可以是{yy/mm/dd},也可以是{mm/dd/yyyy}等格式,受系統(tǒng)命令語(yǔ)句setdateto(設(shè)置日期的顯示格式)和setcenturyon/off(設(shè)置年份的位數(shù))的影響。{05/11/03}可以根據(jù)系統(tǒng)設(shè)置的不同解釋為2003年5月11日,2003年11月5日,2005年11月3日等。精確型日期常量的表示格式為{^yyyy-mm-dd},可以在任何系統(tǒng)環(huán)境下使用,如{^2005/11/03}就只表示2005年11月3日,是系統(tǒng)的默認(rèn)設(shè)置。
VFP6.0及以上版本默認(rèn)日期格式為精確型日期格式,可用setstrictdateto0|1|2設(shè)置172.2.1常量(4/5)設(shè)置日期顯示格式SETDATE[TO]AMERICAN|ANSI|BRITISH|FRENCH|GERMAN|ITLIAN|JAPAN|USA|MDY|DMY|YMD|SHORT|LONG
命令功能:設(shè)置日期型和日期時(shí)間型數(shù)據(jù)的顯示輸出格式。系統(tǒng)默認(rèn)為AMERICAN美國(guó)格式。如果日期格式設(shè)置為SHORT或LONG格式,VisualFoxPro系統(tǒng)將按Windows系統(tǒng)設(shè)置的短日期格式或長(zhǎng)日期格式顯示輸出日期數(shù)據(jù),而且SETCENTURY命令的設(shè)置被忽略。
182.2.1常量(5/5)19設(shè)置值日期格式設(shè)置值日期格式AMERICANmm/dd/yyUSAmm-dd-yyANSIyy.mm.ddMDYmm/dd/yyBRITISH/FRENCHdd/mm/yyDMYDd/mm/yyGERMANdd.mm.yyYMDyy/mm/ddITALIANdd-mm-yySHORTWindows短日期格式JAPANyy/mm/ddLONGWindows長(zhǎng)日期格式2.2.2變量變量是在使用過(guò)程中其值可以改變的量。內(nèi)存中一個(gè)存儲(chǔ)單元的位置(地址);變量名是存儲(chǔ)位置的符號(hào)表示,該存儲(chǔ)位置中存放的數(shù)據(jù)就是變量的值,變量的類(lèi)型取決于變量值的類(lèi)型,可以將不同類(lèi)型的數(shù)據(jù)賦給一個(gè)變量(C、N、Y、L、D、T)。
變量分為字段變量、內(nèi)存變量、數(shù)組變量和系統(tǒng)內(nèi)存變量確定一個(gè)變量,需要確定其三個(gè)要素:變量名、數(shù)據(jù)類(lèi)型和變量值。20不特別說(shuō)明的話,通常變量就是指內(nèi)存變量。
變量命名規(guī)則使用字母、下劃線、數(shù)字符號(hào)和漢字符號(hào)命名。但一般建議不采用漢字命名;命名只能以字母或下劃線開(kāi)頭;除自由表中字段名、索引的TAG標(biāo)識(shí)名最多只能10個(gè)字符外,其他的命名可使用1~128個(gè)字符;避免使用VisualFoxPro的保留字;文件名的命名應(yīng)遵循操作系統(tǒng)的約定。21cVar;nvar2;_aver123;sum_of_score;12x;2_x;num-of-stu;_avg&score;set;
內(nèi)存變量
內(nèi)存變量是內(nèi)存中的臨時(shí)單元,可以用來(lái)在程序的執(zhí)行過(guò)程中保留中間結(jié)果與最后結(jié)果,或用來(lái)保留對(duì)數(shù)據(jù)庫(kù)進(jìn)行某種分析處理后得到的結(jié)果。
特別要注意,除非用內(nèi)存變量文件來(lái)保存內(nèi)存變量值,否則,當(dāng)退出VisualFoxPro系統(tǒng)后,內(nèi)存變量也會(huì)與系統(tǒng)一起消失。(1)內(nèi)存變量的數(shù)據(jù)類(lèi)型內(nèi)存變量的數(shù)據(jù)類(lèi)型包括:數(shù)值型、字符型、邏輯型、日期型和日期時(shí)間型,由其值來(lái)決定。
22(2)內(nèi)存變量的建立STORE值
TO變量名列表
變量名=值
WAIT‘字符串‘
TO
字符變量名
如:
STORE
'vfp5'
TOC1,X
C2={^1999/12/14}C3=.f.
WAIT‘hello’TOxy1**將HELLO顯示在屏幕上,在屏幕上輸入的字符賦值給變量xy1
B=6STOREB+3TOCSTORE“中國(guó)”TOA,B,C在建立變量的同時(shí)就指定了變量的名稱(chēng)、數(shù)據(jù)類(lèi)型和變量值(3)內(nèi)存變量的顯示輸出?|??<表達(dá)式表>
功能:計(jì)算表達(dá)式表中各表達(dá)式的值,并在屏幕上指定位置顯示輸出各式的值。?:先回車(chē)換行,再計(jì)算并輸出表達(dá)式的值;??:在屏幕上當(dāng)前位置,計(jì)算并直接輸出表達(dá)式的值;<表達(dá)式表>:多個(gè)逗號(hào)兩兩分隔的表達(dá)式,各表達(dá)式的值輸出時(shí),以空格分隔;?'MYNAMEIS',C1,'TODAYIS:',C2
(4)內(nèi)存變量的清除Clear
memory
&&清除所有的內(nèi)存變量,但不清除系統(tǒng)內(nèi)存變量Release[內(nèi)存變量︱all]
&&清除指定的內(nèi)存變量或所有內(nèi)存變量
Clearall
&&在關(guān)閉所有文件的同時(shí)清除所有的內(nèi)存變量。示例:RELEASEALLRELEASEX,Y,Z
(5)內(nèi)存變量的保存與恢復(fù)SavetoFilename
[alllike|allexcept]
&&將內(nèi)存變量保存到文件中。RestorefromFilename
&&從文件中恢復(fù)內(nèi)存變量。
(6)內(nèi)存變量的作用范圍
LOCAL(聲明局部變量)用LOCAL創(chuàng)建的變量只能在創(chuàng)建他們的程序中使用;不能被更高層或更低層的程序訪問(wèn)。PRIVATE(聲明私有變量)將調(diào)用程序中定義的變量在當(dāng)前程序中隱藏起來(lái),用戶可在當(dāng)前程序中使用同名變量而不影響變量的原始值;PUBLIC(聲明全局變量)在當(dāng)前工作期中任何程序都能使用和修改全局變量命令窗口中聲明的變量是全局變量。
字段變量在一個(gè)數(shù)據(jù)表中,同一個(gè)字段名下有若干個(gè)數(shù)據(jù)項(xiàng),而數(shù)據(jù)項(xiàng)的值取決于該數(shù)據(jù)項(xiàng)所在記錄行的變化,所以稱(chēng)它為字段變量。字段變量的數(shù)據(jù)類(lèi)型與該字段定義的類(lèi)型一致。字段必須先定義(定義字段變量屬性:名字、類(lèi)型和長(zhǎng)度),然后進(jìn)行賦值,最后才可以使用字段變量。字段變量的值隨著表中記錄指針的移動(dòng),其值永遠(yuǎn)在變化之中。28內(nèi)存變量與字段變量的區(qū)別在VFP中,若變量與字段同名,字段具有更高的優(yōu)先權(quán)。要訪問(wèn)變量,可在變量前加上:m.或m->。示例:
當(dāng)前打開(kāi)的表中有XM字段,XS表(XH,XM,NL)
XM=12
USEXS
GO1
?XM
.......第一條記錄的學(xué)生的姓名
?M.XM
.......12
?M->XM
.......122.2.3數(shù)組數(shù)組變量是結(jié)構(gòu)化的變量,是一組具有相同名稱(chēng)、以下標(biāo)相互區(qū)分的有序內(nèi)存變量(稱(chēng)為數(shù)據(jù)元素)數(shù)組元素的名稱(chēng)(變量名)用數(shù)組加下標(biāo)構(gòu)成,最大維數(shù)為二維,下標(biāo)必須用圓括號(hào)對(duì)括;一維數(shù)組的元素只有一個(gè)下標(biāo),二維數(shù)組的元素有兩個(gè)以逗號(hào)分隔的下標(biāo);如AA(1),BB(2,3)分別表示一維數(shù)組AA的第1個(gè)元素,二維數(shù)組BB中第2行第3列的元素;下標(biāo)必須是非負(fù)數(shù)值,可以是常量、變量、函數(shù)或表達(dá)式;每個(gè)數(shù)組元素的數(shù)據(jù)類(lèi)型可以不同,數(shù)組元素的數(shù)據(jù)類(lèi)型是通過(guò)所賦值的數(shù)據(jù)類(lèi)型來(lái)確定的。
30
數(shù)組的定義
——數(shù)組必須先定義后使用
DIMENSION|DECLARE<數(shù)組名1>(<數(shù)值表達(dá)式1>[,<數(shù)值表達(dá)式2>])[,<數(shù)組名2>(<數(shù)值表達(dá)式3>[,<數(shù)值表達(dá)式4>])…]<數(shù)值表達(dá)式>為數(shù)組下標(biāo),對(duì)一維數(shù)組來(lái)說(shuō),指的是數(shù)組元素的個(gè)數(shù);二維數(shù)組則指的是數(shù)組的最大行號(hào)和最大列號(hào)。數(shù)組的下標(biāo)允許使用圓括號(hào)或方括號(hào)括起來(lái)。數(shù)組一旦被定義之后,該數(shù)組的每個(gè)元素的初值為邏輯假值,可以使用有關(guān)的命令給數(shù)組元素賦值。31給數(shù)組元素賦值DIMENSIONAA[6,3]AA[1,2]=2&&數(shù)組的第二個(gè)元素被賦值2AA=3&&數(shù)組的全部元素被賦值3BB=AA&&把數(shù)組的第一個(gè)元素的值賦給變量BB?AA&&顯示數(shù)組第一個(gè)元素的值
DECLAREx[5]x[1]x[2]x[3]x[4]x[5]數(shù)組下標(biāo)排列規(guī)則數(shù)組下標(biāo)的排列規(guī)則:數(shù)組從下標(biāo)1開(kāi)始排列,二維數(shù)組的元素排列是先按行排,后按列排。示例:己定義了數(shù)組A(6)與數(shù)組B(2,3),它們對(duì)應(yīng)的下標(biāo)排列如下:A(6):A(1),A(2),A(3),A(4),A(5),A(6)B(2,3):B(1,1),B(1,2),B(1,3),
B(2,1),B(2,2),B(2,3)數(shù)組元素的重定義數(shù)組的重定義:使用DECLARE或DIMENSION命令對(duì)已定義好的數(shù)組的尺寸和維數(shù)進(jìn)行改變,即將一維數(shù)組變?yōu)槎S數(shù)組或?qū)⒍S數(shù)組變?yōu)橐痪S數(shù)組,并且可以改變數(shù)組元素的個(gè)數(shù),同時(shí)將原數(shù)組的數(shù)據(jù)自動(dòng)復(fù)制到重定義的同名數(shù)組(新數(shù)組)中。有關(guān)數(shù)組的幾個(gè)注意點(diǎn)數(shù)組定義完畢后,其中的每個(gè)元素的值均為邏輯假。以一維數(shù)組的形式對(duì)二維數(shù)組進(jìn)行訪問(wèn)時(shí),數(shù)組的下標(biāo)n表示是對(duì)該數(shù)組中第n個(gè)元素進(jìn)行訪問(wèn)。給數(shù)組名賦值,即給該數(shù)組中所有的元素賦于同一個(gè)值。訪問(wèn)數(shù)組名時(shí),即對(duì)數(shù)組中第一個(gè)元素進(jìn)行訪問(wèn)。2.3操作符及其表達(dá)式362.3.1數(shù)值運(yùn)算符及數(shù)值表達(dá)式2.3.2字符串運(yùn)算符及字符表達(dá)式2.3.3日期運(yùn)算符及日期表達(dá)式2.3.4關(guān)系運(yùn)算符及關(guān)系表達(dá)式2.3.5邏輯運(yùn)算符及邏輯表達(dá)式2.3.6類(lèi)與對(duì)象運(yùn)算符2.3.7名稱(chēng)表達(dá)式(1)運(yùn)算符:對(duì)相同類(lèi)型數(shù)據(jù)進(jìn)行運(yùn)算操作的符號(hào)。(2)表達(dá)式:用運(yùn)算符將常量、變量、函數(shù)等數(shù)據(jù)連接起來(lái)的式子。2.3.1數(shù)值運(yùn)算符及數(shù)值表達(dá)式?4*6%5^3+1&&在VFP主屏幕上顯示25結(jié)果。?24%5&&在VFP主屏幕上顯示4結(jié)果。
?24%-5&&在VFP主屏幕上顯示-1結(jié)果。
?Mod(23,-5),Mod(-23,-5),mod(-23,5)37運(yùn)算符功能表達(dá)式舉例運(yùn)算結(jié)果優(yōu)先級(jí)別()圓括號(hào)(2-5)*(3+2)-15最高||||最低-取相反數(shù)-(3-8)5**、^乘冪2**5、3^232、9*、/乘、除2*10、25/520、5%,mod()模(取余數(shù))20%50+、-加、減36+19、29-4755、-182.3.2字符串運(yùn)算符及字符表達(dá)式38運(yùn)算符功能表達(dá)式舉例運(yùn)算結(jié)果+串1+串2:兩串順序相連接’12‘+’56’’1256’-串1-串2:串1尾空格移到串2尾后再順序相連接’12‘-‘56’‘1256‘$串1$串2:串1是否為串2子串‘1234’$‘a(chǎn)12345’‘1234’$‘34512’.T..F.字符表達(dá)式:由字符串運(yùn)算符將字符型常量、變量、函數(shù)等連接起來(lái)的式子。優(yōu)先級(jí)別:兩個(gè)連接運(yùn)算的優(yōu)先級(jí)別相同,但高于$的比較運(yùn)算。2.3.3日期運(yùn)算符及日期表達(dá)式39運(yùn)算符功能表達(dá)式舉例+日期和天數(shù)相加,結(jié)果為日期
時(shí)間和秒數(shù)相加,結(jié)果為時(shí)間{01/01/1996}+20-日期和日期相減,結(jié)果為天數(shù)
時(shí)間和時(shí)間相減,結(jié)果為秒數(shù)
日期和天數(shù)相減,結(jié)果為日期
時(shí)間和秒數(shù)相減,結(jié)果為時(shí)間?{^2003-01-23}-35
?{^2003-01-23}-{^2003-4-1}日期表達(dá)式:由日期運(yùn)算符將日期型常量、變量、函數(shù)等數(shù)據(jù)連接起來(lái)的式子,其返回結(jié)果為日期型或者數(shù)值型數(shù)據(jù)。
{^1980/03/18}+30
.......{1980/04/17}
{^1980/03/18}+30+DATE()
.......?
402.3.4關(guān)系運(yùn)算符及關(guān)系表達(dá)式運(yùn)算符功能表達(dá)式舉例結(jié)果<小于15<4*6.T.>大于‘A’>‘1’.T.=等于2+4=3*5.F.<>、#、!=不等于5<>-10.T.<=小于或等于'abc'<='AB'.F.>=大于或等于{^2010-10-02}>={^2010-09-20}.T.==字符串恒同‘a(chǎn)bc’==’abcabc’.F.(1)關(guān)系表達(dá)式:由關(guān)系運(yùn)算符、數(shù)值表達(dá)式、字符表達(dá)式或日期表達(dá)式組合而成的式子,返回結(jié)果為邏輯值。(2)關(guān)系運(yùn)算符的兩邊,可以是字符表達(dá)式、數(shù)值表達(dá)式或者日期表達(dá)式,但兩邊的數(shù)據(jù)類(lèi)型必須一致才能進(jìn)行比較。字符數(shù)據(jù)的比較單個(gè)字符字符串以字符ASCII碼的大小,作為字符的“大小”,也就是先后順序,先空格,后小寫(xiě)字母,后大寫(xiě)字母;漢字系統(tǒng)默認(rèn)按漢字的拼音排列漢字的順序,也就是以漢字的拼音順序比較“大小”字符串關(guān)系表達(dá)式基本原則從左到右逐個(gè)字符進(jìn)行比較但因系統(tǒng)相關(guān)設(shè)置狀態(tài)不同,比較的結(jié)果與預(yù)期的不完全相同。VFP中字符的排序序列:⑴機(jī)器序列
按字符ASCII碼值排序:空格<數(shù)字<大寫(xiě)字母<小寫(xiě)字母<一級(jí)漢字<二級(jí)漢字⑵拼音序列漢字按拼音排序,西文字符的序列是:空格<數(shù)字<字母(小寫(xiě)字母<大寫(xiě)字母)<漢字⑶筆畫(huà)序列漢字按筆畫(huà)排序,西文字符的序列是:空格<數(shù)字<字母(小寫(xiě)字母<大寫(xiě)字母)<漢字系統(tǒng)默認(rèn)的字符序列為拼音,可在選項(xiàng)對(duì)話框或SETCOLLATE命令重新設(shè)置。SetCollateto“Machine”|”P(pán)inyin”|“Stroke”字符串關(guān)系表達(dá)式——大小比較用運(yùn)算符<或>進(jìn)行兩串比較時(shí),比較到第1個(gè)不相同字符為止,否則,長(zhǎng)度較長(zhǎng)的串較“大”;如:“are”<“ab”
&&返回的結(jié)果為.F.,首先進(jìn)行第一位字符的比較,如果相同則比較第二位字符的大小,依次類(lèi)推。?“a”<“abc”&&.T.
?"a"<"A"&&.T.?“李”<“王”&&.T.這個(gè)結(jié)果絕對(duì)嗎?字符串關(guān)系表達(dá)式——相等比較默認(rèn)字符串的等于(=)比較是指定非精確比較,即:只要右邊的字符串與左邊字符串的前面部分內(nèi)容相匹配,則為真??梢詓et
exacton/off
設(shè)置是否精確比較;精確比較則首先通過(guò)在字符串后面加空格的方法使兩者長(zhǎng)度相等,再進(jìn)行比較。?”王林兵”=“王林”
&&
模糊比較下為.T.
?”王林兵”=“王林”
&&
精確比較下先變?yōu)椤蓖趿直?“王林
”,然后逐字符進(jìn)行比較,為.F.。用運(yùn)算符==進(jìn)行兩串的恒同比較時(shí),不論SETEXACT的設(shè)置如何,只有當(dāng)兩串長(zhǎng)度相同,字符相同,排列一致時(shí)才成立;?”王林兵”
==“王林”
&&
模糊比較下為.F.
?”王林兵”
==“王林”
&&
精確比較下為.F.字符串精確比較示例Setexacton?‘BCDE’=‘BC’&&.F.?‘BC’=‘BCDE’&&.F.?‘BC’=‘BC’&&.T.?‘BC’=‘BC’&&.T.?‘BCDE’=‘BCDE’&&.T.Setexactoff?‘BCDE’=‘BC’&&.T.?‘BC’=‘BCDE’&&.F.?‘BC’=‘BC’&&.T.?‘BC’=‘BC’&&.F.?‘BCDE’=‘BCDE’&&.T.在使用‘=’進(jìn)行字符串比較時(shí),其結(jié)果受setexact命令設(shè)置的系統(tǒng)環(huán)境的影響。在setexacton時(shí),在字符串不等長(zhǎng)時(shí),首先通過(guò)在字符串后面加空格的方式時(shí)兩個(gè)字符串相等,然后再比較;在setexactoff時(shí),如果‘=’右邊的字符串長(zhǎng)度比左邊的短,則左邊的字符串取同右邊長(zhǎng)度相同的子字符串參加比較。472.3.5邏輯運(yùn)算符及邏輯表達(dá)式運(yùn)算符功能優(yōu)先級(jí)別()圓括號(hào)最高||最低.NOT.或!
邏輯非.AND.
邏輯與.OR.
邏輯或邏輯表達(dá)式:由邏輯運(yùn)算符、邏輯型常量、邏輯型內(nèi)存變量、邏輯型數(shù)組、返回邏輯型數(shù)據(jù)的函數(shù)和關(guān)系表達(dá)式組成,結(jié)果為邏輯型常量。邏輯與運(yùn)算(AND)AL1L2串聯(lián)電路中,當(dāng)燈泡L1與L2同時(shí)亮?xí)r,安培表中才有電流。ABAANDB.T..T..T..T..F..F..F..T..F..F..F..F.邏輯或運(yùn)算(OR)AL1L2并聯(lián)電路中,燈泡L1和L2中有一個(gè)亮,安培表中即有電流。ABAORB.T..T..T..T..F..T..F..T..T..F..F..F.ABA.AND.BA.OR.B.NOTA.T..T..T..T..F..T..F..F..T..F..F..T..F..T..T..F..F..F..F..T.示例:8>3.AND.8<10“A”>“C”.OR.“A”<“C”.NOT.5<6邏輯與、或、非運(yùn)算關(guān)系表空值NULL運(yùn)算邏輯運(yùn)算A=.T.A=.F.A=.NULLA.AND.NULL.NULL.F..NULL.A.OR.NULL.T..NULL..NULL..NOT.A.F..T..NULL.邏輯型數(shù)據(jù)的判斷對(duì)于以邏輯型字段進(jìn)行邏輯判斷的情況,一般不用關(guān)系表達(dá)式而直接用邏輯表達(dá)式。如“性別”是一個(gè)邏輯型字段,并約定“真”表示男性,“假”表示女性。判斷某記錄對(duì)應(yīng)人員是否為男性,用FOR性別,而不用FOR性別=.T.,判斷是否為女性,用FOR.NOT.性別,不用FOR性別=.F.2.3.6操作符的運(yùn)算優(yōu)先級(jí)53字符運(yùn)算符日期和時(shí)間運(yùn)算符算術(shù)運(yùn)算符關(guān)系運(yùn)算符邏輯運(yùn)算符高低算術(shù)運(yùn)算符字符串運(yùn)算符最高級(jí)一元運(yùn)算符“+”和“-”(正負(fù)號(hào))**或^(乘方)*、/、和%(乘、除和余數(shù))+和-(加和減)+和-(精確連接和非精確連接)+和-(加和減)日期運(yùn)算符
關(guān)系運(yùn)算符<、>、=、<=、>=、<>、#、!=、$、==各運(yùn)算符優(yōu)先級(jí)相同次高級(jí)邏輯運(yùn)算符.NOT.或?。ㄟ壿嫹牵?AND.(邏輯與).OR.(邏輯或)最低級(jí)練習(xí)2*3^2+2*8/4+3^2Date()={^2012-03-25}.OR..T..AND..F.250+80<27+6-3"250+80"<"27+6-3“18-5>2+3.and.5*2=1012>2.and."人">"人民“((10%3=1)and(15%2=0)).OR."電腦"<>"計(jì)算機(jī)“((10%3=1)and(15%2=0)).OR.NOT"電腦"<>"計(jì)算機(jī)"31.00.F..F..T..T..F..T..F.2.4函數(shù)56函數(shù)是一個(gè)預(yù)先編制好的計(jì)算模塊,可在VFP的任何地方被調(diào)用。系統(tǒng)函數(shù)數(shù)據(jù)類(lèi)型類(lèi)函數(shù)字符函數(shù)、數(shù)值函數(shù)、日期時(shí)間函數(shù)、測(cè)試函數(shù)、數(shù)據(jù)轉(zhuǎn)換函數(shù)數(shù)據(jù)庫(kù)類(lèi)函數(shù)環(huán)境類(lèi)函數(shù)輸入輸出類(lèi)函數(shù)程序設(shè)計(jì)類(lèi)函數(shù)用戶自定義函數(shù)2.4.1字符函數(shù)57字符及字符串處理函數(shù)的處理對(duì)象均為字符型數(shù)據(jù),但其返回值類(lèi)型卻各異。(1)求子串位置函數(shù)AT(左字符串,右字符串)——查找左字符串在右字符串中第一次出現(xiàn)的位置,區(qū)分大小寫(xiě),其返回值類(lèi)型為數(shù)值型,從最左邊開(kāi)始記數(shù),不在,則返回0。
?AT(‘fa','myfather')
......3ATC(左字符串,右字符串)——不區(qū)分大小寫(xiě),查找左字符串在右字符串中第一次出現(xiàn)的位置。
X=ATC(‘fa','myFather')
?X
......32.4.1字符函數(shù)58(2)求字符串長(zhǎng)度函數(shù)LEN(字符表達(dá)式)——返回字符表達(dá)式中字符的數(shù)目,為數(shù)值型數(shù)據(jù)。
?Len('ssdd')&&9?Len(“ABCDF”)?Len(“ABCDF”)X=“首都經(jīng)貿(mào)大學(xué)”?Len(X)2.4.1字符函數(shù)59(3)刪除空格函數(shù)ALLTRIM(字符表達(dá)式)函數(shù)——?jiǎng)h除指定字符表達(dá)式的前后空格符。
TRIM(字符表達(dá)式)函數(shù)——?jiǎng)h除指定字符表達(dá)式尾部的空格符。LTRIM(字符表達(dá)式)函數(shù)——?jiǎng)h除指定字符表達(dá)式前面的空格符。2.4.1字符函數(shù)60(4)字符串匹配函數(shù)LIKE(字符表達(dá)式1,字符表達(dá)式2)函數(shù)——比較字符表達(dá)式1是否與字符表達(dá)式2相匹配,是則返回邏輯真,否則返回邏輯假。說(shuō)明:字符表達(dá)式1中可以包含通配符*和?,*可以與任何數(shù)目的字符相匹配,?則只能與單個(gè)字符相匹配。如:x=“計(jì)算機(jī)軟件”
y=“計(jì)算機(jī)”
?LIKE(y,x),LIKE(X,Y),LIKE(“計(jì)算*”,y),LIKE(“計(jì)算*”,x),LIKE(“計(jì)算?”,y),LIKE(“計(jì)算?”,x),LIKE(“計(jì)算??”,y)
&&.F..F..T..T..F..F..T.2.4.1字符函數(shù)61(5)取子串函數(shù)SUBSTR(字符表達(dá)式,取子串的起始位置[,取子串的長(zhǎng)度])函數(shù)——從選取的字符串表達(dá)式中選取指定長(zhǎng)度的子串。LEFT(字符表達(dá)式,取子串的長(zhǎng)度)——從字符表達(dá)式最左邊字符開(kāi)始,返回指定數(shù)目的字符。RIGHT(字符表達(dá)式,取子串的長(zhǎng)度)——從字符表達(dá)式最右邊字符開(kāi)始,返回指定數(shù)目的字符。例如:STOR"1995/03/12"tocsrq?subs(csrq,1,4)+”年”+subs(csrq,6,2)+”月”+subs(csrq,9,2)+”日”&&結(jié)果為“1995年03月12日”?left(‘1995/03/13’,4)&&顯示“1995”?Right(‘1995/03/13’,2)&&顯示“13”?Substr(“城市經(jīng)濟(jì)”,5,4)&&顯示“經(jīng)濟(jì)”?Substr(“城市經(jīng)濟(jì)”,2,4)&&顯示:????2.4.1字符函數(shù)63(6)空格函數(shù)SPACE(n)函數(shù)——返回由指定數(shù)目空格構(gòu)成的字符串。?SAPCE(5)?‘1’+SPACE(3)+‘ABC’&&‘1ABC’
2.4.2數(shù)值函數(shù)64(1)絕對(duì)值函數(shù)ABS(數(shù)值)——求絕對(duì)值(2)最大/小數(shù)MAX(數(shù)值1,數(shù)值2,....數(shù)值N)——求最大值MIN(數(shù)值1,數(shù)值2,....數(shù)值N)——求最小值(3)取整函數(shù)INT(n)函數(shù)——整數(shù)部分。?int(-12.5)&&顯示數(shù)值-12(4)求余函數(shù)
MOD(數(shù)值1,數(shù)值2)——返回?cái)?shù)值1除以數(shù)值2的余數(shù),余數(shù)的小數(shù)位數(shù)與數(shù)值1相同,符號(hào)與數(shù)值2相同。?MOD(9,2)
&&1?MOD(9,-2)
&&-1?MOD(-9,2)
&&1?MOD(-9,-2)
&&-12.4.2數(shù)值函數(shù)65(5)四舍五入函數(shù)ROUND(<數(shù)值表達(dá)式1>,<數(shù)值表達(dá)式2>)——返回?cái)?shù)值表達(dá)式1四舍五入的值,數(shù)值表達(dá)式2表示保留的小數(shù)位數(shù)。示例:?ROUND(345.6799,3)&&345.680?ROUND(345.6799,0)&&346?ROUND(345.6799,-2)&&300(6)求平方根函數(shù)SQRT(<數(shù)值表達(dá)式>)——返回?cái)?shù)值表達(dá)式的平方根。(7)隨機(jī)函數(shù)RAND()——返回0~1之間的隨機(jī)數(shù)。2.4.3日期函數(shù)66DATE()——返回系統(tǒng)日期DATETIME()——返回當(dāng)前系統(tǒng)日期和時(shí)間Time()——返回當(dāng)前系統(tǒng)時(shí)間DAY()——返回日期或時(shí)間中的日數(shù)YEAR——返回日期或時(shí)間中的年數(shù)MOTH()——返回日期或時(shí)間中的月份數(shù)DOW()——返回日期是一周中的第幾天如何利用日期函數(shù)設(shè)計(jì)南京青奧會(huì)倒計(jì)時(shí)Tolp={^2014/08/16}?“距離南京青奧會(huì)開(kāi)幕還有”,tolp-date(),’天!’綜合習(xí)題要求在主窗口自動(dòng)分行顯示如下內(nèi)容:“今天是:”顯示當(dāng)前日期,“是星期”幾“距離五一節(jié)還有××天”672.4.4轉(zhuǎn)換函數(shù)68(1)將數(shù)值轉(zhuǎn)換為字符串
STR(數(shù)值表達(dá)式,長(zhǎng)度,小數(shù)位)
——將數(shù)值表達(dá)式的值轉(zhuǎn)換為對(duì)應(yīng)的字符串。
長(zhǎng)度包括小數(shù)點(diǎn)所占字符和小數(shù)點(diǎn)右邊數(shù)字所占的字符。不加表示默認(rèn)長(zhǎng)度為10位,小數(shù)位數(shù)默認(rèn)為0位。
如果指定長(zhǎng)度大于整個(gè)數(shù)值的寬度,用前導(dǎo)空格填充返回的字符串;
如果指定長(zhǎng)度小于數(shù)值的整數(shù)部分的數(shù)字位數(shù),則返回一串星號(hào),表示數(shù)值溢出;
如果指定的小數(shù)位數(shù)小于數(shù)值中的小數(shù)位數(shù),則四舍五入截?cái)喽嘤嗟臄?shù)字。示例:x=123.456
?Str(x)
.......'
123'
?Str(x,5)
.......'
123'
?Str(x,7,2)
.......'123.46'
?Str(x,2)
.......**
?Str(x,5,2)
.......‘123.5’
//指定的寬度不夠數(shù)值的寬度,則首先保證數(shù)值的整數(shù)。
?Str(x,3,2)
......‘123’2.4.4轉(zhuǎn)換函數(shù)70(2)將字符串轉(zhuǎn)換為數(shù)值VAL(C表達(dá)式)——將由數(shù)字、小數(shù)點(diǎn)、正負(fù)號(hào)組成的字符型數(shù)據(jù)轉(zhuǎn)換成相應(yīng)的數(shù)值型數(shù)據(jù),轉(zhuǎn)換結(jié)果取兩位小數(shù)。該表達(dá)式最多可由16位數(shù)字字符組成,若超過(guò)16位,則對(duì)其取整,其中小數(shù)位數(shù)為2。如果字符串內(nèi)出現(xiàn)非數(shù)字字符,則只轉(zhuǎn)換前面數(shù)字字符部分;如字符串的首字符不為數(shù)字字符(空格除外),則返回0值。示例:STORE'22'tox1STORE'23'tox2?val(x1)+val(x2)&&顯示45.00'STORE'1.25E3'tox3?2*val(x3)&&顯示2500.00x="-123.4567“y="23"z="123abc45.567“a="1245avc“b="wre123"?val(x),val(y),val(z),val(a),val(b)則結(jié)果返回-123.46,23.00,123.00,1245.00,0.00
2.4.4轉(zhuǎn)換函數(shù)(3)返回字符ASCII碼函數(shù)
ASC()函數(shù)——返回字符表達(dá)式最左邊字符的ASCII碼(4)返回ASCII對(duì)應(yīng)的字符函數(shù)
CHR()函數(shù)——返回ASCII碼為數(shù)值表達(dá)式值的字符注:數(shù)值表達(dá)式的值必須在0~255之間。722.4.4轉(zhuǎn)換函數(shù)73(5)字符轉(zhuǎn)化為日期或時(shí)間型數(shù)據(jù)
CTOD(字符串)——將字符類(lèi)型的日期轉(zhuǎn)換成日期類(lèi)型的日期
CTOT(字符串)——把字符表達(dá)式轉(zhuǎn)換成日期時(shí)間表達(dá)式setdatetomdysetcenturyonx='01/27/2002'y='01/27/200211:12:45'
?ctod(x),ctod(y),ctot(y)
&&結(jié)果為01/27/2002//01/27/200211:12:45AM2.4.4轉(zhuǎn)換函數(shù)74(6)將日期或日期時(shí)間轉(zhuǎn)換成字符串DTOC(日期或時(shí)間[,1])函數(shù)——把日期型或日期時(shí)間數(shù)據(jù)中的日期轉(zhuǎn)換為字符串。TTOC(時(shí)間[,1|2])函數(shù)——把把日期時(shí)間型數(shù)據(jù)轉(zhuǎn)換為字符串。例如:x={^2002-01-27}y={^2002-01-2711:12:45}setdatetomdysetcenturyon?dtoc(x),dtoc(y),ttoc(y)
2.4.5其他函數(shù)75(7)條件判斷函數(shù)IIF(邏輯表達(dá)式,A,B)——根據(jù)邏輯表達(dá)式的值,返回A和B中的某一個(gè),如表達(dá)式為T(mén),則返回A,否則返回B。A和B的類(lèi)型可以為字符、數(shù)值、貨幣、日期或日期時(shí)間型的表達(dá)式。例如:?IIF(12<13,‘WANG1’,23=34.6)&&WANG1Y=1x>0-1x<=0Y=IIF(X>0,1,-1)Y=IIF(X>0,
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 養(yǎng)殖購(gòu)買(mǎi)飼料合同(2篇)
- 2024年浙教新版選修3化學(xué)下冊(cè)階段測(cè)試試卷含答案
- 2024年華東師大版九年級(jí)地理下冊(cè)階段測(cè)試試卷
- 2024年滬教新版高二數(shù)學(xué)上冊(cè)階段測(cè)試試卷含答案
- 2025年粵人版七年級(jí)歷史下冊(cè)階段測(cè)試試卷
- 2024年華東師大版六年級(jí)語(yǔ)文下冊(cè)階段測(cè)試試卷
- 2024年蘇教新版四年級(jí)語(yǔ)文下冊(cè)階段測(cè)試試卷
- 高鐵新城二手房交易合同樣本
- 茶葉店鑰匙管理規(guī)則
- 道路橋梁加固合同
- DS12C887電子時(shí)鐘(附程序)
- 新產(chǎn)品試制流程管理辦法
- 王牌電話交換機(jī)說(shuō)明書(shū)
- 列管式換熱器-換熱面積計(jì)算
- 10個(gè)地基基礎(chǔ)工程質(zhì)量通病及防治措施
- 25m預(yù)應(yīng)力混凝土簡(jiǎn)支T梁橋設(shè)計(jì)(共30頁(yè))
- 籃球校本課程教案
- 高一學(xué)生文理分班意向表
- 高等傳熱學(xué)部分答案
- 地球物理學(xué)進(jìn)展投稿須知
- 機(jī)床精度檢驗(yàn)標(biāo)準(zhǔn) VDI3441 a ISO230-2
評(píng)論
0/150
提交評(píng)論