版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第二章VisualFoxPro
語言基礎(chǔ)薛春香xcx516@163.com12本章要點本章主要講解VisualFoxpro中數(shù)據(jù)類型、常量和變量的的基本概念,表達(dá)式和函數(shù)的基本知識。通過本章學(xué)習(xí),應(yīng)該掌握以下內(nèi)容:數(shù)據(jù)類型變量和常量表達(dá)式函數(shù)
2.1數(shù)據(jù)類型3數(shù)據(jù)類型是指數(shù)據(jù)對象的取值集合,以及對之可施行的運(yùn)算集合。數(shù)據(jù)類型規(guī)定了具有該類型的變量或表達(dá)式的取值范圍,也規(guī)定了與之相聯(lián)系的運(yùn)算的集合。創(chuàng)建表時需要用戶指明表中每個字段的數(shù)據(jù)類型,變量或數(shù)組的數(shù)據(jù)類型則由保存在其中的值來決定。數(shù)據(jù)類型表示符號數(shù)據(jù)類型表示符號數(shù)據(jù)類型表示符號字符型C數(shù)值型N貨幣型Y備注型M浮點型F邏輯型L日期型D雙精度型B通用型G日期時間型T整型I2.1.1字符型(C)由任意字符(字母、數(shù)字、空格、符號等)組成每個字符占一個字節(jié),最多可有254個字符使用時要用英文的單引號、雙引號或方括號括起來(不可用中文標(biāo)點)
如:“A0001”、‘?dāng)?shù)學(xué)系’
、[214]注意:如果將阿拉伯?dāng)?shù)字定義為字符型數(shù)據(jù)時,它不具備數(shù)學(xué)上的數(shù)值含義,不能參加數(shù)學(xué)運(yùn)算,如電話號碼,郵編等。42.1.2數(shù)值型(N)用于表示數(shù)值數(shù)據(jù)由數(shù)字0-9、小數(shù)點、正負(fù)號和字母E組成取值范圍是:
-0.9999999999E+19~0.9999999999E+20其長度(數(shù)據(jù)位數(shù))最大20位,在內(nèi)存中,數(shù)值型數(shù)據(jù)占用8個字節(jié)。小數(shù)點和小數(shù)位數(shù)是字段總長度的一部分通常用于表示實數(shù)。如23,-103.45,1.3E-5(即1.3×10-5)等;52.1.3整型(I)用于存儲無小數(shù)的數(shù)值寬度為4字節(jié),其取值范圍是:-2147483647~214748364762.1.4貨幣型(Y)當(dāng)涉及貨幣時使用,取代數(shù)值型寬度為8字節(jié),默認(rèn)保留4位小數(shù),其取值范圍是:
-922337203685477.5808~922337203685477.5807使用貨幣型數(shù)據(jù)要在前面加上符號“$”,如:$10072.1.5其他數(shù)值型雙精度型(B)用于存儲精度較高、位數(shù)固定的數(shù)值寬度為8字節(jié),其取值范圍是:
+/-4.94065645841247E-324~
+/-8.9884656743115E307浮點型(F)與數(shù)值型等價,主要是為了得到較高的計算精度。包含此類型是為了提供兼容性82.1.6日期型日期型(D)用于存儲有關(guān)年月日的數(shù)據(jù)寬度為8字節(jié),取值范圍是01/01/0001~12/31/9999表示日期型的數(shù)據(jù)通常要用花括號,
如:{09/10/2001}、{}(空日期)系統(tǒng)默認(rèn)格式為{mm/dd/yyyy},可通過SETDATE、SETCENTURY命令設(shè)置日期格式,或通過系統(tǒng)的“選項”對話框中的“區(qū)域”卡中設(shè)置92.1.6日期型日期時間型(T)在保存日期、時間或二者兼有時使用日期時間的默認(rèn)格式是{mm/dd/yyyyhh:mm:ss},其中mm、dd、yyyy的意義與日期型相同,而hh表示小時,mm表示分鐘,ss表示秒數(shù)。寬度為8字節(jié)與日期型一樣,要用“{}”將數(shù)據(jù)括起來,{10/01/200210:30:30}表示2002年10月1日10時30分30秒這一日期時間數(shù)據(jù)。若要指定空日期時間值,要在花括號中加一個冒號,如:{:}102.1.7邏輯型(L)是用來進(jìn)行各種邏輯判斷的數(shù)據(jù)只含有兩個值:真(.T.,.Y.)、假(.F.,.N.)寬度固定,為1字節(jié)112.1.8備注型(M)存放較多字符的數(shù)據(jù)類型??梢园阉闯墒亲址蛿?shù)據(jù)的特殊形式。備注型數(shù)據(jù)沒有數(shù)據(jù)長度限制,僅受限于磁盤空間。它只用于表中字段類型的定義,字段長度固定為4字節(jié),實際數(shù)據(jù)存放在與表文件同名的備注文件(.FPT)中,長度根據(jù)數(shù)據(jù)的內(nèi)容而定。122.1.9其他數(shù)據(jù)類型通用型(G)用于存儲OLE對象,可以是電子表格、文檔、圖形圖片等。它只用于表中字段類型的定義。通用型數(shù)據(jù)字段長度固定為4位,寬度為4字節(jié),實際數(shù)據(jù)長度僅受限于磁盤空間。表中存儲的是指向OLE對象的引用二進(jìn)制字符型(C)二進(jìn)制備注型(M)13浮點型、雙精度型、整型、備注型、通用型、二進(jìn)制字符型、二進(jìn)制備注型只能用于字段。2.2數(shù)據(jù)的存儲
在VisualFoxPro系統(tǒng)環(huán)境下,數(shù)據(jù)輸入、輸出是通過數(shù)據(jù)的存儲設(shè)備完成的。通常我們都是將數(shù)據(jù)存入到常量、變量、數(shù)組中,而在VisualFoxPro系統(tǒng)環(huán)境下,數(shù)據(jù)還可以存入到記錄和對象中。我們把這些供數(shù)據(jù)存儲的常量、變量、數(shù)組、記錄和對象稱為數(shù)據(jù)存儲容器。142.2.1常量(1/5)常量的值在操作過程中始終保持不變。字符型常量:用定界符(單引號、雙引號,方括號)括起來的字符串。示例:“ade”
,‘568’
,“
book的中文意思是‘書’?!弊⒁猓?)不能使用中文的定界符;
(2)定界符必須成對匹配;(3)如果某個定界符也是字符的內(nèi)容,則用另一種定界符表示該字符串;(4)不含任何字符的字符串稱為“空串”(‘’),不同于包含空格的字符串(‘
’);(5)字符串中的字符大小寫不等價。152.2.1常量(2/5)數(shù)值型常量(示例:538,-10.5)貨幣型常量(示例:$10.23
)默認(rèn)四位小數(shù),超過部分四舍五入。邏輯型常量(示例:.t..T..f..F..Y..y..N..n.)162.2.1
常量(3/5)日期型常量:用花括號作為定界符,有效的日期型和日期時間型數(shù)據(jù)分隔符為:連字符“-”、正斜杠“/”、點“.”傳統(tǒng)型日期常量的表示為系統(tǒng)所指定的方式,可以是{yy/mm/dd},也可以是{mm/dd/yyyy}等格式,受系統(tǒng)命令語句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ù)據(jù)的顯示輸出格式。系統(tǒng)默認(rèn)為AMERICAN美國格式。如果日期格式設(shè)置為SHORT或LONG格式,VisualFoxPro系統(tǒng)將按Windows系統(tǒng)設(shè)置的短日期格式或長日期格式顯示輸出日期數(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長日期格式2.2.2變量變量是在使用過程中其值可以改變的量。內(nèi)存中一個存儲單元的位置(地址);變量名是存儲位置的符號表示,該存儲位置中存放的數(shù)據(jù)就是變量的值,變量的類型取決于變量值的類型,可以將不同類型的數(shù)據(jù)賦給一個變量(C、N、Y、L、D、T)。
變量分為字段變量、內(nèi)存變量、數(shù)組變量和系統(tǒng)內(nèi)存變量確定一個變量,需要確定其三個要素:變量名、數(shù)據(jù)類型和變量值。20不特別說明的話,通常變量就是指內(nèi)存變量。
變量命名規(guī)則使用字母、下劃線、數(shù)字符號和漢字符號命名。但一般建議不采用漢字命名;命名只能以字母或下劃線開頭;除自由表中字段名、索引的TAG標(biāo)識名最多只能10個字符外,其他的命名可使用1~128個字符;避免使用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)存中的臨時單元,可以用來在程序的執(zhí)行過程中保留中間結(jié)果與最后結(jié)果,或用來保留對數(shù)據(jù)庫進(jìn)行某種分析處理后得到的結(jié)果。
特別要注意,除非用內(nèi)存變量文件來保存內(nèi)存變量值,否則,當(dāng)退出VisualFoxPro系統(tǒng)后,內(nèi)存變量也會與系統(tǒng)一起消失。(1)內(nèi)存變量的數(shù)據(jù)類型內(nèi)存變量的數(shù)據(jù)類型包括:數(shù)值型、字符型、邏輯型、日期型和日期時間型,由其值來決定。
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“中國”TOA,B,C在建立變量的同時就指定了變量的名稱、數(shù)據(jù)類型和變量值(3)內(nèi)存變量的顯示輸出?|??<表達(dá)式表>
功能:計算表達(dá)式表中各表達(dá)式的值,并在屏幕上指定位置顯示輸出各式的值。?:先回車換行,再計算并輸出表達(dá)式的值;??:在屏幕上當(dāng)前位置,計算并直接輸出表達(dá)式的值;<表達(dá)式表>:多個逗號兩兩分隔的表達(dá)式,各表達(dá)式的值輸出時,以空格分隔;?'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)閉所有文件的同時清除所有的內(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)建他們的程序中使用;不能被更高層或更低層的程序訪問。PRIVATE(聲明私有變量)將調(diào)用程序中定義的變量在當(dāng)前程序中隱藏起來,用戶可在當(dāng)前程序中使用同名變量而不影響變量的原始值;PUBLIC(聲明全局變量)在當(dāng)前工作期中任何程序都能使用和修改全局變量命令窗口中聲明的變量是全局變量。
字段變量在一個數(shù)據(jù)表中,同一個字段名下有若干個數(shù)據(jù)項,而數(shù)據(jù)項的值取決于該數(shù)據(jù)項所在記錄行的變化,所以稱它為字段變量。字段變量的數(shù)據(jù)類型與該字段定義的類型一致。字段必須先定義(定義字段變量屬性:名字、類型和長度),然后進(jìn)行賦值,最后才可以使用字段變量。字段變量的值隨著表中記錄指針的移動,其值永遠(yuǎn)在變化之中。28內(nèi)存變量與字段變量的區(qū)別在VFP中,若變量與字段同名,字段具有更高的優(yōu)先權(quán)。要訪問變量,可在變量前加上:m.或m->。示例:
當(dāng)前打開的表中有XM字段,XS表(XH,XM,NL)
XM=12
USEXS
GO1
?XM
.......第一條記錄的學(xué)生的姓名
?M.XM
.......12
?M->XM
.......122.2.3數(shù)組數(shù)組變量是結(jié)構(gòu)化的變量,是一組具有相同名稱、以下標(biāo)相互區(qū)分的有序內(nèi)存變量(稱為數(shù)據(jù)元素)數(shù)組元素的名稱(變量名)用數(shù)組加下標(biāo)構(gòu)成,最大維數(shù)為二維,下標(biāo)必須用圓括號對括;一維數(shù)組的元素只有一個下標(biāo),二維數(shù)組的元素有兩個以逗號分隔的下標(biāo);如AA(1),BB(2,3)分別表示一維數(shù)組AA的第1個元素,二維數(shù)組BB中第2行第3列的元素;下標(biāo)必須是非負(fù)數(shù)值,可以是常量、變量、函數(shù)或表達(dá)式;每個數(shù)組元素的數(shù)據(jù)類型可以不同,數(shù)組元素的數(shù)據(jù)類型是通過所賦值的數(shù)據(jù)類型來確定的。
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),對一維數(shù)組來說,指的是數(shù)組元素的個數(shù);二維數(shù)組則指的是數(shù)組的最大行號和最大列號。數(shù)組的下標(biāo)允許使用圓括號或方括號括起來。數(shù)組一旦被定義之后,該數(shù)組的每個元素的初值為邏輯假值,可以使用有關(guān)的命令給數(shù)組元素賦值。31給數(shù)組元素賦值DIMENSIONAA[6,3]AA[1,2]=2&&數(shù)組的第二個元素被賦值2AA=3&&數(shù)組的全部元素被賦值3BB=AA&&把數(shù)組的第一個元素的值賦給變量BB?AA&&顯示數(shù)組第一個元素的值
DECLAREx[5]x[1]x[2]x[3]x[4]x[5]數(shù)組下標(biāo)排列規(guī)則數(shù)組下標(biāo)的排列規(guī)則:數(shù)組從下標(biāo)1開始排列,二維數(shù)組的元素排列是先按行排,后按列排。示例:己定義了數(shù)組A(6)與數(shù)組B(2,3),它們對應(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命令對已定義好的數(shù)組的尺寸和維數(shù)進(jìn)行改變,即將一維數(shù)組變?yōu)槎S數(shù)組或?qū)⒍S數(shù)組變?yōu)橐痪S數(shù)組,并且可以改變數(shù)組元素的個數(shù),同時將原數(shù)組的數(shù)據(jù)自動復(fù)制到重定義的同名數(shù)組(新數(shù)組)中。有關(guān)數(shù)組的幾個注意點數(shù)組定義完畢后,其中的每個元素的值均為邏輯假。以一維數(shù)組的形式對二維數(shù)組進(jìn)行訪問時,數(shù)組的下標(biāo)n表示是對該數(shù)組中第n個元素進(jìn)行訪問。給數(shù)組名賦值,即給該數(shù)組中所有的元素賦于同一個值。訪問數(shù)組名時,即對數(shù)組中第一個元素進(jì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類與對象運(yùn)算符2.3.7名稱表達(dá)式(1)運(yùn)算符:對相同類型數(shù)據(jù)進(jìn)行運(yùn)算操作的符號。(2)表達(dá)式:用運(yùn)算符將常量、變量、函數(shù)等數(shù)據(jù)連接起來的式子。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)先級別()圓括號(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ù)等連接起來的式子。優(yōu)先級別:兩個連接運(yùn)算的優(yōu)先級別相同,但高于$的比較運(yùn)算。2.3.3日期運(yùn)算符及日期表達(dá)式39運(yùn)算符功能表達(dá)式舉例+日期和天數(shù)相加,結(jié)果為日期
時間和秒數(shù)相加,結(jié)果為時間{01/01/1996}+20-日期和日期相減,結(jié)果為天數(shù)
時間和時間相減,結(jié)果為秒數(shù)
日期和天數(shù)相減,結(jié)果為日期
時間和秒數(shù)相減,結(jié)果為時間?{^2003-01-23}-35
?{^2003-01-23}-{^2003-4-1}日期表達(dá)式:由日期運(yùn)算符將日期型常量、變量、函數(shù)等數(shù)據(jù)連接起來的式子,其返回結(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ù)類型必須一致才能進(jìn)行比較。字符數(shù)據(jù)的比較單個字符字符串以字符ASCII碼的大小,作為字符的“大小”,也就是先后順序,先空格,后小寫字母,后大寫字母;漢字系統(tǒng)默認(rèn)按漢字的拼音排列漢字的順序,也就是以漢字的拼音順序比較“大小”字符串關(guān)系表達(dá)式基本原則從左到右逐個字符進(jìn)行比較但因系統(tǒng)相關(guān)設(shè)置狀態(tài)不同,比較的結(jié)果與預(yù)期的不完全相同。VFP中字符的排序序列:⑴機(jī)器序列
按字符ASCII碼值排序:空格<數(shù)字<大寫字母<小寫字母<一級漢字<二級漢字⑵拼音序列漢字按拼音排序,西文字符的序列是:空格<數(shù)字<字母(小寫字母<大寫字母)<漢字⑶筆畫序列漢字按筆畫排序,西文字符的序列是:空格<數(shù)字<字母(小寫字母<大寫字母)<漢字系統(tǒng)默認(rèn)的字符序列為拼音,可在選項對話框或SETCOLLATE命令重新設(shè)置。SetCollateto“Machine”|”Pinyin”|“Stroke”字符串關(guān)系表達(dá)式——大小比較用運(yùn)算符<或>進(jìn)行兩串比較時,比較到第1個不相同字符為止,否則,長度較長的串較“大”;如:“are”<“ab”
&&返回的結(jié)果為.F.,首先進(jìn)行第一位字符的比較,如果相同則比較第二位字符的大小,依次類推。?“a”<“abc”&&.T.
?"a"<"A"&&.T.?“李”<“王”&&.T.這個結(jié)果絕對嗎?字符串關(guān)系表達(dá)式——相等比較默認(rèn)字符串的等于(=)比較是指定非精確比較,即:只要右邊的字符串與左邊字符串的前面部分內(nèi)容相匹配,則為真??梢詓et
exacton/off
設(shè)置是否精確比較;精確比較則首先通過在字符串后面加空格的方法使兩者長度相等,再進(jìn)行比較。?”王林兵”=“王林”
&&
模糊比較下為.T.
?”王林兵”=“王林”
&&
精確比較下先變?yōu)椤蓖趿直?“王林
”,然后逐字符進(jìn)行比較,為.F.。用運(yùn)算符==進(jìn)行兩串的恒同比較時,不論SETEXACT的設(shè)置如何,只有當(dāng)兩串長度相同,字符相同,排列一致時才成立;?”王林兵”
==“王林”
&&
模糊比較下為.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)行字符串比較時,其結(jié)果受setexact命令設(shè)置的系統(tǒng)環(huán)境的影響。在setexacton時,在字符串不等長時,首先通過在字符串后面加空格的方式時兩個字符串相等,然后再比較;在setexactoff時,如果‘=’右邊的字符串長度比左邊的短,則左邊的字符串取同右邊長度相同的子字符串參加比較。472.3.5邏輯運(yùn)算符及邏輯表達(dá)式運(yùn)算符功能優(yōu)先級別()圓括號最高||最低.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同時亮?xí)r,安培表中才有電流。ABAANDB.T..T..T..T..F..F..F..T..F..F..F..F.邏輯或運(yùn)算(OR)AL1L2并聯(lián)電路中,燈泡L1和L2中有一個亮,安培表中即有電流。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ù)的判斷對于以邏輯型字段進(jìn)行邏輯判斷的情況,一般不用關(guān)系表達(dá)式而直接用邏輯表達(dá)式。如“性別”是一個邏輯型字段,并約定“真”表示男性,“假”表示女性。判斷某記錄對應(yīng)人員是否為男性,用FOR性別,而不用FOR性別=.T.,判斷是否為女性,用FOR.NOT.性別,不用FOR性別=.F.2.3.6操作符的運(yùn)算優(yōu)先級53字符運(yùn)算符日期和時間運(yùn)算符算術(shù)運(yùn)算符關(guān)系運(yùn)算符邏輯運(yùn)算符高低算術(shù)運(yùn)算符字符串運(yùn)算符最高級一元運(yùn)算符“+”和“-”(正負(fù)號)**或^(乘方)*、/、和%(乘、除和余數(shù))+和-(加和減)+和-(精確連接和非精確連接)+和-(加和減)日期運(yùn)算符
關(guān)系運(yùn)算符<、>、=、<=、>=、<>、#、!=、$、==各運(yùn)算符優(yōu)先級相同次高級邏輯運(yùn)算符.NOT.或?。ㄟ壿嫹牵?AND.(邏輯與).OR.(邏輯或)最低級練習(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ī)“((10%3=1)and(15%2=0)).OR.NOT"電腦"<>"計算機(jī)"31.00.F..F..T..T..F..T..F.2.4函數(shù)56函數(shù)是一個預(yù)先編制好的計算模塊,可在VFP的任何地方被調(diào)用。系統(tǒng)函數(shù)數(shù)據(jù)類型類函數(shù)字符函數(shù)、數(shù)值函數(shù)、日期時間函數(shù)、測試函數(shù)、數(shù)據(jù)轉(zhuǎn)換函數(shù)數(shù)據(jù)庫類函數(shù)環(huán)境類函數(shù)輸入輸出類函數(shù)程序設(shè)計類函數(shù)用戶自定義函數(shù)2.4.1字符函數(shù)57字符及字符串處理函數(shù)的處理對象均為字符型數(shù)據(jù),但其返回值類型卻各異。(1)求子串位置函數(shù)AT(左字符串,右字符串)——查找左字符串在右字符串中第一次出現(xiàn)的位置,區(qū)分大小寫,其返回值類型為數(shù)值型,從最左邊開始記數(shù),不在,則返回0。
?AT(‘fa','myfather')
......3ATC(左字符串,右字符串)——不區(qū)分大小寫,查找左字符串在右字符串中第一次出現(xiàn)的位置。
X=ATC(‘fa','myFather')
?X
......32.4.1字符函數(shù)58(2)求字符串長度函數(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ù)——刪除指定字符表達(dá)式的前后空格符。
TRIM(字符表達(dá)式)函數(shù)——刪除指定字符表達(dá)式尾部的空格符。LTRIM(字符表達(dá)式)函數(shù)——刪除指定字符表達(dá)式前面的空格符。2.4.1字符函數(shù)60(4)字符串匹配函數(shù)LIKE(字符表達(dá)式1,字符表達(dá)式2)函數(shù)——比較字符表達(dá)式1是否與字符表達(dá)式2相匹配,是則返回邏輯真,否則返回邏輯假。說明:字符表達(dá)式1中可以包含通配符*和?,*可以與任何數(shù)目的字符相匹配,?則只能與單個字符相匹配。如:x=“計算機(jī)軟件”
y=“計算機(jī)”
?LIKE(y,x),LIKE(X,Y),LIKE(“計算*”,y),LIKE(“計算*”,x),LIKE(“計算?”,y),LIKE(“計算?”,x),LIKE(“計算??”,y)
&&.F..F..T..T..F..F..T.2.4.1字符函數(shù)61(5)取子串函數(shù)SUBSTR(字符表達(dá)式,取子串的起始位置[,取子串的長度])函數(shù)——從選取的字符串表達(dá)式中選取指定長度的子串。LEFT(字符表達(dá)式,取子串的長度)——從字符表達(dá)式最左邊字符開始,返回指定數(shù)目的字符。RIGHT(字符表達(dá)式,取子串的長度)——從字符表達(dá)式最右邊字符開始,返回指定數(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)絕對值函數(shù)ABS(數(shù)值)——求絕對值(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)——返回數(shù)值1除以數(shù)值2的余數(shù),余數(shù)的小數(shù)位數(shù)與數(shù)值1相同,符號與數(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>)——返回數(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á)式>)——返回數(shù)值表達(dá)式的平方根。(7)隨機(jī)函數(shù)RAND()——返回0~1之間的隨機(jī)數(shù)。2.4.3日期函數(shù)66DATE()——返回系統(tǒng)日期DATETIME()——返回當(dāng)前系統(tǒng)日期和時間Time()——返回當(dāng)前系統(tǒng)時間DAY()——返回日期或時間中的日數(shù)YEAR——返回日期或時間中的年數(shù)MOTH()——返回日期或時間中的月份數(shù)DOW()——返回日期是一周中的第幾天如何利用日期函數(shù)設(shè)計南京青奧會倒計時Tolp={^2014/08/16}?“距離南京青奧會開幕還有”,tolp-date(),’天!’綜合習(xí)題要求在主窗口自動分行顯示如下內(nèi)容:“今天是:”顯示當(dāng)前日期,“是星期”幾“距離五一節(jié)還有××天”672.4.4轉(zhuǎn)換函數(shù)68(1)將數(shù)值轉(zhuǎn)換為字符串
STR(數(shù)值表達(dá)式,長度,小數(shù)位)
——將數(shù)值表達(dá)式的值轉(zhuǎn)換為對應(yīng)的字符串。
長度包括小數(shù)點所占字符和小數(shù)點右邊數(shù)字所占的字符。不加表示默認(rèn)長度為10位,小數(shù)位數(shù)默認(rèn)為0位。
如果指定長度大于整個數(shù)值的寬度,用前導(dǎo)空格填充返回的字符串;
如果指定長度小于數(shù)值的整數(shù)部分的數(shù)字位數(shù),則返回一串星號,表示數(shù)值溢出;
如果指定的小數(shù)位數(shù)小于數(shù)值中的小數(shù)位數(shù),則四舍五入截斷多余的數(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ù)點、正負(fù)號組成的字符型數(shù)據(jù)轉(zhuǎn)換成相應(yīng)的數(shù)值型數(shù)據(jù),轉(zhuǎn)換結(jié)果取兩位小數(shù)。該表達(dá)式最多可由16位數(shù)字字符組成,若超過16位,則對其取整,其中小數(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對應(yīng)的字符函數(shù)
CHR()函數(shù)——返回ASCII碼為數(shù)值表達(dá)式值的字符注:數(shù)值表達(dá)式的值必須在0~255之間。722.4.4轉(zhuǎn)換函數(shù)73(5)字符轉(zhuǎn)化為日期或時間型數(shù)據(jù)
CTOD(字符串)——將字符類型的日期轉(zhuǎn)換成日期類型的日期
CTOT(字符串)——把字符表達(dá)式轉(zhuǎn)換成日期時間表達(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)將日期或日期時間轉(zhuǎn)換成字符串DTOC(日期或時間[,1])函數(shù)——把日期型或日期時間數(shù)據(jù)中的日期轉(zhuǎn)換為字符串。TTOC(時間[,1|2])函數(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中的某一個,如表達(dá)式為T,則返回A,否則返回B。A和B的類型可以為字符、數(shù)值、貨幣、日期或日期時間型的表達(dá)式。例如:?IIF(12<13,‘WANG1’,23=34.6)&&WANG1Y=1x>0-1x<=0Y=IIF(X>0,1,-1)Y=IIF(X>0,
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024至2030年中國厚料儀器數(shù)據(jù)監(jiān)測研究報告
- 2024年天津市中考語文試題含答案
- 2024年中國玻璃鋼模壓制品市場調(diào)查研究報告
- 2024年中國注塑網(wǎng)板市場調(diào)查研究報告
- 2012年事業(yè)單位考試公共基礎(chǔ)知識單選題題庫
- 2024年中國散熱器手動調(diào)節(jié)閥市場調(diào)查研究報告
- 電影節(jié)安保工作總結(jié)與經(jīng)驗分享計劃
- 村級公路損壞修復(fù)協(xié)議書
- 合理安排會計工作時間表計劃
- 北京技術(shù)合同登記實務(wù)
- 企業(yè)在線培訓(xùn)資源合同
- GB 27887-2024機(jī)動車兒童乘員用約束系統(tǒng)
- IATF16949-2024質(zhì)量管理體系各過程風(fēng)險識別評價分析及控制方案
- 自然科學(xué)基金項目申請書
- 第四屆全國新能源汽車關(guān)鍵技術(shù)技能大賽(新能源汽車輕量化技術(shù)方向)決賽參考試題庫(含答案)
- 教師資格考試小學(xué)數(shù)學(xué)面試試題與參考答案
- 2024年新人教版一年級數(shù)學(xué)上冊課件 第二單元 6~10的認(rèn)識和加、減法 1. 6~9的認(rèn)識 課時2 比大小、第幾練習(xí)課
- 服務(wù)行業(yè)感受心得體會(8篇)
- 滬科版九年級物理 15.1 電阻和變阻器(學(xué)習(xí)、上課課件)
- 2024-2025學(xué)年深圳市九年級上冊期中考試模擬試卷歷史試卷
- 2023年中國人壽保險股份有限公司招聘筆試真題
評論
0/150
提交評論