VisualFoxPro的數(shù)據及其運算.ppt_第1頁
VisualFoxPro的數(shù)據及其運算.ppt_第2頁
VisualFoxPro的數(shù)據及其運算.ppt_第3頁
VisualFoxPro的數(shù)據及其運算.ppt_第4頁
VisualFoxPro的數(shù)據及其運算.ppt_第5頁
已閱讀5頁,還剩46頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第三章 Visual Foxpro中的數(shù)據與運算,本章目錄,3.1 Visual FoxPro的數(shù)據類型 3.2 Visual FoxPro的常量與變量 3.3 Visual FoxPro的函數(shù) 3.4 Visual FoxPro的表達式,3.1 Visual FoxPro的數(shù)據類型,數(shù)據包括兩個方面:數(shù)據內容與形式 數(shù)據內容指的是數(shù)據的值 數(shù)據形式指的是數(shù)據的存儲形式和操作使用方式也就是數(shù)據類型 在VF中為了數(shù)據存儲和使用方便我們把數(shù)據分為這以下幾種類型: (字符型、數(shù)據型、貨幣型、日期型、日期時間型、邏輯型、備注型和通用型等8種數(shù)據類型),字符型(C)(character) 1字節(jié) 數(shù)值型

2、(N)(numeric) 包括:數(shù)值型(N)、浮點型(F)、整型(I)、雙精度型(B) 8字節(jié) 貨幣型(Y)(currency) 8字節(jié) 日期型(D)(date) 8位 日期時間型(T) (datetime) 8位 邏輯型(L)(logical) 1位 備注型(M)(memo) 4字節(jié) 通用型(G)(general) 二進制字符型和備注型,3.2 Visual FoxPro的常量與變量,運行過程中,保持不變的數(shù)據為“常量”VF中的常量類型有:字符型、數(shù)值型、邏輯型、日期型和日期時間型。 字符型常量 用字符串定界符括起來的一串字符,字符串定界符有單引號或雙引號和方括號,如:ABCD,字符,123

3、ABC 數(shù)值型常量 如:-20,16.68,3.14,1.6E-12表示1.610-12 在內存中占用8個字節(jié), 貨幣型常量 貨幣型常量與數(shù)值型數(shù)據書寫方法類似,但數(shù)字前面要加上$,如:$123,$321.123456小數(shù)部分保留4位,多余的位數(shù)四舍5入 邏輯型常量 邏輯值只有真和假兩種,通常用小圓點括起來的.T.、.t.、.Y.、.y.表示真,.F. 、.f.、.N.、.n.表示假 日期型常量和日期時間型常量 表示時間,年 月 日 各部分和分隔符分開。系統(tǒng)默認斜杠(/)分隔符,還可以用(-),(.) 如:1999/04/22,1999-04-22,l999-04-24 10:00a 1999

4、.04.22 ,4:21:22 p,日期格式的中世紀值 命令方式:SET CENTURY ON|OFF|TONcentury 菜單方式:工具-選項-區(qū)域 設置日期的顯示格式 SET DATE TO american|french|british 設置日期分隔符 SET MARK TO日期分隔符 嚴格的日期格式 SET STRICTDATE TO0|1|2,3.2.2變量,在程序的執(zhí)行過程中可取不同數(shù)值的量稱為變量。有2種形式的變量:內存變量和字段變量。 字段變量就是表中的字段名,我們建的“學生表”中的字段就是字段變量 字段是定義在表中,是永久性變量。而內存變量是內存中的一個存儲區(qū)域,放在內存中

5、的叫內存變量。,1.命名規(guī)則,每個變量都有一個名稱,叫做變量名,變量名的命名規(guī)則是 (1)以字母、數(shù)字及下劃線組成,可以使用漢字作變量名。 (2)以字母或下劃線開始。 (3)長度為1128個字符,每個漢字占2字節(jié) (4)不能使用VISUAL FOXPRO的保留字。,2字段變量,字段變量就是表中的字段名,它是表中最基本的數(shù)據單元。 它的值就是表記錄指針所指的那條記錄對應字段的值。 字段變量的類型可以是Visual FoxPro的任意數(shù)據類型。字段變量的名字、類型、長度等是在定義表結構時定義的。,3內存變量,Visual FoxPro中,除了字段變量外,還有一種變量,它獨立于表,是一種臨時工作單元

6、,稱為內存變量。內存變量的類型有字符型、數(shù)值型、貨幣型、邏輯型、日期型和日期時間型等。 可直接用內存變量名對內存變量進行訪問,但若它與字段變量同名時,則應該用如下格式進行訪問: M.內存變量名 M-內存變量名,內存變量的操作,1).內存變量的賦值 格式1:STORE TO 格式2: = 2)內存變量的顯示 格式1:LIST MEMORY LIKE TO PRINTER | TO FILE 格式2:DISPLAY MEMORY LIKE TO PRINTER | TO FILE LIST MEMORY,如果內存變量多,一屏顯示不下,則自動向上滾動。DISPLAY MEMORY分屏顯示與通配符匹配

7、的所有內存變量,如果內存變量多,顯示一屏后暫停,按任意鍵之后再繼續(xù)顯示下一屏。,3)內存變量的建立 指的是將內存變量保存到一個文件中。 格式:SAVE TO ALLLIKE|EXCEPT 舉例: 4)內存變量的恢復 指的是將內存變量重新調入內存 格式:RESTORE FROM ADDITIVE 5) 內存變量的清除 格式1:CLEAR MEMORY 格式2:RELEASE ALL LIKE | EXCEPT 功能:格式1清除所有內存變量。格式2清除指定的內存變量。 例 P40,4.數(shù)組變量,數(shù)組變量指的是一組變量的集合,也就是我們把多個變量組合到一起。數(shù)組變量和其它變量不同的是必須先定義后使用

8、。 1.數(shù)組的定義 格式1:DIMENSION(, 格式2:DECLARE(, 說明:下標上界非負,可以是常量、變量,表達式等,下標下界為1,二維數(shù)組用,分開。,舉例 例如:DIMENSION a(8),b(3,4) 分別定義了一個一維數(shù)組a,和二維數(shù)組b 一維數(shù)組為:a(1), a(2), a(3), a(4), a(5), a(6), a(7), a(8) 二維數(shù)組分別為: b(1,1), b(1,2) , b(1,3) , b(1,4), b(2,1), b(2,2).b(3,1),b(3,2).b(4,4) 數(shù)組的賦值 a=80 b(1,1)=24 b(2,1)=“hello” P41

9、 例。,3.3 Visual FoxPro的函數(shù),函數(shù)是一段代碼,用來進行特定的數(shù)據運算或轉換。大家可以回憶一下我在EXCEL中用的“sum(),average()函數(shù),它們的功能是求和,求平均值。 VISUAL FOXPRO的函數(shù)有兩種 一種是用戶自定義的函數(shù) (用戶自已寫程序定義) 一種是系統(tǒng)函數(shù)(系統(tǒng)已經寫好了的函數(shù)用戶直接調用就可以了)調用方法:函數(shù)名(參數(shù)) 3.3.1 數(shù)值函數(shù) 3.3.2 字符函數(shù) 3.3.3 日期類和時間函數(shù) 3.3.4 轉換函數(shù) 3.3.5 測試函數(shù),3.3.1、數(shù)值函數(shù), 絕對值函數(shù) 格式:ABS() 功能:ABS()返回指定的數(shù)值表達式的絕對值。 例如:

10、? abs(-5) (2)求最大值和最小值函數(shù) 格式:MAX(,) MIN(,) 例 ? MAX(2,12,05),MIN(汽車,飛機,輪船) 結果: 2 飛機,后面的函數(shù)我們就舉舉例子: (4)求平方根函數(shù) 格式:SQRT() ? SQRT(2*SQRT(4) (5)求指數(shù)函數(shù) 格式:EXP() 功能:求出以e為底,指數(shù)的值。 (6)求對數(shù)函數(shù) 格式:LOG() (7)取整數(shù)函數(shù) 格式:INT()(取整) 格式: CELING ()(取大于或等于指定表達式的最小整數(shù)) 格式: FLOOR ()(取小于或等于指定表達式的最大整數(shù)) x=56.72 ? INT(x),INT(-x), CEILI

11、NG(x),CEILING(-x),FLOOR(x),FLOOR(-x),(8)求余數(shù)函數(shù) 格式:MOD(,) 功能:返回兩個數(shù)值相除后的余數(shù)。余數(shù)的正負號與除數(shù)相同。如果被除數(shù)與除數(shù)同號,那么函數(shù)值即為兩數(shù)相除的余數(shù);如果被除數(shù)與除數(shù)異號,則函數(shù)值為兩數(shù)相除的余數(shù)再加上除數(shù)的值。 例6 ? MOD(10,3),MOD(10,-3),MOD(-10,3),MOD(-10,-3) 1 -2 2 -1,(9)四舍五入函數(shù) 格式:ROUND(數(shù)值表達式1,數(shù)值表達式2) 功能:數(shù)值表達式2表示保留的小數(shù)位數(shù) 說明:如果數(shù)值表達式2的值為負,其絕對值表示整數(shù)部分四舍五入的位數(shù),從后往前。 例5 x34

12、5.345 ? ROUND(X,2), ROUND(x,1),ROUND(X,0),ROUND(x,一1) 345.35 345.3 345 350 (10)pi函數(shù) 格式:PI() (11)符號函數(shù) SIGN() 功能:返回表達式的符號。(-1 0 1),3.3.2、字符函數(shù),(1)宏替換函數(shù) & 【格式】& .字符表達式 【功能】替換出字符內存變量中的字符。若與后面的字符無空格分界,則&函數(shù)后的“.”必須有。 記住一話 去掉定界符(即字符的“”),舉例,a1=ABC a2=a1 ?&a2 ma=* mb=14&ma.50 ?mb ma=* mb=14&ma50 ?mb ma=* mb=14

13、&ma 50 ?mb P44 例子,(2)字符串長度函數(shù)LEN( ) 【格式】LEN() 【功能】求字符串的長度。函數(shù)值為N型 (3)空格函數(shù)SPACE( ) 【格式】SPACE(數(shù)值表達式) 【功能】生成“數(shù)值表達式”指定數(shù)目的空格組成的字符串。 ?hello+space(4)+boy,(4)大小寫轉換函數(shù) 格式:LOWER() UPPER() 功能:LOWER()將指定表達式值中的大寫字母轉換成小寫字母,其他字符不變。 UPPER()將指定表達式值中的小寫字母轉換成大寫字母,其他字符不變。 例9 ? LOWER(xly2A*),UPPER(n1) xly2a* N1 (5)求子串位置函數(shù)

14、【格式】AT(,) 【功能】返回在中的起始位置。函數(shù)值為整數(shù)。如果串不包含串 ,函數(shù)返回值為零。 例:?AT(“you”,”Are you ok”),AT(“hi”,”who are you”),(6)取左子串函數(shù)LEFT( ) 【格式】LEFT( , ) 【功能】從中第一個字符開始,截取個字符的子串。若數(shù)值型表達式的值大于0,且小于等于字符串的長度,則子串的長度與數(shù)值型表達式值相同。若數(shù)值型表達式的值大于字符串的長度,則給出整個字符串。若數(shù)值型的表達式小于或等于0,則給出一個空字符串。 例如:?LEFT(“會計管理學院”,8) (7 )取右子串函數(shù)RIGHT( ) 【格式】RIGHT( ,

15、) 【功能】返回從中右邊第一個字符開始,截取個字符的子串。有關說明同LEFT( )函數(shù)。 例如:?RIGHT(“會計管理學院”,8),(8)取子串函數(shù)SUBSTR( ) 格式:SUBSTR (, , ) 功能:返回從中第個字符開始,截取個字符的子串。若字符個數(shù)省略,或字符個數(shù)多于從起始位置到原字符串尾部的字符個數(shù),則取從起始位置起,一直到字符串尾的字符串作為函數(shù)值。若起始位置或字符個數(shù)為0,則函數(shù)值為空串。 例:ss=“中華人民共合” ?SUBSTR(SS,5,4),SUBSTR(SS,3) (9)刪除字符串前后空格函數(shù) 【格式】LTRIM() RTRIM | TRIM() ALLTRIM()

16、 【功能】 LTRIM刪除前導空格字符 RTRIM | TRIM刪除尾部空格字符 ALLTRIM刪除所有空格字符,(10)字符串替換函數(shù)STUFF( ) 【格式】STUFF(,) 【功能】從nExp1指定位置開始,用cExp2串替換 cExp1串中nExp2個字符。 說明: 和被替換的個數(shù)不一定相等,若小于0則直接插入,若的值是空串,則刪除中個字符,若小于等于0,則從首字開始替換。 例:x=“計算機科學與技術學院”?STUFF(x,7,4,信息) ?STUFF(x,7,0,信息) ?STUFF(x,0,4,信息) (11)復制函數(shù) ? 【格式】REPLICATE (,) 【功能】返回將cExp

17、串重復nExp次的字符串 例:?REPLACE(ABC,3),3.3.3、日期類和時間函數(shù),1.系統(tǒng)日期函數(shù)DATE( ) 【格式】DATE() 【功能】返回當前系統(tǒng)日期 2系統(tǒng)時間函數(shù)TIME( ) 【格式】TIME 【功能】返回當前系統(tǒng)時間,時間顯示格式為hh:mm:ss 3.系統(tǒng)日期和時間函數(shù) 【格式】 DATETIME() 【功能】返回當前系統(tǒng)日期時間,4日期函數(shù)DAY( ) 【格式】DAY() 【功能】返回中的天數(shù)。函數(shù)值為N型 5月份函數(shù)MONTH( )、CMONTH( ) 【格式】MONTH() CMONTH() 【功能】MONTH( )函數(shù)返回dExp式中月份數(shù)。函數(shù)值為N型。

18、CMONTH( )函數(shù)則返回月份的英文名。函數(shù)值為C型。 6年份函數(shù)YEAR( ) 【格式】YEAR() 【功能】函數(shù)返回dExp式中年份值。函數(shù)值為N型。 例如:d=2006-06-05 ? YEAR(d),month(d),day(d),7.求時、分和秒函數(shù) Hour() minute() sec() 例:d=2005-05-12,4:25:24 p ? Hour(d),minute(d),sec(d) 8星期函數(shù)DOW( )、CDOW( ) 【格式】DOW() CDOW() 【功能】DOW( )函數(shù)返回dExp式中星期的數(shù)值,用17表示星期日星期六。函數(shù)值為N型。CDOW( ) 函數(shù)返回

19、dExp式中星期的英文名稱 例:dow(2005-05-12,cdow(2005-05-12),3.3.4、轉換函數(shù),1將字符轉換成ASCII碼函數(shù) 【格式】ASC () 【功能】返回cExp串首字符的ASCII碼值。函數(shù)值為N型。 2ASCII轉換為字符函數(shù)CHR( ) 【格式】CHR() 【功能】返回以nExp值為ASCII碼的ASCII字符。函數(shù)值為C型。 例:?asc(“b”),chr(98) 3.字符轉換數(shù)值型函數(shù)VAL( ) 【格式】VAL () 【功能】將cExp串中數(shù)字轉換成對應數(shù)值,轉換結果取兩位小數(shù)。 4.數(shù)值轉換字符型函數(shù)STR( ) 【格式】STR(,) 【功能】將nE

20、xp1的數(shù)值轉換成字符串形式。P48 x=1234.587 ? STR(x,10,2), STR(x,10,4), STR(x,7,2), STR(x,7), STR(x,3), STR(x),5字符轉換日期型函數(shù)CTOD( ) 【格式】CTOD() 【功能】把“/”格式的cExp串轉換成對應日期值。函數(shù)值為D型。 6日期轉換字符型函數(shù)DTOC( ) 【格式】DTOC(, 1) 【功能】把日期dExp轉換成相應的字符串。函數(shù)值為C型。,3.3.5、測試函數(shù),1數(shù)據類型函數(shù) 【格式】VARTYPE() 【功能】返回cExp 串表示的數(shù)據對象的數(shù)據類型,返回值是一個表示數(shù)據類型的大寫字母。C:字符

21、型,D:日期型,N:數(shù)值型,L:邏輯型,M:備注型,G:通用型,U:未定義。 例:?vartype(12),vartype(“hello”) 2.表頭測試函數(shù)BOF ( ) 【格式】BOF ( | ) 【功能】測試記錄指針是否移到表起始處。如果記錄指針指向表中首記錄前面,函數(shù)返回真(.T.),否則為假(.F.)。 3.表尾測試函數(shù)EOF( ) 【格式】EOF( | ) 【功能】測試記錄指針是否移到表結束處。如果記錄指針指向表中尾記錄之后,函數(shù)返回真(.T.),否則為假(.F.)。,4.文件是否存在測試函數(shù) 【格式】FILE() 【功能】根據cExp串中指定路徑查找文件,如未指定路徑,則在默認目

22、錄中查找。文件存在,返回邏輯真(.T.) 值,否則為邏輯假(.F.)值。 5. 記錄號測試函數(shù) 【格式】RECNO( | ) 【功能】返回指定工作區(qū)中表的當前記錄的記錄號。對于空表返回值為1。 6.記錄個數(shù)函數(shù) 【格式】RECCOUNT ( | ) 【功能】返回指定工作區(qū)中表的記錄個數(shù)。如果工作區(qū)中沒有打開表則返回0。 7.查找是否成功測試函數(shù) 【格式】FOUND ( | ) 【功能】在當前或指定表中,找數(shù)據,找到函數(shù)據值為.T.,否則為.F.。,8.判斷值介于兩個值之間的函數(shù) 【格式】BETWEEN( ,) 【功能】在之間為.T.否則為.F. 例:st=200 ?BETWEEN(sr,100

23、,310) 9.條件測試函數(shù)IIF( ) 【格式】IIF(,) 【功能】邏輯表達式lExp值為真(.T.),返回表達式eExp1的值,否則返回表達式eExp2的值。eExp1和eExp2可以是任意數(shù)據類型的表達式。 10.記錄刪除測試函數(shù) 【格式】DELETED( | ) 【功能】測試指定工作區(qū)中表的當前記錄是否被邏輯刪除。如果當前記有邏輯刪除標記,函數(shù)返回真(.T.),否則為假(.F.)。,3.4 Visual FoxPro的表達式,在Visual FoxPro系統(tǒng)中,表達式是由常量、變量、函數(shù)單獨或與運算符組成的有意義的運算式子。 在Visual FoxPro中表達式分為: 3.4.1 算

24、術表達式 3.4.2 字符表達式 3.4.3 日期時間表達式 3.4.4 關系表達式 3.4.5 邏輯表達式,3.4.1、算術表達式,如表2-2所示。表中運算符按運算優(yōu)先級別從高到低順序排列。 表2-2 算術運算符,3.4.2、字符表達式,字符表達式是由字符運算符將字符型數(shù)據對象連接起來進行運算的式子。 “+”與 “-”都是字符連接運算符,都將兩字符串順序連接,但“+”是直接連接,“-”則將串1尾部所有空格移到串2尾部后再連接; “$”運算實質上是比較兩個串的包含關系,其作用是比較、判斷串1 是否為串2的子串,如果串1是串2的子串,運算結果為“真”,否則為“假”。,3.4.3、日期時間表達式,

25、格式1: 其結果是將來的某個日期。 格式2: 其結果是過去的某個日期。 格式3: 其結果是兩個日期之間相差的天數(shù)。 例如:?date()-10,格式4: 其結果是若干秒后的某個日期時間。 格式5: 其結果是若干秒前的某個日期時間。 格式6: 其結果是兩個日期時間之間相差的秒數(shù)。 例 ?datetime()+20,3.4.4、關系表達式,關系運算符有: (大于)、= (大于等于)、= (等于)、= (精確等于)、或#或!=(不等于)。它們的運算優(yōu)先級相同。 關系表達式一般形式為: e1 e2 其中e1、e2可以同為數(shù)值型表達式、字符型表達式、日期型表達式或邏輯型表達式。但=僅適用于字符型數(shù)據。關

26、系表達式表示一個條件,條件成立時值為.T.,否則為.F.。,各種類型數(shù)據的比較規(guī)則如下: (1)數(shù)值型和貨幣型數(shù)據根據其數(shù)值的大小進行比較。 (2)日期型和日期時間型數(shù)據進行比較時,離現(xiàn)在日期或時間越近的日期或時間越大。 (3)邏輯型數(shù)據比較時,.T.比.F.大。 (4)對于字符型數(shù)據,可以設置字符的排序次序 方法:1.菜單法 2.命令法 格式為: SET COLLATE TO “” 排序次序名可以是“Machine”、“PinYin”或“Stroke”。 比較字符串時,先取兩字符串的第一個字符比較,若兩者不等,其大小就決定了兩字符串的大小,若相等,則各取第二個字符比較,依次類推,直到最后,若

27、每個字符都相等,則兩個字符串相等。,“Machine”、“PinYin”或“Stroke” 。 “Machine”,按照機內碼順序排序。 對于西文字符而言,按其ASCII碼值大小進行排列 空格數(shù)字大寫字母小寫字母。 對于漢字字符,按其國標碼的大小進行排列,對常用的一級漢字而言,根據它們的拼音順序比較大小。 “PinYin”,按字符按照拼音次序排序。 對于西文字符,空格數(shù)字小寫字母大寫字母 “Stroke”,按字符按筆畫數(shù)多少排序 字符筆畫數(shù)的多少就決定其大小。 接下來我們看一個例子,舉例,SET COLLATE TO “Machine” ? “助教”教授”,“abc”a” ,“”a”,“XYZ

28、”a” .T. .F. .F. .F. SET COLLATE TO “PinYin” ? “助教”教授”,“abc”a” ,“”a”,“XYZ”a” .T. .F. .F. .T. SET COLLATE TO “Stroke” ? “助教”教授” ,“abc”a” ,“”a”,“XYZ”a” .F. .F. .F. .T. 思考: “abc”a” ,”a”“abc” ,”a”=“abc”,精確比較,字符串的“等于”比較有精確和非精確之分 要注意=(等于)和= =(精確等于)兩個關系運算符的區(qū)別。 精確等于是指只有在兩字符串完全相同時才為真,而非精確等于是指當“=”號右邊的串與“=”號左邊的串的前幾個字符相同時,運算結果即為真。 命令 SET EXACT ON 精確比較 此時,=和

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論