版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第2章VisualFoxPro程序設(shè)計(jì)基礎(chǔ)
48學(xué)時(shí)
本章教學(xué)要求:掌握數(shù)VisualFoxPro數(shù)據(jù)類型、變量、表達(dá)式的基本概念和用法,VisualFoxPro常用命令和函數(shù)的基本使用方法,自定義函數(shù)和過(guò)程定義和使用。2.1常量和變量2.2表達(dá)式2.3常用函數(shù)2.4程序與程序文件2.5程序的基本結(jié)構(gòu)2.6多模塊程序2.7小型案例實(shí)訓(xùn)2.8小型案例實(shí)訓(xùn)2.9本章小結(jié)2.1常量與變量2.1.1常量
常量(Const)是在程序運(yùn)行過(guò)程中,其值保持不變的量,VFP有六種類型的常量:數(shù)值型常量、字符型常量、日期型常量、日期時(shí)間型常量、邏輯型常量和貨幣型常量。例如:25、’Thisisabook.’、{^2009-5-7}、$20.5等就是常量。1.數(shù)值型常量
由數(shù)字、點(diǎn)和正負(fù)號(hào)組成,表示整數(shù)或?qū)崝?shù)值如365、-785、155.98、1092.5041、-6928.5等2.貨幣型常量貨幣型常量用來(lái)表示貨幣值,例如,$100,$20.5等。3.字符型常量
由任意ASCⅡ字符、漢字和漢字字符組成的字符型數(shù)據(jù)字符常量又稱為字符串
VisualFoxPro要求將字符串中的所有字符用一對(duì)雙引號(hào)(”)或單引號(hào)(’)或方括號(hào)([])作為定界符括起來(lái)。注意:定界符本身不是字符串的組成部分。例如,“FoxPro”、‘VisualFoxPro’、“中華人民共和國(guó)”、“學(xué)號(hào):20060433”、[李小璐]。注意:定界符必須成對(duì)匹配,不能一邊用單引號(hào)而另一邊用雙引號(hào)。如果某種定界符本身也是字符串的內(nèi)容,則需要用另一種定界符為該字符串定界,如[“紅玫瑰”]。4.日期型常量
日期型常量就是用來(lái)表示日期的數(shù)值,其默認(rèn)格式是{^yyyy/mm/dd}(即“年月日”格式)如{^2009/01/01}或{^2009-1-1}均表示2009年1月1日這一日期常量值
VFP中影響日期數(shù)據(jù)格式的幾個(gè)命令:(1)setmarkto[<日期分隔符>](2)setdateto<日期格式>
例如:setdatetoANSI,將日期格式設(shè)置為“yy.mm.dd”格式
setdatetoYMD,將日期格式設(shè)置為“yy/mm/dd”格式(3)setcenturyon|off(2)setstrictdateto<0|1|2>P.48例2.25.日期時(shí)間型常量
用于表示日期和時(shí)間的常量,其默認(rèn)格式為
{^yyyy/mm/ddhh:mm:ss[a|p]}或
{^yyyy/mm/dd,hh:mm:ss[a|p]}或其中a和p分別表示AM(上午)和PM(下午)例如,{^2009/01/0110:30:30a}和{2009-1-1,10:30:30a}均表示2009年1月1日上午10時(shí)30分30秒這個(gè)時(shí)刻6.邏輯型常量
邏輯型常量就是表示邏輯判斷結(jié)果“真”或“假”的邏輯值邏輯常量只有“真”和“假”這兩個(gè)值真(.T.、.t.、.Y.和.y.)假(.F.、.f.、.N.和.n.)2.1.2變量
變量(Variable)是在程序運(yùn)行過(guò)程中,其值可以改變的量。變量分類:(1)按性質(zhì)劃分內(nèi)存變量、數(shù)組變量、字段變量、系統(tǒng)變量(2)按數(shù)據(jù)類型劃分字符變量、數(shù)值變量、貨幣型變量、邏輯型變量、日期型變量、日期時(shí)間型變量
變量名稱在VisualFoxPro中變量名只能以字母或下劃線“_”開(kāi)始,后面可接字母或數(shù)字,漢字也可用作變量名,變量名中不能包含以下字符:~!@#%^&*()、-+\:{}.[];<>?/空格制表符1.簡(jiǎn)單內(nèi)存變量?jī)?nèi)存變量是獨(dú)立于數(shù)據(jù)庫(kù)以外、存儲(chǔ)在內(nèi)存中的臨時(shí)變量。它通常用于存放程序運(yùn)行過(guò)程中所需要的原始數(shù)據(jù)、中間結(jié)果及最終結(jié)果。內(nèi)存變量的數(shù)據(jù)類型由它所保存的數(shù)據(jù)類型決定。變量賦值格式1:<內(nèi)存變量名>=<表達(dá)式>格式2:STORE<表達(dá)式>TO<內(nèi)存變量名表>2.數(shù)組數(shù)組是一組具有相同名稱、以下標(biāo)相互區(qū)分的有序內(nèi)存變量的集合。其中每一個(gè)下標(biāo)不同的內(nèi)存變量都是這個(gè)數(shù)組的一個(gè)元素。在VisualFoxPro中,一個(gè)數(shù)組中各個(gè)元素的數(shù)據(jù)類型可以相同也可以不同。
數(shù)組的定義命令格式:
Dimension|Declare<數(shù)組名1>(<下標(biāo)1>[,<下標(biāo)2>])[,<數(shù)組名2>(<下標(biāo)1>[,<下標(biāo)2>])……]例:dimensionA(3),B(2,3)P.50例2.4
數(shù)組元素的初始值為.F.
可以以一維數(shù)組的方式訪問(wèn)二維數(shù)組2.1.3內(nèi)存變量常用命令1.內(nèi)存變量的賦值2.顯示變量和表達(dá)式的值格式1:?[<表達(dá)式表>]格式2:??[<表達(dá)式表>]區(qū)別:格式1會(huì)在新的一行輸出各表達(dá)式的值,而格式2是在當(dāng)前輸出行的末尾進(jìn)行輸出的。3.顯示內(nèi)存變量LISTMEMORY|DISPLAYMEMORY4.清除內(nèi)存變量CLEARMEMORYRELEASE5.表中數(shù)據(jù)與數(shù)組數(shù)據(jù)之間的交換(1)將表的記錄數(shù)據(jù)復(fù)制到數(shù)組SCATTER…TO…(2)將數(shù)組中的數(shù)據(jù)復(fù)制到表中GATHERFROM…2.2表達(dá)式
表達(dá)式是由常量、變量和函數(shù)通過(guò)特定的運(yùn)算符連接起來(lái)所形成的式子。根據(jù)表達(dá)式的值的類型,表達(dá)式可以分為數(shù)值表達(dá)式、字符表達(dá)式、日期時(shí)間表達(dá)式、關(guān)系表達(dá)式和邏輯表達(dá)式。
2.2表達(dá)式2.2.1數(shù)值、字符與日期時(shí)間表達(dá)式數(shù)值表達(dá)式又叫做算術(shù)表達(dá)式。數(shù)值表達(dá)式由算術(shù)運(yùn)算符將數(shù)值型數(shù)據(jù)連接起來(lái)形成,其運(yùn)算結(jié)果仍然是數(shù)值型數(shù)據(jù)。
表2-2算術(shù)運(yùn)算符及其優(yōu)先級(jí)優(yōu)先級(jí)運(yùn)算符說(shuō)明1()形成表達(dá)式內(nèi)的子表達(dá)式2**或^乘方運(yùn)算3*、/、%乘、除、求余運(yùn)算4+、-加、減運(yùn)算
求余運(yùn)算求余運(yùn)算(“%”)用于返回整數(shù)整除所得余數(shù)。余數(shù)的符號(hào)與除數(shù)一致。如果被除數(shù)與除數(shù)同號(hào),那么求余運(yùn)算結(jié)果即為兩數(shù)相整除的余數(shù)如果被除數(shù)與除數(shù)異號(hào),則求余運(yùn)算結(jié)果為兩數(shù)相整除的余數(shù)再加上除數(shù)的值例2.7求余運(yùn)算示例。?15%4 &&結(jié)果為3?15%-4 &&結(jié)果為-1?-15%4 &&結(jié)果為1?-15%-4 &&結(jié)果為-32.字符表達(dá)式
字符型表達(dá)式由字符串連接運(yùn)算符將字符型常量、變量或者函數(shù)連接起來(lái)形成式子,其運(yùn)算結(jié)果仍然是一個(gè)字符型數(shù)據(jù)。運(yùn)算符說(shuō)明+前后兩個(gè)字符串首尾連接形成一個(gè)新的字符串。-連接前后兩個(gè)字符串,并將前字符串的尾部空格移到合并后的新字符串尾部。表字符運(yùn)算符例2.8字符型表達(dá)式運(yùn)算。?“紅玫瑰”+“實(shí)驗(yàn)室” &&結(jié)果為:紅玫瑰實(shí)驗(yàn)室?“紅玫瑰”-“實(shí)驗(yàn)室” &&結(jié)果為:紅玫瑰實(shí)驗(yàn)室(末尾有兩個(gè)空格)3.日期時(shí)間表達(dá)式日期時(shí)間表達(dá)式是由“+”或“-”運(yùn)算符將日期時(shí)間型數(shù)據(jù)與數(shù)值常量連接起來(lái)或用“-”運(yùn)算符將兩個(gè)日期時(shí)間型數(shù)據(jù)連接起來(lái)的表達(dá)式,其結(jié)果仍為日期時(shí)間型數(shù)據(jù)或是數(shù)值型數(shù)據(jù)。表2-3日期時(shí)間表達(dá)式的格式格式結(jié)果及類型<日期>+<天數(shù)>日期型。指定若干天后的日期<天數(shù)>+<日期>日期型。指定若干天后的日期<日期>-<天數(shù)>日期型。指定若干天前的日期<日期>-<日期>數(shù)值型。兩個(gè)指定日期相差的天數(shù)<日期時(shí)間>+<秒數(shù)>日期時(shí)間型。指定日期時(shí)間若干秒后的日期時(shí)間<秒數(shù)>+<日期時(shí)間>日期時(shí)間型。指定日期時(shí)間若干秒后的日期時(shí)間<日期時(shí)間>-<秒數(shù)>日期時(shí)間型。指定日期時(shí)間若干秒前的日期時(shí)間<日期時(shí)間>-<日期時(shí)間>數(shù)值型。兩個(gè)指定日期時(shí)間相差的秒數(shù)例2.9日期時(shí)間運(yùn)算。?{08/10/06}+1 &&結(jié)果為{08/11/06}?{08/15/06}-{08/02/06} &&結(jié)果為132.2.2關(guān)系表達(dá)式關(guān)系表達(dá)式通常又稱為簡(jiǎn)單邏輯表達(dá)式,它由關(guān)系運(yùn)算符將兩個(gè)運(yùn)算對(duì)象連接起來(lái)形成,即:
<表達(dá)式1><關(guān)系運(yùn)算符><表達(dá)式2>
關(guān)系表達(dá)式的運(yùn)算結(jié)果是邏輯型數(shù)據(jù)。VFP共有8種關(guān)系運(yùn)算符。算術(shù)運(yùn)算符及其含義如表2-4所示,它們的優(yōu)先級(jí)相同。
表2-4算術(shù)運(yùn)算符及其優(yōu)先級(jí)運(yùn)算符說(shuō)明運(yùn)算符說(shuō)明<小于<=小于或等于>大于>=大于或等于=等于==字符串精確比較<>、#或!=不等于$子串包含測(cè)試注意:運(yùn)算符“==”和“$”僅適用于字符型數(shù)據(jù),其他運(yùn)算符適用于任何類型的數(shù)據(jù),但前后兩個(gè)運(yùn)算對(duì)象的數(shù)據(jù)類型要一致?!?=”操作符用于兩個(gè)字符串的精確比較,包括空格字符。當(dāng)使用“==”操作符時(shí),SETEXACT命令將被忽略。日期和日期時(shí)間型數(shù)據(jù)比較越早的日期或時(shí)間越小,越晚的日期或時(shí)間越大。例如:{^2008-08-22}>{^2007-01-12} &&值為:.T.
字符數(shù)據(jù)的比較在VFP中,比較字符型數(shù)據(jù)的大小時(shí)是比較它們的ASCII大小,由英文字母組成的字符串進(jìn)行比較時(shí)也可以看作是比較它們?cè)谧帜副碇械南群箜樞颍号旁谧帜副砬懊娴淖帜敢扰旁谧帜副砗竺娴淖帜感?。?shù)字符號(hào)0——9:按0——9的排序,前面的小,后面的大。漢字的比較:按字典順序進(jìn)行比較,排在前面的小,排在后面的大。例2.10字符串比較。?“ABC“<”ABE” &&結(jié)果為.T.
?”abc”<”abe”,“abc”<”aBe” &&結(jié)果為.T..T.
?“abc”>=”abC”,”abc”>=”ABC”&&結(jié)果為.F..F.
?“abcd”=“ABCD” &&結(jié)果為.F.
?“45621“<”45622” &&結(jié)果為.T.
?”45625”!=”45623” &&結(jié)果為.T.
?“劉娜”!=”章茹” &&結(jié)果為.T.
?“劉娜”<“章茹” &&結(jié)果為.T.
?“中國(guó)”=“中華人民共和國(guó)” &&結(jié)果為.F.
字符串精確比較與EXACT設(shè)置
當(dāng)用單等號(hào)運(yùn)算符“=”比較兩個(gè)字符串時(shí),運(yùn)算結(jié)果與SETEXACTON/OFF設(shè)置有關(guān),該命令是設(shè)置精確匹配與否的開(kāi)關(guān)。
當(dāng)用雙等號(hào)運(yùn)算符“==”比較兩個(gè)字符串時(shí),只有當(dāng)兩個(gè)字符串完全相同時(shí),運(yùn)算結(jié)果才會(huì)是邏輯真.T.,否則為邏輯假.F.,這種比較稱為字符串精確比較。
當(dāng)處于ON狀態(tài)時(shí),字符串的比較運(yùn)算將進(jìn)行到兩個(gè)字符串全部結(jié)束為止,先在較短字符串的尾部加上若干個(gè)空格,使兩個(gè)字符串的長(zhǎng)度相等,然后再進(jìn)行比較。當(dāng)處于OFF狀態(tài)時(shí),字符串的比較以右邊的字符串為目標(biāo),右字符串結(jié)束即終止比較。只要右邊的字符串與左邊字符串的前面部分相匹配,即可以得到邏輯真的結(jié)果。即字符串所謂比較因右面的字符串結(jié)束而終止。表2-5SETEXACT對(duì)字符串比較的影響比較=(EXACTOFF)=(EXACTON)==(EXACTON或OFF)"abc"="abc".T..T..T."ab"="abc".F..F..F."abc"="ab".T..F..F."abc"="ab".F..F..F."ab"="ab".F..T..F."ab"="ab".T..T..F.""="ab".F..F..F."ab"="".T..F..F.TRIM("ab")="ab".T..T..T."ab"=TRIM("ab").T..T..T.2.2.3邏輯表達(dá)式
關(guān)系表達(dá)式邏輯表達(dá)式是由邏輯運(yùn)算符將邏輯型數(shù)據(jù)連接而形成的,其運(yùn)算結(jié)果仍然是邏輯型數(shù)據(jù)。邏輯型運(yùn)算符有3個(gè):.NOT.或!(邏輯非)、.AND.(邏輯與)和.OR.(邏輯或)。其優(yōu)先級(jí)順序依次為.NOT.、.AND.、.OR.。邏輯邏輯符的運(yùn)算規(guī)則如表2-6所示,<23>和<24>分別代表兩個(gè)邏輯型數(shù)據(jù)。表2-6邏輯運(yùn)算規(guī)則
<23><24>.NOT.<23><23>.AND.<24><23>.OR.<24>.T..T..F..T..T..T..F..F..F..T..F..T..T..F..T..F..F..T..F..F.2.2.3運(yùn)算符優(yōu)先級(jí)
不同類型的運(yùn)算符有可能出現(xiàn)在同一個(gè)表達(dá)式中。各種運(yùn)算的優(yōu)先級(jí)順序從高到低如下:(1)算術(shù)運(yùn)算符(2)運(yùn)算符和日期運(yùn)算符(3)關(guān)系運(yùn)算符(4)邏輯運(yùn)算符圓括號(hào)作為運(yùn)算符,可以改變其他運(yùn)算符的運(yùn)算順序。圓括號(hào)內(nèi)的內(nèi)容作為整個(gè)表達(dá)式的子表達(dá)式,在與其他運(yùn)算對(duì)象進(jìn)行各類運(yùn)算前,首先計(jì)算出其結(jié)果,即圓括號(hào)的優(yōu)先級(jí)最高,圓括號(hào)可以嵌套。有時(shí)在表達(dá)式的適當(dāng)?shù)胤讲迦雸A括號(hào),并不是為了真正改變運(yùn)算次序,而是為了提高表達(dá)式的可讀性。例2.11運(yùn)算符優(yōu)先級(jí)。?8>3.AND."男">"男生"OR.T.<.F. &&結(jié)果為.F.?(15%3=0)AND(24%5=4)OR"學(xué)習(xí)"!="工作" &&結(jié)果為.T.
2.3常用函數(shù)
VisualFoxPro提供了380多個(gè)標(biāo)準(zhǔn)函數(shù)。根據(jù)函數(shù)返回值的類型或函數(shù)功能劃分:(1)數(shù)值型函數(shù)(2)字符型函數(shù)(3)日期和時(shí)間函數(shù)(4)數(shù)據(jù)類型轉(zhuǎn)換函數(shù)(5)測(cè)試函數(shù)
2.3.1數(shù)值型函數(shù)
求平方根函數(shù)格式:SQRT(<數(shù)值表達(dá)式>)功能:該函數(shù)返回?cái)?shù)值表達(dá)式的平方根。例2.14平方根函數(shù)的運(yùn)算。?SQRT(100) &&結(jié)果為10.00取整函數(shù)格式:INT(<數(shù)值表達(dá)式>)格式:CELING(<數(shù)值表達(dá)式>)格式:FLOOR(<數(shù)值表達(dá)式>)例2.15整數(shù)函數(shù)的運(yùn)算。STORE2.3TOX?INT(X),INT(-X) &&結(jié)果為2-2STORE2.3TOX?CELING(),CELING() &&結(jié)果為3-2STORE2.3TOX+++?FLOOR(),FLOOR() &&結(jié)果為2-3
2.3.1數(shù)值型函數(shù)
四舍五入函數(shù)格式:ROUND(<數(shù)值表達(dá)式1>,<數(shù)值表達(dá)式2>)功能:該函數(shù)返回?cái)?shù)據(jù)表達(dá)式在指定位置四舍五入后的結(jié)果。<數(shù)值表達(dá)式2>表示四舍五入的位置。如果<數(shù)值表達(dá)式2>大于或等于0,那么它表示的是要保留的小數(shù)位數(shù);如果<數(shù)值表達(dá)式2>小于0,那么它表示的是整數(shù)部分的舍入位數(shù)。例2.16四舍五入運(yùn)算。X=456.456?ROUND(X,2),ROUND(X,1),ROUND(X,0),ROUND(X,-1)&&結(jié)果為456.46456.5456456注意:如果<nExp2>的值非負(fù),表示需保留的是十進(jìn)制數(shù)的小數(shù)位;如果<nExp2>的值為負(fù)數(shù),則ROUND()在整數(shù)部分四舍五入。2.3.1數(shù)值型函數(shù)
求余數(shù)函數(shù)格式:MOD(<數(shù)值表達(dá)式1>,<數(shù)值表達(dá)式2>)功能:該函數(shù)返回<數(shù)值表達(dá)式1>和<數(shù)值表達(dá)式2>兩個(gè)數(shù)相除后的余數(shù)。余數(shù)的正負(fù)號(hào)與除數(shù)相同。如果被除數(shù)與除數(shù)同號(hào),那么函數(shù)值就為兩數(shù)相除的余數(shù);如果被除數(shù)與除數(shù)異號(hào),則函數(shù)值為兩數(shù)相除的余數(shù)再加上除數(shù)的值。例2.17余數(shù)函數(shù)的運(yùn)算。?MOD(13,5) &&結(jié)果為3?MOD(13,-5) &&結(jié)果為-2?MOD(-13,5) &&結(jié)果為2?MOD(-13,-5) &&結(jié)果為-32.3.1數(shù)值型函數(shù)
求最值函數(shù)格式:MAX(<數(shù)值表達(dá)式1>[,<數(shù)值表達(dá)式2>...])功能:該函數(shù)返回?cái)?shù)值表達(dá)式中的最大值表達(dá)式。格式:MIN(<數(shù)值表達(dá)式1>[,<數(shù)值表達(dá)式2>...])功能:該函數(shù)返回?cái)?shù)值表達(dá)式中的最小值表達(dá)式。例2.18最值函數(shù)的運(yùn)算。?MIN(6,INT(4.72)) &&結(jié)果為4?MAX("8","64") &&結(jié)果為64
2.3.2字符型函數(shù)
求字符串長(zhǎng)度LEN()函數(shù)格式:LEN(<字符表達(dá)式>)功能:LEN()函數(shù)返回字符表達(dá)式值的長(zhǎng)度,函數(shù)值為數(shù)值型。例2.19字符表達(dá)式值的長(zhǎng)度。?LEN("紅玫瑰實(shí)驗(yàn)室") &&結(jié)果為12?LEN("welcometohome") &&結(jié)果為152.3.2字符型函數(shù)
刪除前后空格函數(shù)格式:TRIM(<字符表達(dá)式>)格式:LTRIM(<字符表達(dá)式>)格式:ALLTRIM(<字符表達(dá)式>)例2.22刪除前后空格函數(shù)運(yùn)算。?"歡迎"+"實(shí)驗(yàn)室" &&結(jié)果為"歡迎實(shí)驗(yàn)室"?TRIM("歡迎")+"實(shí)驗(yàn)室" &&結(jié)果為"歡迎實(shí)驗(yàn)室"?"歡迎"+"實(shí)驗(yàn)室" &&結(jié)果為"歡迎實(shí)驗(yàn)室"?"歡迎"+LTRIM("實(shí)驗(yàn)室") &&結(jié)果為"歡迎實(shí)驗(yàn)室"?SPACE(3) &&結(jié)果為"□□",□代表空格?ALLTRIM("□□紅玫瑰□") &&結(jié)果為"紅玫瑰"
2.3.2字符型函數(shù)
取子串函數(shù)格式:LEFT(<字符表達(dá)式>,<長(zhǎng)度>)格式:RIGHT(<字符表達(dá)式>,<長(zhǎng)度>)格式:SUBSTR(<字符表達(dá)式>,<長(zhǎng)度>)例2.23取子串函數(shù)運(yùn)算。STORE"WELCOME"TOx?LEFT(x,3)
&&結(jié)果為WEL?LEFT(x,-1) &&結(jié)果為無(wú)顯示?RIGHT(x,4) &&結(jié)果為COME?RIGHT(x,-1) &&結(jié)果為無(wú)顯示?SUBSTR(x,3,3) &&結(jié)果為L(zhǎng)CO?SUBSTR(x,4) &&結(jié)果為COME?SUBSTR(x,8) &&結(jié)果為無(wú)顯示2.3.2字符型函數(shù)
求子串位置函數(shù)格式:AT(<字符表達(dá)式1>,<字符表達(dá)式2>[,<數(shù)值表達(dá)式>])功能:該函數(shù)返回<字符表達(dá)式1>值的首字符在<字符表達(dá)式2>值中的位置;若不是子串,則返回0。ATC()與AT()功能類似,但在子串比較時(shí)不區(qū)分字母大小寫。<數(shù)值表達(dá)式>用于表明要在<字符表達(dá)式2>值中搜索<字符表達(dá)式1>值是第幾次出現(xiàn),其默認(rèn)值為1。例2.24求子串位置函數(shù)運(yùn)算。STORE"WELCOME"TOx?AT("come",x) &&結(jié)果為0?ATC("come",x) &&結(jié)果為4?AT("E",x) &&結(jié)果為1
2.3.2字符型函數(shù)
字符串匹配函數(shù)格式:LIKE(<字符表達(dá)式1>,<字符表達(dá)式2>)功能:該函數(shù)比較兩個(gè)字符串對(duì)應(yīng)位置上的字符,如果所有對(duì)應(yīng)字符都相匹配,函數(shù)返回邏輯值真(.T.),否則返回邏輯值假(.F.)。例2.27比較兩個(gè)字符串的函數(shù)。STORE"xyz"TOx?LIKE("ab*",x) &&結(jié)果為.T.?LIKE("abC",x) &&結(jié)果為.T.
注意: <字符表達(dá)式1>中可以包含通配符“*”和“?”。“*”可與任何數(shù)目的字符相匹配,“?”可以與任何單個(gè)字符相匹配。2.3.3日期和時(shí)間函數(shù)
系統(tǒng)日期和時(shí)間函數(shù)格式:DATE()功能:該函數(shù)返回當(dāng)前系統(tǒng)日期,函數(shù)值為日期型。格式:TIME()功能:該函數(shù)以24小時(shí)制、hh:mm:ss格式返回當(dāng)前系統(tǒng)時(shí)間,函數(shù)值為字符型。格式:DATETIME()功能:該函數(shù)返回當(dāng)前系統(tǒng)日期時(shí)間,函數(shù)值為日期時(shí)間型。例2.28系統(tǒng)日期和時(shí)間函數(shù)運(yùn)用。?DATE() &&結(jié)果為08/01/05?TIME() &&結(jié)果為01:34:22?DATETIME() &&結(jié)果為08/01/0501:34:22PM年份、月份、和天數(shù)函數(shù)時(shí)、分和秒函數(shù)2.3.4數(shù)據(jù)類型轉(zhuǎn)換函數(shù)數(shù)值轉(zhuǎn)換成字符串格式:STR(<數(shù)值表達(dá)式>[,<長(zhǎng)度>[,<小數(shù)位數(shù)>]])例2.31數(shù)值轉(zhuǎn)換成字符串運(yùn)算。?STR(658.4567,6,2) &&結(jié)果為658.46?"10/3的計(jì)算結(jié)果="+STR(10/3,5,3) &&系統(tǒng)主窗口顯示:
計(jì)算結(jié)果=3.3332.3.4數(shù)據(jù)類型轉(zhuǎn)換函數(shù)字符串轉(zhuǎn)換成數(shù)值格式:VAL(<字符表達(dá)式>)例2.32字符串轉(zhuǎn)換成數(shù)值運(yùn)算。STORE"-67."TOXSTORE"87"TOYSTORE"A87"TOZ?VAL(X+Y) &&結(jié)果為-67.87?VAL(X+Z) &&結(jié)果為-67.00?VAL(Z+Y) &&結(jié)果為0.00?VAL("3A.576") &&結(jié)果為3.00?VAL("A3.576") &&結(jié)果為0.00
2.3.4數(shù)據(jù)類型轉(zhuǎn)換函數(shù)字符串轉(zhuǎn)換成日期或日期類型格式:CTOD(<字符表達(dá)式>)格式:CTOT(<字符表達(dá)式>)日期或日期時(shí)間轉(zhuǎn)換成字符串格式:DTOC(<日期表達(dá)式>|<日期時(shí)間表達(dá)式>[,1])格式:TTOC(<日期時(shí)間表達(dá)式>[,1])例2.33日期或日期時(shí)間轉(zhuǎn)換成字符串運(yùn)算。STOREDATETIME()TOX?X &&結(jié)果為01/15/0811:32:56PM?DTOC(X),DTOC(X,1),TTOC(X),TTOC(X,1)&&系統(tǒng)主窗口顯示:01/15/082008011501/15/08 11:32:56PM20080115233256
2.3.4數(shù)據(jù)類型轉(zhuǎn)換函數(shù)宏替換函數(shù)格式:&<字符型變量>[.]例2.34宏替換函數(shù)。STORE"同學(xué)"TODBUSE&DB &&相當(dāng)于USE同學(xué)XM="姓名"?&XM-"成績(jī)!" &&相當(dāng)于"?姓名-"成績(jī)!""王曉明成績(jī)! &&字段變量姓名的值是王曉明KIP &&轉(zhuǎn)到下條記錄?XM,&XM &&相當(dāng)于"?XM,姓名"姓名王曉明例2.35宏替換函數(shù)的嵌套。X="&Y"Y="Z"Z="W"?X,&X &&結(jié)果為ZW2.3.5測(cè)試函數(shù)空值ISNULL()函數(shù)格式:ISNULL(<表達(dá)式>)功能:該函數(shù)判斷一個(gè)表達(dá)式的運(yùn)算結(jié)果是否為NULL值,如果是NULL值,則返回邏輯真(.T.),否則返回邏輯假(.F.)。例2.37空值函數(shù)。STORE.NULL.TOX?X,ISNULL(X) &&結(jié)果為.NULL..T.3.“空”值測(cè)試函數(shù)格式:EMPTY(<表達(dá)式>)功能:該函數(shù)根據(jù)表達(dá)式的運(yùn)算結(jié)果是否為“空”值,返回邏輯真(.T.)或邏輯假(.F.)。
注意:“空”值與NULL值是兩個(gè)不同的概念。函數(shù)EMPTY(.NULL.)返回值為邏輯假(.F.)。其次,該函數(shù)自變量表達(dá)式的類型可以是數(shù)值型、字符型、邏輯型、日期型等類型。表2-7所示的是“空”值的不同規(guī)定。
表2-7不同類型數(shù)據(jù)的“空”值規(guī)定
數(shù)據(jù)類型“空”值數(shù)據(jù)類型“空”值數(shù)值型0雙精度型0字符型空串、空格、制表符、回車符、換行符日期型空貨幣型0日期時(shí)間空浮點(diǎn)型0邏輯型.F.整型0備注字段空2.3.5測(cè)試函數(shù)數(shù)據(jù)類型測(cè)試函數(shù)格式:VARTYPE(<表達(dá)式>,<邏輯表達(dá)式>)
如果<表達(dá)式>的運(yùn)算結(jié)果是NULL值,則根據(jù)<邏輯表達(dá)式>值決定是否返回<表達(dá)式>的類型;如果<邏輯表達(dá)式>值為.T.,就返回<表達(dá)式>的原數(shù)據(jù)類型;如果<邏輯表達(dá)式>值為.F.或省略,則返回X以表明<表達(dá)式>的運(yùn)算結(jié)果是NULL值;如果<表達(dá)式>是一個(gè)數(shù)組,則根據(jù)第一個(gè)數(shù)組元素的類型返回字符串。使用VARTYPE()測(cè)得的數(shù)據(jù)類型如表2-8所示。表2-8用VARTYPE()測(cè)得的數(shù)據(jù)類型
返回的字母數(shù)據(jù)類型返回的字母數(shù)據(jù)類型C通用型G通用型N日期型D日期型Y日期時(shí)間型T日期時(shí)間型LNULL值XNULL值O未定義U未定義例2.38數(shù)值類型測(cè)試函數(shù)。?VARTYPE(10) &&結(jié)果為N?VARTYPE(.NULL.) &&結(jié)果為X2.3.5測(cè)試函數(shù)表文件尾測(cè)試函數(shù)對(duì)于一個(gè)打開(kāi)的表文件來(lái)說(shuō),在某時(shí)刻只能處理一條記錄。系統(tǒng)對(duì)表中的記錄是逐條進(jìn)行處理的。VisualFoxPro為每一個(gè)打開(kāi)的表設(shè)置了一個(gè)記錄指針,指向正在被操作的記錄,該記錄即為當(dāng)前記錄。格式:EOF([<工作區(qū)號(hào)>|<表別名>])例2.39表文件尾測(cè)試函數(shù)。USEYYGOBOTTOM?EOF().F.SKIP?EOF(),EOF(4)&&假定4號(hào)工作區(qū)中沒(méi)有打開(kāi)表.T..F.2.3.5測(cè)試函數(shù)條件測(cè)試函數(shù)——
IIF()格式:IIF(<邏輯表達(dá)式>,<表達(dá)式1>,<表達(dá)式2>)功能:該函數(shù)測(cè)試<邏輯表達(dá)式>的值,如果為邏輯真(.T.),則函數(shù)返回<表達(dá)式1>的值;如果為邏輯假(.F.),則函數(shù)返回<表達(dá)式2>的值。例2.41條件測(cè)試函數(shù)。X=250Y=120?IIF(X>200,X﹣50,X﹢50) &&結(jié)果為2002.4程序與程序文件
2.4.1程序的概念
VisualFoxPro的兩種運(yùn)行方式:交互式方式、程序方式交互式方式是指在命令窗口逐條輸入命令的方式或通過(guò)選擇菜單選項(xiàng)來(lái)調(diào)用功能。這種方式只適合于解決一些相對(duì)簡(jiǎn)單的問(wèn)題。程序方式是指首先根據(jù)任務(wù)的要求確定能完成任務(wù)的命令序列;然后在磁盤上建立包含該命令序列的程序文件;最后通過(guò)運(yùn)行程序,讓系統(tǒng)自動(dòng)執(zhí)行這些命令。與交互式方式相比,程序方式有如下優(yōu)點(diǎn):(1)程序可以被修改并重新運(yùn)行。(2)可以用多種方式、多次運(yùn)行程序。(3)在一個(gè)程序中可以調(diào)用另一個(gè)程序。(4)具有在命令窗口中無(wú)法使用的結(jié)構(gòu)化程序設(shè)計(jì)命令。程序的概念程序是能夠完成一定任務(wù)的命令的有序集合,這組命令被存放在稱為程序文件或命令文件的文本文件中。程序文件的擴(kuò)展名為.prg例2.42編寫程序,計(jì)算圓的周長(zhǎng)和面積。CLEAR &&清除VisualFoxPro主窗口上的全部?jī)?nèi)容*設(shè)置半徑R=3*依次計(jì)算圓的周長(zhǎng)和面積L=2*PI()*RS=PI()*R^2*輸出計(jì)算結(jié)果?"周長(zhǎng)=",L?"面積=",SRETURN
對(duì)程序進(jìn)行注釋說(shuō)明為提高程序的可讀性,通常需要對(duì)程序進(jìn)行注釋。注釋為非執(zhí)行代碼,不會(huì)影響程序的功能。VisualFoxPro中常采用以下兩種注釋方式:(1)NOTE<注釋內(nèi)容>或*<注釋內(nèi)容>以NOTE或*開(kāi)頭的代碼行為注釋行,一般用于對(duì)下面一段命令代碼的說(shuō)明。(2)&&<注釋內(nèi)容>在命令行后可添加注釋,是對(duì)所在行命令的說(shuō)明。2.4.2程序文件的建立與執(zhí)行
1.程序文件的建立與修改建立程序文件的方法:菜單方式:“文件”→“新建”菜單命令,在“新建”對(duì)話框中選擇“程序”,單擊“新建文件”按鈕。命令方式——MODIFYCOMMAND命令格式為:
MODIFYCOMMAND〈文件名〉
例:在當(dāng)前文件夾位置創(chuàng)建一個(gè)名為:myprg.prg的程序文件。modifycommandmyprg例:在“C:\”文件夾下創(chuàng)建一個(gè)名為:test.prg的程序文件。modifycommandc:\test2.執(zhí)行程序文件執(zhí)行程序文件的方法:(1)菜單方式:“程序”→“運(yùn)行”菜單命令,彈出“運(yùn)行”對(duì)話框;從“文件”列表框中選擇要運(yùn)行的程序文件,單擊“運(yùn)行”按鈕。
(2)命令方式——DO命令格式為:
DO〈程序文件名〉2.4.3簡(jiǎn)單的輸入輸出命令1.INPUT命令命令格式:INPUT<字符表達(dá)式>TO<內(nèi)存變量>
2.ACCEPT命令命令格式:ACCEPT<字符表達(dá)式>TO<內(nèi)存變量>2.5程序的基本結(jié)構(gòu)
程序有3種基本結(jié)構(gòu):順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)2.5.1選擇結(jié)構(gòu)
1.條件語(yǔ)句命令格式:IF<條件><命令序列1>[ELSE<命令序列2>ENDIFENDIF后面語(yǔ)句ENDIF后面語(yǔ)句圖2-2無(wú)ELSE的選擇語(yǔ)句
圖2-3有ELSE的選擇語(yǔ)句
例2.44編寫程序,根據(jù)成績(jī)來(lái)判斷成績(jī)優(yōu)良。成績(jī)大于或等于90分為優(yōu)秀;成績(jī)大于或等于80分而小于90分為良好;成績(jī)大于或等于60分而小于80分為及格;成績(jī)小于60分為不及格。SETTALKOFFINPUT"請(qǐng)輸入成績(jī):"TOcjIFcj>=90rusult="優(yōu)秀"ELSEIFcj>=80result="良好"ELSEIFcj>=60result="及格"ELSEresult="不及格"ENDIFENDIFENDIF?"成績(jī)?yōu)?"+resultSETTALKONRETURN
2.分支語(yǔ)句命令格式:DOCASECASE<條件1><命令序列1>[CASE<條件2><命令序列2>…CASE<條件n><命令序列n>[OTHERWISE<命令序列n+1>]ENDCASE圖2-4多分支選擇
例2.45編寫程序,用DOCASE…ENDCASE分支結(jié)構(gòu)實(shí)現(xiàn)輸入成績(jī)后,顯示相應(yīng)的成績(jī)等級(jí)。SETTALKOFFINPUT"請(qǐng)輸入成績(jī):"TOcjDOCASECASEcj<60result="不及格"CASEcj<80result="及格"CASEcj<90result="良好"OTHERWISEresult="優(yōu)秀"ENDCASE?"成績(jī)?yōu)?"+resultSETTALKOFFRETURN
2.5.2循環(huán)結(jié)構(gòu)
1.FOR…ENDFOR語(yǔ)句
命令格式:FOR循環(huán)變量=初值TO終值[SETP<步長(zhǎng)>]<命令序列>[EXIT][LOOP]ENDFOR|NEXTLOOP和EXIT是循環(huán)體中的兩條特殊的命令。
例2.46編寫程序,顯示成績(jī)表中的前35個(gè)學(xué)生成績(jī),若到達(dá)表尾則跳出循環(huán)體。SETTALKOFFUSEscoreGOTOPFORn=1TO35IFEOF()EXITENDIFGOnDISPLAY成績(jī)ENDFORUSESETTALKON
2.DOWHILE…ENDDO語(yǔ)句
命令格式:DOWHILE<條件><命令序列>[LOOP][EXIT]ENDDO
圖2-5循環(huán)結(jié)構(gòu)例2.47編寫程序,將由ASCII碼字符組成的字符串進(jìn)行反序顯示(即字符串a(chǎn)bcdefg顯示為fedcbag)。STORE'abcdefg'TOc,ccp=SPACE(0)DOWHILELEN(c)>0p=LEFT(c,1)+pc=SUBSTR(c,2)ENDDO?cc+"的反序?yàn)?+p
3.SCAN…ENDSCAN命令格式:SCAN[NOOPTIMIZE][<范圍>][FOR<條件>][命令序列][LOOP][EXIT]ENDSCAN2.6多模塊程序
模塊是一個(gè)相對(duì)獨(dú)立的程序段,可以被其他的模塊調(diào)用,也可以調(diào)用其他的模塊。應(yīng)用程序一般都是多模塊程序。通常稱被調(diào)用者為子程序,調(diào)用它的程序?yàn)橹鞒绦颉?/p>
2.6.1模塊的定義和調(diào)用
1.模塊的定義
過(guò)程定義的語(yǔ)法格式如下:PROCEDURE|FUNCTION<過(guò)程名><命令序列>[RETURN[<表達(dá)式>]][ENDPROC︱<ENDFUNC>]
2.模塊調(diào)用模塊調(diào)用主要有以下兩種
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 擠壓模擬課程設(shè)計(jì)
- 銀行支行的行政后勤工作綜述
- 寵物服務(wù)員工作總結(jié)
- 港口貨物裝卸合同三篇
- 三年級(jí)科學(xué)學(xué)科的教學(xué)工作總結(jié)
- 門診護(hù)士年終總結(jié)
- 【八年級(jí)下冊(cè)歷史】期中達(dá)標(biāo)測(cè)試卷
- 2024年統(tǒng)計(jì)員年終工作總結(jié)篇
- 2024-2025學(xué)年北京門頭溝區(qū) 初三(上)期末物物理試卷(含答案)
- 分包采購(gòu)委托合同(2篇)
- 《人員素質(zhì)測(cè)評(píng)理論與方法》電子版本
- 61850基礎(chǔ)技術(shù)介紹0001
- 陶瓷色料的技術(shù)PPT課件
- 幼兒園食品安全工作計(jì)劃四篇
- 課程設(shè)計(jì)YA32-350型四柱萬(wàn)能液壓機(jī)液壓系統(tǒng)設(shè)計(jì)
- (精心整理)系動(dòng)詞練習(xí)題
- 體彩排列五歷史數(shù)據(jù)
- 中國(guó)工業(yè)數(shù)據(jù)庫(kù)介紹
- 弱電智能化設(shè)計(jì)服務(wù)建議書(共35頁(yè))
- 中國(guó)銀監(jiān)會(huì)關(guān)于規(guī)范中長(zhǎng)期貸款還款方式的通知
- 通信工程外文文獻(xiàn)(共12頁(yè))
評(píng)論
0/150
提交評(píng)論