VFP數值和數值運算.ppt_第1頁
VFP數值和數值運算.ppt_第2頁
VFP數值和數值運算.ppt_第3頁
VFP數值和數值運算.ppt_第4頁
VFP數值和數值運算.ppt_第5頁
已閱讀5頁,還剩76頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、第五章 數值和 數值運算,計算機應用技術基礎,VFP第二章 張勝光制作,2,本章目錄,第一節數據類型、常量和變量,VFP第二章 張勝光制作,4,5-1-1 數據類型,在Visual FoxPro中所有的數據都具有類型,數據類型決定數據的存儲方式和使用方式,即數據的取值范圍和可以進行的操作。 Visual FoxPro6.0的數據類型分為兩大類,一種適用于變量和數組,另一種適用于數據表中的字段。Visual FoxPro定義了13種字段類型和7種數據類型。,VFP第二章 張勝光制作,5,數據類型、常量和變量,字段類型是: 字符型、數值型、浮動型、雙精度型、整型、貨幣型、日期型、日期時間型、邏輯型

2、、備注型、通用型、二進制字符型和二進制備注型。 數據類型是: 字符型、數值型、貨幣型、日期型、日期時間型、邏輯型和通用型。,VFP第二章 張勝光制作,6,5-1-2 常量,常量:在程序的運行過程中不改變其值的量 常量的種類: 數值型常量 字符型常量 邏輯型常量 日期型常量 貨幣型常量,VFP第二章 張勝光制作,7,1.數值型常量,用整數、小數、科學計數法表示的數 舉例: 85,-56.2, 1.256E3, 3.8E-2 等,R=THISFORM.TEXT1.VALUETHISFORM.TEXT2.VALUE=3.14159*R*R,VFP第二章 張勝光制作,8,2. 字符型常量,由一串字符組

3、成的字符串 表示:用“”(雙引號)、 (單引號)、 (方括號)括起來 舉例: 副教授、”boy”、 數據庫系統是合法常量,而”I am a boy”、Its abest是非法常量。 注意:最長只能為254個字符,VFP第二章 張勝光制作,9,3.邏輯型常量,表示“真”或“假”的量 表示方法: “真”.T.、.Y.、.t.、.y. “假”.F.、.N.、.f.、.n. 注意:兩邊的點不能少,VFP第二章 張勝光制作,10,作業7 標簽和按鈕隱藏按鈕,thisform.label1.visible = mand1.visible = mand2.visible = .t.,VFP第二章 張勝光制作

4、,11,4.貨幣型常量,表示貨幣值的量 表示:以$開頭,4舍5入到小數點4位 舉例: $123.456789結果為123.4568,VFP第二章 張勝光制作,12,5.日期型常量,日期時間常量也必須用花括號括起來, 格式為: YYYY-MM-DDhh:mm:ss a|p 例如:2005/05/19 10:04am、 2005-05-21 11:32:14pm。 但必須注意日期和時間之間必須有空格。,6.日期時間型常量,在Visual FoxPro6.0中日期型常量用花括號“ ”作為定界符括起來,格式為: YYYY-MM-DD 例如:2005/05/18,或2005-05-18。,VFP第二章

5、張勝光制作,13,5-1-3 變量,在命令操作和程序運行過程中其值允許變化的量稱變量。 在Visual FoxPro6.0中使用的變量分為字段變量、內存變量兩種。 每個變量都必須有一個變量名,變量名是由字母、漢字、數字和下劃線組成,但必須以字母或漢字打頭。 變量可以理解為在計算機內存中裝數據的盒子,盒子的名字就叫變量名,而盒子里可以裝各種各樣的數據。數據的值與盒子的名字無關。,A1,VFP第二章 張勝光制作,14,1字段變量,字段變量是數據表結構中的任意一個數據項。在一個數據表中,一個字段就是一個字段變量。字段變量在建立表結構時定義,修改表結構時可重新定義,或增刪字段變量。字段變量的類型有13

6、種。字段變量是一種多值變量,假設一個數據表中有10條記錄,那么該數據表的每一字段就有10個取值,當用字段作變量時,它的當前值隨著記錄指針的移動而不斷變化。,VFP第二章 張勝光制作,15,字段變量,VFP第二章 張勝光制作,16,2內存變量,內存變量是表結構之外獨立存在于內存中的變量。 內存變量可用來存儲數據,定義內存變量時需為它取名并賦初值,內存變量建立后存儲于內存中。 Visual FoxPro6.0中共定義了6種類型的內存變量:數值型、字符型、日期型、日期時間型、邏輯型和貨幣型。可分為簡單變量和數組變量。,VFP第二章 張勝光制作,17,變量名與變量值,形象化地理解,單個的內存變量就是一

7、個個的盒子,變量名寫在盒子外邊便于識別,而裝在里邊的東西才是變量的值。所以,不要把變量名與變量的值混為一談。 變量名 變量的值,TEN,7,VFP第二章 張勝光制作,18,作業5 計算圓面積中的內存變量,R=THISFORM.TEXT1.VALUETHISFORM.TEXT2.VALUE=3.14159*R*R,R,VFP第二章 張勝光制作,19,簡單變量,Visual FoxPro6.0中共定義了6種類型的內存變量:數值型、字符型、日期型、日期時間型、邏輯型和貨幣型。可分為簡單變量和數組變量。 簡單變量:可以理解為一個一個互相獨立的盒子。,R,M,S,VFP第二章 張勝光制作,20,數組變量

8、,可以理解為一排排聯接起來的盒子。,一維數組A,VFP第二章 張勝光制作,21,VFP的命令操作和編程操作,在VFP中進行程序調試或數據庫操作時,可采用命令方式和編程方式兩種方式進行操作。 命令窗口的操作:直接在VFP的命令窗口中輸入命令即可。,VFP第二章 張勝光制作,22,編程方式操作,在command窗口鍵入MODI COMM 程序文件名,就會彈出一個編程窗口,在編程窗口寫入源程序,按工具欄上的驚嘆號圖標即可運行。,VFP第二章 張勝光制作,23,(1) 內存變量賦值命令,格式1:內存變量= TO 功能: 計算表達式,然后將計算結果賦給內存變量。 R=THISFORM.TEXT1.VAL

9、UETHISFORM.TEXT2.VALUE=3.14159*R*R,VFP第二章 張勝光制作,24,VFP第二章 張勝光制作,25,VFP第二章 張勝光制作,26,(2) 表達式值顯示命令,格式: ?/? 功能:將表達式的值顯示在屏幕上。 【說明】 1.命令格式中的?/?可任選一個,它們的輸出格式不同。 ? 表示從屏幕下一行的第一列起顯示結果 ? 表示從當前行的當前列起顯示結果。,VFP第二章 張勝光制作,27,例如: s1 = 3 ? s1 & 換一行后顯示28 ? “數據庫應用” & 接著上一個命令顯示結果3的后面顯示“數據庫應用”,VFP第二章 張勝光制作,28,2.是表示用逗號隔開的

10、多個表達式組,命令執行時遇逗號就空一格。 例如: Z= VFP6.0 ? “Z=”,Z & 顯示Z= VFP6.0,VFP第二章 張勝光制作,29,3.系統內存變量,由VFP自動生成和維護的變量 一般以下劃線開頭 舉例: _DIARYDATE&當前日期 _CLIPTEXT&剪貼板文本,VFP第二章 張勝光制作,30,數組是具有相同名字、不同下標值的一組變量。數組中的每個數據值稱為數組元素,每個數組元素在數組中的位置是固定的,可以通過稱為下標的編號來進行訪問。數組在使用時要由DIMENSION或DECLARE命令來定義。這兩個命令完全相同,都是用于建立一維或二維數組。在Visual FoxPro

11、 6.0中,同一個數組元素在不同時刻可以存儲不同類型的數據,在同一數組中,每個數組元素可以被賦予不同數據類型的值。,4.數組變量,VFP第二章 張勝光制作,31,一維數組和二維數組,A1,A2,A3,A4,A5,一維數組A,X(2,1),X(2,2),X(2,3),X(2,4),X(2,5),X(1,1),X(1,2),X(1,3),X(1,4),X(1,5),二維數組x,VFP第二章 張勝光制作,32,數組的定義,格式:DIMENSION |DECLARE () ,() () ,() 例如:DIMENSION c(4) DIMENSION a(3) , b(2,3),VFP第二章 張勝光制作

12、,33,數組的賦值,SZ(1)=”ABCD” & 給SZ(1)賦值,字符型,值:ABCD SZ(2)=23.45 & 給SZ(2)賦值,數值型,值:23.45 SZ(3)=2005/09/02 & 給SZ(3)賦值,日期型, 值:2005年9月2日 SZ(4)=2005/11/02 9:00am & 給SZ(4)賦值,日期時 間型,值:2005年11 月2日上午9點 BZ(5)=T & 給SZ(5)賦值,邏輯型,值:真,第二節VFP常見函數,VFP第二章 張勝光制作,35,5-2 Visual FoxPro常見函數,函數的概念: Visual FoxPro6.0 0系統為用戶提供了十分豐富的函

13、數,靈活運用這些函數,不僅可以簡化許多運算,而且能夠加強和完善Visual FoxPro的許多功能。 函數的一般格式: () 函數的三要素:函數名、參數、函數值 如:ABS(-2),VFP第二章 張勝光制作,36,5-2-1 數學運算函數,1平方根函數SQRT() 【格式】 SQRT(數值表達式) 【功能】 計算并返回數值表達式的算術平方根。 【例 1】 ? SQRT(5*5) 5.00,VFP第二章 張勝光制作,37,5-2-1 數學運算函數,2絕對值函數ABS() 【格式】 ABS() 【功能】 計算并返回數值表達式的絕對值。 【例 2】 ? ABS(-43.29) 43.29,VFP第二

14、章 張勝光制作,38,3四舍五入函數ROUND() 【格式】 ROUND(數值表達式,有效位數) 【功能】 對數值表達式的值按指定的有效位數進行四舍五入。 【例3】 ? R0UND(3.14159,4), ROUND(1234.9962,0), ROUND(1234.567,-1) 3.1416 1235 1230,VFP第二章 張勝光制作,39,4取整函數INT() 【格式】 INT(數值表達式) 【功能】 計算并返回數值表達式的整數部分。 【例 4】 ? INT(-76.93) -76,VFP第二章 張勝光制作,40,5求模函數MOD() 【格式】 MOD(,) 【功能】 返回除以得到的余

15、數值。 【說明】 在求摸運算中應注意以下幾點: (1) 除數不能為0。 (2) 除數為正數,返回正數;如果為負數,返回負數。 (3) 如果被除數與除數能夠整除,結果為0。 (4) 如果被除數與除數不能整除,且被除數與除數同號,則結果為被除數除以除數而得到的余數。即:MOD(X1,X2)=X1-INT(X1/X2)*X2 。 (5) 如果被除數與除數不能整除,且被除數與除數異號,則結果為被除數除以除數而得到的余數再加上除數。 即: MOD(X1,X2)=X1-INT(X1/X2)*X2+X2 。,VFP第二章 張勝光制作,41,5求模函數MOD() 【格式】 MOD(,) 【功能】 返回除以得到

16、的余數值。 【例 5】 ? MOD(10,3) &結果為:1 ? MOD(-10,-3) &結果為:-1 ? MOD(-10,3) &結果為:2 ? MOD(10,-3) &結果為:-2,VFP第二章 張勝光制作,42,3-2-2 字符處理函數,1取子串函數SUBSTR() 【格式】 SUBSTR(字符串表達式,起始位置 ,長度) 【功能】 從字符串表達式中的起始位置截取子字符串,長度為所截取的子串的長度。,VFP第二章 張勝光制作,43,3-2-2 字符處理函數,【例 1】store ”ABCDEFG” to CN ? SUBSTR(CN,4,2),SUBS(CN,1,4),SUBS(CN,

17、6,3) DE ABCD FG 若省略長度,或者長度超過從起始位置到末尾的長度,則截取的子字符串為從起始位置到字符串表達式末尾的所有字符。例如: ? SUBSTR(”計算機程序設計教程”,11) 設計教程,VFP第二章 張勝光制作,44,2求字符串長度函數LEN() 【格式】 LEN字符串表達式 【功能】 返回字符串表達式中所包含的字符個數,即字符串長度。 【例 2】 ? LEN(”Visual FoxPro6.0”) 16,VFP第二章 張勝光制作,45,3搜索子串位置函數AT() 【格式】 AT(字符串1,字符串2,) 【功能】 尋找字符串1在字符串2中首次出現的起始位置。若字符串2中不包

18、含字符串1,則返回值為零。若有“數值表達式”(假設數值表達式為K),則尋找字符串1在字符串2中第K次出現的位置。 【例 3】 X=”Visual FoxPro 6.0” ? AT(”Fox”,X) & 顯示結果為 8 ? AT(”fox”,X) & 顯示結果為 0 ? AT(”o”,X) & 顯示結果為 9 ? AT(”o”,X ,2) & 顯示結果為 13,VFP第二章 張勝光制作,46,4空格函數SPACE() 【格式】 SPACE(數值表達式) 【功能】 產生與數值表達式的值相同的空格數。 【例 4】 ? ”學生”+SPACE(4)+”情況” 學生 情況 在“ 學生”和“情況”之間產生了

19、4個空格字符。,VFP第二章 張勝光制作,47,5宏代換函數 & 【格式】&字符型內存變量 【功能】取“字符型內存變量”的值。 【說明】 (1) 宏代換是一種間接取值的操作,在符號后面必須緊跟(無空格)一個己被賦過值的字符型內存變量的名字。 (2)若&字符型內存變量與后面的字符之間無空格分界時,應加上“”符號作為分界符。 (3)宏代換的使用可以嵌套另一個宏代換,但不能嵌套自己。例如,X=“&X”的寫法是錯誤的。 (4) 對于數字字符串,可以通過&函數使其與其他數字進行計算。,VFP第二章 張勝光制作,48,【例 5】求宏代換。 . CH=”X” X=9 ? &CH &結果為:9 TT=”學生成

20、績” USE &TT &結果為:打開了“學生成績.dbf”表文件。 X=”2004” M=”+” Y=”&X.&M.1” ? Y &結果為:2004+1 ? &Y &結果為:2005,VFP第二章 張勝光制作,49,3-2-3 轉換函數,1數值轉換為字符串函數STR() 【格式】 STR(數值表達式,長度,小數位如) 【功能】 將數值表達式的值轉換為由長度和小數位數指定的字符串。如果長度值比數值表達式的整數位數還要小,則返回由長度個“*”組成的字符串。 【例1】 ? STR(1324.46,6,1) 1324.5 ? STR(1324.46,3,1),STR(1324.46,8,3) * 13

21、24.460,VFP第二章 張勝光制作,50,2字符串轉換為數值函數VAL() 【格式】 VAL(字符串表達式) 【功能】 將字符串表達式轉換為數值型數據。 【例2】 ? VAL(”32”+”18”) 321800 ? VAL(”112GH”),VAL(”AB204”),VAL(”ASD”) 112.00 0.00 0.00,VFP第二章 張勝光制作,51,3字符轉日期函數CTOD() 【格式】 CTOD(字符串表達式) 【功能】 將“月/日/年”格式的字符串表達式轉換為日期型數據。 【例3】 DA=”12/12/04” ? CTOD(DA) 12/12/04,VFP第二章 張勝光制作,52,

22、4日期型轉換為字符串函數DTOC() 【格式】 DTOC(日期) 【功能】 將日期轉換為相應的字符串。 【例4】 D=2004/11/24 DT=DTOC(D) ? DT ? LEN(DT) 11/24/04 8,VFP第二章 張勝光制作,53,字符處理函數(補充),格式:LTRIM() 功能:刪除字符表達式值前的空格 格式:RTRIM(或TRIM() 功能:刪除字符表達式值后的空格 格式:ALLTRIM() 功能:將前后的空格去掉 舉例 ?“AB”+SPACE(4)+”CD” &返回 AB CD ? ALLTRIM(“ ABCD ”) &返回 ABCD ?len(“ abcd”) &返回5

23、?len(alltrim(“ ABCD “) &返回 4,VFP第二章 張勝光制作,54,3-2-4 日期和時間函數,格式:DATE() 功能:返回系統日期 格式:TIME() 功能:返回系統時間 格式:DATETIME() 功能:返回系統日期時間 格式:YEAR() 功能:返回中的年份,4位整型,VFP第二章 張勝光制作,55,格式:month() 功能:返回中的月份 格式:day() 功能:返回中的日期,舉例 ? YEAR(2001-10-23)&返回2001 ? month(date()&返回當天的月份,VFP第二章 張勝光制作,56,3-2-5 測試函數,1測試文件頭函數BOF() 【

24、格式】 BOF() 【功能】 該函數用于測試指定文件中的記錄指針是否指向文件頭。如果是則返回真值,否則返回假值。,VFP第二章 張勝光制作,57,3-2-5 測試函數,【例】 測試文件記錄是否指向文件頭。 USE 學生檔案.dbf ? BOF() & 顯示結果為:.F. SKIP -1 & 移動記錄指針到上一條記錄命令 ? BOF() & 顯示結果為:.T.,VFP第二章 張勝光制作,58,2測試文件尾函數EOF() 【格式】 EOF() 【功能】 該函數用于測試指定文件中的記錄指針是否指向文件尾。如果是則返回真值,否則返回假值。 【例】 測試文件記錄是否指向文件尾。 USE 學生檔案.dbf

25、 GOTO BOTTOM ? EOF() & 顯示結果為:.F. SKIP & 移動記錄指針到上一條記錄命令 ? EOF() & 顯示結果為:.T.,VFP第二章 張勝光制作,59,【格式】 RECNO() 【功能】 測試指定表文件中的記錄指針指向的記錄號。若指定的工作區無打開的表文件,函數返回值為:0;若指定的表文件無記錄或記錄指針位于文件頭,函數返回值為:1;若記錄指針指向文件尾,函數返回值為末記錄號加1。 【例 】 測試記錄指針的當前位置(假設學生檔案表中有10條記錄)。 USE 學生檔案.dbf GOTO BOTTOM ? RECNO() & 顯示結果為:10 SKIP ? RECNO

26、() & 顯示結果為:11 GO TOP ? RECNO() & 顯示結果為: 1 SKIP -1 ? RECNO() & 顯示結果為: 1,3測試當前記錄號函數 RECNO(),VFP第二章 張勝光制作,60,4“空”值測試函數 【格式】 ISNULL() 【功能】 判斷表達式的運算結果是否為 NULL 值,如果是,則返回邏輯真,否則返回邏輯假。 【例4】 STORE .NULL. TO A ? A,ISNULL(A) &結果為:.NULL. .T.,VFP第二章 張勝光制作,61,5空值測試函數 【格式】 EMPTY() 【功能】 根據表達式的運算結果是否為 “ 空 ” 值, 返回邏輯真或

27、邏輯假。 【說明】 (1).當表達式的結果是含有空字符串或空格時, EMPTY 函數值返回為 .T. , ISNULL 為 .F. 。 (2).當變量是 .NULL. 時, EMPTY 和 ISBLANK 函數為 .F.,ISNULL 為 .T. 。 (3).當變量是 0 時, EMPTY 函數為 .T. , ISNULL 和 ISBLANK 為 .F. 。,第三節操作符與表達式,VFP第二章 張勝光制作,63,3-3 操作符及表達式,操作符是表示數據之間運算方式的運算符號,一般根據處理數據類型不同可分為算術運算符、字符運算符、關系運算符、邏輯運算符四種。表達式是由常量、變量、函數、操作符及圓

28、括號組成的算式。表達式中的操作對象必須具有相同的數據類型,如果表達式中有不同類型的操作對象,則必須將它們轉換成同種數據類型。,VFP第二章 張勝光制作,64,3-3-1算術表達式,算術表達式是由數值型變量、常量、函數和數值操作符組成的。用于對數值型數據進行常規的算術運算。,VFP第二章 張勝光制作,65,算術運算符,舉例: ? 5/3 結果:1.67 ? 5%3 結果:2 ? -3*2-5 結果:4.00 ? 2*7%32+3 結果:8,高,VFP第二章 張勝光制作,66,算術運算符,舉例 ? 3/2&返回1.5 ? 5.5%3&返回2.5 ? Int(5/3)& 1,取得數值的整數部分 ?

29、62&返回36 ? 2001-12-29+4&返回2002-1-2 ? 2002-3-1 -2001-12-29&返回62 ? 2002-3-1 1&返回2002-2-28 ? 2000-3-1 1&返回2002-2-29,VFP第二章 張勝光制作,67,3-3-2 字符表達式:,字符表達式是由字符型變量、常量、函數和字符操作符組成的。用于字符串的連接或者比較。 字符串操作符為: +:連接兩個字符串。 -:連接兩個字符串,并將第一個字符串尾部的空格移到第二個字符串的尾部。 $:判斷第一個字符串是否是第二個字符串的子字符串。,VFP第二章 張勝光制作,68,例如: LEN1=”Visual Fo

30、xPro6.0 ” LEN2=”數據庫教程” ? LEN1+LEN2 & 結果為:Visual FoxPro6.0 數據庫教程 ? LEN1-LEN2 & 結果為:Visual FoxPro6.0 數據庫教程 ? len(LEN1-LEN2) & 結果為:28,VFP第二章 張勝光制作,69,3-3-3 日期時間表達式,日期時間表達式是由日期時間型變量、常量、函數和日期時間操作符組成的。 日期時間操作符有: +:添加一個天數或秒數 -:減少一個天數或秒數,VFP第二章 張勝光制作,70,3-3-3 日期時間表達式,例如:? 2005-04-04+10 &結果為:04/14/05 ? 2005-

31、04-30-15 &結果為:04/15/05 ? 2003-08-04 10:10a+10 &結果為:08/04/03 10:10:10 AM ? 2003-08-04 10:35p-10 &結果為: 08/04/03 10:34:50 PM,VFP第二章 張勝光制作,71,3-3-4 關系表達式,關系表達式用于數值、字符、日期型數據的比較運算。關系表達式的運算優先級相同。,例如: ? ”xyz”#”XYZ” & 值為.T. ? ”abcd”=”abc” & 值為.T. ? ”abc”=”abcd” & 值為.F. ? ”abcd”=”abc” & 值為.F.,VFP第二章 張勝光制作,72,邏輯表達式是由邏輯型變量、常量、函數和字符運算符組成的。用來對邏輯型數據進行各種邏輯運算,形成各種簡單的邏輯結果。,3-3-5 邏輯表達式,高,例如 ? 1733 .AND3412 & 值為.F. ? 16/27 .0R. ”abc”#”ABC” .AND. NOT.F & 值為.T.,VFP第二章 張勝光制作,73,在多個邏輯值中進行判斷,一般用于判斷某幾個條件是否滿足 運算對象和運算結果均為邏輯型 運算符 OR或.OR.:邏輯或,只有兩個運算對象均為.F.時,返回.F.;其余均返回.T. AND或.AND.:邏輯與,只有兩個運算對象均為.T.時,返回.T.;其余均返回.F. N

溫馨提示

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

評論

0/150

提交評論