版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第二章VisualFoxPro的基本語法教學目標掌握VFP中數(shù)據(jù)類型及變量的分類;掌握變量的命名及表達式運算;掌握內(nèi)存變量的操作;熟悉VFP函數(shù)的使用。雙語課堂重點與難點:數(shù)據(jù)及變量的類型、使用邏輯表達式描述復合條件;類型轉(zhuǎn)換函數(shù)及狀態(tài)測試函數(shù)。
2.1
VFP數(shù)據(jù)類型一.常量表示一個具體的、不變的值。不同類型的常量有不同的書寫格式。1.數(shù)值型常量用來表示一個數(shù)量的大小,可以進行算術(shù)運算。包含0~9的阿拉伯數(shù)字、小數(shù)點與正負號,最大長度為20位。示例:538,-10.5,5.87E12,1.6E-122.貨幣型常量用來表示貨幣值,在數(shù)字前加一個符號($)。存儲和計算時采用4位小數(shù),多余小數(shù)位四舍五入。示例:$123.45673.字符型常量
用定界符(單引號、雙引號和方括號)括起來的字符串??梢允?6個英文大小寫字母、10個阿拉伯數(shù)字、各種漢字、專用符號和空格等,最大長度可達254個字符。示例:“ade”,[568],“‘book’的中文意思是‘書’?!弊⒁猓喝绻麑⒗當?shù)字定義為字符串時,它不具備數(shù)學上的數(shù)值含義,不能參加數(shù)學運算,如電話號碼,郵編等。4.日期型常量
表示一個確切的日期,用大括號作為定界符。1)傳統(tǒng)的日期格式:{mm/dd/yy},受設(shè)置命令的影響。2)嚴格的日期格式:{^YYYY-MM-DD},不受設(shè)置命令的影響,能表達一個確切的日期。示例:{10/08/06},{^2006-08-06}嚴格的日期格式可以在任何情況下使用,而傳統(tǒng)的日期格式只能在SETSTRICTDATETO0
狀態(tài)下使用。3)影響日期格式的設(shè)置命令●
SETMARKTO[日期分隔符]●SETDATETO<日期格式>●SETCENTURYON|OFF&&設(shè)置年份位數(shù)●
SETSTRICTDATETO[0|1]
&&是否進行嚴格的日期格式檢查0:檢查1:不檢查2:檢查,并且對CTOD()和CTOT()也有效5.日期時間型常量包括日期和時間兩部分內(nèi)容,用來描述日期和時間。示例:{05/16/9912:00:00}6.邏輯型常量
只有邏輯真和邏輯假兩個值,邏輯真的表示形式有:.T.、.t.、.Y.和.y.邏輯假的表示形式有:.F.、.f.、.N.和.n.邏輯型數(shù)據(jù)長度固定為1位,占用1個字節(jié)。二.變量在使用過程中其值可以改變的量。VFP的變量分為字段變量和內(nèi)存變量兩大類。內(nèi)存變量又包括簡單內(nèi)存變量、系統(tǒng)內(nèi)存變量和數(shù)組變量。1.簡單內(nèi)存變量內(nèi)存中的一個存儲區(qū)域,是一種臨時工作單元,常被用來存儲所需要的常數(shù)、中間結(jié)果或最終結(jié)果。變量名由漢字、字母、數(shù)字和下劃線組成,必須由字母或漢字開頭。(1)內(nèi)存變量的命名規(guī)則:①由字母、漢字、數(shù)字或下劃線組成。②以字母、漢字或下劃線開頭。③長度為1~128個字符,每個漢字占兩個字符。④
不能使用VFP的保留字。當內(nèi)存變量名與字段變量名相同時,字段名優(yōu)先于內(nèi)存變量名,使用時可以在內(nèi)存變量名前加上M.(或M->)以示區(qū)別,但賦值時不能使用前綴。
例:
M.姓名&&表示內(nèi)存變量(2)內(nèi)存變量的建立格式一:
<內(nèi)存變量名>=<表達式>功能:
計算<表達式>的值,然后將計算結(jié)果賦給一個內(nèi)存變量。說明:
①表達式由常量、變量、函數(shù)和運算符組成。②此格式只能給一個內(nèi)存變量賦值。③“=”為賦值號,<內(nèi)存變量名>必須放在賦值號的左邊。④內(nèi)存變量的值及類型在賦值時定義,其類型與所賦值的類型相同。⑤同一個內(nèi)存變量可以多次被賦值,但以最后一次所賦的值為準。格式二:STORE<表達式>TO<內(nèi)存變量名表>功能:
計算<表達式>的值,然后將計算結(jié)果賦給一個或一批內(nèi)存變量。
說明:
①“STORE”命令可以給多個內(nèi)存變量賦相同的值,因而STORE命令常常用于給一批內(nèi)存變量賦值,如清零、置1、置空格等。②當<內(nèi)存變量名表>中有多個內(nèi)存變量時,變量名之間須用逗號來分隔。③STORE是命令名,TO是命令中的短語,二者都是保留字。
?|??
<內(nèi)存變量名表>例:
?X,DD,AA
&&從下一行的第一列開始,顯示內(nèi)存變量X,DD,AA的值,變量間用“,”分隔.
??X,DD,AA
&&從光標的當前位置開始,顯示X,DD,AA的值
(3)內(nèi)存變量的顯示功能:定義一個或多個數(shù)組。說明:●
下標可以是常量、變量或表達式,缺省<下標2>為一維數(shù)組?!?/p>
數(shù)組元素可以使用圓括號,也可以使用方括號?!?/p>
數(shù)組各元素初值均為.F.●
允許數(shù)組重定義。(1)數(shù)組的定義格式:DIMENSION<數(shù)組名1>(<下標1>[,<下標2>])[,<數(shù)組名2>(<下標1>[,<下標2>])…)2.數(shù)組功能:計算表達式的值,并將其賦予指定的數(shù)組或數(shù)組元素。說明:●
下標可以是常量、變量或表達式,缺省<下標2>為一維數(shù)組?!?/p>
下標缺省時,將表達式的值賦予指定數(shù)組的所有元素。2.數(shù)組的賦值格式1STORE<表達式>TO<數(shù)組名1>[(<下標1>[,<下標2>])][,<數(shù)組名2>[(<下標1>[,<下標2>])]…]格式2<數(shù)組名1>[(<下標1>[,<下標2>])]
=<表達式>
三.運算符及表達式運算符對數(shù)據(jù)進行運算操作的符號。表達式用運算符將常量、變量、函數(shù)等連接起來的式子。1.
數(shù)值運算符:圓括號()、乘方(**或^)、乘(*)、除(/)、取余(%)、加(+)、減(-)2.字符串運算符:直接連接(+)去空連接(-)“+”運算符與“-”運算符的區(qū)別:ABeBF—ABeBFABeBF+ABeBF3.日期型運算符:+、-日期表達式的幾種形式:<日期型數(shù)據(jù)>+<數(shù)值型數(shù)據(jù)><數(shù)值型數(shù)據(jù)>+<日期型數(shù)據(jù)><日期型數(shù)據(jù)>-<數(shù)值型數(shù)據(jù)><日期型數(shù)據(jù)>-<日期型數(shù)據(jù)>
例:?{10/01/06}-{09/01/06}&&結(jié)果為30(兩日期相距的天數(shù))
?{10/01/06}+30&&結(jié)果為{10/31/06}
注意:兩個日期值相加是無意義的。4.關(guān)系運算符:
小于(<)、大于(>)、等于(=)、不等于(<>、#或!=)、小于等于(<=)、大于等于(>=)、字符串包含($)、字符串精確比較(==)。說明:(1)運算符==和$僅適用于字符型數(shù)據(jù)。其他運算符適用于任何類型的數(shù)據(jù),但前后兩個運算對象的數(shù)據(jù)類型必須一致。①
數(shù)值型和貨幣型數(shù)據(jù)比較:
按數(shù)值的大小比較,包括負號。②日期或日期時間型數(shù)據(jù)比較:
越早的日期或時間越小,越晚的日期或時間越大。③邏輯型數(shù)據(jù)比較:
.T.大于.F.④包含運算符:檢測左邊的字符串是否被包含在右邊的字符串中。如果包含,返回邏輯真值(.T.),否則返回邏輯假值(.F.)。
⑤
精確比較運算符:只有當兩邊的字符串完全相等時,才返回邏輯真值(.T.)。例:?”劉”
$
”劉曉剛”
&&結(jié)果為.T.
?”微型計算機”
$”計算機”
&&結(jié)果為.F.
(2)關(guān)系運算符具有相同的優(yōu)先級,關(guān)系運算的優(yōu)先級低于數(shù)值、日期、字符表達式。(3)設(shè)置字符的排序次序當比較兩個字符型數(shù)據(jù)時,系統(tǒng)對兩個字符串的字符自左向右逐個比較,一旦發(fā)現(xiàn)兩個對應字符不同,就根據(jù)這兩個字符的排序序列決定兩個字符串的大小。字符的排序序列:
Machine(機器)次序:按照機內(nèi)碼順序排序。
PinYin(拼音)次序:按照拼音次序排序。
Stroke(筆畫)次序:按照書寫筆畫的多少排序。5.邏輯運算符:邏輯非(.NOT.)、邏輯與(.AND.)、邏輯或(.OR.)運算規(guī)則:進行邏輯與運算時,當參加運算的雙方都為真值時,運算結(jié)果為真值,否則為假值;進行邏輯或運算時,當參加運算的雙方都為假值時,運算結(jié)果為假值,否則為真值;進行邏輯非運算時,運算結(jié)果為原來的相反值。在VFP中可以省略運算符兩端的點,寫成NOT、AND、OR。例:使用邏輯表達式描述復合條件條件一:“自動化專業(yè)的女團員”
專業(yè)=“自動化”AND性別=‘女’AND團員條件二:“未婚的女職工”
NOT婚否AND性別=‘女’條件三:“職稱為工程師或部門為技術(shù)科的男職工”(職稱=“工程師”O(jiān)R部門=“技術(shù)科”)AND性別=‘男’算術(shù)運算符最高級**或^(乘方)
*、/、和%(乘、除和余數(shù))
+和-(加和減)
+和-(直接連接和去空連接)
+和-(加和減)
日期運算符
關(guān)系運算符<、>、=、<=、>=、<>、#、!=、$、==各運算符優(yōu)先級相同次高級邏輯運算符NOT或!(邏輯非)
AND(邏輯與)OR(邏輯或)
最低級字符串運算符
2.2
命令結(jié)構(gòu)與書寫規(guī)則命令動詞+修飾子句命令結(jié)構(gòu)示例:USEXS&&打開名為XS的表文件COUNTALLFOR成績<60&&統(tǒng)計XS中分數(shù)在60分以下的人數(shù)LISTALL姓名,成績FOR成績<60TOPRINTER
&&在打印機上輸出成績?yōu)?0分以下的學生的姓名和分數(shù)USE&&關(guān)閉表文件XS,將其保存在磁盤上VisualFoxPro命令的一般格式
<命令動詞>;
[<表達式表>];
[<范圍>]
;
[FOR<條件1>];
[WHILE<條件2>];
[TOFILE<文件名>∣TOPRINTER∣TO;
ARRAY<數(shù)組名>∣TO<內(nèi)存變量>];
[ALL
[LIKE∣EXCEPT<通配符>]];
[IN<別名>]各部分的意義命令動詞:VFP的命令名,指示計算機要完成的操作。表達式表:規(guī)定命令可處理的字段。
范圍:指定命令所作用的記錄范圍。范圍有下列五種選擇:
ALL
當前表中的全部記錄。NEXT<n>
從當前記錄開始的連續(xù)N條記錄。RECORD<n>
當前表中的第N號記錄。REST
從當前記錄開始到最后一條記錄為止的所有記錄。缺?。?/p>
在不同的命令中含義不同,等價于ALL或僅作用于當前記錄。123456NEXT3RESTALL當前記錄指針RECORD3
范圍示例:各部分的意義FOR<條件>:規(guī)定只對滿足條件的記錄進行操作。WHILE<條件>:從當前記錄開始,按記錄順序從上向下處理,一旦遇到不滿足條件的記錄,就停止搜索并結(jié)束該命令的執(zhí)行。(WHILE子句比FOR子句優(yōu)先)TO子句:控制操作結(jié)果的輸出去向。學號課程號成績03010101760301010279030102029003010301870301020167
學號 課程號 成績03010101 7603010301870301020167學號 課程號 成績0301010176Listfor
課程號=‘01’Listwhile
課程號=‘01’FOR
與WHILE的區(qū)別命令書寫規(guī)則1)必須以命令動詞開頭,其后子句的順序可以任意。2)命令動詞、修飾和限制子句之間要用空格分開。3)命令動詞可以縮寫為前四個字符,并且命令動詞中的英文字母不區(qū)分大小寫。4)變量名、字段名和文件名應避免使用保留字,以免產(chǎn)生錯誤。5)一行只能寫一條命令,若分多行書寫,必須使用續(xù)行符“;”。6)每條命令以回車健作為結(jié)束標志。符號的約定
[]位于該符號中的內(nèi)容是可選項。書寫時符號本身不輸入<>位于該符號中的內(nèi)容是必選項。書寫時符號本身不輸入[<>]表示如果[]中的內(nèi)容被選中,則<>中的內(nèi)容為必選項
|表示或者,即根據(jù)需要從該符號緊鄰的前后兩項中,只能選擇其中的一項
...表示該符號前面的內(nèi)容可重復多次
2.3
常用函數(shù)函數(shù)名起標識作用;參數(shù)是自變量,寫在括號內(nèi),當有多個參數(shù)時,各個參數(shù)之間用逗號分隔;括號中沒有參數(shù)的函數(shù)稱為無參函數(shù)。每個函數(shù)運算后都會返回一個值,稱為函數(shù)值,無參函數(shù)也不例外,函數(shù)值會因參數(shù)值而異。
函數(shù)的三個要素:函數(shù)名參數(shù)函數(shù)值函數(shù)名([參數(shù)1[,參數(shù)2]…])函數(shù)的一般格式:1.宏替換函數(shù)格式:&<字符型變量>[.]示例:aa=“bb”bb=
“北京”
?aa,bb,&aa?“&bb.是中國的首都”&&用“.”作為內(nèi)存變量的結(jié)束符
n=“567.83”?356.08+&n注意:如果‘&’后不跟有效的內(nèi)存變量名,則‘&’只是一個字符
2.3.1字符處理函數(shù)格式:AT(<子字符串>,<主字符串>[,<數(shù)值n>])功能:
★AT(<子字符串>,<主字符串>)
返回<子字符串>在<主字符串>中第一次出現(xiàn)的起始位置?!?/p>
AT(<子字符串>,<主字符串>,<數(shù)值n>)返回<子字符串>
在<主字符串>中第n次出現(xiàn)的起始位置?!癟hisisaexample.”?AT(‘is’,C)?AT(‘is’,C,2)36變量C2.子串查找函數(shù)3.計算字符串長度函數(shù)LEN()格式:LEN(<字符表達式>)示例:?LEN(“x+y=?”)
&&結(jié)果為5
?LEN(“VisualFoxPro程序設(shè)計")
&&結(jié)果為21
4.生成空格函數(shù)SPACE()格式:SPACE(<數(shù)值表達式>)示例:?“湖北”+SPACE(3)+“武漢”&&
湖北武漢5.重復字符串函數(shù)REPLICATE()格式:REPLICATE(<字符表達式>,<數(shù)值表達式>)示例:?REPLICATE(‘***’,3)&&*********取左子串:LEFT(<字符表達式>,<數(shù)值表達式>
)取右子串:RIGHT(<字符表達式>,<數(shù)值表達式>)取任意子串:
SUBSTR(<字符表達式>,<起始位置>[,<長度>])“12345.6789”“789”“1234”“5.6”?RIGHT(C,3)變量C?LEFT(C,4)?SUBSTR(C,5,3)6.取子串函數(shù)7.刪除前后空格函數(shù)格式:TRIM(<字符表達式>)
LTRIM(<字符表達式>)ALLTRIM(<字符表達式>)示例:SS=SPACE(1)+“TEST”+SPACE(3)?TRIM(SS)+LTRIM(SS)+ALLTRIM(SS)
&&TESTTESTTEST?LEN(SS),LEN(TRIM(SS))
&&85?LEN(LTRIM(SS)),LEN(ALLTRIM(SS))
&&74
1.系統(tǒng)日期和時間函數(shù)格式:DATE()
TIME()DATETIME()示例:?DATE(),TIME(),DATETIME()
&&07/05/0614:38:0607/05/0602:38:06PM2.3.3日期和時間函數(shù)2.求年份、月份和天數(shù)函數(shù)格式:YEAR(<日期表達式>|<日期時間表達式>)
MONTH(<日期表達式>|<日期時間表達式>)
DAY(<日期表達式>|<日期時間表達式>)示例:?YEAR(DATE())
&&2006
?MONTH(DATE())&&7
?DAY(DATE())&&5
假設(shè)當前日期為2006年7月5日
DOW(<日期表達式>)
&&返回1~7的數(shù)值
CDOW(<日期表達式>)&&返回英文形式的星期
注意:一個星期的第1天為Sunday
3.周日函數(shù)1.求ASCII函數(shù):
格式:
ASC(<字符表達式>)
返回<expC>中的第一個字符對應的ASCII碼值。2.求字符函數(shù):
格式:CHR(<數(shù)值表達式>)
返回ASCII值為<數(shù)值表達式>的字符。字符(C)字符的ACSII碼(N)ASCCHR2.3.4數(shù)據(jù)類型轉(zhuǎn)換函數(shù)
格式:STR(<數(shù)值表達式>[,<長度>][,<小數(shù)位數(shù)])
說明:
(1)<長度>為轉(zhuǎn)換后的字符串位數(shù),該長度包括小數(shù)點、負號。如果缺省<長度>和<小數(shù)位數(shù)>,其輸出結(jié)果將取固定長度為10位,且只取其整數(shù)部分;
(2)<小數(shù)位數(shù)>:若<小數(shù)位數(shù)>的設(shè)定值大于實際數(shù)值的小數(shù)位,則轉(zhuǎn)換后的字符串后補0,若<小數(shù)位數(shù)>的設(shè)定值小于實際數(shù)值的小數(shù)位,則對小數(shù)四舍五入;若缺省<小數(shù)位數(shù)>,則轉(zhuǎn)換后為整數(shù),原小數(shù)部分四舍五入;3.數(shù)值型向字符型轉(zhuǎn)換函數(shù)(3)如果<長度>值大于<數(shù)值表達式>給出值的數(shù)字位數(shù)時,在返回的字符串左邊添加空格;(4)如果<長度>值小于<數(shù)值表達式>值的整數(shù)部分位數(shù),將返回一串星號,表示數(shù)值溢出。示例:
n=1234.56789
?STR(n,8,2)
&&結(jié)果為1234.57
?STR(n,8)
&&結(jié)果為1235
?STR(n,8,4)
&&結(jié)果為1234.568
?STR(n,12,6)
&&結(jié)果為1234.567890
?STR(n)
&&結(jié)果為1235?STR(n,3)
&&結(jié)果為***
4.字符串轉(zhuǎn)換成數(shù)值函數(shù)VAL()格式:VAL(<字符表達式>)說明:(1)<字符表達式>的值必須是數(shù)字形式的字符串,它只能含有數(shù)字、正負號和小數(shù)點;(2)轉(zhuǎn)換時,如果遇到非數(shù)字字符則停止。如果字符表達式的第一個字符即非數(shù)字字符,則轉(zhuǎn)換停止,其值為0.00;示例:?VAL(“-789.123”)
&&結(jié)果為-789.12?VAL("10A.56")
&&結(jié)果為10.00?VAL("C346.05")
&&結(jié)果為0.00格式:CTOD(<字符表達式>)
CTOT(<字符表達式>)說明:(1)<字符表達式>必須是一個有效的日
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 班主任與學生共同成長的路徑計劃
- 個人信息安全保護的建議計劃
- 強化項目管理提升執(zhí)行力計劃
- 創(chuàng)新項目推進與管理培訓
- 品牌擴展的機會與挑戰(zhàn)計劃
- 規(guī)劃班級年度活動主題計劃
- 職場目標的實現(xiàn)方法計劃
- 2023年現(xiàn)代醫(yī)學臨床檢驗參考值
- 2024年自考畢業(yè)生求職面試常見的問題以及對策
- 內(nèi)科常見急癥處理
- MOOC 新時代中國特色社會主義理論與實踐-武漢理工大學 中國大學慕課答案
- 體育教育生涯發(fā)展報告
- 空白臉譜打印可涂色
- 道傳小六壬_卜法卷
- 城市道路路面PCI計算(2016版養(yǎng)護規(guī)范)
- 數(shù)字信號處理大作業(yè)
- 公安局市人大代表履職情況報告
- 課題結(jié)題成果鑒定書.doc
- 大江公司高濃度磷復肥工程可行性研究報告(優(yōu)秀可研報告)
- 帶軸間差速器地分動器特性分析報告材料
- 急診科護理質(zhì)量控制措施
評論
0/150
提交評論