文學(xué)小克上傳第二章VFP的基本語法課件_第1頁
文學(xué)小克上傳第二章VFP的基本語法課件_第2頁
文學(xué)小克上傳第二章VFP的基本語法課件_第3頁
文學(xué)小克上傳第二章VFP的基本語法課件_第4頁
文學(xué)小克上傳第二章VFP的基本語法課件_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第二章VisualFoxPro的基本語法教學(xué)目標(biāo)掌握VFP中數(shù)據(jù)類型及變量的分類;掌握變量的命名及表達(dá)式運算;掌握內(nèi)存變量的操作;熟悉VFP函數(shù)的使用。雙語課堂重點與難點:數(shù)據(jù)及變量的類型、使用邏輯表達(dá)式描述復(fù)合條件;類型轉(zhuǎn)換函數(shù)及狀態(tài)測試函數(shù)。

2.1

VFP數(shù)據(jù)類型一.常量表示一個具體的、不變的值。不同類型的常量有不同的書寫格式。1.數(shù)值型常量用來表示一個數(shù)量的大小,可以進(jìn)行算術(shù)運算。包含0~9的阿拉伯?dāng)?shù)字、小數(shù)點與正負(fù)號,最大長度為20位。示例:538,-10.5,5.87E12,1.6E-122.貨幣型常量用來表示貨幣值,在數(shù)字前加一個符號($)。存儲和計算時采用4位小數(shù),多余小數(shù)位四舍五入。示例:$123.45673.字符型常量

用定界符(單引號、雙引號和方括號)括起來的字符串??梢允?6個英文大小寫字母、10個阿拉伯?dāng)?shù)字、各種漢字、專用符號和空格等,最大長度可達(dá)254個字符。示例:“ade”,[568],“‘book’的中文意思是‘書’?!弊⒁猓喝绻麑⒗?dāng)?shù)字定義為字符串時,它不具備數(shù)學(xué)上的數(shù)值含義,不能參加數(shù)學(xué)運算,如電話號碼,郵編等。4.日期型常量

表示一個確切的日期,用大括號作為定界符。1)傳統(tǒng)的日期格式:{mm/dd/yy},受設(shè)置命令的影響。2)嚴(yán)格的日期格式:{^YYYY-MM-DD},不受設(shè)置命令的影響,能表達(dá)一個確切的日期。示例:{10/08/06},{^2006-08-06}嚴(yán)格的日期格式可以在任何情況下使用,而傳統(tǒng)的日期格式只能在SETSTRICTDATETO0

狀態(tài)下使用。3)影響日期格式的設(shè)置命令●

SETMARKTO[日期分隔符]●SETDATETO<日期格式>●SETCENTURYON|OFF&&設(shè)置年份位數(shù)●

SETSTRICTDATETO[0|1]

&&是否進(jìn)行嚴(yán)格的日期格式檢查0:檢查1:不檢查2:檢查,并且對CTOD()和CTOT()也有效5.日期時間型常量包括日期和時間兩部分內(nèi)容,用來描述日期和時間。示例:{05/16/9912:00:00}6.邏輯型常量

只有邏輯真和邏輯假兩個值,邏輯真的表示形式有:.T.、.t.、.Y.和.y.邏輯假的表示形式有:.F.、.f.、.N.和.n.邏輯型數(shù)據(jù)長度固定為1位,占用1個字節(jié)。二.變量在使用過程中其值可以改變的量。VFP的變量分為字段變量和內(nèi)存變量兩大類。內(nèi)存變量又包括簡單內(nèi)存變量、系統(tǒng)內(nèi)存變量和數(shù)組變量。1.簡單內(nèi)存變量內(nèi)存中的一個存儲區(qū)域,是一種臨時工作單元,常被用來存儲所需要的常數(shù)、中間結(jié)果或最終結(jié)果。變量名由漢字、字母、數(shù)字和下劃線組成,必須由字母或漢字開頭。(1)內(nèi)存變量的命名規(guī)則:①由字母、漢字、數(shù)字或下劃線組成。②以字母、漢字或下劃線開頭。③長度為1~128個字符,每個漢字占兩個字符。④

不能使用VFP的保留字。當(dāng)內(nèi)存變量名與字段變量名相同時,字段名優(yōu)先于內(nèi)存變量名,使用時可以在內(nèi)存變量名前加上M.(或M->)以示區(qū)別,但賦值時不能使用前綴。

例:

M.姓名&&表示內(nèi)存變量(2)內(nèi)存變量的建立格式一:

<內(nèi)存變量名>=<表達(dá)式>功能:

計算<表達(dá)式>的值,然后將計算結(jié)果賦給一個內(nèi)存變量。說明:

①表達(dá)式由常量、變量、函數(shù)和運算符組成。②此格式只能給一個內(nèi)存變量賦值。③“=”為賦值號,<內(nèi)存變量名>必須放在賦值號的左邊。④內(nèi)存變量的值及類型在賦值時定義,其類型與所賦值的類型相同。⑤同一個內(nèi)存變量可以多次被賦值,但以最后一次所賦的值為準(zhǔn)。格式二:STORE<表達(dá)式>TO<內(nèi)存變量名表>功能:

計算<表達(dá)式>的值,然后將計算結(jié)果賦給一個或一批內(nèi)存變量。

說明:

①“STORE”命令可以給多個內(nèi)存變量賦相同的值,因而STORE命令常常用于給一批內(nèi)存變量賦值,如清零、置1、置空格等。②當(dāng)<內(nèi)存變量名表>中有多個內(nèi)存變量時,變量名之間須用逗號來分隔。③STORE是命令名,TO是命令中的短語,二者都是保留字。

?|??

<內(nèi)存變量名表>例:

?X,DD,AA

&&從下一行的第一列開始,顯示內(nèi)存變量X,DD,AA的值,變量間用“,”分隔.

??X,DD,AA

&&從光標(biāo)的當(dāng)前位置開始,顯示X,DD,AA的值

(3)內(nèi)存變量的顯示功能:定義一個或多個數(shù)組。說明:●

下標(biāo)可以是常量、變量或表達(dá)式,缺省<下標(biāo)2>為一維數(shù)組?!?/p>

數(shù)組元素可以使用圓括號,也可以使用方括號?!?/p>

數(shù)組各元素初值均為.F.●

允許數(shù)組重定義。(1)數(shù)組的定義格式:DIMENSION<數(shù)組名1>(<下標(biāo)1>[,<下標(biāo)2>])[,<數(shù)組名2>(<下標(biāo)1>[,<下標(biāo)2>])…)2.數(shù)組功能:計算表達(dá)式的值,并將其賦予指定的數(shù)組或數(shù)組元素。說明:●

下標(biāo)可以是常量、變量或表達(dá)式,缺省<下標(biāo)2>為一維數(shù)組。●

下標(biāo)缺省時,將表達(dá)式的值賦予指定數(shù)組的所有元素。2.數(shù)組的賦值格式1STORE<表達(dá)式>TO<數(shù)組名1>[(<下標(biāo)1>[,<下標(biāo)2>])][,<數(shù)組名2>[(<下標(biāo)1>[,<下標(biāo)2>])]…]格式2<數(shù)組名1>[(<下標(biāo)1>[,<下標(biāo)2>])]

=<表達(dá)式>

三.運算符及表達(dá)式運算符對數(shù)據(jù)進(jìn)行運算操作的符號。表達(dá)式用運算符將常量、變量、函數(shù)等連接起來的式子。1.

數(shù)值運算符:圓括號()、乘方(**或^)、乘(*)、除(/)、取余(%)、加(+)、減(-)2.字符串運算符:直接連接(+)去空連接(-)“+”運算符與“-”運算符的區(qū)別:ABeBF—ABeBFABeBF+ABeBF3.日期型運算符:+、-日期表達(dá)式的幾種形式:<日期型數(shù)據(jù)>+<數(shù)值型數(shù)據(jù)><數(shù)值型數(shù)據(jù)>+<日期型數(shù)據(jù)><日期型數(shù)據(jù)>-<數(shù)值型數(shù)據(jù)><日期型數(shù)據(jù)>-<日期型數(shù)據(jù)>

例:?{10/01/06}-{09/01/06}&&結(jié)果為30(兩日期相距的天數(shù))

?{10/01/06}+30&&結(jié)果為{10/31/06}

注意:兩個日期值相加是無意義的。4.關(guān)系運算符:

小于(<)、大于(>)、等于(=)、不等于(<>、#或!=)、小于等于(<=)、大于等于(>=)、字符串包含($)、字符串精確比較(==)。說明:(1)運算符==和$僅適用于字符型數(shù)據(jù)。其他運算符適用于任何類型的數(shù)據(jù),但前后兩個運算對象的數(shù)據(jù)類型必須一致。①

數(shù)值型和貨幣型數(shù)據(jù)比較:

按數(shù)值的大小比較,包括負(fù)號。②日期或日期時間型數(shù)據(jù)比較:

越早的日期或時間越小,越晚的日期或時間越大。③邏輯型數(shù)據(jù)比較:

.T.大于.F.④包含運算符:檢測左邊的字符串是否被包含在右邊的字符串中。如果包含,返回邏輯真值(.T.),否則返回邏輯假值(.F.)。

精確比較運算符:只有當(dāng)兩邊的字符串完全相等時,才返回邏輯真值(.T.)。例:?”劉”

$

”劉曉剛”

&&結(jié)果為.T.

?”微型計算機(jī)”

$”計算機(jī)”

&&結(jié)果為.F.

(2)關(guān)系運算符具有相同的優(yōu)先級,關(guān)系運算的優(yōu)先級低于數(shù)值、日期、字符表達(dá)式。(3)設(shè)置字符的排序次序當(dāng)比較兩個字符型數(shù)據(jù)時,系統(tǒng)對兩個字符串的字符自左向右逐個比較,一旦發(fā)現(xiàn)兩個對應(yīng)字符不同,就根據(jù)這兩個字符的排序序列決定兩個字符串的大小。字符的排序序列:

Machine(機(jī)器)次序:按照機(jī)內(nèi)碼順序排序。

PinYin(拼音)次序:按照拼音次序排序。

Stroke(筆畫)次序:按照書寫筆畫的多少排序。5.邏輯運算符:邏輯非(.NOT.)、邏輯與(.AND.)、邏輯或(.OR.)運算規(guī)則:進(jìn)行邏輯與運算時,當(dāng)參加運算的雙方都為真值時,運算結(jié)果為真值,否則為假值;進(jìn)行邏輯或運算時,當(dāng)參加運算的雙方都為假值時,運算結(jié)果為假值,否則為真值;進(jìn)行邏輯非運算時,運算結(jié)果為原來的相反值。在VFP中可以省略運算符兩端的點,寫成NOT、AND、OR。例:使用邏輯表達(dá)式描述復(fù)合條件條件一:“自動化專業(yè)的女團(tuán)員”

專業(yè)=“自動化”AND性別=‘女’AND團(tuán)員條件二:“未婚的女職工”

NOT婚否AND性別=‘女’條件三:“職稱為工程師或部門為技術(shù)科的男職工”(職稱=“工程師”O(jiān)R部門=“技術(shù)科”)AND性別=‘男’算術(shù)運算符最高級**或^(乘方)

*、/、和%(乘、除和余數(shù))

+和-(加和減)

+和-(直接連接和去空連接)

+和-(加和減)

日期運算符

關(guān)系運算符<、>、=、<=、>=、<>、#、!=、$、==各運算符優(yōu)先級相同次高級邏輯運算符NOT或?。ㄟ壿嫹牵?/p>

AND(邏輯與)OR(邏輯或)

最低級字符串運算符

2.2

命令結(jié)構(gòu)與書寫規(guī)則命令動詞+修飾子句命令結(jié)構(gòu)示例:USEXS&&打開名為XS的表文件COUNTALLFOR成績<60&&統(tǒng)計XS中分?jǐn)?shù)在60分以下的人數(shù)LISTALL姓名,成績FOR成績<60TOPRINTER

&&在打印機(jī)上輸出成績?yōu)?0分以下的學(xué)生的姓名和分?jǐn)?shù)USE&&關(guān)閉表文件XS,將其保存在磁盤上VisualFoxPro命令的一般格式

<命令動詞>;

[<表達(dá)式表>];

[<范圍>]

;

[FOR<條件1>];

[WHILE<條件2>];

[TOFILE<文件名>∣TOPRINTER∣TO;

ARRAY<數(shù)組名>∣TO<內(nèi)存變量>];

[ALL

[LIKE∣EXCEPT<通配符>]];

[IN<別名>]各部分的意義命令動詞:VFP的命令名,指示計算機(jī)要完成的操作。表達(dá)式表:規(guī)定命令可處理的字段。

范圍:指定命令所作用的記錄范圍。范圍有下列五種選擇:

ALL

當(dāng)前表中的全部記錄。NEXT<n>

從當(dāng)前記錄開始的連續(xù)N條記錄。RECORD<n>

當(dāng)前表中的第N號記錄。REST

從當(dāng)前記錄開始到最后一條記錄為止的所有記錄。缺?。?/p>

在不同的命令中含義不同,等價于ALL或僅作用于當(dāng)前記錄。123456NEXT3RESTALL當(dāng)前記錄指針RECORD3

范圍示例:各部分的意義FOR<條件>:規(guī)定只對滿足條件的記錄進(jìn)行操作。WHILE<條件>:從當(dāng)前記錄開始,按記錄順序從上向下處理,一旦遇到不滿足條件的記錄,就停止搜索并結(jié)束該命令的執(zhí)行。(WHILE子句比FOR子句優(yōu)先)TO子句:控制操作結(jié)果的輸出去向。學(xué)號課程號成績03010101760301010279030102029003010301870301020167

學(xué)號 課程號 成績03010101 7603010301870301020167學(xué)號 課程號 成績0301010176Listfor

課程號=‘01’Listwhile

課程號=‘01’FOR

與WHILE的區(qū)別命令書寫規(guī)則1)必須以命令動詞開頭,其后子句的順序可以任意。2)命令動詞、修飾和限制子句之間要用空格分開。3)命令動詞可以縮寫為前四個字符,并且命令動詞中的英文字母不區(qū)分大小寫。4)變量名、字段名和文件名應(yīng)避免使用保留字,以免產(chǎn)生錯誤。5)一行只能寫一條命令,若分多行書寫,必須使用續(xù)行符“;”。6)每條命令以回車健作為結(jié)束標(biāo)志。符號的約定

[]位于該符號中的內(nèi)容是可選項。書寫時符號本身不輸入<>位于該符號中的內(nèi)容是必選項。書寫時符號本身不輸入[<>]表示如果[]中的內(nèi)容被選中,則<>中的內(nèi)容為必選項

|表示或者,即根據(jù)需要從該符號緊鄰的前后兩項中,只能選擇其中的一項

...表示該符號前面的內(nèi)容可重復(fù)多次

2.3

常用函數(shù)函數(shù)名起標(biāo)識作用;參數(shù)是自變量,寫在括號內(nèi),當(dāng)有多個參數(shù)時,各個參數(shù)之間用逗號分隔;括號中沒有參數(shù)的函數(shù)稱為無參函數(shù)。每個函數(shù)運算后都會返回一個值,稱為函數(shù)值,無參函數(shù)也不例外,函數(shù)值會因參數(shù)值而異。

函數(shù)的三個要素:函數(shù)名參數(shù)函數(shù)值函數(shù)名([參數(shù)1[,參數(shù)2]…])函數(shù)的一般格式:1.宏替換函數(shù)格式:&<字符型變量>[.]示例:aa=“bb”bb=

“北京”

?aa,bb,&aa?“&bb.是中國的首都”&&用“.”作為內(nèi)存變量的結(jié)束符

n=“567.83”?356.08+&n注意:如果‘&’后不跟有效的內(nèi)存變量名,則‘&’只是一個字符

2.3.1字符處理函數(shù)格式:AT(<子字符串>,<主字符串>[,<數(shù)值n>])功能:

★AT(<子字符串>,<主字符串>)

返回<子字符串>在<主字符串>中第一次出現(xiàn)的起始位置。★

AT(<子字符串>,<主字符串>,<數(shù)值n>)返回<子字符串>

在<主字符串>中第n次出現(xiàn)的起始位置?!癟hisisaexample.”?AT(‘is’,C)?AT(‘is’,C,2)36變量C2.子串查找函數(shù)3.計算字符串長度函數(shù)LEN()格式:LEN(<字符表達(dá)式>)示例:?LEN(“x+y=?”)

&&結(jié)果為5

?LEN(“VisualFoxPro程序設(shè)計")

&&結(jié)果為21

4.生成空格函數(shù)SPACE()格式:SPACE(<數(shù)值表達(dá)式>)示例:?“湖北”+SPACE(3)+“武漢”&&

湖北武漢5.重復(fù)字符串函數(shù)REPLICATE()格式:REPLICATE(<字符表達(dá)式>,<數(shù)值表達(dá)式>)示例:?REPLICATE(‘***’,3)&&*********取左子串:LEFT(<字符表達(dá)式>,<數(shù)值表達(dá)式>

)取右子串:RIGHT(<字符表達(dá)式>,<數(shù)值表達(dá)式>)取任意子串:

SUBSTR(<字符表達(dá)式>,<起始位置>[,<長度>])“12345.6789”“789”“1234”“5.6”?RIGHT(C,3)變量C?LEFT(C,4)?SUBSTR(C,5,3)6.取子串函數(shù)7.刪除前后空格函數(shù)格式:TRIM(<字符表達(dá)式>)

LTRIM(<字符表達(dá)式>)ALLTRIM(<字符表達(dá)式>)示例: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)日期和時間函數(shù)格式:DATE()

TIME()DATETIME()示例:?DATE(),TIME(),DATETIME()

&&07/05/0614:38:0607/05/0602:38:06PM2.3.3日期和時間函數(shù)2.求年份、月份和天數(shù)函數(shù)格式:YEAR(<日期表達(dá)式>|<日期時間表達(dá)式>)

MONTH(<日期表達(dá)式>|<日期時間表達(dá)式>)

DAY(<日期表達(dá)式>|<日期時間表達(dá)式>)示例:?YEAR(DATE())

&&2006

?MONTH(DATE())&&7

?DAY(DATE())&&5

假設(shè)當(dāng)前日期為2006年7月5日

DOW(<日期表達(dá)式>)

&&返回1~7的數(shù)值

CDOW(<日期表達(dá)式>)&&返回英文形式的星期

注意:一個星期的第1天為Sunday

3.周日函數(shù)1.求ASCII函數(shù):

格式:

ASC(<字符表達(dá)式>)

返回<expC>中的第一個字符對應(yīng)的ASCII碼值。2.求字符函數(shù):

格式:CHR(<數(shù)值表達(dá)式>)

返回ASCII值為<數(shù)值表達(dá)式>的字符。字符(C)字符的ACSII碼(N)ASCCHR2.3.4數(shù)據(jù)類型轉(zhuǎn)換函數(shù)

格式:STR(<數(shù)值表達(dá)式>[,<長度>][,<小數(shù)位數(shù)])

說明:

(1)<長度>為轉(zhuǎn)換后的字符串位數(shù),該長度包括小數(shù)點、負(fù)號。如果缺省<長度>和<小數(shù)位數(shù)>,其輸出結(jié)果將取固定長度為10位,且只取其整數(shù)部分;

(2)<小數(shù)位數(shù)>:若<小數(shù)位數(shù)>的設(shè)定值大于實際數(shù)值的小數(shù)位,則轉(zhuǎn)換后的字符串后補(bǔ)0,若<小數(shù)位數(shù)>的設(shè)定值小于實際數(shù)值的小數(shù)位,則對小數(shù)四舍五入;若缺省<小數(shù)位數(shù)>,則轉(zhuǎn)換后為整數(shù),原小數(shù)部分四舍五入;3.數(shù)值型向字符型轉(zhuǎn)換函數(shù)(3)如果<長度>值大于<數(shù)值表達(dá)式>給出值的數(shù)字位數(shù)時,在返回的字符串左邊添加空格;(4)如果<長度>值小于<數(shù)值表達(dá)式>值的整數(shù)部分位數(shù),將返回一串星號,表示數(shù)值溢出。示例:

n=1234.56789

?STR(n,8,2)

&&結(jié)果為1234.57

?STR(n,8)

&&結(jié)果為1235

?STR(n,8,4)

&&結(jié)果為1234.568

?STR(n,12,6)

&&結(jié)果為1234.567890

?STR(n)

&&結(jié)果為1235?STR(n,3)

&&結(jié)果為***

4.字符串轉(zhuǎn)換成數(shù)值函數(shù)VAL()格式:VAL(<字符表達(dá)式>)說明:(1)<字符表達(dá)式>的值必須是數(shù)字形式的字符串,它只能含有數(shù)字、正負(fù)號和小數(shù)點;(2)轉(zhuǎn)換時,如果遇到非數(shù)字字符則停止。如果字符表達(dá)式的第一個字符即非數(shù)字字符,則轉(zhuǎn)換停止,其值為0.00;示例:?VAL(“-789.123”)

&&結(jié)果為-789.12?VAL("10A.56")

&&結(jié)果為10.00?VAL("C346.05")

&&結(jié)果為0.00格式:CTOD(<字符表達(dá)式>)

CTOT(<字符表達(dá)式>)說明:(1)<字符表達(dá)式>必須是一個有效的日

溫馨提示

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

最新文檔

評論

0/150

提交評論