版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第2
章VFP表達式及應用
吉林大學計算機教學與研究中心Welcome!第2章VFP表達式及應用數據是程序加工處理的對象。
VisualFoxPro中常用數據的四種形式:常量、變量、表達式和函數。每一個數據都有一定的類型,數據類型決定了數據的存儲方式和運算方式。數值型數據(N),用來表示一個數量的大小,能參與算數運算的數據。數值型常量:由數字0~9、小數點與正負號組成。
也可以用科學記數法形式書寫。2.1.1數值型數據例如:23,-153,123.48例如:2.34E+4,3.6E-3234000.0036字符型數據(C),由英文字母、漢字或數字等可顯示的符號組成的一串字符。2.1.2字符型數據(1)字符型常量:用半角單引號、雙引號或方括號作為定界符把字符串括起來。例如:我是學生,定界符必須成對匹配,并不作為字符串本身內容?!癐StudyVFP”,‘’“”[]字符串長度是指字符串中所含字符的個數
。當某種定界符是字符串中的內容,必須用另一種定界符作為標志。例如:“Windows2000”操作一個半角字符長度為1,一個漢字或全角字符長度為2。如:[2008北京奧運]2.1.2字符型數據(2)‘’[]2.1.3貨幣型數據貨幣型數據(Y),一種特殊的數值型數據,用來表示貨幣值。貨幣型常量:在數值前加貨幣符號$。
貨幣型數據在存儲和計算時,保留4位小數。例如:123.456貨幣型數據不能用科學記數法表示。$例如:$-12.45369存儲為$-12.4537。2.1.4日期型數據日期型數據(D),用來表示某一個日期。日期型常量:定界符為{},其中包含年、月、日三部分內容,各部分內容之間用分隔符分隔。例如:{2007.10.1},{07/10/02},{09-12-2007}設置傳統/嚴格日期格式(1)日期型常量有傳統和嚴格兩種輸入格式。VFP6.0默認使用嚴格日期格式。
傳統日期格式:系統默認的日期型數據為美語日期格式{mm/dd/yy}
例如:{02/10/07}嚴格日期格式:
格式為:{^yyyy-mm-dd}或{^yyyy/mm/dd}
例如:{^2007/10/01},{^2009-12-02}命令格式:SetStrictdateTo
0|1
默認值為1設置傳統/嚴格日期格式(2)例:?{07/10/08}&&此命令能否執(zhí)行??{^2008/07/10}SetStrictdateTo0?{07/10/08}&&此命令能否執(zhí)行??{^2008/07/10}SetStrictdateTo1?{07/10/08}&&此命令能否執(zhí)行??{^2008/07/10}設置日期分隔符命令格式:
例2.2:SetMarkTo<字符表達式>
SetDateAnsiSetCenturyOnSetMarkTo”-”?{^2007/10/01}SetMarkTo[.]?{^2007/10/01}SetMarkTo‘W’?{^2007/10/01}SetMarkTo?{^2007/10/01}2.1.5日期時間型數據日期時間型數據(T),表示日期和時間。日期部分也有傳統和嚴格兩種格式。AM(或A)和PM(或P)分別表示上午和下午。日期時間型常量:定界符為花括號{},其中由日期和時間兩部分內容組成。例如:{10/01/078:18:30},{^2007-10-18:18:30P}2.1.6邏輯型數據邏輯型數據(L),表示邏輯判斷的結果。邏輯型常量只有邏輯真和邏輯假兩個值。邏輯真為:
.T.,.t.,.Y.,.y.
。表示方法:邏輯假為:
.F.,.f.,.N.,.n.。2.2簡單內存變量內存變量存儲在內存中,用來暫時存放程序執(zhí)行中的原始數據或中間結果。內存變量字段變量變量變量:在命令或程序執(zhí)行過程中其值可以變化的量。簡單變量數組變量內存變量名由字母、漢字、數字或下劃線組成,不能以數字開頭。例如:X,
姓名,
_No是正確變量名1月工資,
$12.3,a+b是非法變量名2.2簡單內存變量若內存變量與當前表中的字段(變量)重名,在引用內存變量時,需要加前綴“M.”或“M->”;不加前綴,字段變量優(yōu)先。在VFP中,允許內存變量和字段變量同名。例如:M.xh是內存變量xh系統優(yōu)先查找字段變量,未找到則查找內存變量。2.2.1內存變量賦值命令格式1:<內存變量名>=<表達式>命令格式2:
Store<表達式>To<內存變量名表>內存變量在使用前必須先賦值,變量的類型取決于變量值的類型。例2.4:M=“男”Store2*3ToX,Ya=b=5變量M此時為字符型=6變量X和Y此時為數值型不能完成同時給a,b賦值5的操作。2.2.2內存變量的清除命令格式1:ClearMemory命令格式2:Release<內存變量名表>內存變量使用完畢,應從內存中清除,以便釋放其占用的內存空間。命令格式3:ClearAll命令格式4:ReleaseAll[Like<變量名通配符>|Except<變量名通配符>]2.2.3輸出表達式的值通過VFP命令輸出表達式的值(即運算結果)。命令格式2:??[<表達式表>]例2.7:?‘總成績’,62+20??”分”命令格式1:?[<表達式表>]說明:先計算<表達式表>中每個表達式的值,再依次輸出這些值。格式1從下一行開始位置輸出計算結果。格式2從當前位置開始輸出計算結果。表達式是運算符連接常數、變量和函數等運算對象所構成的運算式。運算符是對數據進行操作的符號。
表達式的運算結果稱為表達式的值,根據表達式值的數據類型可分為數值表達式、字符表達式、日期表達式、關系表達式和邏輯表達式。在VFP中只有同類型的數據(除日期與數值運算外)才能進行運算。2.3數值型表達式2.3.1數值運算符X+Y-1X+Y-1加、減+、-42/((3*X+1)/(X-1))2÷
乘、除、求余*、/、%3X^3或x**3X3乘方**或^2-(+X)-(+X)取正負+、-1轉換成VFP表達式數學表達式說明算術運算符優(yōu)先級別113-+XX例如:?-3**4?15%4,15%-4,-15%4,-15%-42.3.2常用數值型函數(1)函數是用程序來實現的一種數據運算或轉換,函數往往需要若干個自變量,即運算對象,但只能有一個運算結果,稱為函數返回值。
例如:?MAX(3,-6,70+6**2,100)函數名,用來求最大值自變量(參數),操作對象經過計算得到函數返回值,1062.3.2常用數值型函數(2)求平方根函數
格式:
Sqrt(<N>)
例如:X=-100?Sign(X)*Sqrt(Abs(X))求余函數
格式:
Mod(<N1>,<N2>)例如:?Mod(8,3),Mod(-8,3),Mod(8,-3)功能等價:
<N1>%<N2>2.3.2常用數值型函數(3)例如:?Max(8,-2*3,10,3),Min(8,-2*3,10,3)?Max(‘A’,’B’,’C’),max(.f.,.T.,.n.)?Min($200,$100,$300)
?Max(‘21’,‘3’)求最大值和最小值函數
格式:
Max(<表達式表>)
Min(<表達式表>)說明:
各表達式數據類型必須一致。求整函數說明:
Int函數值是數值表達式的整數部分例:Store5.8ToX?Int(X)?Int(-X)格式:
Int(<N>)2.3.2常用數值型函數(4)格式:
Round(<N1>,<N2>)說明:此函數對<N1>進行四舍五入,<N2>用于指明四舍五入的位置。N2>0,保留小數位數;N2<0,舍入至整數部分。例如:X=345.456?Round(X,2),Round(X,1)??Round(X,0),Round(X,-1)四舍五入函數2.3.2常用數值型函數(5)2.3.2常用數值型函數(6)求ASCII碼值函數
格式:
Asc(<C>)例如:?Asc(“EnglishAbc”)求字符串長度函數
格式:
Len(<C>)
例如:X=“中文Visual︼FoxPro6.0”?Len(X)格式:At(<C1>,<C2>[,<N>])例:?AT('AR','cadARA')?AT('Aa','cadAARA'),AT('A','cadARA‘,2)說明:此函數用于返回C1在C2中的位置。若返回值為0,則表示C1不在C2中。
N用于指定C1在C2中第幾次出現,默認為1求子串起始位置函數2.3.2常用數值型函數(7)2.3.2常用數值型函數(8)求年份、月份、日數函數
格式:
Year(<D>)Month(<D>)Day(<D>)例如:Store{^2007-08-18}ToD?Year(D),Month(D),Day(D)+1002.3.2常用數值型函數(9)字符轉換成數值函數
格式:
Val(<C>)例如:?Val(“-2”)*3,Val(“1.23a56”)*2?Val(“1.2E1”)*3,Val(“A123”)說明1:將字符型數據C,從左至右的順序,將數字字符轉換為相應數值型數據,遇到非數字即停;若C的首字符為非數字,則返回值為0。2.4字符型表達式字符表達式是字符運算符將字符型數據連接起來,運算結果仍是字符型數據。
字符運算符:
+和-+:將兩個字符型數據依次連接起來。-:先將第一個字符型數據的尾部空格移動到第二個字符型數據的尾部,再依次連接成一個新的字符型數據。例:X1=’ABC’X2=’DEFG’?X1+X2?X1-X22.4.2常用字符型函數(1)生成空格函數
格式:
Space(<N>)刪除空格函數格式:Ltrim(<C>)Rtrim(<C>)Trim(<C>)Alltrim(<C>)例如:?Ltrim('︼成︼績︼')?Trim('︼成︼績︼'),Alltrim('︼成︼績︼')例如:?’VFP’+Space(3)+’6.0版’?Len(Space(7)-Space(2))
2.4.2常用字符型函數(2)取左子串函數
格式:
Left(<C>,<N>)取右子串函數
格式:
Right(<C>,<N>)
例如:?Left(“VFP6.0”,3)例如:?Right(“吉林大學”,4)2.4.2常用字符型函數(3)取任意子串函數
格式:
Substr(<C>,<N1>[,<N2>])說明:若缺省<長度>,則函數從指定位置一直取到最后一個字符。例如:Store“GoodBye!”ToX?Left(X,2),Substr(X,6,2)+Substr(X,6)
,Right(X,3)大小寫字母轉換函數
格式:
Lower(<C>)
Upper(<C>)
例如:?Lower(”英語2AbC”)?Upper(”英語2AbC”)數值轉換成字符函數格式:
Str(<N1>[,<N2>[,<N3>]])說明1:將<N1>的值轉換成字符串,轉換時根據需要自動進行四舍五入。說明2:<N2>默認值為10,<N3>默認值為0。例如:N=-123.456?Str(N,8,3),Str(N),Str(N,9,2),Str(N,6,3),Str(N,3)例如:M=123456789.983?Str(M,12,3),Str(M,7,3),Str(M,5,3)數據類型函數格式:
Type(’<表達式>’)說明1:Type函數將字符常數的內容作為表達式測試。例如:?Type('123.4'),Type("[123.4]"),Type([$123.4])M=”A”N=1K=3?Type('M'),Type("N"),Type([M+N])?Type([K])2.5日期及日期時間型表達式日期型(時間)表達式是日期(時間)運算符連接日期(時間)或數值型數據所構成的運算式,運算結果可能是日期(時間)或數值型數據
。
日期運算符:
+和-日期與數值計算:<日期表達式>±<數值表達式>
日期與日期運算:<日期表達式>-<日期表達式>例如:?{^2007-05-04}-{^2006-05-04}?{^2005-05-04}-{^2005-05-06}例如:?{^2008-09-10}+1,{^2008-09-10}-12.5.3常用日期型函數系統日期函數
格式:
Date()例如:?Date()?”今天日期是”+Date()Dtoc()2.6關系表達式關系表達式采用關系運算符將同類型數據連接起來進行比較,結果為邏輯型數據。關系運算符運算符說明運算符說明>大于>=大于或等于<小于<=小于或等于<>、!=或#不等于=等于==字符精確相等$子串包含各類型數據的比較規(guī)則數值型和貨幣型數據比較:日期和日期時間型數據比較:邏輯型數據比較:例如:.F.<=.T.按數值的大小比較。例如:0>-1$105<$200越早的日期或時間越小,越晚的日期或時間越大。例如:{^2008-01-20}>{^2000-12-30}邏輯真大于邏輯假。2.6.1字符型數據的比較規(guī)則字符型數據比較方法:字符排序一般規(guī)則:當比較兩個字符串時,系統對兩個字符串的字符從左向右逐個進行比較,一旦發(fā)現兩個對應字符不同,就根據這兩個字符的排序序列決定兩個字符串的大小。數字<
英文字母<漢字例如:‘312’<‘5’‘Bad’>‘Back’“GoodMorning!”<[早上好!]字符串精確比較與Exact設置運算符單等號=:用單等號運算符=,比較兩個字符串時,分為精確比較和非精確比較,默認的為非精確比較。例如:SetExactOn?'BAG'='BAG︼','COM︼︼'='COM︼'格式:
SetExact
On|Off
單等號精確比較規(guī)則對進行比較的兩個字符型數據去掉尾部空格后形成的字符串自左向右按對應字符進行比較。精確
非精確字符串精確比較與Exact設置單等號非精確比較規(guī)則對兩個字符型數據(含空格)進行非精確比較,如果運算符(=)右側整個數據是左側數據的首部子串,或兩個數據完全相同,則運算結果為邏輯真。例如:SetExactOff?'BEE'='BE','BAG'!='BAG︼','李明'='李'運算符雙等號==:運算符“==”不受SetExact狀態(tài)影響,它要求兩個字符串(包含空格)必須完全一致,運算結果才是真(.T.)。例如:'BEE'=='BEE'VFP的“排序次序”對字符串比較結果有影響。
方法一:
“工具”菜單→“選項”→“數據”選項卡→“排序序列”方法二:命令
2.6.2字符型數據的“排序次序”SetCollateTo
“Machine”|“Pinyin”|“Stroke”機內碼
拼音
筆劃2.6.2字符型數據的“排序次序”Machine(機內碼)順序:
'︼'<'0'<'1'…<'9'<'A'<'B'…<'Y'<'Z'<'a'<'b'…<'y'<'z'<'<漢字>'≠Pinyin(拼音)順序:
'︼'<'0'<'1'…<'9'<'a'<'A'<'b'<'B'…<'y'<'Y'<'z'<'Z'<'<漢字>'≠Stroke(筆劃)順序:
'︼'<'0'<'1'…<'9'<'a'<'A'<'b'<'B'…<'y'<'Y'<'z'<'Z'<'<漢字>'。漢字依據書寫筆劃的多少排序,筆劃少的漢字小。
2.6.3子串包含運算格式:
<字符表達式1>$<字符表達式2>)說明:若<字符表達式1>的值是<字符表達式2>值的子串,即<字符表達式2>的值完整地包含<字符表達式1>的值,則運算結果為邏輯真(.T.);否則運算結果為邏輯假(.F.)。
AT(<字符表達式1>,<字符表達式2>)>0例如:X="VFP6.0中文版"?'VFP中文版'$X,'VFP6.0'$X功能等價:
2.7邏輯表達式邏輯表達式是邏輯運算符連接邏輯型數據構成的運算式,運算結果仍然是邏輯型數據。
邏輯運算符:優(yōu)先級別邏輯運算符說明1.Not.Not!非運算2.And.And與運算3.Or.Or或運算邏輯表達式格式[邏輯型表達式1]<邏輯運算符><邏輯型表達式2>真值表AB.NOT.AA.AND.BA.OR.B.T..F..T..T..T..T..F..F..F..T..F..F..F..T..T..T..T..F..F..F.舉例:例1:?.Not..F.?.NOT.2>3,!“a”<”ab”例2:A=1B=2?A=1AndB<3?A>0AndB>5?A>2.And.B<3?A>2.And.B>3例3:
X=5?X>0ANDX<=10例4:Name=‘張大偉’?’張’$Name.Or.’偉’$Name例5:?12>2.And.‘人’=‘人民’.Or..T.<.F.?(10>3And(15%2=0))Or‘電腦’!=‘計算機’例6:N=5M=N=10?M,N2.7.2常用邏輯型函數字母函數
格式:
Isalpha(<C>)例如:?Isalpha(“A12b34cd”)??Isalpha(”1a”),Isalpha(”*1a”)文件存在函數格式:File(<C>)例如:?File(“D:\XSA.DBF”),File(“D:\XSA”)?File(‘D:\XSB.DBF')2.7.2常用邏輯型函數測試值域函數格式:Between(<表達式1>,<表達式2>,<表達式3>)
例如:?Between(2+5,2*3,4*3)?Between(Date(),Date()-1,Date()+1)等價于:<表達式1>>=<表達式2>
And;<表達式1>
<=
<表達式3>
2.7.3表達式綜述在VFP的同一個表達式中,允許含有多種運算符。各類運算符的優(yōu)先級別由高到低依次為:數值運算、字符運算、日期運算和日期時間運算同級別;關系運算;邏輯運算。例如:M=5N='ABC'?!(M-2)*2>5Or'D'+N=='ABC'AndM>32.8宏替換及其使用格式:
&<字符型內存變量>[.]說明:1、用字符型內存變量的值替換整個宏替換函數所在的位置。2、.為&變量與其后內容的分界符。舉例例1:X=‘25’Y=‘5’?X+Y?&X+&Y例2:A=‘吉林大學’B=‘A’?B,&B255A例3:
X=“5”Y=“8*”?&Y.&X8*5作為變量名的一部分例:XH1="202"N=”1”?XH&N作為常量的一部分例:X="大學"?"吉林&X"大學12.8宏替換及其使用作為表達式的一部分例如:X="2”Y="3/"Y5=”Z”Z=2+4?1+&X*3?&Y.&X?Y5
?&Y5
?&Y51+2*33/2Z3/5空格起來分隔作用,同.2.8宏替換及其使用替換文件名替換一條命令
例如:X="?Date()"&X例如:Accept"請輸入表名:"ToBMUse&BM
2.9對話框函數格式:
Messagebox(<C1>[,<N>[,<C2>]])說明:定義帶按鈕和圖標的對話框,函數返回值由用戶選擇的按鈕而定。<C1>:設置對話框中要顯示的信息。<N>:用于說明對話框類型。按鈕編碼+圖標編碼+默認按鈕編碼例如:?Messagebox("請關閉電源",1+48+256,"警示")<C2>:設置對話框的標題。2.10數組及其使用數組是內存中連續(xù)的一片存儲區(qū)域,是一組變量名相同而下標不同的內存變量。其中每個內存變量稱為數組元素,簡稱元素。X(1)X(2)X(3)X(4)A1Y(1,1)Y(1,2)Y(1,3)Y(2,1)Y(2,2)Y(2,3)格式:
Dimension<數組名1>(<m1>[,<n1>])[,<數組名2>(m2[,n2])…]Declare<數組名1>(<m1>[,<n1>])[,<數組名2>(m2[,n2])…]說明:1、數組必須先定義后使用,最多可定義65000個數組,每個數組中最多可包含65000個元素2、數組名的命名規(guī)則同內存變量的命名規(guī)則3、mi、ni為數組下標,是從1開始的正整數4、數組元素的個數由行下標和列下標決定。2.10.1定義數組2.10.1定義數組說明:5、未給數組元素賦值前,其初始值為.F.6、各數組元素所存儲的數據類型可不相同,其類型可為N,C,L,D
例如:DimensionX(3),Y(2,3)X(1)X(2)X(3)X(4)12ABC.T..F.Y(1,1)Y(1,2)Y(1,3)Y(2,1)Y(2,2)Y(2,3)Y(1)Y(2)Y(3)Y(4)Y(5)Y(6)X(1)X(2)X(3)X(4).F..F..F..F.2.10.2使用數組元素數組元素引用格式:
<數組名>(<行下標>[,<列下標>])
數組的賦值命令格式同內存變量的賦值命令。說明:
在對數組名賦值時,將為數組中每個元素賦相同的值。說明:
僅引用數組名時,實際上是引用數組中的第1個元素。如:X(1),Y(2,3),Y2.10.2使用數組元素例1:DimensionB(2,2)B[1,1]=7B[1,2]={^2008-05-01}B(2,1)=B(1,1)+B(1,2)?B[2,1]?B(4)B(1,1)B(1,2)B(2,1)B(2,2).F..F..F..F.2008/05/012008/05/087例2:DIMENSIONX(4)STORE1TOXX=”A”STORE.T.TOX(1,1)X(4)={12/20/98}
X(1)X(2)X(3)X(4).F..F..F..F.1111AAAA1998/12/20說明:1、賦值命令中僅出現數組名時,則表示將同一個值賦給數組的
所有元素
2、賦值命令中以帶下標的形式出現,則表示給數組中指定的元素賦值.T.2.11內存變量管理查看內存變量格式1:
ListMemory[Like<變量名通配符>][ToPrinter][ToFile<文件名>]
說明:當顯示的內容較多時,Display每顯示一屏后暫停,按任意鍵后繼續(xù)輸出下一屏;list無暫停。
格式1:
DisplayMemory[Like<變量名通配符>][ToPrinter][ToFile<文件名>]
例如:ClearMemoryX=”張明”X1={^1990/12/01}X12=.F.DimensionXS(2,2)XS(1)=”2003010”XS(4)={^1990/12/01}Y=$1234.56DisplayMemoryLikeX*2.11.1查看內存變量2.11.2保存內存變
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 汽車維修知識培訓課件
- 羽絨生產知識培訓課件
- 危險化學品企業(yè)特殊作業(yè)習題
- 中國青少年生殖健康可及性調查基礎數據報告
- 二零二五年度會展中心場地租賃與展會服務合同3篇
- 二零二五年度快手電商內容創(chuàng)作者扶持協議3篇
- 二零二五年度技術轉讓合同標的和技術內容5篇
- 二零二五年度合伙購置住宅合伙合同6篇
- 二零二五年度互聯網企業(yè)勞動合同勞動報酬保障合同3篇
- Unit2 第一課時 SectionA (1a-1d)說課稿 2024-2025學年人教版(2024)七年級英語上冊
- 江西省穩(wěn)派教育2025屆數學高二上期末教學質量檢測模擬試題含解析
- 八年級歷史上冊(部編版)第六單元中華民族的抗日戰(zhàn)爭(大單元教學設計)
- 2022-2023學年北京市海淀區(qū)高二(上)期末英語試卷(含答案解析)
- 2021-2022學年統編本五四制道德與法治五年級上冊期末檢測題及答案(共6套)
- (BRB)屈曲約束支撐施工專項方案
- 期末達標測試卷(試題)-2024-2025學年人教PEP版英語四年級上冊
- 高職機電專業(yè)《液壓與氣動技術》說課稿
- 青島版四年級上冊簡便計算400道及答案
- 員工積分制管理實施方案細則
- GB/T 19752-2024混合動力電動汽車動力性能試驗方法
- 大灣區(qū)2023一2024學年第一學期末普通高中一年級聯合考試地理附有答案
評論
0/150
提交評論