VF課件第四章VF程序設(shè)計(jì)基礎(chǔ)_第1頁
VF課件第四章VF程序設(shè)計(jì)基礎(chǔ)_第2頁
VF課件第四章VF程序設(shè)計(jì)基礎(chǔ)_第3頁
VF課件第四章VF程序設(shè)計(jì)基礎(chǔ)_第4頁
VF課件第四章VF程序設(shè)計(jì)基礎(chǔ)_第5頁
已閱讀5頁,還剩150頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第4章VF程序設(shè)計(jì)基礎(chǔ)

本章內(nèi)容

1.常量和變量

2.表達(dá)式與常用函數(shù)

3.VF語法結(jié)構(gòu)

4.多模塊程序設(shè)計(jì)

VF6.0的工作方式

?VF的工作方式分為:

1.菜單操作方式

2.命令交互方式

3.程序執(zhí)行方式

4.1常量與變量

-通常,數(shù)據(jù)存入到常量、變量、數(shù)組中,而在VF

系統(tǒng)環(huán)境下,數(shù)據(jù)還可以存入到字段、記錄和對

象中。

-這些供數(shù)據(jù)存儲的常量、變量、數(shù)組、字段、記

錄那雙象稱為數(shù)據(jù)存儲容器。

-根據(jù)數(shù)據(jù)在執(zhí)行時(shí)其值是否改變,把數(shù)據(jù)劃分為

常量和變量兩種。

4.1常量與變量

kMicrosoftVisualFoxPro,1□1x|

文件(E)編輯(卻顯示⑦格式9)工具(D程序?窗口(忖幫助3

□I謝閭國因也幻亳腐|酗”眼II3

E3命令,1□1x|

圓面積是78.50R=5A

C=3.14*R*R

?”圓面積

結(jié)果顯示在命令窗

在窗口工口內(nèi)輸入

命令行:作區(qū)命令行

R=5

C=3.14*R*R

?"和早”(

4.1.1常量

-常量是取值固定不變的數(shù)據(jù)。

?VFP支持字符型、數(shù)值型、邏輯型、貨幣型、

符號型、日期型和日期時(shí)間型常量。

?1.數(shù)值型常量_____________________

一如:15、-3.9>0.54

-可使用科學(xué)計(jì)數(shù)法的形式書寫,意■■

5.3249X1016

4.1.1常量

2,字符型常量

?字符型常量——用定界符括起來的字符串

?定界符:""或'’或口,使用字符型常量

必須加定界符,而且定界符必須成對出現(xiàn)。

ca空格串“”和空串的區(qū)別:

空格串““,串長>0。4個(gè)空格,串長為4。

空串嗎串長=0。

一G3如果使用2對以上的定界符,內(nèi)外定界符

"ABC'DEF'GH

4.1.1常量

3「4.日期、日期時(shí)間型常量

一定界符是:大括號{}

-日期型常量的嚴(yán)格格式{AYYYY?MM?DD},

如{A1949-10-01}

-日期型時(shí)間性的嚴(yán)格格式

{AYYYY-MM-DD[hh[:mm[:ss]]][a|p]}

如:

-非嚴(yán)格的格式是:{MM/DD/YY}、

系統(tǒng)默認(rèn)狀態(tài)下只能使用嚴(yán)格格式的日期。

4.1.1常量

5.邏輯型常量

?邏輯型常量只有真和假兩個(gè)值

?真:.T..t..Y..y.

?假:E.f?N?n?

?定界符:原點(diǎn).

4.1.1常量

6,貨幣型常量

?以貨幣符號$開頭

?在存儲和計(jì)算時(shí)四舍五入到四位小數(shù)

?小數(shù)位不足就在尾部補(bǔ)零

?沒有科學(xué)記數(shù)法形式

?例:在命令窗口中輸入命令?$1.23456789,

則在王窗口中顯?。?/p>

?A)$1.23456789B)$1.2456

?C)1.2346D)錯誤

4.1.1常量

7.符號常量

?一種特殊常量,僅限在程序中使用

?定義格式:#DEFINE常量名數(shù)值

如:#DEFINEpi3.1415

?在程序中可直接用符號常量名代替常量值

如:20*pi等價(jià)于20*3.1415

練習(xí)

?例:常量3.14$3.14,3.1夕分別是什么數(shù)

據(jù)類型?

?答案:數(shù)值型N、貨幣型Y、字符型C。

?例:在命令窗口中輸入?12+3,則主窗口中

顯示:

?答案:15

?例:在包令窗口中輸入?“12+3”,則主窗

口中顯不:

A)15B)“15"C)"12+3”D)12+3

例題:以下是合法常量的是,數(shù)據(jù)類

型分別為—O

A)$1.23456B)¥1.234

C){2007/04/07}D)[A07/04/07]

E)LTJF).N?

G)$1.6e3H)2007/04/07

■答案:A是合法的貨幣型常量,其值為1.2346;

?B不是合法的常量;

?C不是合法的常量,因?yàn)槿鄙俟?/p>

?D是合法的字符型常量;

?E是合法的字符型常量;

tzzr人、,匚,,一、rm上ri-rr>1.、I,-r=i

4.1,2變量

?變量是取值能被程序改變的數(shù)據(jù)

般內(nèi)存變量(存放在內(nèi)存單元的單個(gè)數(shù)據(jù))

「內(nèi)存變量系統(tǒng)內(nèi)存變量(由VF系統(tǒng)提供)

數(shù)組變量(存放在內(nèi)存單元組的多個(gè)數(shù)據(jù))

字段變量(存放在表文件中的字段)

1.內(nèi)存變量

(1)內(nèi)存變量的概念

-內(nèi)存變量是內(nèi)存中的一個(gè)存儲區(qū)域,存放程序運(yùn)

行的中間結(jié)果或最終結(jié)果。

-命名規(guī)則

?以字母、漢字或下劃線開頭

?長度最多為128

?由字母、漢字、數(shù)字或下劃線組成的字符串

注意:VF中變量名不區(qū)分大小寫。

1.內(nèi)存變量

(2)內(nèi)存變量的建立

>〈內(nèi)存變量名>=<表達(dá)式〉

>STORE〈表達(dá)式〉TOv內(nèi)存變量名>Lv內(nèi)存變量名>]

如:w=uVisualFoxPro,J

y2={A2008-01-16}

store90toy1,y2

-內(nèi)存變量可被先后多次賦予不同類型的值。

“二”一次只能給一個(gè)變量賦值;

..一??,,>A上一A、,t?I」、一.I一t、,/

1,內(nèi)存變量

(3)內(nèi)存變量的顯示

格式:DISPLAY/LISTMEMORY[LIKEv通

酉己符刁[TOPRINTER[PROMPT]/TO

FILEv文件名習(xí)

例如:顯示內(nèi)存變量。

A=12

STORE“123”TON1,N2

B={A2003-01-01)

DISPMEMOLIKEN*

DISPMEMO、

2.字段變量

(1)字段變量的概念

-隸屬表文件。

-確定表結(jié)構(gòu)就包括了定義字段變量。

-命名規(guī)則:

以字母或漢字開頭,長度對于自由表不超過

10個(gè)字符,對于數(shù)據(jù)庫表不超過128個(gè)字符,由

字母、漢字、數(shù)字或下劃線組成的字符串,如:

職工號。不能與系統(tǒng)保留字(如:character)

沖突。

2.字段變量

(2)字段變量的類型

?多達(dá)13種。

?常用類型如:字符型C、數(shù)值型N、貨幣型Y、日

期型D、邏輯型L、備注型M、通用型G。

字段變量與內(nèi)存變量

字段變量與內(nèi)存變量的區(qū)別:

①定義方式不同。

字段變量在建立表結(jié)構(gòu)時(shí)定義;而內(nèi)存變量

使用賦值命令進(jìn)行定義。

②使用方式不同。

字段變量在使用前必須用命令(USE表名)打

開;內(nèi)存變量定義后就可使用。

③生存期不同。

—字段變量駐留在外存;內(nèi)存變量駐留在內(nèi)

存,隨著VF關(guān)閉而被消除。

字段變量與內(nèi)存變量

?建立內(nèi)存變量時(shí)不必指定變量的類型。存放什

么類型的數(shù)據(jù),該變量就是什么類型。

二字段變量與內(nèi)存變量同名時(shí),字段變量名優(yōu)先

級高于同名的內(nèi)存變量。

-如現(xiàn)同時(shí)有:

字段變量:部門廿

內(nèi)存變量:部門號

則在使用內(nèi)存變量部門號時(shí),需寫成:

3,數(shù)組

?數(shù)組是一組按照一定順序排列的內(nèi)存變量,各

個(gè)變量稱為數(shù)組元素,元素之間有序。

-數(shù)組中數(shù)組元素的數(shù)據(jù)類型可以互不相同

-通過數(shù)組下標(biāo)來引用數(shù)組元素

?一維數(shù)組如下:

A(1)A(2)A(3)A(4)A(5)A(6)A(7)A(8)

?二維數(shù)組如下:

A(1,1)A(1,2)A(1,3)A(1,4)

A(2,1)A(2,2)A(2,3)A(2,4)

?和內(nèi)存變量不同,數(shù)組必須先定義后使用。

3,數(shù)組

(1)數(shù)組的定義

一定義一維數(shù)組或二維數(shù)組及其下標(biāo)的下界

?DECLEAR|DIMENSION〈數(shù)組名〉(下標(biāo))

?如:DIMENSIONA(3)

DIMENSIONB(2,3)

?數(shù)組下標(biāo)的下界為1

?下標(biāo)可以是常量、變量、函數(shù)或表達(dá)式,用

圓括號括起來

?對于一維數(shù)組,下標(biāo)是數(shù)組元素的個(gè)數(shù),如

(3)表示該數(shù)組中有3個(gè)元素;

?對于二維數(shù)組,下標(biāo)是數(shù)組的最大行號和最

3.數(shù)組

(2)數(shù)組的賦值

?數(shù)組元素的數(shù)據(jù)類型可以修改,系統(tǒng)默認(rèn)

的賦值為.F.

?賦值方法同內(nèi)存變量,使用STORE或=

?若用賦值命令賦值時(shí)未指明下標(biāo),則數(shù)組

中的所有數(shù)組元素同時(shí)被賦予同一個(gè)值;

?若指明下標(biāo),則給指定的數(shù)組元素賦值。

3,數(shù)組

(3)數(shù)組與表的數(shù)據(jù)傳遞

①將當(dāng)前記錄傳遞到數(shù)組或內(nèi)存變量中

use借閱

Go3&&將當(dāng)前記錄值傳送給

Scattertotemp數(shù)組temp

②將數(shù)組或內(nèi)存變量中的數(shù)據(jù)傳遞到當(dāng)前記

錄中

?use借閱

?copystructuretotemptable

?usetemptable

??appendblank-添那電

內(nèi)存變量和數(shù)組的釋放(清除)

?CLEARALL或CLEARMEMORY

-同時(shí)清除所有的內(nèi)存變量、數(shù)組__

?RELEASEv內(nèi)存變量名,[,v內(nèi)存變量名>]

?RELEASEALL[LIKE/EXCEPTv通酉己符習(xí)

-清除指定的內(nèi)存變量、數(shù)組

練習(xí)題:顯示結(jié)果

a=5

ab=7

abc=7

b=9

releasealllikea?

?ab

?abc

?b

releasealllike*

?b

4.系統(tǒng)變量

?系統(tǒng)變量是由VF系統(tǒng)提供的一組變量

-用于控制外部設(shè)備(如打印機(jī)、鼠標(biāo)等)、屏

幕輸出格式,或處理系統(tǒng)時(shí)間、剪貼板等內(nèi)容

的信息

-系統(tǒng)內(nèi)存變量是指以下劃線.開頭的、由系統(tǒng)

自動定義生成的變量。

如:_DIARYDATE用于存儲系統(tǒng)當(dāng)前日期

CLIPTEXT表示接受文本并送入剪貼板。

小結(jié)

[目的要求]:

-了解常量、變量、數(shù)組的含義;

?掌握常量的分類及每類常量的書寫;

?掌握變量的分類;

?掌握內(nèi)存變量的定義、賦值、顯示、保

存、釋放;

?掌握數(shù)組的定義、構(gòu)成、使用。

■[重點(diǎn)]:常量使用;變量的定義、使用;

數(shù)組的定義、構(gòu)成、使用。

?[難點(diǎn)]:數(shù)據(jù)的正確書寫;數(shù)組的理解。

4.2表達(dá)式與常用函數(shù)

421表達(dá)式

-由常量、變量、函數(shù)以及運(yùn)算符連接起來的式

子,形式為:

操作數(shù)1運(yùn)算符操作數(shù)2

如:12+3

-包括下面幾種

?數(shù)值表達(dá)式、字符表達(dá)式、日期表達(dá)式、關(guān)

系表達(dá)式、邏輯表達(dá)式

1.數(shù)值表達(dá)式

?數(shù)值表達(dá)式

-由算術(shù)運(yùn)算符將數(shù)

值類型的數(shù)據(jù)連接

起來的式子,其運(yùn)

算結(jié)果仍為數(shù)值型

7(1/2-6/7)*20.56

數(shù)據(jù)。

?(10+aA2)/(1+bA(c*d))

?16%3

1.數(shù)值表達(dá)式

■所有運(yùn)算符都不能省略。

?運(yùn)算數(shù)和運(yùn)算符要寫在同一行。

?同一級別的運(yùn)算原則是從左到右計(jì)算,

括號可以改變運(yùn)算的順序,即先括號內(nèi)

后括號外,多層括號則先內(nèi)層后外層。

?所有括號都是小括號。

2.字符表達(dá)式

字符表達(dá)式

由字符運(yùn)算符將字符類型的數(shù)據(jù)連接起來

的式子,其運(yùn)算結(jié)果仍為字符型數(shù)據(jù)。

?字符運(yùn)算符包括+、-

①+將前后兩個(gè)字符串首尾連接__

②?連接兩個(gè)字符串,并將運(yùn)算符左

側(cè)字符串的尾部空格移到右側(cè)字符

宙的尾部

2.字符表達(dá)式

?例如:

x=uVisualFoxPro”

y='系統(tǒng)開發(fā),

?x+y

?x-y

1sualFuxFro系統(tǒng)開發(fā)

1sualFuxFr口基統(tǒng)開發(fā)

3.日期表達(dá)式

?日期表達(dá)式

-由日期型數(shù)據(jù)參與運(yùn)算的式子,其運(yùn)算結(jié)果為

日期型數(shù)據(jù)或數(shù)值型數(shù)據(jù)

?運(yùn)算符包括十、二

?日期型數(shù)據(jù)土N:表示指定日期前N天或后N天

?日期型數(shù)據(jù)?日期型數(shù)據(jù):表示兩個(gè)日期相差天數(shù)_

?如:

{A2006-09-12}+10={A2006-09-22}

{A2006-09-12}-10={A2006-09-02}

{A2006-09-12}-{A2006-09-03}=9

3.日期表達(dá)式

?練習(xí)題:

設(shè)職工數(shù)據(jù)表和按“工作日期”索引的索

引文件已經(jīng)打開,要把記錄指針定位到工作剛

好滿30天的職工,應(yīng)當(dāng)使用命令

?A)GO

?B)SEEKDATE()30

?C)FINDDATE()30

?D)SEEKDATE()-30

D

?練習(xí)題:

設(shè)職工數(shù)據(jù)表和按“工作日期”索引的索

引文件已經(jīng)打開,要把記錄指針定位到工作剛

好滿30天的職工:

?索引查找:seek

?日期表達(dá)式:date()-30

?當(dāng)前日期―30=工作日期(開始工作的那天)

4.關(guān)系表達(dá)式

運(yùn)算符說明

<小于

?關(guān)系表達(dá)式

-由關(guān)系運(yùn)算符將相同類型>大于

的數(shù)據(jù)連接起來的式子,—等于

其運(yùn)算結(jié)果為邏輯型數(shù)據(jù).

如:<>#!=不等于

45!=56.T.<=小于等于

'Month'='month'.F.

>=大于等于

'abc'〉'baa'.T.

——完全相等_

子串包含測試

4.關(guān)系表達(dá)式

例:

SETEXACTOFF

STORE“奧運(yùn)會”TOsi

STORE“奧運(yùn)會”TOs2

?sl=s2,s2=sl,s2==sl&&.F..T..F.

SETEXACTON

?sl=s2,s2=sl,s2==sl&&.T..T..F.

◎“二二”是精確比較,兩側(cè)的字符串必須完全相同才為.T.。

OFF狀態(tài)時(shí),系統(tǒng)默認(rèn)以右串為結(jié)束標(biāo)志,“=”右側(cè)的

與左側(cè)的字符串的前部內(nèi)容相匹配即真。

4.關(guān)系表達(dá)式

工關(guān)系運(yùn)算符是對同類數(shù)據(jù)比較,操作數(shù)可以

是數(shù)值型、日期型、字符型和邏輯型。

?數(shù)值型數(shù)據(jù)比較時(shí),按數(shù)據(jù)的大小比較。

?字符串比較時(shí),逐個(gè)比較每個(gè)字符的ASCII碼

大小。例如:“abc”>“bc”結(jié)果為?F.。

?日期型數(shù)據(jù)比較時(shí),日期晚則大。____

?邏輯型數(shù)據(jù)比較時(shí),真大于假。

4.關(guān)系表達(dá)式

-子串包含測試

?形式:字符表達(dá)式1$字符表達(dá)式2

?功能:若前者是后者的子串,返回結(jié)果為真。

?例:?”魯迅“$”魯迅雜文“

?_____?”魯迅全集飛”魯迅雜文

?運(yùn)算符$和==僅適用于字符型數(shù)據(jù)。

5.邏輯表達(dá)式

XY結(jié)果

?邏輯表達(dá)式.T..T..T.

-由邏輯運(yùn)算符NOT.T.AND.F..F.

將邏輯類型的.F..T..F.

AND.F..F..F.

數(shù)據(jù)連接起來

的式子,其運(yùn)OR

xY結(jié)果

算結(jié)果仍為邏

.T..T..T.

輯型數(shù)據(jù)。

.T.OR.F..T.

,F..T..T.

5.邏輯表達(dá)式

-字段有效性規(guī)則是邏輯表達(dá)式

?如:

?設(shè)置性別字段只能是男或女

r性別男'OR性別='女'

■設(shè)置成績字段的值在0?100之間

5.邏輯表達(dá)式

例:假定字符串A="123%B="234”。則下列表

達(dá)式的運(yùn)算結(jié)果為邏輯假的是()o

A).NOT.(A=B),OR.B$("13579”)

B).NOT.AS(“ABC”).AND.(AOB)

C).NOT.(AOB)

D).NOT.(A>=B)

注意,關(guān)系運(yùn)算的優(yōu)先級高于邏輯運(yùn)算。

算術(shù)、字符、日期運(yùn)算又均高,心系運(yùn)算

邏輯表達(dá)式的書寫實(shí)例

■1986年以前出生的男學(xué)生

(出生日期〈{八1986/01/01}and,性另男“

?年齡大于18歲且小于24歲的管理系學(xué)生

(年齡>18and年齡<24)and系別="管理系”

[性別是男的,并且成績大于等于90分

性別="男"and成績>=90

?工齡大于30年,工資高于1500、低于1800元

(30為“工齡”字段)

5.邏輯表達(dá)式

?練習(xí):假定N、C、L分別為數(shù)值型、字

符型、邏輯型內(nèi)存變量。在下面的表達(dá)

式中錯誤的表達(dá)式是

?A)3*N)C』A"

■C)N=10,OR.LD)010

D

?關(guān)系運(yùn)算優(yōu)先級高于邏輯運(yùn)算,

n=10?or?L等價(jià)于(n=10).or.L

?若L=.T.,n=10.or?L為.T.

?若L=?F.,n=10.or.L為.F?

?C?"A",假定c="b",則C/A"="bA”

4.2.2常用函數(shù)

-函數(shù)由函數(shù)名、參數(shù)和函數(shù)值三部分組成

函數(shù)的基本形式是:函數(shù)名(卜參數(shù)表>])

如:dateOJen(6asdfgh5)

G幾點(diǎn)說明:

(1)函數(shù)名后面是一對圓括號,圓括號內(nèi)可以有

參數(shù),也可以沒有參數(shù)。

(2)參數(shù)可以是常量,也可以是變量,但參數(shù)的

■數(shù)據(jù)類型是

(3)函數(shù)運(yùn)算后會返回一個(gè)值,稱為函數(shù)值。

4.2.2常用函數(shù)

?VFP提供了多達(dá)200余種的函數(shù)(系統(tǒng)函數(shù)),

實(shí)現(xiàn)數(shù)據(jù)計(jì)算、類型轉(zhuǎn)換和邏輯運(yùn)算等特定功

能。

?按照函數(shù)的功能和返回值的類型分為:

-數(shù)值函數(shù)

-字符函數(shù)

-日期函數(shù)

-數(shù)據(jù)類型轉(zhuǎn)換函數(shù)_________

-測試函數(shù)

1,數(shù)值函數(shù)

(1)取整函數(shù)

1)截整函數(shù)

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

功能:返回<N>的值的整數(shù)部分。

2)四舍五入取整函數(shù)

格式:ROUND(<N1>,<N2>)

功能:對<N1>的值進(jìn)行四舍五入。若<N2>的值大

于等于零,則表示要保留的小數(shù)位數(shù);若<N2>是負(fù)

值,則表示整數(shù)部分四舍五入的位數(shù)。

3)上取整函數(shù)CEILING(<N>)

4)下取整函數(shù)

1,數(shù)值函數(shù)

練習(xí):

例1:?INT(123.45)123

?INT(123.5)123

例2:ROUND(123,435,2)=123.44

ROUND(123.5,0)=124

ROUND(125.5rl)=130

ROUND(125.5r2)=100

例3:CEILING(25.67)=26

大于25.67的最小整數(shù)

例4:FLOOR(25.67尸25

小于25?67的最大整數(shù)

1,數(shù)值函數(shù)

(2)求余數(shù)函數(shù)

格式:MOD(<N1>,<N2>)

功能:

?返回N1除以N2所得的余數(shù),N2不能為零。

?求余運(yùn)算也稱為模運(yùn)算,運(yùn)算符為%。

如:mod(5,2)=l5%2=1

mod(5,3)=25%3=2

(3)求最大最小值

1)最大值函數(shù)

格式:MAX(v表達(dá)式1>,v表達(dá)式2>)

功能:返回表達(dá)式中的最大值。

2)最小值函數(shù)

格式:MIN(v表達(dá)式1>,v表達(dá)式2>)

功能:返回表達(dá)式中的最小值。

口表達(dá)式可為字符型、數(shù)值型、日期型和邏

輯型等,但類型應(yīng)相同。

2.字符函數(shù)

(1)取子串

1)取子串函數(shù)

格式:SUBSTR(<C>,<N1>[,<N2>])

功能:從vO中取子串,<N1>指定子串的開始位置;

<N2>指定子串的長度,若缺省則從指定的開始位置取

到最后。(C字符表達(dá)式)

2)取左子串函數(shù).」__-―

格式:LEFT(<C>,<N>)

k.格式:RIGHT(<C>,<N>)一

2.字符函數(shù)

例:執(zhí)行STORE“1999年12月慶祝澳門回歸祖國!"TO

XY命令之后,要在屏幕上顯示“澳門1999年12月回歸祖

國!”,應(yīng)使用命令

A.?SUBSTR(XY,15,4)+SUBSTR(XY,140)+SUBSTR(XY,10)

B.?SUBSTR(XY,1594)+LEFT(XY4,10)+RIGHT(XY,19)

C.?SUBSTR(XY,15,4)+LEFT(XY,10)+RIGHT(XY,10)

D.?SUBSTR(XY,15,4)+LEFT(XY,10)+RIGHT(XY,19,10)

2.字符函數(shù)

(2)查找子串函數(shù)

AT(<C1>,<C2>[,<N>])

功能:在<C2>中查找vcl>第vN>次出現(xiàn)的位置。

若找到,返回該位置;若找不到,函數(shù)值為0。

函數(shù)值的類型為數(shù)值型。若缺省次數(shù)<N>,則默

認(rèn)返回第一次出現(xiàn)的位置。

例:執(zhí)行命令?AT(“中心”,“國家教委考試中

心”)的顯示值是

2.字符函數(shù)

(4)查找替換函數(shù)

1)STUFF(<C1>,<N1>,<N2>,<C2>)

功能:用C2替換C1的一個(gè)子串,子串由N1起始,長度為N2,

若N2=0,則在Cl中插入C2;

_____若C2為空串,則在C1中刪除由N1起長度為N2的子串。

??§0^(“怪物史萊克”,5,6,“動畫片”)怪物動畫片___

?stuff("怪物史萊克怪物

Jstuff("怪物史萊克”,5,0「動畫片”)怪物動畫片史萊克

2.字符函數(shù)

(5)字符串匹配函數(shù)

LIKE(<C1>,<C2>)

?判斷Cl與C2對應(yīng)位置的字符是否匹配

?C1中可包含通配符*或?

??Hke("史萊克“J怪物史萊克”).F.

??like("*史萊克怪物史萊克”)-T.

2.字符函數(shù)

(6)空格串生成函數(shù)

?SPACE(expN)

?功能:返回由expN個(gè)空格構(gòu)成的字符串。

例:字符串長度函數(shù)LEN(SPACE(1+2)?SPACE(2))的值是

A)1B)203D)5

(7)刪除J耳:函數(shù)___________________

?TRIM(expC)刪除expC尾部空格形成的字符串;

?LTRIM(expC)刪除expC首部空格形成的字符串;

?ALLTRIM(expC)刪除expC首尾空格形成的字符串;

邏輯表達(dá)式結(jié)合字符函數(shù)P76

例:1、查找1998年以后出版的書名為《數(shù)據(jù)結(jié)構(gòu)》或《C語

言程序設(shè)計(jì)》的圖書。

2、查詢清華大學(xué)出版社1998?2002年出版的圖書。

3、顯示年齡是18-—20歲的性別為女的學(xué)生的學(xué)號、姓

名。

1、LEFT(ALLTRIM(出版日期),4)>=“1998”

.AND.(書名二“數(shù)據(jù)結(jié)構(gòu)”.OR.書名二“C語言程序設(shè)計(jì)”)

2、出版社二“清華大學(xué)”.AND.LEFT(ALLTRIM(出版日期),

4)〉二“1998”.AND.LEFT(ALLTRIM(出版日期),4)

<二“2002”)

2.字符函數(shù)

(9)宏代換函數(shù)

格式:&<字符型內(nèi)存變量>[.<字符表達(dá)式刁

功能:取得字符型變量的值。

注空多代類的作用范圍是從符號開始,

遇到圓點(diǎn)符或空白為止。

例:執(zhí)行如下命令序列:

STORE100TOYA

STORE“A”TON

STORE“Y&N"TOM

?&M

A

?&M

,?Y&N

??YASTORE100TOYA

STORE"A”TON

、

100STORE“Y&N"TOM

?&M

3.日期函數(shù)

DATE()返回系統(tǒng)當(dāng)前日期

YEAR(<expD>)返回年份值(N)

MONTH(<expD>)返回月份值(N)

DAY(<expD>)返回日期值(N)

DOW(<expD>)返回星期值(N)

?date()主窗口顯示:11/01/2007

?month({A2007/11/01})主窗口顯示:11

3.日期函數(shù)

?任務(wù):請?jiān)趘f主窗口中顯示:

今天是:

2007年11月22日

命令如下:

?“今天是:”

?year(date())

年”

??month(date())

??,■月,,

——/\\

注意?與??命令的

不同之處

4.類型轉(zhuǎn)換函數(shù)

(1)數(shù)值型一字符型轉(zhuǎn)換函數(shù)

格式:STR(<N1>[,<N2>[,<N3>]])

功能:STR函數(shù)是將數(shù)侑型數(shù)據(jù)N1轉(zhuǎn)換成字符型。

<N2>是轉(zhuǎn)換的長度,缺省時(shí)轉(zhuǎn)換整個(gè)長度;

<N3>是指定轉(zhuǎn)換的小數(shù)位數(shù),缺省時(shí)不轉(zhuǎn)換小數(shù)位______

str(1234.567,7,2)->“1234.57“

?如果指定長度小于小數(shù)點(diǎn)左邊的數(shù)字位數(shù),STR()返回一串

星號,表示數(shù)值溢出。

str(1234.567,3,2)->

4,類型轉(zhuǎn)換函數(shù)

(2)字符型T數(shù)值型轉(zhuǎn)換函數(shù)

格式:VAL(<expC>)

VAL函數(shù)是將字符型轉(zhuǎn)換成數(shù)值型。

轉(zhuǎn)換部分是從第一個(gè)數(shù)字字符開始到非數(shù)字字符為止的數(shù)字串,

小數(shù)位默認(rèn)保留2位(四舍五入)。

?val(''11.278hk56")一11.28

?val("11.b78")^11.00

?val("123a.2ghr6")一123.00

?val("1b6.278hk56")一1.00

4.類型轉(zhuǎn)換函數(shù)

(3)日期型與字符型的轉(zhuǎn)換函數(shù)

格式:CTOD(v字符表達(dá)式,)

DTOC(v日期表達(dá)式刁,1])

功能:CTOD函數(shù)是將字符型轉(zhuǎn)換成日期型;

DTOC函數(shù)是將日期型轉(zhuǎn)換成字符型,加參數(shù)1,則輸

出格式轉(zhuǎn)換成年月日(年份4位)

a=CTOD(M09/23/2007n)

?a輸出:09/23/07即{09/23/2007}

?DTOC(aJ)輸出:20070923即“20070923”

?DTOC(DATEQ)輸出:09/23/07即“09/23/2007"

練習(xí)

例:在下列表達(dá)式中,運(yùn)算結(jié)果為字符串的是

A)“1234”?“43”

B)“ABCD”+“XYZ”="ABCDXYZ”

C)DTOC(DATE())>“04/05/97”

D)CTOD(“04/05/97")

A

A)“1234”?“43”“123443”

B)“ABCD”+“XYZ”="ABCDXYZ”.T.

C)DTOC(DATE())>“04/05/97”.T.

D)CTOD(“04/05/97"){04/05/97)

5.表函數(shù)

系統(tǒng)對記錄的三個(gè)控制標(biāo)志

?記錄開始標(biāo)志:位于第一個(gè)記錄之前(先gotop,然

后skip」)。其值用函數(shù)BOFO進(jìn)行涮試。

?記錄指針標(biāo)志:指向當(dāng)前記錄。其值用函數(shù)RECNO()

進(jìn)行測試。

?記錄結(jié)束標(biāo)志:位于最后一個(gè)記錄之后。其值用函數(shù)

EOF()進(jìn)行測試。

記錄指針可以理解為保存當(dāng)前記錄號的變量,它的初

始值總是1,不可能為0或負(fù)數(shù),最大值是表的記錄總

藪+1。

?表文件首:指的是第一條記錄的前面位置-

-BeginofFile(BOF)

?表文件尾:指的是最后一條記錄的后面位

置一EndofFile(EOF)

表文件首密借閱

書號1惜書證號1借閱日期

首記錄65701291LH03/03/19

L657032910203/03/29

657042910203/03/29

657031100103/03/29

657051100103/03/29

657061100203/03/29

■.........

____________________:

5,表函數(shù)

剛打開表時(shí)記錄指針的情況

表中記錄情況BOF()的值RECNO。的值EOF()的值

無記錄.T.1.T.

直記錄.F.1.F.

use學(xué)生

?recno()

skip-1

?bof(),recno()

gobottomMicros

skip1文件(E)編工

?eofO,tecnoO

i

i

7

6.測試函數(shù)

??between(ic,/a7d,).T.(即判斷'a,<=ic,<=id,)

??between(10,5,9).F.(即判斷5<=10<=9)

判斷參數(shù)1是否在參數(shù)2和3之間,三個(gè)參數(shù)類型必須一致,

可為字符、數(shù)值、日期型

?X=3

??iif(x<0,1,-1)-1

若xvO為真,則返回1,否則返回?1?

?與??命令

-?V表達(dá)式表〉,從當(dāng)前行的下一行第一列開始

輸出各個(gè)表達(dá)式的值

-??V表達(dá)式表〉,從當(dāng)前行當(dāng)前列開始輸出各

個(gè)表達(dá)式的值

?與??命令

?練習(xí):?“今天“

???”是:11

??"2007”

???”年1,

?則在vf王窗口中顯示:

今天是:

2007年

數(shù)字輸出時(shí)為什么前面有空白?

當(dāng)數(shù)字輸出時(shí),若位數(shù)不足十位,則系統(tǒng)會自動

在數(shù)字前方補(bǔ)上空格顯示,但不影響數(shù)值本身。

a=1

?a

1

a=1111111111

?a1111111111

a=111111111111111111

?a111

a=111

3Visual

吾法結(jié)構(gòu)

4.3VisualFoxpro語法結(jié)構(gòu)

行程序文件

*順序結(jié)構(gòu)

,選擇結(jié)構(gòu)

行循環(huán)結(jié)構(gòu)

79

4.3.1程序文件的建立、編輯與運(yùn)行

1.程序的概念

?定義:在VFP中,將能完成一定功能的命令或語句序列稱為程序。

?特點(diǎn):程序可以以文件的形式保存到磁盤中,該文件稱為程序文

件,其擴(kuò)展名為,PRG,可以對其編輯和運(yùn)行。

?建立、編輯程序文件有兩種方式:

1.命令方式

2.菜單方式

80

2.程序文件的建立

1.命令方式:MODIFYCOMMAND〈程序文件名〉

①若程序文件保存在當(dāng)前盤當(dāng)前路徑下,則文件名前的盤

符、路徑可以缺省。

②在程序編輯窗口中可進(jìn)行光標(biāo)移動、刪除、插入、剪切、

復(fù)制和粘貼操作。

2.菜單方式

打開“文件”菜單,選擇“新建”;在“新建”窗口,

選擇“程序”,再單擊“新建文件”按鈕;在“程序文件”

編輯窗口,輸入程序,保存并命名即可。

81

2.程序文件的建立

bsoftVisiialFoxPro|,,,1[□

編輯⑹顯示⑦格式(。工具①程莊?窗口?幫助(H)

旨向切芯南囤g|T1M|3向典I蜀喇閶國?||昌1曜,副制如函后

^average,prg□0X

USE學(xué)生z

AVERAGE2008-YEAR(出生日期)TOaverage_age

?2008年全體學(xué)生的平均年齡為:',average_age

程序編輯窗口

82

3.程序文件的運(yùn)行

1.命令方式

在命令窗口中,輸入如下命令,則程序文件被調(diào)用(即運(yùn)行)。

DO〈程序文件名〉

如:doaverage

2.菜單方式________

以菜單方式調(diào)用程序文件,操作方法如下:I,,

(1)菜單“程序”一“運(yùn)行”。一運(yùn)行

(2)在“運(yùn)行”窗口,選擇或輸入要運(yùn)行的程序文件名。

3.圖標(biāo)方式[

前提:程序編輯窗口打開狀態(tài)下。!

83

432順序結(jié)構(gòu)

工程序控制的基本結(jié)構(gòu)有三種:

順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。

1,順序結(jié)構(gòu)

程序的執(zhí)行是按其語句的排列先后順序執(zhí)行,這也是最

簡單、最基本的程序控制結(jié)構(gòu)。

如:

X=1

y=2

z=x+y

?z

84

4.3.3選擇結(jié)構(gòu)

?選擇結(jié)構(gòu)是根據(jù)條件的測試結(jié)果執(zhí)行不同

的操作。

,選擇結(jié)構(gòu):

-1.IF條件語句

-2.CASE多分支語句

85

1.IF條件語句

(1)簡單的條件語句

?格式:IFv條件,

?v語句序列〉

?ENDIF

案功能:執(zhí)行該語句時(shí),首先判斷條件是否成立:

-當(dāng)條件為真時(shí),執(zhí)行語句序列,然后執(zhí)行ENDIF后面

的語句;

-當(dāng)條件為假時(shí),直接執(zhí)行ENDIF后面的語句。

?條件一般是一個(gè)邏輯表達(dá)式。

?IF和ENDIF必須配對使用,缺一不可!

86

1.IF條件語句

(1)簡單的條件語句

?如下例:

A=8

B=5

IFA>B

?'A大于B,

ENDIF

?'執(zhí)行完畢'

87

1.IF條件語句

(2)二擇一條件語句

?格式:IFv條件〉

?〈語句序列1>

?ELSE

?<語句序列2>

?ENDIF

*功能:條件為真時(shí),執(zhí)行語句序列1;否則執(zhí)行序列2。

序列1和2不能都執(zhí)行,執(zhí)行任一序列后繼續(xù)執(zhí)行ENDIF后

面的語句。

?條件一般是一個(gè)邏輯表達(dá)式。

?IF、ELSE和ENDIF必須配套使用,缺一不可!

88

1.IF條件語句

(2)二擇一條件語句

?如下例:

A=8

B=5

IFA>B

?A大于B,

ELSE

?A小于或等于B,

ENDIF

?'執(zhí)行完畢'

89

1.IF條件語句

(3)IF語句嵌套

?如下例:

A=8

B=5

IFA>B

?八大于B,

ELSE

IFA<B

?八小于B,注意:

ELSE?IF和ENDIF要成對出現(xiàn)

?八等于B,?嵌套層數(shù)不限

ENDIF?采用縮格形式,以便區(qū)分層次

ENDIF

90

2.CASE多分支語句

格式:

DOCASE

CASE<條件1>

功能:依次判斷

<語句系列1>

各條件,當(dāng)條件為

CASE<條件2>

<語句系列2>真時(shí)執(zhí)行對應(yīng)的

■■■■■■■■■語句系列;當(dāng)所

CASE<條件n>有條件為假時(shí),則

<語句系列n>執(zhí)行OTHERWISE

[OTHERWISE對應(yīng)的語句系列。

<語句系列n+l>Otherwise不再進(jìn)

ENDCASE行條件判斷。

注:DOCASE和ENDCASE必須配對使用。91

2.CASE多分支語句

如下例:

A=4

B=5

DOCASE

CASEA>B

?’A大于B'

CASEA=B

?*A等于B'

OTHERWISE

?*A小于B*

ENDCASE

?'A、B的大小判斷完畢,

92

4.3.4循環(huán)結(jié)構(gòu)

?循環(huán)結(jié)構(gòu)要注意的是要有控制條件的語句,以避

免出現(xiàn)死循環(huán)現(xiàn)象。

?在VFP中有三種循環(huán)語句:

lDOWHILE...ENDDO

fSCAN...ENDSCAN

KFOR...ENDFOR

93

1.DOWHILE循環(huán)語句

?格式:DOWHILE<條件表達(dá)式>

?v語句序列>

?ENDDO

?功能:當(dāng)條件為真時(shí),重復(fù)執(zhí)行語句序列,直到

條件為假時(shí)結(jié)束。

94

1.DOWHILE循環(huán)語句

?如下例:

?s=o

?K=1

?DOWHILEK<=100

?S=S+K

?K=K+1

?ENDDO

??S此程序的功能及輸出結(jié)果

是什么?

95

1.DOWHILE循環(huán)語句

?EXIT和LOOP

-EXIT結(jié)束當(dāng)前循環(huán)操作,跳到ENDDO后面繼續(xù)執(zhí)行。

-LOOP跳過LOOP后面的語句,結(jié)束本輪循環(huán),直接叵

到循環(huán)起始語句DOWHIL巳開始下一輪。

?注:EXIT和LOOP可以出現(xiàn)在循環(huán)體語句序列中的任意位

置;在語句序列中,還可以出現(xiàn)IF語句或CASE語句或DO

WHILE語句的嵌套。

96

1.DOWHILE循環(huán)語句

?如下例:

?s=o

?K=1

?DOWHILEK<=10

?S=S+K

?K=K+1

?IFK>5

?EXIT

?ENDIF此程序的功能及輸出結(jié)果

?ENDDO又是什么?

??S

97

1.DOWHILE循環(huán)語句

?如下例:

?s=o

?K=1

?DOWHILE.T.

?S=S+K

?K=K+1

?IFK>5

?EXIT

?ENDIF此程序的功能及輸出結(jié)果

?ENDDO又是什么?

??S

98

1.DOWHILE循環(huán)語句

?如下例:

?s=o

?K=1

?DOWHILEK<=10

?S=S+K

?K=K+1

?IFK>5

?LOOP

?ENDIF

???K此程序的功能及輸出結(jié)果

?ENDDO又是什么?

??S

99

1.DOWHILE循環(huán)語句

?如下例:

?Step=2

?S=0

?K=1

?DOWHILEK<=10

?S=S+K

?IFStep=1

?K=K+1

?ENDIF

?IFStep=2

?K=K+2

?ENDIF此程序的功能及輸出結(jié)果

?ENDDO又是什么?

??S

100

1.DOWHILE循環(huán)語句

?如下例:

?USE學(xué)生

?DOWHILE.NOT.EOF()

?DISP

?SKIP

?ENDDO利用該循環(huán)實(shí)現(xiàn)對當(dāng)前打開的表

文件中的記錄自上而下或自下而上

地逐條進(jìn)行操作。

記錄指針由SKIP語句控制,循

環(huán)結(jié)束的條件由函數(shù)EOF()或

BOF()控制。

101

2.FOR循環(huán)語句

?格式:

FOR循環(huán)變量=初值TO終值[STEP步長]

<語句系列》

ENDFOR|NEXT

?說明:

①循環(huán)變量為內(nèi)存變量,不需要事先定義。

②初值、終值、步長均為數(shù)值。

③默認(rèn)遞增步長為1。

④ENDFOR和NEXT二者等價(jià),二選一。

102

2.FOR循環(huán)語句

?s=os=o

?FORK=1TO100K=1

DOWHILEK<=100

?S=S+KS=S+K

?ENDFORK=K+1

ENDDO

??S?S

注:

?FORK=1TO100

?等價(jià)于

?FORK=1TO100STEP1

103

2.FOR循環(huán)語句

s=o

FORK=100TO1STEP-1

S=S+K

ENDFOR

?SS=0

K=100

DOWHILEK>=1

S=S+K

K=K-1

ENDDO

?S

104

3.SCAN循環(huán)語句

?格式:

?SCAN[范圍][FORv條件>][WHILEv條件習(xí)

?<語句序列>

?ENDSCAN

?功能:對當(dāng)前表在指定范圍,滿足條件的記錄中自動進(jìn)行

自上而下逐個(gè)掃描,重復(fù)執(zhí)行循環(huán)體(語句序列)。

?說明:SCAN循環(huán)能自動移動指針。用DOWHILE循環(huán)也可以

實(shí)現(xiàn)對表文件的逐個(gè)掃描操作,但需借助函數(shù)BOF()或

EOF()測試狀態(tài),用SKIP命令移動指針,不如SCAN循環(huán)方

便。

105

3.SCAN循環(huán)語句

【例】分別統(tǒng)計(jì)學(xué)生表中男生和女生的人數(shù)。

?USE學(xué)生

?STORE0TOX,Y

?SCAN

?IF性別="男”

?X=X+1

?ELSE

?Y=Y+1

?ENDIF

?ENDSCAN

??”男生人數(shù)女生人數(shù)”,Y

?USE

106

3.SCAN循環(huán)語句

【例】輸出可以借閱的圖書的書號、書名和

出版社。

USE圖書

?“書號書名出版社”

SCANALLFOR可借閱否

?書號,書名,出版社

ENDSCAN

107

4.3.4循環(huán)結(jié)構(gòu)

?注意事項(xiàng):

(1)DOWHILEffENDDO>FOR和ENDFOR、SCAN和

ENDSCAN必須配對使用o

(2)〈語句序列〉可以是任何VFP命令或語句,也可以是

循環(huán)語句,即可以為多重循環(huán)。

(3)〈循環(huán)變量〉應(yīng)是數(shù)值型的內(nèi)存變量或數(shù)組元素。

(4)EXIT和LOOP命令嵌入在循環(huán)體內(nèi),可以改變循環(huán)次

數(shù),但是不能單獨(dú)使用。

108

435程序設(shè)計(jì)中的常用命令

1.數(shù)據(jù)輸入輸出命令

2.注釋命令

3.設(shè)置命令

4.清屏命令

5.程序結(jié)束命令

109

435程序設(shè)計(jì)中的常用命令

1.數(shù)據(jù)輸入輸出命令

①接收字符串命令accept

②數(shù)據(jù)輸入命令input

③等待命令wait

④文本輸出命令

⑤定位輸出命令

⑥定位輸入命令

110

(1)字符串接收語句ACCEPT

格式:ACCEPT[〈提示信息》]TO〈內(nèi)存變量〉

功能:將鍵盤輸入的字符串賦給指定的內(nèi)存變量。

,執(zhí)行該命令時(shí),首先在主窗口顯示提示信息,并暫停程

序的執(zhí)行,等待用戶從鍵盤輸入數(shù)據(jù)后繼續(xù)執(zhí)行程序。

/用戶只能輸入字符型常量,不加定界符,以回車結(jié)束。

如:

?ACCEPT”請輸入教師名:"toxm

??”教師名:”,xm

111

(2)數(shù)據(jù)輸入命令I(lǐng)NPUT

格式:INPUT[〈提示信息〉]TO〈內(nèi)存變量》

功能:將鍵盤輸入的數(shù)據(jù)賦給指定的內(nèi)存變量。

注:input與accept類似,區(qū)別在于input從鍵盤輸入的數(shù)

據(jù)可以是常量、變量、函數(shù)或表達(dá)式,數(shù)據(jù)類型可以是

除備注型和通用型外的所有類型。

說明:用戶在輸入字符串、日期常量和邏輯型常量時(shí),必

須加上相應(yīng)的分界符。

112

(2)數(shù)據(jù)輸入命令I(lǐng)NPUT

【例】郵費(fèi)的計(jì)費(fèi)標(biāo)準(zhǔn)為每克0.05元,但重量超過100

克后,超出數(shù)為每克0.02元,編寫程序計(jì)算郵費(fèi).

input〃請輸入重量:〃tow

Ifw<=100

f=w*0.05

Else

f=100*0.05+(wT00)*0.02

Endif

?f

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論