




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、目 錄上一頁下一頁退 出1全國計算機考試二級教程 Visual FoxPro數據庫程序設計計算機等級考試培訓紅葉培訓學校第第2 2章章 Visual FoxProVisual FoxPro程序設計基礎程序設計基礎在Visual FoxPro中,除了能夠對數據表中的數據進行處理,也可以對諸如常量、內存變量等數據表之外的數據進行單獨處理。簡單的數據處理可以通過函數、表達式和單條命令完成,復雜的數據處理則可能需要編寫程序來完成。本章介紹Visual FoxPro程序設計基礎,內容包括常量、內存變量、表達式、常用函數、程序的基本結構以及多模塊程序設計。第第2 2章章 Visual FoxProVisu
2、al FoxPro程序設計基礎程序設計基礎2.12.12.22.22.32.32.42.42.52.52.62.6本章知識點在筆試考試中的分析明細表知識點知識點考核概率考核概率分值分布分值分布考試形式考試形式難易程度難易程度常量40選擇或填空變量20選擇或填空內存變量常用命令40選擇或填空數值、字符、日期時間表達式20選擇或填空字符函數80選擇或填空日期和時間函數20選擇或填空測試函數20選擇或填空程序的概念20選擇、填空或上機程序文件的建立運行60選擇、填空或上機選擇結構20選擇、填空或上機循環結構40選擇、填空或上機參數傳遞40選擇、填空或上機變量的作用域60選擇、填空或上機2.1 常量與
3、變量 1.常量 常量通常是指以文字串形式出現在代碼中的數據,代表一個具體的、不變的值。變量用于存儲數據,一個變量在不同的時刻可以存放不同的數據。常量類型包括數值型、貨幣型、字符型、日期型、日期時間型和邏輯型。不同類型的常量有不同的書寫格式。2.1 常量與變量 1.常量 1)數值型常量(N)數值型常量就是常數,用來表示一個數的大小,由數字0-9、小數點和正負號構成,在內存中占8個字節。2)貨幣型常量(Y)貨幣型常量用來表示貨幣值,在內存中占8個字節,在書寫時要加上一個前置的美元符號($)。貨幣數據在存儲和計算時,采用4位小數,多于4位小數,系統會自動將多余的小數位四舍五入。2.1 常量與變量 3
4、)字符型常量(C)字符型常量也稱字符串,其表示方法是用定界符半角單引號、雙引號或方括號把字符串括起來。2.1 常量與變量 2.1 常量與變量 4) 日期型常量(D)日期型常量在內存中占8個字節,定界符是一對花括號。日期型常量中默認的分隔符是斜杠(/),另外還包括“-”、“.”和空格等。 日期型常量的格式有兩種:(1)傳統的日期格式。月、日各為2位數字,而年份可以是2位數字,也可以是4位數字。系統默認的日期型數據為美國日期格式“mm/dd/yy”(月/日/年)。(2)嚴格的日期格式。表示為yyyy-mm-dd,用這種格式書寫的日期常量能表達一個確切的日期。書寫時要注意:花括號內第一個字符必須是脫
5、字符();年份必須用4位(如2010、2011等);年月日的次序不能顛倒、不能缺省。影響日期格式的設置命令 影響日期格式的設置命令 SET MARK TO 命令功能:用于指定顯示日期時所用的分隔符。如果SET MARK TO后面沒有指定分隔符,表示恢復系統默認的斜杠分隔符。 SET DATE TO AMERICANANSI命令功能:用于設置日期顯示的格式。如果SET DATE TO后面沒有指定日期顯示的格式,表示恢復系統默認的mm/dd/yy(月/日/年)格式。 SET CENTURY ONOFF命令功能:指定如何顯示或解釋一個日期數據的年份。ON顯示世紀,即用4位數字表示年份。OFF不顯示世
6、紀,即用2位數字表示年分。它是系統默認的設置。2.1 常量與變量 5) 日期時間型常量(T)日期時間型常量包括日期和時間兩部分內容,日期時間型數據用8個字節存儲。其中用AP(或A)表示上午,用PM(或P)表示下午,默認值為AM。6)邏輯型常量(L)邏輯型數據只有邏輯真和邏輯假兩個值。邏輯型數據只占用一個字節。邏輯真的常量表示形式有:.T.、.T.、.Y.和.y.。邏輯假的常量表示形式有:.F.、.F.、.N.和.n.。 2.1 常量與變量 2.1 常量與變量 2.變量 變量的命名規則變量的命名規則:變量的值是可以隨時更改的,每個變量對應一個變量名,變量的命名以字母、漢字和下劃線開頭,后接字母、
7、數字、漢字和下劃線構成,開頭不能用數字。分類:分類:分為字段變量和內存變量兩大類 內存變量的數據類型包括內存變量的數據類型包括:字符型(C)、數值型(N)、貨幣型(Y)、邏輯型(L)、日期型(D)和日期時間型(T) 2.1 常量與變量 字段變量字段變量的值100$100“dog”變量名:變量類型:變量值:M數值型100貨幣型$1002.1 常量與變量 2.變量 1) 簡單內存變量 變量的賦值命令有兩個格式:l =l Store TO 在Visual FoxPro中,一個變量在使用前并不需要特別的聲明或定義。當出現內存變量與字段變量同名時,若簡單地用變量名訪問,則系統默認為是字段變量。若要訪問內
8、存變量,則必須在變量名前加上前綴M.(或M-),例如 :M.姓名。 2) 數組 數組是內存中連續的一片存儲區域,它由一系列元素組成,每個數組元素可通過數組名及相應的下標來訪問。每個數組元素相當于一個簡單變量,可以給各元素分別賦值,并且各元素的數據類型可以不同。數組大小由下標的上、下限決定,下限規定為1。2.1 常量與變量 2.1 常量與變量 創建數組:格式:格式1:DIMENSION(,),格式2:DECLARE(,),例如:例如:DIMENSION x(5)DIMENSION x(5),y (2,3)y (2,3)定義了兩個數組。定義了兩個數組。一維數組一維數組x x含有含有5 5個數組元素
9、:個數組元素:x(1)x(1),x(2)x(2),x (3)x (3),x (4)x (4),x (5)x (5)。二維數組二維數組y y含有含有6 6個元素:個元素:y(1,1)y(1,1),y (1,2)y (1,2),y (1,3)y (1,3),y y (2,1)(2,1),y (2,2)y (2,2),y (2,3)y (2,3)2.1 常量與變量 二維數組可以轉化為一維數組 : 二維數組與二維表存在對應關系。如:數組y(1,1)與二維表中的第一行第一列對應;y(2,3)與二維表中的第二行第三列對應。 y(1,1)y (1,2)y (1,3)y (2,1)y (2,2)y (2,3)
10、x(1)x(2)x(3)x(4)x(5)x(6)Y(1,1)Y(1,2)Y(1,3)Y(2.1)Y(2,2)Y(2.3)2.1 常量與變量 3.內存變量常用命令內存變量常用命令1)1)內存變量的賦值內存變量的賦值Visual FoxProVisual FoxPro中的內存變量賦值有兩種格式:中的內存變量賦值有兩種格式:命令格式1:命令格式1:STORE To 功能:計算表達式并將表達式值賦給一個或多個內存變量,等號一次只能給一個內存變量賦值;STORE可以同時給多個變量賦于相同的值,各變量名之間用逗號隔開。 2.1 常量與變量 3.內存變量常用命令內存變量常用命令2 2)表達式值的顯示)表達式
11、值的顯示格式1:?格式2:?注意:不管有沒有指定表達式,格式注意:不管有沒有指定表達式,格式1 1都會輸出一個回車都會輸出一個回車換行符。如果指定了表達式,各表達式值將在下一行的起始處換行符。如果指定了表達式,各表達式值將在下一行的起始處輸出。格式輸出。格式2 2不會輸出一個回車換行符,各表達式值在當前行不會輸出一個回車換行符,各表達式值在當前行的光標所在處直接輸出。能:首先計算出表達式的值,再將該的光標所在處直接輸出。能:首先計算出表達式的值,再將該值賦給內存變量。值賦給內存變量。2.1 常量與變量 3.內存變量常用命令內存變量常用命令3 3)內存變量的顯示)內存變量的顯示命令格式:命令格式
12、:DISPLAYLIST MEMORY LIKETO PRINTERPROMPT/TO FILE 功能:顯示當前內存中的內存變量名稱、作用范圍、數據類型和值。DISPLAYDISPLAY和和LISTLIST的區別在于:的區別在于:D1SPLAYD1SPLAY命令分屏顯示,每顯示一屏暫停,按任意鍵后繼命令分屏顯示,每顯示一屏暫停,按任意鍵后繼續顯示;續顯示;LISTLIST命令連續顯示,中間不停頓,直到顯示完畢。命令連續顯示,中間不停頓,直到顯示完畢。通配符有?和通配符有?和* *兩種兩種: :?代表單個字符,?代表單個字符,* *代表一個或多個字符。若缺省任選項代表一個或多個字符。若缺省任選項
13、LIKELIKE ,則顯示當前內存中的所有內存變量;若選用該,則顯示當前內存中的所有內存變量;若選用該選項,則顯示與選項,則顯示與 相匹配的內存變量。相匹配的內存變量。2.1 常量與變量 3.內存變量常用命令內存變量常用命令4 4)內存變量的清除)內存變量的清除 格式:格式:格式1:CLEAR MEMORY格式2:RELEASE 格式3:RELEASE ALLEXTENDED格式4:RELEASE ALLLIKEEXCEPT說明:格式1用于清除所有內存變量。格式2用于清除指定的內存變量。格式3用于清除所有的內存變量。在人機會話狀態,其作用與格式1相同。如果出現在程序中,則應該加上短語EXTEN
14、DED,否則不能刪除公共內存變量。格式4選用LIKE短語清除與通配符相匹配的內存變量,選用EXCEPT短語清除與通配符不相匹配的內存變量。2.1 常量與變量 3.內存變量常用命令內存變量常用命令5 5)表中數據與數組數據之間的交換)表中數據與數組數據之間的交換 將表的當前記錄復制到數組。命令格式為:將表的當前記錄復制到數組。命令格式為:格式格式1 1:SCATTERSCATTERFIELDSFIELDS MEMOMEMOTOTO BLANKBLANK格式格式2 2:SCATTERSCATTERFIELDS LIKEFIELDS LIKE FIELDS EXCEPTFIELDS EXCEPT M
15、EMOMEMOTOTO BLANKBLANK2.2 表達式 表達式是由常量、變量和函數通過特定的運算符連接起來表達式是由常量、變量和函數通過特定的運算符連接起來的式子。表達式的形式包括:的式子。表達式的形式包括:l 單一的運算對象,包括常量、變量或函數等;單一的運算對象,包括常量、變量或函數等;l 由運算符將運算對象連接起來形成的式子。由運算符將運算對象連接起來形成的式子。表達式無論是簡單還是復雜,都會有一個運算結果,即表表達式無論是簡單還是復雜,都會有一個運算結果,即表達式的值,根據運算結果的不同,表達式可以分為數值表達式達式的值,根據運算結果的不同,表達式可以分為數值表達式、字符表達式、日
16、期時間表達式和邏輯表達式,各類表達式都、字符表達式、日期時間表達式和邏輯表達式,各類表達式都有自己特定的運算符,且存在一定的運算順序。有自己特定的運算符,且存在一定的運算順序。2.2 表達式 1.1.數值、字符與日期時間表達式數值、字符與日期時間表達式 1)1)數值表達式數值表達式又稱為算術表達式,由算術運算符和數值型常量、變量和數又稱為算術表達式,由算術運算符和數值型常量、變量和數值型函數等組成。數值運算是分先后次序的,數值運算的優先級值型函數等組成。數值運算是分先后次序的,數值運算的優先級見表所示。見表所示。比如比如: :鍵入以下命令,并回車運行:鍵入以下命令,并回車運行:?5+(2/7+
17、5/7)?5+(2/7+5/7)* *2(3+5)2(3+5) 優先級運算符說明1()形成表達式內的子表達式2*或乘方運算3*、/、%乘、除運算、求余運算4+、加、減運算2.2 表達式 1.1.數值、字符與日期時間表達式數值、字符與日期時間表達式 字符表達式字符表達式: :字符串表達式由字符串運算符將字符型數據連起字符串表達式由字符串運算符將字符型數據連起來形成,結果仍是字符型數據。來形成,結果仍是字符型數據。字符運算符有以下兩個,它們的優先級相同。字符運算符有以下兩個,它們的優先級相同。+ +:前后兩個字符串首尾相接形成一個新的字符:前后兩個字符串首尾相接形成一個新的字符串。串。- -:連接
18、前后兩個字符串,并將前字符串尾部的:連接前后兩個字符串,并將前字符串尾部的空格移到合并后的字符串尾部空格移到合并后的字符串尾部 2.2 表達式 1.1.數值、字符與日期時間表達式數值、字符與日期時間表達式 日期時間表達式日期時間表達式: :運算符只有兩個分別是加(+)和減(-)。書寫時格式有一定限制,不能任意組合。例如不能用運算符“+”號將兩個連接起來。合法的日期時間表達式格式如表所示。格式類型結果及類型+日期型指定若干天后的日期+日期型指定若干天后的日期-日期型指定若干天后的日期-數值型兩個指定日期相差的天數2.2 表達式 2. 關系表達式 1)關系表達式關系表達式通常也稱為簡單邏輯表達式,
19、由關系運算符將兩個運算對象連接起來形成。即 ;運算結果是邏輯型數據。注意:運算符= =和$僅適用于字符型數據。其他運算符適用于任何數據;在比較運算時,前后兩個運算對象的類型必須相同,但日期和日期時間型數據可以比較。2.2 表達式 2.2. 關系表達式關系表達式2) 2) 設置字符的排序次序設置字符的排序次序當比較兩個字符串時,自左向右逐個比較,一但發現兩個當比較兩個字符串時,自左向右逐個比較,一但發現兩個字符不同,就根據這兩個字符的大小決定字符串的大小。字符不同,就根據這兩個字符的大小決定字符串的大小。字符的大小取決于字符集中字符的排序次序,排在前面的字符的大小取決于字符集中字符的排序次序,排
20、在前面的小,排在后面的大。小,排在后面的大。在中文在中文Visual FoxProVisual FoxPro中,默認的字符排序次序名為中,默認的字符排序次序名為PinYinPinYin,但可以重新設置。排序次序名必須放在引號當中。,但可以重新設置。排序次序名必須放在引號當中。設置字符排序次序的命令是:設置字符排序次序的命令是:SET COLLATE TO SET COLLATE TO “ ”2.2 表達式 2.2. 關系表達式關系表達式3) 3) 字符串精確比較與字符串精確比較與EXACTEXACT設置設置用雙等號運算符(=)精確比較:只有當兩個字符串完全相同(包括空格及位置),才會為邏輯真
21、.T.。用單等號運算符(=)比較,運算結果與 set exact onoff 的設置有關。ON 先在較短的字符串尾加若干空格,使兩個字符串的長度相等,再進行精確比較。如:“計算機世界”=“計算機”,在ON狀態下結果為.F.。 OFF 只要右邊字符串與左邊字符串的前面部分內容相匹配,即為邏輯真 .T.。如:“計算機世界”=“計算機”,OFF狀態下結果為 .T.。2.2 表達式 2.2. 關系表達式關系表達式3) 3) 字符串精確比較與字符串精確比較與EXACTEXACT設置設置舉例:字符串比較與EXACT設置示例。Set exact off Store “會計” to s1Store “會計 ”
22、 to s2 &注意“會計”后有一空格Store “會計電算化” to s3?s1=s3, s3 =s1, s1=s2, s2= s1, s2=s1運行結果: .F. .T. .F. .T. .F. Set exact ON &將較短的字符串填充空格,等長比較 ?s1 = s3, s3=s1, s1=s2, s2=s1, s2=s1運行結果: .F. .F. .T. .T. .F.2.2 表達式 2.2. 關系表達式關系表達式4) 4) 賦值與相等比較的區別賦值與相等比較的區別內存變量的賦值命令與相等比較運算都使用等號,必須注內存變量的賦值命令與相等比較運算都使用等號,必須注意
23、兩者之間的區別。意兩者之間的區別。賦值命令格式:賦值命令格式: = 相等比較運算格式:相等比較運算格式: =2 2.2 表達式 3.3. 邏輯表達式邏輯表達式 邏輯表達式由邏輯運算符將邏輯型數據連接起來而形邏輯表達式由邏輯運算符將邏輯型數據連接起來而形成,其運算結果仍然是邏輯型數據。邏輯運算符有成,其運算結果仍然是邏輯型數據。邏輯運算符有3 3個:個: .NOT. .NOT.或或! !(邏輯非)、(邏輯非)、.AND.AND.(邏輯與)及(邏輯與)及.OR.OR.(邏輯(邏輯或)。也可以省略兩端的點,寫成或)。也可以省略兩端的點,寫成NOTNOT、ANDAND、OROR。其優先。其優先級順序依
24、次為級順序依次為NOTNOT、ANDAND、OROR。 邏輯非是單目運算(運算對象只有一個),其運算結邏輯非是單目運算(運算對象只有一個),其運算結果與操作數的值正好相反。果與操作數的值正好相反。 邏輯與具有邏輯與具有“并且并且”的含義,只有當兩個操作數均為的含義,只有當兩個操作數均為真時,運算結果才為真,否則為假。真時,運算結果才為真,否則為假。 邏輯或具有邏輯或具有“或者或者”的含義,兩個操作數中,只要有的含義,兩個操作數中,只要有一個為真,運算結果就為真。否則為假。一個為真,運算結果就為真。否則為假。2.2 表達式 3.3. 邏輯表達式邏輯表達式邏輯運算符的上述運算規則可以用下表表示。邏
25、輯運算符的上述運算規則可以用下表表示。RS.NOT.RR.AND.SR.OR.S.T.T.F.T.T.T.F.F.F.T.F.T.T.F.T.F.F.T.F.F.2.2 表達式 4. 4. 運算符的優先級運算符的優先級每類運算符中包含的運算符都有自己的優先次序。同樣每類運算符中包含的運算符都有自己的優先次序。同樣在各類運算符之間也存在運算優先次序,具體次序如下:在各類運算符之間也存在運算優先次序,具體次序如下:先運行算術運算符、字符串運算符和日期時間運算符;先運行算術運算符、字符串運算符和日期時間運算符;其次運行關系運算符;其次運行關系運算符;最后運行邏輯運算符。最后運行邏輯運算符。另外還包括
26、以下規則:另外還包括以下規則:圓括號的優先級最高。圓括號的優先級最高。相同優先級的運算符按從左到右的順序進行運算。相同優先級的運算符按從左到右的順序進行運算。字符串連接運算符和加、減運算符優先級一樣。字符串連接運算符和加、減運算符優先級一樣。需注意圓括號的作用:有時候,在表達式的適當地方插需注意圓括號的作用:有時候,在表達式的適當地方插入圓括號不是為了改變其他運算符的運算次序,而是為了提入圓括號不是為了改變其他運算符的運算次序,而是為了提高代碼的可讀性。高代碼的可讀性。2.3 常用函數 函數是用程序來實現的一種數據運算或轉換。函數可以用函數名加一對圓括號加以調用,自變量放在圓括號里,如ABS(
27、 x)。在Visual FoxPro中,將函數分為數值函數、字符函數、日期和時間函數、數據類型轉換函數和測試函數五類。函數的基本形式如下:函數名()說明:(1)函數名后面是一對圓括號,圓括號內可以有參數,也可以沒有參數。(2)參數是函數的自變量,可以是常量,也可以是變量,但參數的數據類型是固定的。(3)函數運算后會返回一個值,稱為函數值。2.3 常用函數 1.1.數值函數數值函數1)1)絕對值函數:ABS()2)2)符號函數:SIGN()3)平方根函數: SQRT()4)圓周率函數:PI() 5)求整數函數:INT():返回指定數值表達式的整數部分 CEILING():返回不小于指定數值表達式
28、的最小整數 FLOOR():返回不大于指定表達式的最大整數 2.3 常用函數 1.1.數值函數數值函數6) 6) 四舍五入函數: ROUND(,)功能:返回指定表達式在指定位置四舍五入后的結果;如果“表達式2”0,表示要保留的小數位數;如果“表達式2”0表示整數部分的舍入位數;如果“表達式2”=0表示保留整數,沒有小數部分。例2.17 x=456.456?ROUND(x,2),ROUND(x,1),ROUND(x,0),ROUND(x,-1) 456.46 456.5 456 460 2.3 常用函數 1.1.數值函數數值函數7) 7) 求余數函數格式:MOD(,)功能:返回兩個數值相除后的余
29、數;是被除數,是除數;余數的正負號與除數相同;如果被除數與除數同號,那么函數值即為兩數相除的余數;如果被除數與除數異號,則函數值為兩數相除的余數再加上除數的值。例 ?MOD(10,3),MOD(10,-3),MOD(-10,3),MOD(-10,-3) 1 -2 2 -12.3 常用函數 1.1.數值函數數值函數8) 8) 求最大值和最小值函數格式MAX(, ,)MIN(, ,)功能:MAX( )計算各自變量表達式的值,并返回其中的最大值。MIN( )計算各自變量表達式的值,并返回其中的最小值。比如: ?MAX(5,9,2),MAX(3,23,13),MIN(自行車, 汽車, 火車) 9 3
30、火車 2.3 常用函數 2.字符函數:1)字符串長度函數:LEN() 2)大小寫轉換函數:LOWER(),大寫字母轉換成小寫字母,其他字符不變;UPPER(),小寫字母轉換成大寫字母,其他字符不變。3)空格字符串生成函數 :SPACE()4)刪除前后空格函數:TRIM( )返回指定字符表達式值去掉尾部空格后形成的字符串;LTRIM( )返回指定字符表達式值去掉前導空格后形成的字符串;ALLTRIM( )返回指定字符表達式值去掉前導和尾部空格后形成的字符串。 2.3 常用函數 2.2.字符函數字符函數: :5)5)取子串函數:取子串函數:LEFT( )從指定表達式值的左端取一個指定長度的子串作為
31、函數值;RIGHT( )從指定表達式值的右端取一個指定長度的子串作為函數值;SUBSTR( )從指定表達式值的指定起始位置取指定長度的子串作為函數值。SUBSTR( )函數中,若缺省參數,則函數從指定位置一直取到最后一個字符。例2.24 Store “good bye!” to x?left(x,2),substr(x,6,2)+substr(x,6),right(x,3)go bybye! Ye! 2.3 常用函數 2.2.字符函數字符函數: :6)6)計算子串出現次數函數計算子串出現次數函數格式:格式:OCCURSOCCURS( ,2)功能:返回第一個字符串在第二個字符串中出現的次功能:返
32、回第一個字符串在第二個字符串中出現的次數,函數值為數值型。若第一個字符串不是第二個字符串數,函數值為數值型。若第一個字符串不是第二個字符串的子串,函數值返回的子串,函數值返回0 0。例例2.25 Store 2.25 Store abcracadabraabcracadabra to s to s?occurs(?occurs(a a,s),occurs(,s),occurs(b b,s),occurs(,s),occurs(c c,s,s),occurs(),occurs(e e,s),s) 5 2 2 0 5 2 2 02.3 常用函數 2.2.字符函數字符函數: :7) 7) 求子串位置
33、函數:求子串位置函數:AT(AT(,);ATC(ATC(,)。功能:功能:AT( )AT( )的函數值為數值型。如果的函數值為數值型。如果 1是是 2的子串,則返回的子串,則返回 1的首字符在的首字符在 2中的位置;若不是子串,則返回中的位置;若不是子串,則返回0 0。 用于表明要在用于表明要在 2中搜索中搜索 1的第幾次出現,其默認值是的第幾次出現,其默認值是1 1。例例 Store Store “This is Visual FoxPro6.0This is Visual FoxPro6.0” to x to x?at(?at(“foxfox”,x),atc(,x),atc(“foxfox
34、”,x),at(,x),at(“isis”,x,3),at(,x,3),at(“xoxo”,x),x) 0 16 10 0 0 16 10 02.3 常用函數 2.2.字符函數:字符函數: 8)8)子串替換函數子串替換函數 格式:STUFF(,)功能:用值替換中由和指定的一個子串。替換和被替換的字符個數不一定相等。如果值是0,則插在由指定的字符前面。如果值是空串,那么中由和指定的子串被刪去。例2.27 s1=good bye!“s2=morning“?stuff(s1,6,3,s2),stuff(s1,1,4,s2) good morning! morning bye!2.3 常用函數 2.2
35、.字符函數字符函數: :字符函數是指自變量一般是字符型數據的函數字符函數是指自變量一般是字符型數據的函數 9)9)字符替換函數字符替換函數 格式:CHRTRAN(,)功能:該函數的自變量是三個字符表達式。當中的一個或多個相同字符與中的某個字符相匹配時,就用中的對應字符(與中的字符具有相同的位置)替換這些字符。如果包含的字符個數少于包含的字符個數,導致沒有對應的字符,那么中相匹配的各字符將被刪除。如果中包含的字符個數多于中包含的字符個數,多余字符將被忽略。例2.28 a=chrtran(AFACAD,ACD,X56)b=chrtran(老師好!,老師,您)?a,bXFX5X6 您好! 2.3 常
36、用函數 2.2.字符函數字符函數: :字符函數是指自變量一般是字符型數據的函數字符函數是指自變量一般是字符型數據的函數 10) 10) 字符串匹配函數字符串匹配函數格式:LIKE(,)功能:比較兩個字符串對應位置上的字符,若所有對應字符都匹配,函數返回邏輯真(.T.),否則返回邏輯假(.F.)。中可以包含通配符“*”和“?”。“*”可以與任何數目的字符相匹配,“?”可以與任何單個字符相匹配。例2.29 x=“abc”y=“abcd”?like(“ab*”,x),like(x,”ab*”),like(“ab*”,y),like(x,y),like(“?b?”,x),like(“Abc”,x).T
37、. .F. .T. .F. .T. .F. 2.3 常用函數 3.3.日期和時間函數日期和時間函數1)1)系統日期和時間函數系統日期和時間函數 DATE( )返回當前系統日期,函數值為日期型。TIME( )以24小時制的hh:mm:ss格式返回當前系統時間,函數值為字符型。DATETIME( )返回當前系統日期時間,函數值為日期時間型2)年份、月份和天數函數 YEAR()MONTH()DAY()比如: Store2011-07-20 to d ? year(d),month(d),day(d) 2011 7 202.3 常用函數 3.3.日期和時間函數日期和時間函數3)3)時分秒函數時分秒函數
38、HOURHOUR( )MINUTEMINUTE( )SECSEC( ) 2.3 常用函數 4.數據類型轉換函數1) 數值轉換成字符串格式:STR(,)功能:將的值轉換成字符串。轉換要根據需要自動四舍五入。返回的字符串的理想長度L應該是的值的整數部分位數加上值。如果大于L,則字符串加前導空格以滿足規定的長度;如果大于等于L,則優先滿足整數部分而自動調小數位數;如果小于L的整數部分位數,則返回“*”號。的默認值為0,的默認值為10。例2.33 Store -345.456 TO n?str(n,9,2), str(n,6,2), str(n,3), str(n,6), str(n)-345.46
39、-345.5 * -345 -345 2.3 常用函數 4.4.數據類型轉換函數數據類型轉換函數2) 2) 字符串轉換成數值字符串轉換成數值 格式:VAL()功能:將由數字符號組成的字符型數據轉換成相應的數值型數據。例2.34 Store -456 To xStore .78 to y &注意78前有個“.”Store A78 to z?val(x+y), val(x+z), val(z+y) -456.78 -456.00 0.002.3 常用函數 4.4.數據類型轉換函數數據類型轉換函數3) 3) 字符串轉換成日期或日期時間字符串轉換成日期或日期時間 格式:CTOD()CTOT()
40、功能:CTOD()將值轉換成日期型數據。CTOT()將值轉換成日期時間型數據。例2.35 set date to ymd Set century onSet century to 19 rollover 30?ctod(04/28/11),ctot(04/28/11 11:00:00)04/28/2011 04/28/2011 11:00:00 AM2.3 常用函數 4.4.數據類型轉換函數數據類型轉換函數4)4)日期或日期時間轉換成字符串日期或日期時間轉換成字符串 格式:DTOC(,1)TTOC(,1)功能:DTOC( )將日期型數據或日期時間數據的日期部分轉換成字符串。TTOC( )將日期
41、時間數據轉換成字符串。例2.36 假設當前的系統日期時間為2011-03-26 11:55:00Set date to mdySet century offStore datetime() to t?t03/26/11 11:54:39 PM?dtoc(t), dtoc(t,1),ttoc(t),ttoc(t,1) 03/26/11 20110326 03/26/11 11:55:00 PM 201103261155002.3 常用函數 4.4.數據類型轉換函數數據類型轉換函數5)5)宏替換函數宏替換函數 格式:&.功能:替換出字符型變量的內容,即&的值是變量中的字符串。例2.
42、37 Use 學生xm=“姓名”x=“5+6”?xm,&xm,x,&x姓名 張海 5+6 112.3 常用函數 5.5.測試函數測試函數1)1)值域測試函數格式:BETWEEN ( , , )功能:判斷一個表達式的值是否介于另外兩個表達式的值之間。在和之間時,函數值為真(.T.),否則為假(.F.);如果和,其中一個是NULL值,那么函數值也是NULL值。3個變量可以是數值型、日期型、貨幣型等,但3個變量的類型要保持一致。例2.38 Store .NULL. to xStore 100 to y?between(150,y,y+100),between(90,x,y),betw
43、een(50,100,電腦) .T. .NULL. 3個變量類型不一致,提示找不到變量 2.3 常用函數 5.測試函數2)空值(NULL值)測試函數 格式:ISNULL()功能:判斷一個表達式的運算結果是否為NULL值,若是NULL值則返回邏輯真(.T.),否則返回邏輯假(.F.)。例2.39 Store .NULL. TO x?x,isnull(x).NULL. .T.2.3 常用函數 5.5.測試函數測試函數3)3)空值(NULL值)測試函數 格式:EMPTY()功能:根據指定表達式的運算結果是否為“空”值,返回邏輯真(.T.)或邏輯假(.F.)。注意:空值(NULL)測試函數與“空”值E
44、MPTY()測試函數是兩個不同的概念。比如: ?empty(123),empty(0),empty(ctod( ),empty($0), empty(space(5) .F. .T. .T. .T. .T.2.3 常用函數 5.5.測試函數測試函數4) 4) 數據類型測試函數 格式:VARTYPE(,)功能:測試的類型,返回一個大寫字母,函數值為字符型。比如:Store “大學” to MStore null to NStore $200 to Y?vartype(M), vartype(N), vartype(Y),vartype(66),vartype(大學)C X Y N U2.3 常用
45、函數 5.5.測試函數測試函數5) 5) 條件測試函數條件測試函數 格式:IIF(,)功能:測試的值。若為邏輯真.T.,函數返回的值;若為邏輯假.F.,函數返回的值。和的類型不要求相同。例2.42 ?iif(100100,50,150),iif(300100,250,350)150 250?iif(len(space(5)5,1,-1) -12.3 常用函數 5.5.測試函數測試函數6) 6) 表文件首測試函數表文件首測試函數 格式:BOF()功能:測試當前表文件或指定文件中的記錄指針是否指向了文件首,若是返回邏輯真(.T.),否則返回邏輯假(.F.),表文件首是指第一條記錄前面的位置。若指定
46、工作區上沒有打開表文件,函數返回邏輯假(.F.)。若表文件不包含任何記錄,函數返回邏輯真(.T.)。2.3 常用函數 5.5.測試函數測試函數7) 7) 表文件尾測試函數表文件尾測試函數 格式:EOF()功能:測試指定表文件中的記錄指針是否指向文件尾,若是則返回真(.T.),否則返回邏輯假(.F.),若缺少自變量,則測試當前表文件,若在指定工作區上沒有打開表文件,函數返回邏輯假,若表文件中不包含任何記錄,函數返回邏輯真。表文件尾是指最后一條記錄的后面位置。2.3 常用函數 5.5.測試函數測試函數8) 8) 記錄號測試函數記錄號測試函數 格式:RECNO()功能:返回當前表或指定文件中當前記錄
47、的記錄號。9)記錄個數測試函數 格式:RECCOUNT()功能:返回當前表文件或指定表文件中物理上存在的記錄個數記錄刪除測試函數 格式:DELETED( )功能:測試當前表文件或指定表文件中的當前記錄是否有刪除標記“*”。若有就返回邏輯真,否則返回邏輯假。2.4 程序與程序文件程序與程序文件1.1.程序的概念程序的概念1)1)基本概念基本概念程序是能夠完成一定任務的命令的有序集合。這組命程序是能夠完成一定任務的命令的有序集合。這組命令被存放在稱為程序文件或命令文件的文本文件中,程序令被存放在稱為程序文件或命令文件的文本文件中,程序文件的系統默認擴展名是文件的系統默認擴展名是.prg.prg.2
48、)2)書寫要求書寫要求程序中的每條命令都以回車結尾,一行只能寫一條命程序中的每條命令都以回車結尾,一行只能寫一條命令;若要分行書寫,應在一行程序的結尾處輸入分號(令;若要分行書寫,應在一行程序的結尾處輸入分號(; ;)續行符。續行符。3)3)程序特點程序特點2.4 程序與程序文件程序與程序文件2.2.程序文件的建立與運行程序文件的建立與運行1 1)創建程序)創建程序通過項目管理器創建通過文件菜單創建通過命令創建2 2)保存程序)保存程序通過菜單保存直接關閉沒有保存的程序,則會彈出相應對話框,提示保存或放棄按CTRL+W組合鍵保存3)修改程序通過項目管理器的“修改”選項打開程序并修改通過文件菜單
49、中“打開”選項打開程序并修改通過命令MODIFY COMMAND打開程序并修改4)運行程序通過項目管理器的“運行”按鈕運行程序通過程序菜單中“運行”選項運行程序通過命令DO運行程序2.4 程序與程序文件程序與程序文件3.3.簡單的輸入簡單的輸入/ /輸出命令輸出命令1. INPUT1. INPUT TO TO 2. ACCEPT 2. ACCEPT TO TO 3. WAIT3. WAIT TO TO WINDOWWINDOWAT AT , NOWAITNOWAIT CLEAR | NOCLEARCLEAR | NOCLEARTIMEOUT TIMEOUT 2.5 程序的基本結構程序的基本結構
50、 1.1.順序結構順序結構順序結構是最簡單的程序結構,它按命令在程序中出現的順序結構是最簡單的程序結構,它按命令在程序中出現的先后次序依次運行。先后次序依次運行。例例2.47 CLEAR 2.47 CLEAR & &清除主窗口顯示的全部信息清除主窗口顯示的全部信息r=3 r=3 & &設置圓的半徑設置圓的半徑* * 依次計算周長和面積依次計算周長和面積p=2p=2* *pi()pi()* *r r & &函數函數PI( )PI( )返回圓周率返回圓周率s=pi()s=pi()* *r2r2* * 輸出計算結果輸出計算結果? ?”周長周長= =”,
51、p,p?”面積面積= =”,s,s主窗口中顯示:周長主窗口中顯示:周長=18.85 =18.85 面積面積=28.2743=28.27432.5 程序的基本結構程序的基本結構 2.2.選擇結構選擇結構1)1)簡單的條件語句簡單的條件語句IF IF 1 ENDIF ENDIF2)2)一般形式的條件語句一般形式的條件語句IF IF 1 ELSE ELSE 2 ENDIF ENDIF 2.5 程序的基本結構程序的基本結構 2.2.選擇結構選擇結構3)3)多分支語句多分支語句 語句格式:語句格式: DO CASEDO CASE CASE CASE 1 1 CASE CASE 2 2 CASE CASE
52、 n n OTHERWISE OTHERWISE ENDCASE ENDCASE2.5 程序的基本結構程序的基本結構 3.3.循環結構循環結構循環結構也稱為重復結構,是指程序在運行過程中循環結構也稱為重復結構,是指程序在運行過程中,其中的某段代碼被重復運行若干次。被重復運行的代,其中的某段代碼被重復運行若干次。被重復運行的代碼段通常稱為循環體。碼段通常稱為循環體。Visual FoxProVisual FoxPro支持的循環結構支持的循環結構語句包括:語句包括:DO WHILE - ENDDODO WHILE - ENDDO、FOR-ENDFORFOR-ENDFORSCAN-ENDSCANSC
53、AN-ENDSCAN語句。語句。2.5 程序的基本結構程序的基本結構 3.3.循環結構循環結構1)DO WHILE 1)DO WHILE ENDDO ENDDO這是一個功能全面使用頻率較高的循環語句。這是一個功能全面使用頻率較高的循環語句。語句格式:語句格式: DO WHILE DO WHILE LOOP LOOP EXIT EXIT ENDDO ENDDO運行該語句時,先判斷運行該語句時,先判斷 是否為真,如果是真則運行是否為真,如果是真則運行DO WHILEDO WHILE與與ENDDOENDDO間的循環體,當運行到間的循環體,當運行到ENDDOENDDO時,再返回時,再返回DO WHIL
54、E DO WHILE 重新判斷循環重新判斷循環條件是否為真,確定是否再次運行循環體。若條件為假則結束循環語句條件是否為真,確定是否再次運行循環體。若條件為假則結束循環語句運行運行ENDDOENDDO后的語句。后的語句。2.5 程序的基本結構程序的基本結構 3.循環結構1)DO WHILE 1)DO WHILE ENDDO ENDDO例如CLEARCLEARX=12345X=12345Y=0Y=0DO WHILE X0DO WHILE X0Y=Y+X%10Y=Y+X%10X=INT(X/10)X=INT(X/10)ENDDOENDDO?Y?Y主窗口中顯示:152.5 程序的基本結構程序的基本結構
55、 3.3.循環結構循環結構2)FOR-ENDFOR 2)FOR-ENDFOR 語句語句該語句通常用于已知循環次數情況下的循環操作。語句格式: FOR = TO STEP LOOP EXIT ENDFOR|NEXT先將初值賦給循環變量,然后判斷循環條件是否成立,若成立,則運行循環體,然后循環變量增加一個步長值,并在次判斷循環條件確定下一次的循環操作。如果條件不成立則結束循環運行ENDFOR后的語句。2.5 程序的基本結構程序的基本結構 3.3.循環結構循環結構2) FOR-ENDFOR 2) FOR-ENDFOR 語句語句比如比如: :計算計算1+2+3+1+2+3+5+5的值。的值。CLEAR
56、CLEARs=0s=0FOR i=1 TO 10FOR i=1 TO 10 s=s+I s=s+IENDFORENDFOR?s=,s?s=,sRETURNRETURN主窗口中顯示:主窗口中顯示:15152.5 程序的基本結構程序的基本結構 3.3.循環結構循環結構3) SCAN-ENDSCAN 3) SCAN-ENDSCAN 語句語句 該循環語句也稱為掃描循環語句,功能相當于該循環語句也稱為掃描循環語句,功能相當于LOCATELOCATE、CONTINUECONTINUE和和DO WHILE- ENDDODO WHILE- ENDDO語句功能的合并。一般只是用于處理表中記錄,語語句功能的合并。
57、一般只是用于處理表中記錄,語句可指明需處理記錄的范圍及應滿足的條件。句可指明需處理記錄的范圍及應滿足的條件。語句格式:語句格式: SCAN SCAN FOR FOR WHILE WHILE 2 LOOP LOOP EXIT EXIT ENDSCAN ENDSCAN運行該語句時,記錄指針自動、依次地在當前表的指定范圍內滿運行該語句時,記錄指針自動、依次地在當前表的指定范圍內滿足條件的記錄上移動,對每一條記錄運行循環體內的命令。足條件的記錄上移動,對每一條記錄運行循環體內的命令。2.6 多模塊程序設計多模塊程序設計模塊是一個相對獨立的程序段,它可以被其他模塊所調用,也可以去調用其他的模塊。通常把被其他模塊調用的模塊稱為子程序,把調用其他模塊而沒有被其他模塊調用的模塊稱為主程序。1.模塊的定義和調用 1)模塊及其定義2)模
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 網絡編輯師證書常見陷阱分享試題及答案
- 特許金融分析師考試考生分享學習經驗試題及答案
- 2024年網絡編輯師職業素養考核試題及答案
- 理財師考試涉及的法律法規試題及答案
- 網絡編輯師稿件編輯思路試題及答案
- 2024年網絡編輯師知識分享試題及答案
- 2025年特許金融分析師考試考前準備試題及答案
- 網絡編輯師證書考試難點與試題及答案分析
- 常熟初二期末試卷及答案
- 曹縣一中英語試卷及答案
- 2024年阜陽太和縣第二人民醫院招聘筆試真題
- 癌癥治療協議書模板
- 2025年平頂山文化藝術職業學院高職單招職業技能測試近5年常考版參考題庫含答案解析
- 弘揚航天精神中國航天日主題宣教課件
- 上海市寶山區上海交大附中2024-2025學年高考生物試題模擬試卷(8)生物試題含解析
- 私募基金財務管理制度版本
- 人教部編版語文四年級下冊第七單元大單元教學設計
- 2025-2030全球及中國煉油廠服務行業市場現狀供需分析及投資評估規劃分析研究報告
- 2025中國海洋大學輔導員考試題庫
- 土地房屋測繪項目投標方案技術標
- 2025年河北省初中學業水平模擬考試英語試卷(含答案含聽力原文無音頻)
評論
0/150
提交評論