版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第二章VisualFoxPro的基本語法教學目標掌握VFP中數據類型及變量的分類;掌握變量的命名及表達式運算;掌握內存變量的操作;熟悉VFP函數的使用。雙語課堂重點與難點:數據及變量的類型、使用邏輯表達式描述復合條件;類型轉換函數及狀態(tài)測試函數。
2.1
VFP數據類型一.常量表示一個具體的、不變的值。不同類型的常量有不同的書寫格式。1.數值型常量用來表示一個數量的大小,可以進行算術運算。包含0~9的阿拉伯數字、小數點與正負號,最大長度為20位。示例:538,-10.5,5.87E12,1.6E-122.貨幣型常量用來表示貨幣值,在數字前加一個符號($)。存儲和計算時采用4位小數,多余小數位四舍五入。示例:$123.45673.字符型常量
用定界符(單引號、雙引號和方括號)括起來的字符串??梢允?6個英文大小寫字母、10個阿拉伯數字、各種漢字、專用符號和空格等,最大長度可達254個字符。示例:“ade”,[568],“‘book’的中文意思是‘書’?!弊⒁猓喝绻麑⒗當底侄x為字符串時,它不具備數學上的數值含義,不能參加數學運算,如電話號碼,郵編等。4.日期型常量
表示一個確切的日期,用大括號作為定界符。1)傳統(tǒng)的日期格式:{mm/dd/yy},受設置命令的影響。2)嚴格的日期格式:{^YYYY-MM-DD},不受設置命令的影響,能表達一個確切的日期。示例:{10/08/06},{^2006-08-06}嚴格的日期格式可以在任何情況下使用,而傳統(tǒng)的日期格式只能在SETSTRICTDATETO0
狀態(tài)下使用。3)影響日期格式的設置命令●
SETMARKTO[日期分隔符]●SETDATETO<日期格式>●SETCENTURYON|OFF&&設置年份位數●
SETSTRICTDATETO[0|1]
&&是否進行嚴格的日期格式檢查0:檢查1:不檢查2:檢查,并且對CTOD()和CTOT()也有效5.日期時間型常量包括日期和時間兩部分內容,用來描述日期和時間。示例:{05/16/9912:00:00}6.邏輯型常量
只有邏輯真和邏輯假兩個值,邏輯真的表示形式有:.T.、.t.、.Y.和.y.邏輯假的表示形式有:.F.、.f.、.N.和.n.邏輯型數據長度固定為1位,占用1個字節(jié)。二.變量在使用過程中其值可以改變的量。VFP的變量分為字段變量和內存變量兩大類。內存變量又包括簡單內存變量、系統(tǒng)內存變量和數組變量。1.簡單內存變量內存中的一個存儲區(qū)域,是一種臨時工作單元,常被用來存儲所需要的常數、中間結果或最終結果。變量名由漢字、字母、數字和下劃線組成,必須由字母或漢字開頭。(1)內存變量的命名規(guī)則:①由字母、漢字、數字或下劃線組成。②以字母、漢字或下劃線開頭。③長度為1~128個字符,每個漢字占兩個字符。④
不能使用VFP的保留字。當內存變量名與字段變量名相同時,字段名優(yōu)先于內存變量名,使用時可以在內存變量名前加上M.(或M->)以示區(qū)別,但賦值時不能使用前綴。
例:
M.姓名&&表示內存變量(2)內存變量的建立格式一:
<內存變量名>=<表達式>功能:
計算<表達式>的值,然后將計算結果賦給一個內存變量。說明:
①表達式由常量、變量、函數和運算符組成。②此格式只能給一個內存變量賦值。③“=”為賦值號,<內存變量名>必須放在賦值號的左邊。④內存變量的值及類型在賦值時定義,其類型與所賦值的類型相同。⑤同一個內存變量可以多次被賦值,但以最后一次所賦的值為準。格式二:STORE<表達式>TO<內存變量名表>功能:
計算<表達式>的值,然后將計算結果賦給一個或一批內存變量。
說明:
①“STORE”命令可以給多個內存變量賦相同的值,因而STORE命令常常用于給一批內存變量賦值,如清零、置1、置空格等。②當<內存變量名表>中有多個內存變量時,變量名之間須用逗號來分隔。③STORE是命令名,TO是命令中的短語,二者都是保留字。
?|??
<內存變量名表>例:
?X,DD,AA
&&從下一行的第一列開始,顯示內存變量X,DD,AA的值,變量間用“,”分隔.
??X,DD,AA
&&從光標的當前位置開始,顯示X,DD,AA的值
(3)內存變量的顯示功能:定義一個或多個數組。說明:●
下標可以是常量、變量或表達式,缺省<下標2>為一維數組?!?/p>
數組元素可以使用圓括號,也可以使用方括號。●
數組各元素初值均為.F.●
允許數組重定義。(1)數組的定義格式:DIMENSION<數組名1>(<下標1>[,<下標2>])[,<數組名2>(<下標1>[,<下標2>])…)2.數組功能:計算表達式的值,并將其賦予指定的數組或數組元素。說明:●
下標可以是常量、變量或表達式,缺省<下標2>為一維數組。●
下標缺省時,將表達式的值賦予指定數組的所有元素。2.數組的賦值格式1STORE<表達式>TO<數組名1>[(<下標1>[,<下標2>])][,<數組名2>[(<下標1>[,<下標2>])]…]格式2<數組名1>[(<下標1>[,<下標2>])]
=<表達式>
三.運算符及表達式運算符對數據進行運算操作的符號。表達式用運算符將常量、變量、函數等連接起來的式子。1.
數值運算符:圓括號()、乘方(**或^)、乘(*)、除(/)、取余(%)、加(+)、減(-)2.字符串運算符:直接連接(+)去空連接(-)“+”運算符與“-”運算符的區(qū)別:ABeBF—ABeBFABeBF+ABeBF3.日期型運算符:+、-日期表達式的幾種形式:<日期型數據>+<數值型數據><數值型數據>+<日期型數據><日期型數據>-<數值型數據><日期型數據>-<日期型數據>
例:?{10/01/06}-{09/01/06}&&結果為30(兩日期相距的天數)
?{10/01/06}+30&&結果為{10/31/06}
注意:兩個日期值相加是無意義的。4.關系運算符:
小于(<)、大于(>)、等于(=)、不等于(<>、#或!=)、小于等于(<=)、大于等于(>=)、字符串包含($)、字符串精確比較(==)。說明:(1)運算符==和$僅適用于字符型數據。其他運算符適用于任何類型的數據,但前后兩個運算對象的數據類型必須一致。①
數值型和貨幣型數據比較:
按數值的大小比較,包括負號。②日期或日期時間型數據比較:
越早的日期或時間越小,越晚的日期或時間越大。③邏輯型數據比較:
.T.大于.F.④包含運算符:檢測左邊的字符串是否被包含在右邊的字符串中。如果包含,返回邏輯真值(.T.),否則返回邏輯假值(.F.)。
⑤
精確比較運算符:只有當兩邊的字符串完全相等時,才返回邏輯真值(.T.)。例:?”劉”
$
”劉曉剛”
&&結果為.T.
?”微型計算機”
$”計算機”
&&結果為.F.
(2)關系運算符具有相同的優(yōu)先級,關系運算的優(yōu)先級低于數值、日期、字符表達式。(3)設置字符的排序次序當比較兩個字符型數據時,系統(tǒng)對兩個字符串的字符自左向右逐個比較,一旦發(fā)現兩個對應字符不同,就根據這兩個字符的排序序列決定兩個字符串的大小。字符的排序序列:
Machine(機器)次序:按照機內碼順序排序。
PinYin(拼音)次序:按照拼音次序排序。
Stroke(筆畫)次序:按照書寫筆畫的多少排序。5.邏輯運算符:邏輯非(.NOT.)、邏輯與(.AND.)、邏輯或(.OR.)運算規(guī)則:進行邏輯與運算時,當參加運算的雙方都為真值時,運算結果為真值,否則為假值;進行邏輯或運算時,當參加運算的雙方都為假值時,運算結果為假值,否則為真值;進行邏輯非運算時,運算結果為原來的相反值。在VFP中可以省略運算符兩端的點,寫成NOT、AND、OR。例:使用邏輯表達式描述復合條件條件一:“自動化專業(yè)的女團員”
專業(yè)=“自動化”AND性別=‘女’AND團員條件二:“未婚的女職工”
NOT婚否AND性別=‘女’條件三:“職稱為工程師或部門為技術科的男職工”(職稱=“工程師”O(jiān)R部門=“技術科”)AND性別=‘男’算術運算符最高級**或^(乘方)
*、/、和%(乘、除和余數)
+和-(加和減)
+和-(直接連接和去空連接)
+和-(加和減)
日期運算符
關系運算符<、>、=、<=、>=、<>、#、!=、$、==各運算符優(yōu)先級相同次高級邏輯運算符NOT或?。ㄟ壿嫹牵?/p>
AND(邏輯與)OR(邏輯或)
最低級字符串運算符
2.2
命令結構與書寫規(guī)則命令動詞+修飾子句命令結構示例:USEXS&&打開名為XS的表文件COUNTALLFOR成績<60&&統(tǒng)計XS中分數在60分以下的人數LISTALL姓名,成績FOR成績<60TOPRINTER
&&在打印機上輸出成績?yōu)?0分以下的學生的姓名和分數USE&&關閉表文件XS,將其保存在磁盤上VisualFoxPro命令的一般格式
<命令動詞>;
[<表達式表>];
[<范圍>]
;
[FOR<條件1>];
[WHILE<條件2>];
[TOFILE<文件名>∣TOPRINTER∣TO;
ARRAY<數組名>∣TO<內存變量>];
[ALL
[LIKE∣EXCEPT<通配符>]];
[IN<別名>]各部分的意義命令動詞:VFP的命令名,指示計算機要完成的操作。表達式表:規(guī)定命令可處理的字段。
范圍:指定命令所作用的記錄范圍。范圍有下列五種選擇:
ALL
當前表中的全部記錄。NEXT<n>
從當前記錄開始的連續(xù)N條記錄。RECORD<n>
當前表中的第N號記錄。REST
從當前記錄開始到最后一條記錄為止的所有記錄。缺?。?/p>
在不同的命令中含義不同,等價于ALL或僅作用于當前記錄。123456NEXT3RESTALL當前記錄指針RECORD3
范圍示例:各部分的意義FOR<條件>:規(guī)定只對滿足條件的記錄進行操作。WHILE<條件>:從當前記錄開始,按記錄順序從上向下處理,一旦遇到不滿足條件的記錄,就停止搜索并結束該命令的執(zhí)行。(WHILE子句比FOR子句優(yōu)先)TO子句:控制操作結果的輸出去向。學號課程號成績03010101760301010279030102029003010301870301020167
學號 課程號 成績03010101 7603010301870301020167學號 課程號 成績0301010176Listfor
課程號=‘01’Listwhile
課程號=‘01’FOR
與WHILE的區(qū)別命令書寫規(guī)則1)必須以命令動詞開頭,其后子句的順序可以任意。2)命令動詞、修飾和限制子句之間要用空格分開。3)命令動詞可以縮寫為前四個字符,并且命令動詞中的英文字母不區(qū)分大小寫。4)變量名、字段名和文件名應避免使用保留字,以免產生錯誤。5)一行只能寫一條命令,若分多行書寫,必須使用續(xù)行符“;”。6)每條命令以回車健作為結束標志。符號的約定
[]位于該符號中的內容是可選項。書寫時符號本身不輸入<>位于該符號中的內容是必選項。書寫時符號本身不輸入[<>]表示如果[]中的內容被選中,則<>中的內容為必選項
|表示或者,即根據需要從該符號緊鄰的前后兩項中,只能選擇其中的一項
...表示該符號前面的內容可重復多次
2.3
常用函數函數名起標識作用;參數是自變量,寫在括號內,當有多個參數時,各個參數之間用逗號分隔;括號中沒有參數的函數稱為無參函數。每個函數運算后都會返回一個值,稱為函數值,無參函數也不例外,函數值會因參數值而異。
函數的三個要素:函數名參數函數值函數名([參數1[,參數2]…])函數的一般格式:1.宏替換函數格式:&<字符型變量>[.]示例:aa=“bb”bb=
“北京”
?aa,bb,&aa?“&bb.是中國的首都”&&用“.”作為內存變量的結束符
n=“567.83”?356.08+&n注意:如果‘&’后不跟有效的內存變量名,則‘&’只是一個字符
2.3.1字符處理函數格式:AT(<子字符串>,<主字符串>[,<數值n>])功能:
★AT(<子字符串>,<主字符串>)
返回<子字符串>在<主字符串>中第一次出現的起始位置?!?/p>
AT(<子字符串>,<主字符串>,<數值n>)返回<子字符串>
在<主字符串>中第n次出現的起始位置?!癟hisisaexample.”?AT(‘is’,C)?AT(‘is’,C,2)36變量C2.子串查找函數3.計算字符串長度函數LEN()格式:LEN(<字符表達式>)示例:?LEN(“x+y=?”)
&&結果為5
?LEN(“VisualFoxPro程序設計")
&&結果為21
4.生成空格函數SPACE()格式:SPACE(<數值表達式>)示例:?“湖北”+SPACE(3)+“武漢”&&
湖北武漢5.重復字符串函數REPLICATE()格式:REPLICATE(<字符表達式>,<數值表達式>)示例:?REPLICATE(‘***’,3)&&*********取左子串:LEFT(<字符表達式>,<數值表達式>
)取右子串:RIGHT(<字符表達式>,<數值表達式>)取任意子串:
SUBSTR(<字符表達式>,<起始位置>[,<長度>])“12345.6789”“789”“1234”“5.6”?RIGHT(C,3)變量C?LEFT(C,4)?SUBSTR(C,5,3)6.取子串函數7.刪除前后空格函數格式: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)日期和時間函數格式:DATE()
TIME()DATETIME()示例:?DATE(),TIME(),DATETIME()
&&07/05/0614:38:0607/05/0602:38:06PM2.3.3日期和時間函數2.求年份、月份和天數函數格式:YEAR(<日期表達式>|<日期時間表達式>)
MONTH(<日期表達式>|<日期時間表達式>)
DAY(<日期表達式>|<日期時間表達式>)示例:?YEAR(DATE())
&&2006
?MONTH(DATE())&&7
?DAY(DATE())&&5
假設當前日期為2006年7月5日
DOW(<日期表達式>)
&&返回1~7的數值
CDOW(<日期表達式>)&&返回英文形式的星期
注意:一個星期的第1天為Sunday
3.周日函數1.求ASCII函數:
格式:
ASC(<字符表達式>)
返回<expC>中的第一個字符對應的ASCII碼值。2.求字符函數:
格式:CHR(<數值表達式>)
返回ASCII值為<數值表達式>的字符。字符(C)字符的ACSII碼(N)ASCCHR2.3.4數據類型轉換函數
格式:STR(<數值表達式>[,<長度>][,<小數位數])
說明:
(1)<長度>為轉換后的字符串位數,該長度包括小數點、負號。如果缺省<長度>和<小數位數>,其輸出結果將取固定長度為10位,且只取其整數部分;
(2)<小數位數>:若<小數位數>的設定值大于實際數值的小數位,則轉換后的字符串后補0,若<小數位數>的設定值小于實際數值的小數位,則對小數四舍五入;若缺省<小數位數>,則轉換后為整數,原小數部分四舍五入;3.數值型向字符型轉換函數(3)如果<長度>值大于<數值表達式>給出值的數字位數時,在返回的字符串左邊添加空格;(4)如果<長度>值小于<數值表達式>值的整數部分位數,將返回一串星號,表示數值溢出。示例:
n=1234.56789
?STR(n,8,2)
&&結果為1234.57
?STR(n,8)
&&結果為1235
?STR(n,8,4)
&&結果為1234.568
?STR(n,12,6)
&&結果為1234.567890
?STR(n)
&&結果為1235?STR(n,3)
&&結果為***
4.字符串轉換成數值函數VAL()格式:VAL(<字符表達式>)說明:(1)<字符表達式>的值必須是數字形式的字符串,它只能含有數字、正負號和小數點;(2)轉換時,如果遇到非數字字符則停止。如果字符表達式的第一個字符即非數字字符,則轉換停止,其值為0.00;示例:?VAL(“-789.123”)
&&結果為-789.12?VAL("10A.56")
&&結果為10.00?VAL("C346.05")
&&結果為0.00格式:CTOD(<字符表達式>)
CTOT(<字符表達式>)說明:(1)<字符表達式>必須是一個有效的日
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年租賃合同(設備)
- 2024年進出口業(yè)務委托合同2篇
- 2024年環(huán)保公益捐贈合同3篇
- 2025年度美容院商鋪租賃及美容院品牌授權合同3篇
- 2024年西餐廳特許經營權出租及轉讓合同
- 2025年度智能家電產品采購與市場推廣合同3篇
- 2024年遺體接送與防腐處理合同3篇
- 教育心理學復習參考試題
- 2025年度旅游景區(qū)門衛(wèi)安全責任書3篇
- 2024綠城物業(yè)服務公司戰(zhàn)略合作合同
- 礦用電纜市場發(fā)展預測和趨勢分析
- 失蹤老人歸家協(xié)議書模板
- 2024年初三數學競賽考試試題
- 單位委托員工辦理水表業(yè)務委托書
- 2024年江蘇省蘇州市中考英語真題
- 02S501-2 雙層井蓋圖集標準
- 醫(yī)藥制造企業(yè)資本結構優(yōu)化研究以貴州百靈為例
- 小班幼兒能力測查與分析報告
- GB 31335-2024鐵礦開采和選礦單位產品能源消耗限額
- 醫(yī)院高風險意外事件應急措施和救護機制
- 停車場管理系統(tǒng)說明書
評論
0/150
提交評論