常量變量表達式和函數_第1頁
常量變量表達式和函數_第2頁
常量變量表達式和函數_第3頁
常量變量表達式和函數_第4頁
常量變量表達式和函數_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

常量變量表達式和函數第一頁,共三十七頁,2022年,8月28日第一節(jié)

數據類型

(1)字符型:簡稱C型,是默認的數據類型。一個字符型字段最長為255個字符。用戶可按需要確定寬度。

(2)貨幣型:簡稱Y型。貨幣單位,如價格。寬度為8,自動取4位小數。

(3)數值型:簡稱N型。整數或小數,如考試分數。需要用戶確定其寬度。最多可以有20位數字(包括小數點)。

(4) 日期型:簡稱D型。表示年月日,如出生日期等,標準寬度為8個字節(jié)長度。

(5)日期時間型:簡稱T型。表示年月日和時分秒,標準寬度為8個字節(jié)長度。

(6)邏輯型:簡稱L型。只有兩個值,真(.T.)或假(.F.),標準寬度為1個字節(jié)。

(7)備注型:簡稱M型。存放不定長文本,如個人簡歷等。標準寬度度為4個字節(jié)。

(8)通用型:簡稱G型。用來存放OLE對象數據,如圖片、照片等,標準寬度為4個字節(jié)。2第二頁,共三十七頁,2022年,8月28日一、常量1、數值型常量數值型常量也就是常數,是由數字0~9、小數點和正負號構成的數字序列。例如:123,123.45,-123.45等。2、字符型常量字符型常量又稱字符串,是由英文狀態(tài)的單引號、雙引號和方括號括起來的字符序列,這里的單引號、雙引號和方括號又稱定界符。例如:”VisualFoxPro”,'VF系統(tǒng)開發(fā)',[計算機],"","","I'mastudent",[I'mastudent]等。3、日期型常量日期型常量是使用花括號括起來的日期型數據序列,花括號內包含年、月、日三部分內容,各部分之間用分割符分割,(/)(-)和(.)。在VisualFoxPro中日期型常量具有以下兩種表示格式:(1)

傳統(tǒng)的日期格式:{MM/DD/YY}或{MM/DD/YYYY},其中MM、DD、YY分別表示月、日、年。例如:{04/28/05}或{04/28/2005}(2)

嚴格的日期格式:{^YYYY-MM-DD}格式中的符號“^”表明該日期格式是嚴格的,并按照YMD的格式來解釋日期如{^2005-04-28}第二節(jié)常量與變量返回3第三頁,共三十七頁,2022年,8月28日注意:l

VisualFoxPro默認日期格式為嚴格的日期格式,若要使用傳統(tǒng)的日期格式須先執(zhí)行命令SETSTRICTDATETO0傳統(tǒng)的日期格式中年月日的默認順序為MDY,若要改變可使用命令

SETDATETOYMD/MDY/DMY傳統(tǒng)的日期格式中分割符的默認值為斜杠(/),若要改變可使用如下命令: 格式:SETMARKTO[日期分割符]

功能:用于設置日期分隔符,如“-”、“.”等。格式中分隔符要用單引號或雙引號定界。l

傳統(tǒng)的日期格式中年份的默認值為2位,若要顯示世紀值即4位數的年份值,可使用如下命令: 格式:SETCENTURYON/OFF

功能:用于設置顯示日期型數據是否顯示世紀,ON表示年份用4位,OFF則只顯示2位。返回4第四頁,共三十七頁,2022年,8月28日【例3.1】在命令窗口輸入如下命令,查看各種日期數據的輸出結果。解:SETSTRICTDATETO0SETCENTURYOFF?{04/28/05}&&?號用來顯示表達式的值主屏幕顯示

04/28/05

接著再輸入命令

SETCENTURYON?{04/28/05}

主屏幕顯示

04/28/2005

接著再輸入命令

SETSTRICTDATETO1?{04/28/05}

主屏幕提示出錯信息如圖4-1所示。?{^2005-04-28}主屏屏顯示:04/28/2005圖4-1錯誤提示信息返回5第五頁,共三十七頁,2022年,8月28日(4)日期時間型常量日期時間型常量是用花括號括起來的日期時間型數據序列,括號內主要包括日期和時間兩部分內容:{<日期>,<時間>},其中日期部分的表示格式與日期型常量相同,時間部分的表示格式為:[HH[:MM[:SS]]][A|P]這里的HH、MM、SS分別表示時、分和秒,A(或AM)和P(或PM)分別表示上午和下午?!纠?.2】在主窗口顯示日期時間型常量的內容。解:在命令窗口輸入命令:?{^2005-04-28,11:25:30A}主屏幕顯示:04/28/0511:25:30AM(5)邏輯型常量邏輯型常量只有兩個值:“真”與“假”,用.T.或.t.,.Y.或.y.表示“真”,用.F.或.f.,.N.或.n.表示“假”。注意:邏輯型常量前后兩邊的小圓點作為邏輯型常量的定界符不能省略。返回6第六頁,共三十七頁,2022年,8月28日二、變量變量是指在程序運行過程中可以變化的量,即變量的值是可以隨時更改的。在VisualFoxPro中的變量可以分為字段變量和內存變量兩大類。1、字段變量字段變量是指數據表中已定義的任意一個字段,個數據由于在一表中,字段的值是隨著記錄行的變化而變化的,所以稱它為變量。使用字段變量首先要建立數據表,在建立表的過程中創(chuàng)建字段變量。2、內存變量內存變量是指內存中的一個存儲單元,該單元的名稱稱為內存變量名,該單元內存放的數據,稱為內存變量的值,而內存變量的類型取決于內存變量值的類型,它可以是數值型、字符型、邏輯型、日期型和日期時間型。(1)內存變量的命名為區(qū)分不同的存儲單元,對不同的存儲單元就應該具有不同的名稱,即每個內存變量都應該有自己的名稱。在VisualFoxPro中內存變量名可以由字母(也可以是漢字)、數字和下劃線組成,其長度不超過128個字符,且須以字母或下劃線開頭,不可與保留字同名。返回7第七頁,共三十七頁,2022年,8月28日(2)內存變量的賦值命令格式1:<內存變量名>=<表達式>格式2:STORE<表達式>TO<內存變量名表>功能:計算表達式,并將計算結果賦值給內存變量?!纠?.3】定義內存變量并將其賦值。解:在命令窗口輸入以下命令:Y="VFP"STORE“李平”

TOXMSTORE2TOn1,n2,n3注意:格式2可以同時為多個變量賦相同的值,格式1只能為單個變量賦值。(3)表達式值的顯示命令格式1:?<表達式表>格式2:??<表達式表>功能:計算表達式,并將計算結果在主屏幕中顯示。區(qū)別:格式1自動產生換行符,表示要換行顯示結果,而格式2不會產生換行符,表示要在當前行光標所在位置起顯示結果。返回8第八頁,共三十七頁,2022年,8月28日注意:系統(tǒng)規(guī)定,如果內存變量與打開的當前數據表文件中的字段同名,在顯示時字段變量優(yōu)先于內存變量,此時若要顯示內存變量的內容,必須在內存變量名前加寫“M->”或“M.”以示區(qū)別。(4)內存變量的顯示命令格式:LIST|DISPLAYMEMORY[LIKE<通配符>]功能:顯示內存變量的當前信息,包括變量名、作用范圍、類型和值。說明:LIST不分屏顯示,DISPLAY分屏顯示。通配符中"*"表示一個或多個字符,“?”表示單個字符?!纠?.4】分屏顯示所有內存變量。

DISPLAYMEMORY返回9第九頁,共三十七頁,2022年,8月28日(5)內存變量的清除命令所謂內存變量的清除,是指清除內存存儲單元中存放的內容,并收回該內存變量所占用的內存空間。它有以下幾種命令格式。

格式1:CLEARMEMORY

格式2:RELEASE<內存變量名表>

格式3:RELEASEALL[LIKE<通配符>]

功能:清除內存變量。區(qū)別:格式1清除所有的內存變量,格式2清除指定的內存變量,格式3清除與通配符相匹配的內存變量?!纠?.5】清除所有以n開頭的內存變量解:在命令窗口輸入命令

RELEASEALLLIKEn*(6)宏替換命令格式:&<字符型內存變量>[.]功能:用字符型內存變量中存放的內容取代"&"號及其后面的變量名,[.]中的圓點用作結束的標識。【例3.6】設L=8,M=5,N="L+M",求表達式5+&N的值。解:?5+&N

主屏幕顯示結果為:18返回10第十頁,共三十七頁,2022年,8月28日(7)數組

數組是按一定順序排列的一組內存變量,在內存中用一串連續(xù)的區(qū)域來存放,數組用統(tǒng)一的名稱來表示,稱為數組名,數組中的每一個內存變量都稱為數組的元素,數組元素用數組名及它在數組中的排列標號(簡稱下標)來表示。例如:A(1)、A(2)、A(3)、A(4)其中A表示數組名,1、2、3、4為下標。根據下標的個數又可以把數組分為一維數組和二維數組,例如A(3)表示一維數組、A(3,4)表示二維數組。①數組的定義與內存變量不同,數組在使用之前必須先定義后使用,具體定義格式如下:格式1:DIMENSION<數組名>(<下標1>[,<下標2>])格式2:DECLARE<數組名>(<下標1>[,<下標2>])注意:數組元素的下標從1開始,每個數組元素的默認值為邏輯假。②數組的賦值數組的賦值和內存變量賦值方法相同,例如:A(1)="張三",當省略下標時表示將一個值賦值給數組的所有元素,例如:A=15。在VisualFoxPro系統(tǒng)中,數組經常用于和表交換數據,使用方法在以后有關內容中介紹。

返回11第十一頁,共三十七頁,2022年,8月28日表達式是指用括號和運算符把常量、變量以及函數連接而成的式子,表達式具有計算、判斷和數據類型轉換等作用。

一、運算符運算符是對數據進行各種操作的一種符號,又稱操作符。在VisualFoxPro中運算符分為4類,即:算術運算符、字符運算符、關系運算符和邏輯運算符。1.算術運算符算術運算符是對數值型數據進行操作的一種符號,在VisualFoxPro中的算術運算符如表4—1所示。(),**、^,*、/、%,+、-【例3.7】假定變量X的值為5,計算表達式3+4X+53的值。解:?3+4*X+5^3

主屏幕顯示結果為:

148.00注意:表達式中4和X之間的乘號不能省略。第三節(jié)運算符與表達式返回12第十二頁,共三十七頁,2022年,8月28日作為一種特例,加法和減法運算符也可以用于日期型和日期時間型數據的操作,其操作規(guī)則如下:l

日期型數據+數值(天數)

&&結果為日期型數據加上數值后的一個新日期l

日期型數據-數值(天數)

&&結果為日期型數據減去數值后的一個新日期l

日期型數據1-日期型數據2&&結果為兩個日期間相差的天數l

日期時間型數據+數值(秒數)&&結果為日期時間型數據加上數值后的一個新日期時間l

日期時間型數據-數值(秒數)

&&結果為日期型數據減去數值后的一個新日期時間l

日期時間型數據1-日期時間型數據2&&結果為兩個日期時間相差的秒數l

兩個日期型或日期時間型數據不能相加返回13第十三頁,共三十七頁,2022年,8月28日【例3.8】日期型數據操作舉例。解:?{^2010-10-16}+20

主屏幕顯示結果為:11/05/10?{^2010-10-16}-10主屏幕顯示結果為:10/06/10?{^2011-07-15}-{^2010-10-16}主屏幕顯示結果為:272?{^2011-07-15}+{^2010-10-16}主屏幕顯示“操作符/操作數類型不匹配”的錯誤信息。返回14第十四頁,共三十七頁,2022年,8月28日2.字符運算符字符運算符是對字符串進行連接操作的一種符號,在VisualFoxPro中的字符運算符如表4-2所示。+:將加號前后的字符串連接起來組成一個新的字符串。-:先將減號前字符串尾部的空格移至減號后字符串的尾部,然后再將兩個字符串連接組成一個新的字符串?!纠?.9】在命令窗口分別輸入A="hello"和B="everyone",求A+B和A-B的值。解:在命令窗口輸入?A+B主屏幕顯示為:helloeveryone

接著再輸入:?A-B主屏幕顯示為:helloeveryone返回15第十五頁,共三十七頁,2022年,8月28日3.關系運算符關系運算符:<小于、<=小于等于、>大于、>=大于等于、=等于、<>或#或!=不等于、==字符串精確比較、$字符串包含測試。兩個數據的比較規(guī)則:(1)

兩個數值型數據比較時,按值的大小直接比較?!纠?.10】在命令窗口分別輸入A=6和B=9,分別求表達式A>B,A=B,A=A+3的值。解:在命令窗口輸入:?A>B,A=B,A=A+3主屏幕顯示結果都為邏輯假.F.返回16第十六頁,共三十七頁,2022年,8月28日(2)

兩個日期型數據比較時,按年、月、日順序比較。例如:?{^2011-07-15}>{^2010-10-16}顯示結果為邏輯假.T.(3)

兩個字符型數據比較時,英文字符按ASCII碼值的大小比較,漢字按機內碼值比較,即對常用的一級漢字而言,根據它們的拼音順序決定大小。注意:①字符串比較具有方向性。②字符串比較可以有非精確比較(使用比較符“=”,當右串是左串中從第一個字符開始的子串時結果為真)和精確比較(使用比較符“==”,左、右兩串完全相同時結果為真)兩種形式,若要使比較符“=”也進行精確比較,必須使用命令SETEXACTON進行設置。默認是setexactoff.③<串1>$<串2>中,當串1是串2的一個子串時結果為真,否則為假。返回17第十七頁,共三十七頁,2022年,8月28日【例3.11】在命令窗口進行如下關系運算的操作,試給出操作結果。解:?"ABC">"ACD"

主屏幕顯示結果為:.F.?"張三">"李四"

主屏幕顯示結果為:.T.?"ABC"="AB"

主屏幕顯示結果為:.F.?"AB"="ABC"

主屏幕顯示結果為:.F.?"AB"$"XABY"

主屏幕顯示結果為:.T.?"XABY"$"AB"

主屏幕顯示結果為:.F.返回【例3.12】字符串精確比較示例。解:在命令窗口輸入以下命令

SETEXACTOFF?"ABC"="AB"

主屏幕顯示結果為:.T.

在命令窗口輸入以下命令

SETEXACTON?"ABC"="AB"

主屏幕顯示結果為:.F.18第十八頁,共三十七頁,2022年,8月28日4.邏輯運算符邏輯運算符是對邏輯型數據進行操作的一種符號,其運算結果仍為邏輯值,在VisualFoxPro中的邏輯運算符如表4-5所示。

.NOT.或!—邏輯非;.AND.—邏輯與;.OR.—邏輯或高←——————————————————→低

邏輯運算規(guī)則的定義:l

.NOT.A當A為真時結果為假,反之結果為真。l

A.AND.B當A和B都為真時結果為真,否則結果為假。l

A.OR.B當A和B當中有一個為真時結果就為真,只有A和B都為假時結果才為假。返回19第十九頁,共三十七頁,2022年,8月28日二、運算符的優(yōu)先級別運算符優(yōu)先級別級別示意圖()一級算術運算符二級字符運算符三級關系運算符四級邏輯運算符五級低高20第二十頁,共三十七頁,2022年,8月28日一、數值函數數值函數是指函數值為數值的一類函數。1.絕對值函數格式:ABS(數值表達式)功能:返回數值表達式的絕對值?!纠?.13】?AbS(-6)62.取整函數

格式:INT(數值表達式)

CEILING(數值表達式)FLOOR(數值表達式)

功能:INT返回指定數值表達式的整數部分;CEILING向上取整,FLOOR向下取整【例3.14】求表達式5.85的整數值。

x=5.85?INT(x),CEILING(x),FLOOR(x)

主屏幕顯示結果為:565

第四節(jié)函數返回21第二十一頁,共三十七頁,2022年,8月28日3.四舍五入函數格式:ROUND(數值表達式1,數值表達式2)功能:對數值表達式1進行四舍五入,按數值表達式2給定的位數保留小數的位數。【例3.15】對數123.456做各種四舍五入操作。解:?ROUND(123.456,2),ROUND(123.456,1),ROUND(123.456,0)

主屏幕顯示結果為

123.46123.5123?ROUND(123.456,-1),ROUND(123.456,-2),ROUND(125.456,-1)主屏幕顯示結果為:

1201001304.平方根函數格式:SQRT(數值表達式)功能:返回指定數值表達式的平方根值(四舍五入保留兩位小數)。?SQRT(2)1.415.圓周率函數格式:PI()功能:返回圓周率∏的值。返回22第二十二頁,共三十七頁,2022年,8月28日6.求余數函數格式:MOD(數值表達式1,數值表達式2)功能:返回<數值表達式1>除以<數值表達式2>的余數。求余規(guī)則:余數符號與除數的符號相同,其絕對值小于除數的絕對值,且滿足等式被除數=除數×商+余數【例3.16】用余數函數求兩個數相除的余數。解:?MOD(10,3),MOD(10,-3)

主屏幕顯示結果為:1-2?MOD(-10,3),MOD(-10,-3)

主屏幕顯示結果為:2-17.求最大值和最小值函數格式:MAX(表達式表)功能:MAX返回所有表達式表值的最大值。

MIN(表達式表)功能:MIN返回所有表達式表值的最小值。注意:這里的表達式必須為同類的表達式。返回23第二十三頁,共三十七頁,2022年,8月28日【例3.17】求以下數據的最大值和最小值。

2,15,3"2","15","13""語文","數學","計算機"

解:?MAX(3,27,16),MIN(3,27,17)

主屏幕顯示結果為

273?MAX("3","27","16"),MIN("3","27","16")

主屏幕顯示結果為

316?MAX("王一","李明","張三"),MIN("王一","李明","張三")

主屏幕顯示結果為:張三李明返回24第二十四頁,共三十七頁,2022年,8月28日二、字符函數字符函數處理的對象通常為字符型表達式,但函數的返回值不一定是字符型數據。1.求字符串長度函數格式:LEN(字符表達式)功能:返回指定字符表達式的長度,即字符表達式所包含的字符個數。注意:一個漢字占兩個字符的寬度,空格也計算在內。【例3.18】求字符串長度。解:?LEN("中國CHINA您好!")

主屏幕顯示結果為:162.空格函數格式:SPACE(數值表達式)功能:產生指定長度的空格字符串,長度由數值表達式的值確定。返回25第二十五頁,共三十七頁,2022年,8月28日3.刪除字符串前后空格的函數

格式:TRIM(字符表達式)LTRIM(字符表達式)ALLTRIM(字符表達式)功能:TRIM刪除字符串右邊的空格,即字符串末尾的空格。

LTRIM刪除字符串左邊的空格,既字符串前導的空格

ALLTRIM刪除字符串兩端的空格。注意:以上均不能刪除字符串中間的空格?!纠?.19】刪除字符串前后空格示例。STORESPACE(3)+“CHINA”+SPACE(2)TOB?LEN(B),LEN(LTRIM(B)),LEN(TRIM(B)),LEN(ALLTRIM(B))

主屏幕顯示結果為:10785返回26第二十六頁,共三十七頁,2022年,8月28日4.取子串函數格式:LEFT(字符表達式,長度)RIGHT(字符表達式,長度)SUBSTR(字符表達式,起始位置[,長度])功能:LEFT對字符串從左端開始取指定"長度"的子串作為函數值。

RIGHT對字符串從右端開始取指定"長度"的子串作為函數值。

SUBSTR對字符串從指定的"起始位置"開始取指定"長度"的子串作為函數值,若省略"長度"則從指定的"起始位置"開始取到最后一個字符的子串作為函數值?!纠?.20】在字符串"VisualFoxPro程序設計"中分別截取子串"Visual"、"程序設計"和"FoxPro"。解:?LEFT("VisualFoxPro程序設計",6)

主屏幕顯示結果為:Visual返回27第二十七頁,共三十七頁,2022年,8月28日?RIGHT("VisualFoxPro程序設計",8)

主屏幕顯示結果為:程序設計?SUBSTR("VisualFoxPro程序設計",7,6)

主屏幕顯示結果為:FoxPro5.求子串位置函數格式:AT(字符表達式1,字符表達式2[,數值表達式])功能:求"字符表達式1"在"字符表達式2"中的開始位置,未找到時結果為0,[,數值表達式]用于表明"字符表達式1"是第幾次出現的,若省略默認為1?!纠?.21】求子串位置函數示例。STORE"thisisabook"TOm

解:?AT("is",m),AT("IS",m),AT("is",m,2)

主屏幕顯示結果為:

306返回28第二十八頁,共三十七頁,2022年,8月28日三、日期和時間函數日期和時間函數的自變量一般是日期表達式或日期時間表達式,但函數的返回值不一定是日期型或日期時間型。1.系統(tǒng)日期和時間函數格式:DATE()TIME()DATETIME()功能:DATE()返回當前系統(tǒng)的日期,函數值為日期型。

TIME()以24小時制返回當前系統(tǒng)的時間,函數值為字符型。

DATETIME()返回當前系統(tǒng)的日期及時間,函數值為日期時間型?!纠?.24】顯示系統(tǒng)當前的日期、時間。解:?DATE(),TIME(),DATETIME()

主屏幕顯示結果為:當前系統(tǒng)時間的日期、時間、日期時間。返回29第二十九頁,共三十七頁,2022年,8月28日2.年、月、日函數格式:YEAR(日期表達式/日期時間表達式)MONTH(日期表達式/日期時間表達式)DAY(日期表達式/日期時間表達式)功能:YEAR函數返回日期表達式或日期時間表達式中的年份。

MONTH函數返回日期表達式或日期時間表達式中的月份。

DAY函數返回日期表達式或日期時間表達式中的月份中的天數?!纠?.25】顯示系統(tǒng)當前的日期。解:?YEAR(DATE()),MONTH(DATE()),DAY(DATE())

主屏幕顯示結果為:當前系統(tǒng)時間的年月日。返回30第三十頁,共三十七頁,2022年,8月28日3.時、分、秒函數格式:HOUR(日期時間表達式)MINUTE(日期時間表達式)SEC(日期時間表達式)功能:HOUR函數返回日期時間表達式中的小時部分。

MINUTE函數返回日期時間表達式中的分鐘部分。

SEC函數返回日期時間表達式中的秒數部分。三個函數的結果都為數值型。返回31第三十一頁,共三十七頁,2022年,8月28日四、數據類型轉換函數數據類型轉換函數可以將某一種類型的數據轉換成另一種類型的數據。1.數值轉換為字符函數格式:STR(數值表達式[,長度][,小數位數])功能:將數值表達式的值轉換為字符串,轉換時自動四舍五入。默認長度為10,若不指定小數位則保留到整數位,如果長度小于數值表達式值的整數位數,則返回一串*號。長度大于轉換后的位數時,右對齊左補空格【例3.26】將數值型數據456.789轉換為字符型數據,并顯示其結果。解:?STR(456.789)

主屏幕顯示結果為:凵凵凵凵凵凵凵457

返回32第三十二頁,共三十七頁,2022年,8月28日?STR(456.789,7,2),STR(456.789,5,2),STR(456.789,2)

溫馨提示

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

評論

0/150

提交評論