![VF課件第四章VF程序設計基礎_第1頁](http://file4.renrendoc.com/view7/M01/22/3F/wKhkGWcOZnqAYHONAACWqe6HRIA984.jpg)
![VF課件第四章VF程序設計基礎_第2頁](http://file4.renrendoc.com/view7/M01/22/3F/wKhkGWcOZnqAYHONAACWqe6HRIA9842.jpg)
![VF課件第四章VF程序設計基礎_第3頁](http://file4.renrendoc.com/view7/M01/22/3F/wKhkGWcOZnqAYHONAACWqe6HRIA9843.jpg)
![VF課件第四章VF程序設計基礎_第4頁](http://file4.renrendoc.com/view7/M01/22/3F/wKhkGWcOZnqAYHONAACWqe6HRIA9844.jpg)
![VF課件第四章VF程序設計基礎_第5頁](http://file4.renrendoc.com/view7/M01/22/3F/wKhkGWcOZnqAYHONAACWqe6HRIA9845.jpg)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第4章VF程序設計基礎
本章內(nèi)容
1.常量和變量
2.表達式與常用函數(shù)
3.VF語法結構
4.多模塊程序設計
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ù)據(jù)劃分為
常量和變量兩種。
4.1常量與變量
kMicrosoftVisualFoxPro,1□1x|
文件(E)編輯(卻顯示⑦格式9)工具(D程序?窗口(忖幫助3
□I謝閭國因也幻亳腐|酗”眼II3
E3命令,1□1x|
圓面積是78.50R=5A
C=3.14*R*R
?”圓面積
山
結果顯示在命令窗
在窗口工口內(nèi)輸入
命令行:作區(qū)命令行
R=5
C=3.14*R*R
?"和早”(
4.1.1常量
-常量是取值固定不變的數(shù)據(jù)。
?VFP支持字符型、數(shù)值型、邏輯型、貨幣型、
符號型、日期型和日期時間型常量。
?1.數(shù)值型常量_____________________
一如:15、-3.9>0.54
-可使用科學計數(shù)法的形式書寫,意■■
5.3249X1016
4.1.1常量
2,字符型常量
?字符型常量——用定界符括起來的字符串
?定界符:""或'’或口,使用字符型常量
必須加定界符,而且定界符必須成對出現(xiàn)。
ca空格串“”和空串的區(qū)別:
空格串““,串長>0。4個空格,串長為4。
空串嗎串長=0。
一G3如果使用2對以上的定界符,內(nèi)外定界符
"ABC'DEF'GH
4.1.1常量
3「4.日期、日期時間型常量
一定界符是:大括號{}
-日期型常量的嚴格格式{AYYYY?MM?DD},
如{A1949-10-01}
-日期型時間性的嚴格格式
{AYYYY-MM-DD[hh[:mm[:ss]]][a|p]}
如:
-非嚴格的格式是:{MM/DD/YY}、
系統(tǒng)默認狀態(tài)下只能使用嚴格格式的日期。
4.1.1常量
5.邏輯型常量
?邏輯型常量只有真和假兩個值
?真:.T..t..Y..y.
?假:E.f?N?n?
?定界符:原點.
4.1.1常量
6,貨幣型常量
?以貨幣符號$開頭
?在存儲和計算時四舍五入到四位小數(shù)
?小數(shù)位不足就在尾部補零
?沒有科學記數(shù)法形式
?例:在命令窗口中輸入命令?$1.23456789,
則在王窗口中顯小:
?A)$1.23456789B)$1.2456
?C)1.2346D)錯誤
4.1.1常量
7.符號常量
?一種特殊常量,僅限在程序中使用
?定義格式:#DEFINE常量名數(shù)值
如:#DEFINEpi3.1415
?在程序中可直接用符號常量名代替常量值
如:20*pi等價于20*3.1415
練習
?例:常量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不是合法的常量,因為缺少公
?D是合法的字符型常量;
?E是合法的字符型常量;
tzzr人、,匚,,一、rm上ri-rr>1.、I,-r=i
4.1,2變量
?變量是取值能被程序改變的數(shù)據(jù)
般內(nèi)存變量(存放在內(nèi)存單元的單個數(shù)據(jù))
「內(nèi)存變量系統(tǒng)內(nèi)存變量(由VF系統(tǒng)提供)
數(shù)組變量(存放在內(nèi)存單元組的多個數(shù)據(jù))
字段變量(存放在表文件中的字段)
1.內(nèi)存變量
(1)內(nèi)存變量的概念
-內(nèi)存變量是內(nèi)存中的一個存儲區(qū)域,存放程序運
行的中間結果或最終結果。
-命名規(guī)則
?以字母、漢字或下劃線開頭
?長度最多為128
?由字母、漢字、數(shù)字或下劃線組成的字符串
注意:VF中變量名不區(qū)分大小寫。
1.內(nèi)存變量
(2)內(nèi)存變量的建立
>〈內(nèi)存變量名>=<表達式〉
>STORE〈表達式〉TOv內(nèi)存變量名>Lv內(nèi)存變量名>]
如:w=uVisualFoxPro,J
y2={A2008-01-16}
store90toy1,y2
-內(nèi)存變量可被先后多次賦予不同類型的值。
“二”一次只能給一個變量賦值;
..一??,,>A上一A、,t?I」、一.I一t、,/
1,內(nèi)存變量
(3)內(nèi)存變量的顯示
格式:DISPLAY/LISTMEMORY[LIKEv通
酉己符刁[TOPRINTER[PROMPT]/TO
FILEv文件名習
例如:顯示內(nèi)存變量。
A=12
STORE“123”TON1,N2
B={A2003-01-01)
DISPMEMOLIKEN*
DISPMEMO、
2.字段變量
(1)字段變量的概念
-隸屬表文件。
-確定表結構就包括了定義字段變量。
-命名規(guī)則:
以字母或漢字開頭,長度對于自由表不超過
10個字符,對于數(shù)據(jù)庫表不超過128個字符,由
字母、漢字、數(shù)字或下劃線組成的字符串,如:
職工號。不能與系統(tǒng)保留字(如:character)
沖突。
2.字段變量
(2)字段變量的類型
?多達13種。
?常用類型如:字符型C、數(shù)值型N、貨幣型Y、日
期型D、邏輯型L、備注型M、通用型G。
字段變量與內(nèi)存變量
字段變量與內(nèi)存變量的區(qū)別:
①定義方式不同。
字段變量在建立表結構時定義;而內(nèi)存變量
使用賦值命令進行定義。
②使用方式不同。
字段變量在使用前必須用命令(USE表名)打
開;內(nèi)存變量定義后就可使用。
③生存期不同。
—字段變量駐留在外存;內(nèi)存變量駐留在內(nèi)
存,隨著VF關閉而被消除。
字段變量與內(nèi)存變量
?建立內(nèi)存變量時不必指定變量的類型。存放什
么類型的數(shù)據(jù),該變量就是什么類型。
二字段變量與內(nèi)存變量同名時,字段變量名優(yōu)先
級高于同名的內(nèi)存變量。
-如現(xiàn)同時有:
字段變量:部門廿
內(nèi)存變量:部門號
則在使用內(nèi)存變量部門號時,需寫成:
3,數(shù)組
?數(shù)組是一組按照一定順序排列的內(nèi)存變量,各
個變量稱為數(shù)組元素,元素之間有序。
-數(shù)組中數(shù)組元素的數(shù)據(jù)類型可以互不相同
-通過數(shù)組下標來引用數(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ù)組及其下標的下界
?DECLEAR|DIMENSION〈數(shù)組名〉(下標)
?如:DIMENSIONA(3)
DIMENSIONB(2,3)
?數(shù)組下標的下界為1
?下標可以是常量、變量、函數(shù)或表達式,用
圓括號括起來
?對于一維數(shù)組,下標是數(shù)組元素的個數(shù),如
(3)表示該數(shù)組中有3個元素;
?對于二維數(shù)組,下標是數(shù)組的最大行號和最
3.數(shù)組
(2)數(shù)組的賦值
?數(shù)組元素的數(shù)據(jù)類型可以修改,系統(tǒng)默認
的賦值為.F.
?賦值方法同內(nèi)存變量,使用STORE或=
?若用賦值命令賦值時未指明下標,則數(shù)組
中的所有數(shù)組元素同時被賦予同一個值;
?若指明下標,則給指定的數(shù)組元素賦值。
3,數(shù)組
(3)數(shù)組與表的數(shù)據(jù)傳遞
①將當前記錄傳遞到數(shù)組或內(nèi)存變量中
use借閱
Go3&&將當前記錄值傳送給
Scattertotemp數(shù)組temp
②將數(shù)組或內(nèi)存變量中的數(shù)據(jù)傳遞到當前記
錄中
?use借閱
?copystructuretotemptable
?usetemptable
??appendblank-添那電
內(nèi)存變量和數(shù)組的釋放(清除)
?CLEARALL或CLEARMEMORY
-同時清除所有的內(nèi)存變量、數(shù)組__
?RELEASEv內(nèi)存變量名,[,v內(nèi)存變量名>]
?RELEASEALL[LIKE/EXCEPTv通酉己符習
-清除指定的內(nèi)存變量、數(shù)組
練習題:顯示結果
a=5
ab=7
abc=7
b=9
releasealllikea?
?ab
?abc
?b
releasealllike*
?b
4.系統(tǒng)變量
?系統(tǒng)變量是由VF系統(tǒng)提供的一組變量
-用于控制外部設備(如打印機、鼠標等)、屏
幕輸出格式,或處理系統(tǒng)時間、剪貼板等內(nèi)容
的信息
-系統(tǒng)內(nèi)存變量是指以下劃線.開頭的、由系統(tǒng)
自動定義生成的變量。
如:_DIARYDATE用于存儲系統(tǒng)當前日期
CLIPTEXT表示接受文本并送入剪貼板。
小結
[目的要求]:
-了解常量、變量、數(shù)組的含義;
?掌握常量的分類及每類常量的書寫;
?掌握變量的分類;
?掌握內(nèi)存變量的定義、賦值、顯示、保
存、釋放;
?掌握數(shù)組的定義、構成、使用。
■[重點]:常量使用;變量的定義、使用;
數(shù)組的定義、構成、使用。
?[難點]:數(shù)據(jù)的正確書寫;數(shù)組的理解。
4.2表達式與常用函數(shù)
421表達式
-由常量、變量、函數(shù)以及運算符連接起來的式
子,形式為:
操作數(shù)1運算符操作數(shù)2
如:12+3
-包括下面幾種
?數(shù)值表達式、字符表達式、日期表達式、關
系表達式、邏輯表達式
1.數(shù)值表達式
?數(shù)值表達式
-由算術運算符將數(shù)
值類型的數(shù)據(jù)連接
起來的式子,其運
算結果仍為數(shù)值型
7(1/2-6/7)*20.56
數(shù)據(jù)。
?(10+aA2)/(1+bA(c*d))
?16%3
1.數(shù)值表達式
■所有運算符都不能省略。
?運算數(shù)和運算符要寫在同一行。
?同一級別的運算原則是從左到右計算,
括號可以改變運算的順序,即先括號內(nèi)
后括號外,多層括號則先內(nèi)層后外層。
?所有括號都是小括號。
2.字符表達式
字符表達式
由字符運算符將字符類型的數(shù)據(jù)連接起來
的式子,其運算結果仍為字符型數(shù)據(jù)。
?字符運算符包括+、-
①+將前后兩個字符串首尾連接__
②?連接兩個字符串,并將運算符左
側字符串的尾部空格移到右側字符
宙的尾部
2.字符表達式
?例如:
x=uVisualFoxPro”
y='系統(tǒng)開發(fā),
?x+y
?x-y
1sualFuxFro系統(tǒng)開發(fā)
1sualFuxFr口基統(tǒng)開發(fā)
3.日期表達式
?日期表達式
-由日期型數(shù)據(jù)參與運算的式子,其運算結果為
日期型數(shù)據(jù)或數(shù)值型數(shù)據(jù)
?運算符包括十、二
?日期型數(shù)據(jù)土N:表示指定日期前N天或后N天
?日期型數(shù)據(jù)?日期型數(shù)據(jù):表示兩個日期相差天數(shù)_
?如:
{A2006-09-12}+10={A2006-09-22}
{A2006-09-12}-10={A2006-09-02}
{A2006-09-12}-{A2006-09-03}=9
3.日期表達式
?練習題:
設職工數(shù)據(jù)表和按“工作日期”索引的索
引文件已經(jīng)打開,要把記錄指針定位到工作剛
好滿30天的職工,應當使用命令
?A)GO
?B)SEEKDATE()30
?C)FINDDATE()30
?D)SEEKDATE()-30
D
?練習題:
設職工數(shù)據(jù)表和按“工作日期”索引的索
引文件已經(jīng)打開,要把記錄指針定位到工作剛
好滿30天的職工:
?索引查找:seek
?日期表達式:date()-30
?當前日期―30=工作日期(開始工作的那天)
4.關系表達式
運算符說明
<小于
?關系表達式
-由關系運算符將相同類型>大于
的數(shù)據(jù)連接起來的式子,—等于
其運算結果為邏輯型數(shù)據(jù).
如:<>#!=不等于
45!=56.T.<=小于等于
'Month'='month'.F.
>=大于等于
'abc'〉'baa'.T.
——完全相等_
子串包含測試
4.關系表達式
例:
SETEXACTOFF
STORE“奧運會”TOsi
STORE“奧運會”TOs2
?sl=s2,s2=sl,s2==sl&&.F..T..F.
SETEXACTON
?sl=s2,s2=sl,s2==sl&&.T..T..F.
◎“二二”是精確比較,兩側的字符串必須完全相同才為.T.。
OFF狀態(tài)時,系統(tǒng)默認以右串為結束標志,“=”右側的
與左側的字符串的前部內(nèi)容相匹配即真。
4.關系表達式
工關系運算符是對同類數(shù)據(jù)比較,操作數(shù)可以
是數(shù)值型、日期型、字符型和邏輯型。
?數(shù)值型數(shù)據(jù)比較時,按數(shù)據(jù)的大小比較。
?字符串比較時,逐個比較每個字符的ASCII碼
大小。例如:“abc”>“bc”結果為?F.。
?日期型數(shù)據(jù)比較時,日期晚則大。____
?邏輯型數(shù)據(jù)比較時,真大于假。
4.關系表達式
-子串包含測試
?形式:字符表達式1$字符表達式2
?功能:若前者是后者的子串,返回結果為真。
?例:?”魯迅“$”魯迅雜文“
?_____?”魯迅全集飛”魯迅雜文
?運算符$和==僅適用于字符型數(shù)據(jù)。
5.邏輯表達式
XY結果
?邏輯表達式.T..T..T.
-由邏輯運算符NOT.T.AND.F..F.
將邏輯類型的.F..T..F.
AND.F..F..F.
數(shù)據(jù)連接起來
的式子,其運OR
xY結果
算結果仍為邏
.T..T..T.
輯型數(shù)據(jù)。
.T.OR.F..T.
,F..T..T.
5.邏輯表達式
-字段有效性規(guī)則是邏輯表達式
?如:
?設置性別字段只能是男或女
r性別男'OR性別='女'
■設置成績字段的值在0?100之間
5.邏輯表達式
例:假定字符串A="123%B="234”。則下列表
達式的運算結果為邏輯假的是()o
A).NOT.(A=B),OR.B$("13579”)
B).NOT.AS(“ABC”).AND.(AOB)
C).NOT.(AOB)
D).NOT.(A>=B)
注意,關系運算的優(yōu)先級高于邏輯運算。
算術、字符、日期運算又均高,心系運算
邏輯表達式的書寫實例
■1986年以前出生的男學生
(出生日期〈{八1986/01/01}and,性另男“
?年齡大于18歲且小于24歲的管理系學生
(年齡>18and年齡<24)and系別="管理系”
[性別是男的,并且成績大于等于90分
性別="男"and成績>=90
?工齡大于30年,工資高于1500、低于1800元
(30為“工齡”字段)
5.邏輯表達式
?練習:假定N、C、L分別為數(shù)值型、字
符型、邏輯型內(nèi)存變量。在下面的表達
式中錯誤的表達式是
?A)3*N)C』A"
■C)N=10,OR.LD)010
D
?關系運算優(yōu)先級高于邏輯運算,
n=10?or?L等價于(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幾點說明:
(1)函數(shù)名后面是一對圓括號,圓括號內(nèi)可以有
參數(shù),也可以沒有參數(shù)。
(2)參數(shù)可以是常量,也可以是變量,但參數(shù)的
■數(shù)據(jù)類型是
(3)函數(shù)運算后會返回一個值,稱為函數(shù)值。
4.2.2常用函數(shù)
?VFP提供了多達200余種的函數(shù)(系統(tǒng)函數(shù)),
實現(xiàn)數(shù)據(jù)計算、類型轉換和邏輯運算等特定功
能。
?按照函數(shù)的功能和返回值的類型分為:
-數(shù)值函數(shù)
-字符函數(shù)
-日期函數(shù)
-數(shù)據(jù)類型轉換函數(shù)_________
-測試函數(shù)
1,數(shù)值函數(shù)
(1)取整函數(shù)
1)截整函數(shù)
格式:INT(<N>)N:數(shù)值表達式
功能:返回<N>的值的整數(shù)部分。
2)四舍五入取整函數(shù)
格式:ROUND(<N1>,<N2>)
功能:對<N1>的值進行四舍五入。若<N2>的值大
于等于零,則表示要保留的小數(shù)位數(shù);若<N2>是負
值,則表示整數(shù)部分四舍五入的位數(shù)。
3)上取整函數(shù)CEILING(<N>)
4)下取整函數(shù)
1,數(shù)值函數(shù)
練習:
例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不能為零。
?求余運算也稱為模運算,運算符為%。
如:mod(5,2)=l5%2=1
mod(5,3)=25%3=2
(3)求最大最小值
1)最大值函數(shù)
格式:MAX(v表達式1>,v表達式2>)
功能:返回表達式中的最大值。
2)最小值函數(shù)
格式:MIN(v表達式1>,v表達式2>)
功能:返回表達式中的最小值。
口表達式可為字符型、數(shù)值型、日期型和邏
輯型等,但類型應相同。
2.字符函數(shù)
(1)取子串
1)取子串函數(shù)
格式:SUBSTR(<C>,<N1>[,<N2>])
功能:從vO中取子串,<N1>指定子串的開始位置;
<N2>指定子串的長度,若缺省則從指定的開始位置取
到最后。(C字符表達式)
2)取左子串函數(shù).」__-―
格式:LEFT(<C>,<N>)
k.格式:RIGHT(<C>,<N>)一
2.字符函數(shù)
例:執(zhí)行STORE“1999年12月慶祝澳門回歸祖國!"TO
XY命令之后,要在屏幕上顯示“澳門1999年12月回歸祖
國!”,應使用命令
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>,則默
認返回第一次出現(xiàn)的位置。
例:執(zhí)行命令?AT(“中心”,“國家教委考試中
心”)的顯示值是
2.字符函數(shù)
(4)查找替換函數(shù)
1)STUFF(<C1>,<N1>,<N2>,<C2>)
功能:用C2替換C1的一個子串,子串由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對應位置的字符是否匹配
?C1中可包含通配符*或?
??Hke("史萊克“J怪物史萊克”).F.
??like("*史萊克怪物史萊克”)-T.
2.字符函數(shù)
(6)空格串生成函數(shù)
?SPACE(expN)
?功能:返回由expN個空格構成的字符串。
例:字符串長度函數(shù)LEN(SPACE(1+2)?SPACE(2))的值是
A)1B)203D)5
(7)刪除J耳:函數(shù)___________________
?TRIM(expC)刪除expC尾部空格形成的字符串;
?LTRIM(expC)刪除expC首部空格形成的字符串;
?ALLTRIM(expC)刪除expC首尾空格形成的字符串;
邏輯表達式結合字符函數(shù)P76
例:1、查找1998年以后出版的書名為《數(shù)據(jù)結構》或《C語
言程序設計》的圖書。
2、查詢清華大學出版社1998?2002年出版的圖書。
3、顯示年齡是18-—20歲的性別為女的學生的學號、姓
名。
1、LEFT(ALLTRIM(出版日期),4)>=“1998”
.AND.(書名二“數(shù)據(jù)結構”.OR.書名二“C語言程序設計”)
2、出版社二“清華大學”.AND.LEFT(ALLTRIM(出版日期),
4)〉二“1998”.AND.LEFT(ALLTRIM(出版日期),4)
<二“2002”)
2.字符函數(shù)
(9)宏代換函數(shù)
格式:&<字符型內(nèi)存變量>[.<字符表達式刁
功能:取得字符型變量的值。
注空多代類的作用范圍是從符號開始,
遇到圓點符或空白為止。
例:執(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)當前日期
YEAR(<expD>)返回年份值(N)
MONTH(<expD>)返回月份值(N)
DAY(<expD>)返回日期值(N)
DOW(<expD>)返回星期值(N)
?date()主窗口顯示:11/01/2007
?month({A2007/11/01})主窗口顯示:11
3.日期函數(shù)
?任務:請在vf主窗口中顯示:
今天是:
2007年11月22日
命令如下:
?“今天是:”
?year(date())
年”
??month(date())
??,■月,,
——/\\
注意?與??命令的
不同之處
4.類型轉換函數(shù)
(1)數(shù)值型一字符型轉換函數(shù)
格式:STR(<N1>[,<N2>[,<N3>]])
功能:STR函數(shù)是將數(shù)侑型數(shù)據(jù)N1轉換成字符型。
<N2>是轉換的長度,缺省時轉換整個長度;
<N3>是指定轉換的小數(shù)位數(shù),缺省時不轉換小數(shù)位______
str(1234.567,7,2)->“1234.57“
?如果指定長度小于小數(shù)點左邊的數(shù)字位數(shù),STR()返回一串
星號,表示數(shù)值溢出。
str(1234.567,3,2)->
4,類型轉換函數(shù)
(2)字符型T數(shù)值型轉換函數(shù)
格式:VAL(<expC>)
VAL函數(shù)是將字符型轉換成數(shù)值型。
轉換部分是從第一個數(shù)字字符開始到非數(shù)字字符為止的數(shù)字串,
小數(shù)位默認保留2位(四舍五入)。
?val(''11.278hk56")一11.28
?val("11.b78")^11.00
?val("123a.2ghr6")一123.00
?val("1b6.278hk56")一1.00
4.類型轉換函數(shù)
(3)日期型與字符型的轉換函數(shù)
格式:CTOD(v字符表達式,)
DTOC(v日期表達式刁,1])
功能:CTOD函數(shù)是將字符型轉換成日期型;
DTOC函數(shù)是將日期型轉換成字符型,加參數(shù)1,則輸
出格式轉換成年月日(年份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"
練習
例:在下列表達式中,運算結果為字符串的是
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)對記錄的三個控制標志
?記錄開始標志:位于第一個記錄之前(先gotop,然
后skip」)。其值用函數(shù)BOFO進行涮試。
?記錄指針標志:指向當前記錄。其值用函數(shù)RECNO()
進行測試。
?記錄結束標志:位于最后一個記錄之后。其值用函數(shù)
EOF()進行測試。
記錄指針可以理解為保存當前記錄號的變量,它的初
始值總是1,不可能為0或負數(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ù)
剛打開表時記錄指針的情況
表中記錄情況BOF()的值RECNO。的值EOF()的值
無記錄.T.1.T.
直記錄.F.1.F.
use學生
?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之間,三個參數(shù)類型必須一致,
可為字符、數(shù)值、日期型
?X=3
??iif(x<0,1,-1)-1
若xvO為真,則返回1,否則返回?1?
?與??命令
-?V表達式表〉,從當前行的下一行第一列開始
輸出各個表達式的值
-??V表達式表〉,從當前行當前列開始輸出各
個表達式的值
?與??命令
?練習:?“今天“
???”是:11
??"2007”
???”年1,
?則在vf王窗口中顯示:
今天是:
2007年
數(shù)字輸出時為什么前面有空白?
當數(shù)字輸出時,若位數(shù)不足十位,則系統(tǒng)會自動
在數(shù)字前方補上空格顯示,但不影響數(shù)值本身。
a=1
?a
1
a=1111111111
?a1111111111
a=111111111111111111
?a111
a=111
3Visual
吾法結構
4.3VisualFoxpro語法結構
行程序文件
*順序結構
,選擇結構
行循環(huán)結構
79
4.3.1程序文件的建立、編輯與運行
1.程序的概念
?定義:在VFP中,將能完成一定功能的命令或語句序列稱為程序。
?特點:程序可以以文件的形式保存到磁盤中,該文件稱為程序文
件,其擴展名為,PRG,可以對其編輯和運行。
?建立、編輯程序文件有兩種方式:
1.命令方式
2.菜單方式
80
2.程序文件的建立
1.命令方式:MODIFYCOMMAND〈程序文件名〉
①若程序文件保存在當前盤當前路徑下,則文件名前的盤
符、路徑可以缺省。
②在程序編輯窗口中可進行光標移動、刪除、插入、剪切、
復制和粘貼操作。
2.菜單方式
打開“文件”菜單,選擇“新建”;在“新建”窗口,
選擇“程序”,再單擊“新建文件”按鈕;在“程序文件”
編輯窗口,輸入程序,保存并命名即可。
81
2.程序文件的建立
bsoftVisiialFoxPro|,,,1[□
編輯⑹顯示⑦格式(。工具①程莊?窗口?幫助(H)
旨向切芯南囤g|T1M|3向典I蜀喇閶國?||昌1曜,副制如函后
^average,prg□0X
USE學生z
AVERAGE2008-YEAR(出生日期)TOaverage_age
?2008年全體學生的平均年齡為:',average_age
程序編輯窗口
82
3.程序文件的運行
1.命令方式
在命令窗口中,輸入如下命令,則程序文件被調(diào)用(即運行)。
DO〈程序文件名〉
如:doaverage
2.菜單方式________
以菜單方式調(diào)用程序文件,操作方法如下:I,,
(1)菜單“程序”一“運行”。一運行
(2)在“運行”窗口,選擇或輸入要運行的程序文件名。
3.圖標方式[
前提:程序編輯窗口打開狀態(tài)下。!
83
432順序結構
工程序控制的基本結構有三種:
順序結構、選擇結構和循環(huán)結構。
1,順序結構
程序的執(zhí)行是按其語句的排列先后順序執(zhí)行,這也是最
簡單、最基本的程序控制結構。
如:
X=1
y=2
z=x+y
?z
84
4.3.3選擇結構
?選擇結構是根據(jù)條件的測試結果執(zhí)行不同
的操作。
,選擇結構:
-1.IF條件語句
-2.CASE多分支語句
85
1.IF條件語句
(1)簡單的條件語句
?格式:IFv條件,
?v語句序列〉
?ENDIF
案功能:執(zhí)行該語句時,首先判斷條件是否成立:
-當條件為真時,執(zhí)行語句序列,然后執(zhí)行ENDIF后面
的語句;
-當條件為假時,直接執(zhí)行ENDIF后面的語句。
?條件一般是一個邏輯表達式。
?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
*功能:條件為真時,執(zhí)行語句序列1;否則執(zhí)行序列2。
序列1和2不能都執(zhí)行,執(zhí)行任一序列后繼續(xù)執(zhí)行ENDIF后
面的語句。
?條件一般是一個邏輯表達式。
?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>
各條件,當條件為
CASE<條件2>
<語句系列2>真時執(zhí)行對應的
■■■■■■■■■語句系列;當所
CASE<條件n>有條件為假時,則
<語句系列n>執(zhí)行OTHERWISE
[OTHERWISE對應的語句系列。
<語句系列n+l>Otherwise不再進
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)結構
?循環(huán)結構要注意的是要有控制條件的語句,以避
免出現(xiàn)死循環(huán)現(xiàn)象。
?在VFP中有三種循環(huán)語句:
lDOWHILE...ENDDO
fSCAN...ENDSCAN
KFOR...ENDFOR
93
1.DOWHILE循環(huán)語句
?格式:DOWHILE<條件表達式>
?v語句序列>
?ENDDO
?功能:當條件為真時,重復執(zhí)行語句序列,直到
條件為假時結束。
94
1.DOWHILE循環(huán)語句
?如下例:
?s=o
?K=1
?DOWHILEK<=100
?S=S+K
?K=K+1
?ENDDO
??S此程序的功能及輸出結果
是什么?
95
1.DOWHILE循環(huán)語句
?EXIT和LOOP
-EXIT結束當前循環(huán)操作,跳到ENDDO后面繼續(xù)執(zhí)行。
-LOOP跳過LOOP后面的語句,結束本輪循環(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此程序的功能及輸出結果
?ENDDO又是什么?
??S
97
1.DOWHILE循環(huán)語句
?如下例:
?s=o
?K=1
?DOWHILE.T.
?S=S+K
?K=K+1
?IFK>5
?EXIT
?ENDIF此程序的功能及輸出結果
?ENDDO又是什么?
??S
98
1.DOWHILE循環(huán)語句
?如下例:
?s=o
?K=1
?DOWHILEK<=10
?S=S+K
?K=K+1
?IFK>5
?LOOP
?ENDIF
???K此程序的功能及輸出結果
?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此程序的功能及輸出結果
?ENDDO又是什么?
??S
100
1.DOWHILE循環(huán)語句
?如下例:
?USE學生
?DOWHILE.NOT.EOF()
?DISP
?SKIP
?ENDDO利用該循環(huán)實現(xiàn)對當前打開的表
文件中的記錄自上而下或自下而上
地逐條進行操作。
記錄指針由SKIP語句控制,循
環(huán)結束的條件由函數(shù)EOF()或
BOF()控制。
101
2.FOR循環(huán)語句
?格式:
FOR循環(huán)變量=初值TO終值[STEP步長]
<語句系列》
ENDFOR|NEXT
?說明:
①循環(huán)變量為內(nèi)存變量,不需要事先定義。
②初值、終值、步長均為數(shù)值。
③默認遞增步長為1。
④ENDFOR和NEXT二者等價,二選一。
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
?等價于
?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條件習
?<語句序列>
?ENDSCAN
?功能:對當前表在指定范圍,滿足條件的記錄中自動進行
自上而下逐個掃描,重復執(zhí)行循環(huán)體(語句序列)。
?說明:SCAN循環(huán)能自動移動指針。用DOWHILE循環(huán)也可以
實現(xiàn)對表文件的逐個掃描操作,但需借助函數(shù)BOF()或
EOF()測試狀態(tài),用SKIP命令移動指針,不如SCAN循環(huán)方
便。
105
3.SCAN循環(huán)語句
【例】分別統(tǒng)計學生表中男生和女生的人數(shù)。
?USE學生
?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)結構
?注意事項:
(1)DOWHILEffENDDO>FOR和ENDFOR、SCAN和
ENDSCAN必須配對使用o
(2)〈語句序列〉可以是任何VFP命令或語句,也可以是
循環(huán)語句,即可以為多重循環(huán)。
(3)〈循環(huán)變量〉應是數(shù)值型的內(nèi)存變量或數(shù)組元素。
(4)EXIT和LOOP命令嵌入在循環(huán)體內(nèi),可以改變循環(huán)次
數(shù),但是不能單獨使用。
108
435程序設計中的常用命令
1.數(shù)據(jù)輸入輸出命令
2.注釋命令
3.設置命令
4.清屏命令
5.程序結束命令
109
435程序設計中的常用命令
1.數(shù)據(jù)輸入輸出命令
①接收字符串命令accept
②數(shù)據(jù)輸入命令input
③等待命令wait
④文本輸出命令
⑤定位輸出命令
⑥定位輸入命令
110
(1)字符串接收語句ACCEPT
格式:ACCEPT[〈提示信息》]TO〈內(nèi)存變量〉
功能:將鍵盤輸入的字符串賦給指定的內(nèi)存變量。
,執(zhí)行該命令時,首先在主窗口顯示提示信息,并暫停程
序的執(zhí)行,等待用戶從鍵盤輸入數(shù)據(jù)后繼續(xù)執(zhí)行程序。
/用戶只能輸入字符型常量,不加定界符,以回車結束。
如:
?ACCEPT”請輸入教師名:"toxm
??”教師名:”,xm
111
(2)數(shù)據(jù)輸入命令INPUT
格式:INPUT[〈提示信息〉]TO〈內(nèi)存變量》
功能:將鍵盤輸入的數(shù)據(jù)賦給指定的內(nèi)存變量。
注:input與accept類似,區(qū)別在于input從鍵盤輸入的數(shù)
據(jù)可以是常量、變量、函數(shù)或表達式,數(shù)據(jù)類型可以是
除備注型和通用型外的所有類型。
說明:用戶在輸入字符串、日期常量和邏輯型常量時,必
須加上相應的分界符。
112
(2)數(shù)據(jù)輸入命令INPUT
【例】郵費的計費標準為每克0.05元,但重量超過100
克后,超出數(shù)為每克0.02元,編寫程序計算郵費.
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)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年主持人聘合同(2篇)
- 2025年九年級語文教學年終總結(2篇)
- 2025年云南省鮮花訂購合同(三篇)
- 2025年二年級語文教學工作心得體會模版(3篇)
- 書店裝修小型合同樣本
- 醫(yī)療設施土方清運合同
- 清真寺裝修合同樣本
- 金華日式屋頂花園施工方案
- 度假別墅裝修合同協(xié)議
- 醫(yī)療藥品冷鏈運輸協(xié)議
- 宮頸癌后裝治療護理查房課件
- 光伏電站生產(chǎn)準備大綱全套
- 員工內(nèi)部眾籌方案
- 媽祖重離子醫(yī)院硼中子俘獲治療系統(tǒng)環(huán)境影響報告
- 復變函數(shù)與積分變換期末考試試卷及答案
- 初中班級成績分析課件
- 海洋工程裝備制造職業(yè)發(fā)展研究報告
- 勞務合同樣本下載
- 聰明格練習題(初、中級)
- 20XX年吉林省事業(yè)單位公開招聘人員審核備案表
- 產(chǎn)科危重癥識別與處理及危重癥管理培訓課件
評論
0/150
提交評論