第2章VFP語(yǔ)言基礎(chǔ)_第1頁(yè)
第2章VFP語(yǔ)言基礎(chǔ)_第2頁(yè)
第2章VFP語(yǔ)言基礎(chǔ)_第3頁(yè)
第2章VFP語(yǔ)言基礎(chǔ)_第4頁(yè)
第2章VFP語(yǔ)言基礎(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩103頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第二章VFP語(yǔ)言基礎(chǔ)2.1數(shù)據(jù)類型2.2數(shù)據(jù)存儲(chǔ)容器2.3運(yùn)算符2.4函數(shù)2.5表達(dá)式2.6空值處理2.7程序設(shè)計(jì)基礎(chǔ)2.1數(shù)據(jù)類型數(shù)據(jù)類型是指數(shù)據(jù)對(duì)象的取值集合,以及對(duì)之可實(shí)施的運(yùn)算集合;設(shè)置不同的數(shù)據(jù)類型,是為了提供合適的計(jì)算量與計(jì)算速度。創(chuàng)建表時(shí)需要用戶指明表中每個(gè)字段的數(shù)據(jù)類型。變量或數(shù)組的數(shù)據(jù)類型則由保存在其中的值來(lái)決定。VFP支持的基本數(shù)據(jù)類型類型說(shuō)明大小范圍字符型任意文本每字符為1字節(jié),最多可有254個(gè)字符任意字符貨幣型貨幣量8字節(jié)-922337203685477.5808~922337203685477.5807日期型包含日期的數(shù)據(jù)8字節(jié)01/01/0001~12/31/9999日期時(shí)間型包含日期和時(shí)間的數(shù)據(jù)8字節(jié)01/01/0001~12/31/999900:00:00a.m~11:59:59p.m.數(shù)值型整數(shù)或小數(shù)在內(nèi)存中占8字節(jié),在表中占1—20字節(jié)-0.9999999999E+19~0.9999999999E+20邏輯型“真”或“假”1字節(jié)“真”(.T.)或“假”(.F.)浮點(diǎn)型*與數(shù)值型一樣與數(shù)值型一樣與數(shù)值型一樣雙精度型*雙精度浮點(diǎn)型8字節(jié)+/-4.94065645841247E-324~+/-8.9884656743115E307整型*整型值4字節(jié)-2147483647~2147483646備注型*數(shù)據(jù)塊引用在表中占4字節(jié)只受可用內(nèi)存空間限制通用型*OLE對(duì)象引用在表中占4字節(jié)只受可用內(nèi)存空間限制(其中,打“*”的類型只能用于字段,不能用于變量和數(shù)組)字符型Character(1)由任意字符(字母,數(shù)字,空格,符號(hào)等)組成;(2)可以保存諸如姓名,名稱,地址及無(wú)需算術(shù)運(yùn)算的數(shù)字號(hào)碼(學(xué)號(hào),工號(hào),郵編等)。數(shù)值型Numberic(1)由數(shù)字、正負(fù)號(hào)及小數(shù)點(diǎn)組成;(2)數(shù)值型字段的小數(shù)部分位數(shù)在創(chuàng)建字段時(shí)確定,且小數(shù)點(diǎn)、小數(shù)位數(shù)是總字段寬度的一部分。貨幣型Currency(1)涉及貨幣數(shù)據(jù)時(shí),可用貨幣類型來(lái)替代數(shù)值類型;(2)若小數(shù)部分超過(guò)4位,則VFP將它四舍五入到4位。日期型Date(1)日期型變量以“yyyymmdd”字符格式保存,共占8個(gè)字節(jié);(2)日期的格式取決于setdate,setmark,setcentury命令的設(shè)置,或利用菜單命令“工具/選項(xiàng)”,在“選項(xiàng)”對(duì)話框的“區(qū)域”選項(xiàng)卡上進(jìn)行設(shè)置,常用的格式為mm/dd/yyyy。日期時(shí)間型DateTime(1)其值存儲(chǔ)在含有兩個(gè)4字節(jié)整數(shù)的8個(gè)字節(jié)中,第一個(gè)4字節(jié)保存日期,第2個(gè)保存時(shí)間,時(shí)間從午夜起計(jì)算,以1/100秒為最小計(jì)時(shí)單位;(2)若缺省日期值,VFP用系統(tǒng)默認(rèn)值1899.12.30填入,若缺省時(shí)間值,VFP用系統(tǒng)默認(rèn)的午夜零點(diǎn)時(shí)間。浮點(diǎn)型Float浮點(diǎn)數(shù)據(jù)類型與數(shù)值型等價(jià)提供此類型是為了和早期版本的兼容雙精度型Double(1)用于在表中存儲(chǔ)精度較高、位數(shù)固定的數(shù)值;(2)與數(shù)值型數(shù)據(jù)不同,在向表中輸入數(shù)據(jù)時(shí)小數(shù)點(diǎn)的位置由輸入的數(shù)值決定。整型Integer(1)整型字段在表中占4個(gè)字節(jié),以二進(jìn)制形式存放;(2)比數(shù)值型字段占用的空間要少得多。備注型Memo(1)用于在表中存儲(chǔ)數(shù)據(jù)塊;(2)備注字段含有4字節(jié)的引用,指向真正的備注內(nèi)容;(3)備注數(shù)據(jù)的真正大小取決于用戶實(shí)際輸入的內(nèi)容;(4)表中記錄的備注型字段數(shù)據(jù)保存在單獨(dú)的文件中,文件名與表名相同擴(kuò)展名為.fpt。通用型General(1)用于在表中存儲(chǔ)OLE對(duì)象;(2)通用字段含有4字節(jié)的引用,指向真正的內(nèi)容:電子表格、字處理文檔或另一個(gè)應(yīng)用程序創(chuàng)建的文件等;(3)通用字段的真正類型和數(shù)據(jù)大小取決于創(chuàng)建這些對(duì)象的OLE服務(wù)器,以及這些OLE對(duì)象是以鏈接方式還是以嵌入方式與該應(yīng)用程序相聯(lián)系。若是鏈接OLE對(duì)象,則表中只含有對(duì)數(shù)據(jù)以及創(chuàng)建這些數(shù)據(jù)的應(yīng)用程序的引用,若是嵌入OLE對(duì)象,表中將含有相關(guān)數(shù)據(jù)的副本及對(duì)創(chuàng)建這些數(shù)據(jù)的應(yīng)用程序的引用。2.2數(shù)據(jù)存儲(chǔ)容器常量、變量、數(shù)組、記錄、對(duì)象稱存儲(chǔ)數(shù)據(jù)的容器。2.2.1標(biāo)識(shí)符(名稱)命名規(guī)則2.2.2常量2.2.3內(nèi)存變量2.2.4數(shù)組2.2.5字段2.2.6對(duì)象2.2.7不同數(shù)據(jù)存儲(chǔ)容器的作用域2.2.1名稱命名規(guī)則(1)由字母、數(shù)字、下劃線和漢字符號(hào)組成;(2)名稱不能以數(shù)字開(kāi)頭,系統(tǒng)預(yù)定義了許多系統(tǒng)變量均已下劃線開(kāi)頭,用戶應(yīng)避免使用下劃線開(kāi)頭的名稱,且表的字段名不允許以下劃線開(kāi)頭;(3)名稱的長(zhǎng)度在1~128個(gè)字符之間,除自由表字段名、表的索引標(biāo)識(shí)名≤10個(gè)字符;(4)不能使用系統(tǒng)保留字;(5)文件名的命名規(guī)則由所用的OS決定,但在應(yīng)用中文件的命名應(yīng)遵守上述規(guī)則,否則可能會(huì)發(fā)生在命令中無(wú)法引用該文件的情況(如,文件名若包含空格,在命令中引用文件時(shí)需給文件名加引號(hào))。2.2.2常量常量(Constants):數(shù)據(jù)項(xiàng)的值在整個(gè)操作過(guò)程中保持不變常量據(jù)其數(shù)據(jù)類型分為6種,不同類型的常量采用不同的定界符表示(1)數(shù)值型常量(2)貨幣型常量(3)字符型常量(4)邏輯型常量(5)日期型常量和日期時(shí)間型常量編譯時(shí)常量:在設(shè)計(jì)階段先預(yù)定義一個(gè)具體值,以后凡需用到此值的地方用該值代替,可為任何一種數(shù)據(jù)類型。一經(jīng)改動(dòng),可影響到整個(gè)應(yīng)用程序。不能再用作為變量名,不能被賦值。#definemin0數(shù)值型常量(1)由數(shù)字、小數(shù)點(diǎn)、正負(fù)號(hào)組成(2)在內(nèi)存中占8個(gè)字節(jié)(3)可用浮點(diǎn)表示法來(lái)表示特大或特小的數(shù)如,1.23E20(1.23X1020),2.34E-20(2.34X10-20)貨幣型常量(1)表示貨幣型常量時(shí),需在數(shù)字前加上美元符號(hào)$;(2)在內(nèi)存中占8個(gè)字節(jié);(3)貨幣型常量無(wú)浮點(diǎn)表示法$100.35,$2104字符型常量(1)又稱為字符串,是由字符串定界符括起來(lái)的一串字符;(2)3種字符串定界符:’’,””,[],注意不能使用中文標(biāo)點(diǎn)的‘’,“”,且定界符必須成對(duì)匹配,若某定界符本身也是字符串的內(nèi)容,則用另一種定界符;(3)不包含任何字符的串(””)稱為空串,與空格串(””)不同;(4)字符串中的字母,大小寫(xiě)不等價(jià)。邏輯型常量(1)邏輯真常量的表示:.T..t..Y..y.(2)邏輯假常量的表示:.F..f..N..n.(3)在內(nèi)存中占一個(gè)字節(jié)(4)字母前后的點(diǎn)符號(hào)(.)是邏輯常量的定界符,不可省略日期型常量和日期時(shí)間型常量(1)定界符:{}(2){}內(nèi)包含年月日時(shí)分秒等,各部分之間以分隔符進(jìn)行分隔,系統(tǒng)默認(rèn)的分隔符年月日之間用/,時(shí)分秒之間用:(3)VFP支持的格式:傳統(tǒng)的日期格式和嚴(yán)格的日期格式(4)VFP6.0及以上版本的默認(rèn)格式為嚴(yán)格的日期格式,若要使用傳統(tǒng)的日期格式,應(yīng)用setstrictdate命令設(shè)置setstrictdate命令setstrictdate命令功能:設(shè)置是否對(duì)日期格式進(jìn)行檢查語(yǔ)法格式:setstrictdateto0|1|20—不進(jìn)行嚴(yán)格的日期格式檢查1—進(jìn)行嚴(yán)格的日期格式檢查2—進(jìn)行嚴(yán)格的日期格式檢查,且對(duì)CTOD(),CTOT()函數(shù)也進(jìn)行嚴(yán)格的日期格式檢查傳統(tǒng)的日期格式是VFP5.0及以前版本使用的默認(rèn)格式受到setdate,setcentury命令的影響默認(rèn)格式為美國(guó)日期格式,語(yǔ)法形式為:{mm/dd/yy[hh:[mm][:ss]][a|p]}嚴(yán)格的日期格式是VFP6.0及以上版本的默認(rèn)格式不受setdate等命令的影響語(yǔ)法形式:{^yyyy/mm/dd[hh:[mm][:ss]][a|p]}如,{^2006-01-01},{^2006-01-018:30p}空日期用{}表示2.2.3內(nèi)存變量變量(Variables):內(nèi)存中的一個(gè)存儲(chǔ)單元的位置,變量名是存儲(chǔ)位置的符號(hào)標(biāo)識(shí)??蔀槿我鈹?shù)據(jù)類型,可隨時(shí)改變。VFP中稱為內(nèi)存變量。(1)變量的創(chuàng)建(2)控制變量的訪問(wèn)(3)變量和字段同名時(shí),字段優(yōu)先(4)內(nèi)存變量的保存與恢復(fù)變量的創(chuàng)建無(wú)需特別申明需要時(shí)可用STORE命令或“=”進(jìn)行賦值,賦值的同時(shí)完成變量的創(chuàng)建,且確定了該變量的數(shù)據(jù)類型例,store5toa,b,c&&可將同一表達(dá)式的值賦給多個(gè)內(nèi)存變量name=“VFP”&&只能將表達(dá)式的值賦給一個(gè)內(nèi)存變量控制變量的訪問(wèn)變量只在應(yīng)用程序運(yùn)行時(shí)或創(chuàng)建它的工作區(qū)中存在(1)LOCAL指定局部變量:創(chuàng)建的變量或數(shù)組只能在創(chuàng)建其程序中使用、修改,不能被更高層或更低層的程序訪問(wèn)

所屬的程序停止運(yùn)行時(shí),將被釋放(2)PRIVATE指定私有變量:將調(diào)用程序中定義的變量和數(shù)組在當(dāng)前程序中隱藏起來(lái),用戶可在當(dāng)前程序中重新使用和這些變量同名的變量,而不影響其原始值。一旦程序停止,可重新被訪問(wèn)。舉例說(shuō)明(3)PUBLIC指定全局(公共)變量:當(dāng)前工作期中任何運(yùn)行的程序都能使用和修改變量、數(shù)組,命令窗口中創(chuàng)建的變量、數(shù)組自動(dòng)賦為全局變量程序代碼1:localaa=3??af()??afunctionfprivateaa=5??aendfunc運(yùn)行結(jié)果:353程序代碼2:publicaa=3??af()??afunctionfa=5??aendfunc運(yùn)行結(jié)果:355變量和字段同名變量和字段同名時(shí)字段具有更高的優(yōu)先權(quán)可在變量名前加m.或m->前綴來(lái)引用它們例,usexsxm='張洪'(xm是新創(chuàng)建的內(nèi)存變量,不能單獨(dú)利用賦值符號(hào)=完成字段變量的賦值)?xm?m.xm,m->xm,xs.xm,xm&&變量,變量,字段,字段use內(nèi)存變量的保存與恢復(fù)內(nèi)存變量是系統(tǒng)在內(nèi)存中設(shè)置的臨時(shí)單元,退出VFP數(shù)據(jù)丟失可用saveto命令將內(nèi)存變量保存到文件中,以便以后使用可用restorefrom命令將內(nèi)存變量文件中保存的內(nèi)存變量恢復(fù)語(yǔ)法格式:savetoFileName[alllikeSkeleton|allexceptSkeleton]restorefromFileName[additive]2.2.4數(shù)組數(shù)組(Arrays):由一系列有序數(shù)據(jù)(元素)構(gòu)成,可用數(shù)組名和序號(hào)引用元素,可是任意數(shù)據(jù)類型。(1)數(shù)組的聲明(2)數(shù)組元素賦值(3)使用說(shuō)明數(shù)組的聲明絕大多數(shù)情況下,數(shù)組在使用時(shí)必須預(yù)先聲明聲明方式:DECLAREDIMENSION私有數(shù)組PUBLIC全局?jǐn)?shù)組LOCAL局部數(shù)組定義數(shù)組的格式:DECLARE|DIMENSION|PUBLIC|LOCAL數(shù)組名(行數(shù)[,列數(shù)])數(shù)組元素賦值聲明后每個(gè)元素默認(rèn)為.F.可使用數(shù)組名和元素位置賦值,如,a(2)=3,b(2,3)=2可使用數(shù)組名整體賦相同的值,如,a=32還可使用scatter,gather,copytoarray,appendfromarray命令在數(shù)組元素與表的記錄之間進(jìn)行值傳遞使用說(shuō)明(1)再次定義數(shù)組,是對(duì)原數(shù)組的擴(kuò)展(即使維數(shù)不同,對(duì)已存在的數(shù)組再次定義,原數(shù)組元素的值會(huì)被繼承)(2)二維數(shù)組可以作為一維數(shù)組使用(3)同一數(shù)組的不同元素可以賦不同數(shù)據(jù)類型的值2.2.5字段字段(Fields):是表中的記錄中擁有特定數(shù)據(jù)類型的命名位置,可以是任意數(shù)據(jù)類型或字段類型其數(shù)據(jù)類型在表設(shè)計(jì)階段由表設(shè)計(jì)器進(jìn)行設(shè)置,或運(yùn)行時(shí)由CREATETABLE確定2.2.6對(duì)象對(duì)象(Objects):對(duì)象是類的實(shí)例。類:是對(duì)于擁有數(shù)據(jù)和一定行為特征的對(duì)象集合的描述。VFP對(duì)象可以是表單、表單集、或控件。可利用對(duì)象完成應(yīng)用程序中需一致性、依賴性的行為,減少代碼量并提高代碼的重用性。對(duì)象有屬性,方法,并能響應(yīng)特定的事件??赏ㄟ^(guò)事件、屬性、方法處理對(duì)象。創(chuàng)建對(duì)象:表單設(shè)計(jì)器,或CREATEOBJECT()函數(shù)等2.2.7不同數(shù)據(jù)存儲(chǔ)容器的作用域容器作用域舉例常量私有#definemin0變量公有、私有或局部a=7數(shù)組公有、私有或局部b[2,3]=123字段永久存儲(chǔ),當(dāng)保存此記錄的表被打開(kāi)時(shí)才可訪問(wèn)REPLACEkcWITH“英語(yǔ)”對(duì)象屬性通過(guò)對(duì)象和對(duì)象容器層次被引用FrmA.txtkc.Value=“大學(xué)物理”數(shù)據(jù)的作用域取決于其在程序中聲明的方式和位置2.3運(yùn)算符運(yùn)算符(Operators)用來(lái)處理同種類型的數(shù)據(jù)。在VFP中可分為如下幾類:(1)數(shù)值運(yùn)算符

(2)字符運(yùn)算符

(3)日期和日期時(shí)間運(yùn)算符

(4)關(guān)系運(yùn)算符

(5)邏輯運(yùn)算符

數(shù)值運(yùn)算符又稱為算術(shù)運(yùn)算符。按優(yōu)先級(jí)高低排列,VFP中提供的數(shù)值運(yùn)算符如下表所示。運(yùn)算符操作舉例數(shù)值運(yùn)算符()子表達(dá)式分組,()中的優(yōu)先

?8*(3+2)

**或^乘方?5**2+2^2*、/乘、除?1/2*4

%模?5%3+、-加、減略字符運(yùn)算符作用:連接、比較字符型數(shù)據(jù)。運(yùn)算符操作舉例字符運(yùn)算符+將字符串連接在一起。參加連接的串可以是字符型常量、字符型字段、字符型變量、返回值為字符型的函數(shù)。結(jié)果仍是字符型?"Visual"+"FoxPro"?"今天是"+dtoc(date())-刪除操作符左側(cè)字符串尾部的空格后連接起來(lái)(空格后置)?"abc"-"de"+"123"$比較。查看一個(gè)串(左)是否包含在另一個(gè)串(右)中結(jié)果為邏輯值?"96"$"96001"日期和日期時(shí)間運(yùn)算符運(yùn)算符操作舉例日期和日期時(shí)間運(yùn)算符+相加?{^2006/3/1}+10?{^2006/03/018:10:20a}+10-相減?{^2006/3/1}-10?{^2006/03/018:10:20a}-10?{^2006/3/10}-{^2006/3/1}?{^2006/03/018:10:20a}-{^2006/03/017:10:20a}注意:(1)不能對(duì)兩個(gè)日期型(或兩個(gè)日期時(shí)間型)數(shù)據(jù)進(jìn)行相加;(2)日期型和日期時(shí)間型數(shù)據(jù)不能相減。關(guān)系運(yùn)算符運(yùn)算符操作舉例關(guān)系

運(yùn)算符<小于比較?200<500>大于比較?"abc">"adc"=等于比較a=50(換行)?a=30<>或#或!=不等于比較?a!=8<=小于或等于比較?a<=80>=大于或等于比較?xh>="960001"==字符串精確等于比較?xm=="王小二"使用說(shuō)明關(guān)系運(yùn)算符使用說(shuō)明(1)可用于任意類型數(shù)據(jù)的比較,但要求運(yùn)算符兩側(cè)的數(shù)據(jù)類型相同或一致(2)運(yùn)算結(jié)果為邏輯值(3)有關(guān)字符串的比較A字符串比較時(shí),系統(tǒng)對(duì)兩個(gè)串的字符從左至右逐個(gè)進(jìn)行比較,一旦發(fā)現(xiàn)兩個(gè)對(duì)應(yīng)的字符不同,就根據(jù)這兩個(gè)字符的排序序列決定其大小B兩個(gè)比較字符串的運(yùn)算符“=”與“==”的區(qū)別字符的排序序列字符排序序列的設(shè)置分為三種情況:(1)機(jī)器序列(Machine):按照機(jī)內(nèi)碼順序排序,從小到大依次是,空格、大寫(xiě)字母、小寫(xiě)字母、一級(jí)漢字(按拼音排序)、二級(jí)漢字(按筆畫(huà)排序);(2)拼音序列(PinYin):是系統(tǒng)默認(rèn)的字符序列,漢字按拼音序列排序,西文字符從小到大是,空格、小寫(xiě)字母、大寫(xiě)字母;(3)筆畫(huà)序列(Stroke):漢字按筆畫(huà)序列排序,西文字符從小到大是,空格、小寫(xiě)字母、大寫(xiě)字母。具體設(shè)置:(1)工具/選項(xiàng),“數(shù)據(jù)”選項(xiàng)卡中進(jìn)行設(shè)置(2)命令:setcollateto“Machine”|”P(pán)inYin”|”Stroke”“=”與“==”的區(qū)別(1)“=”,受setexact命令影響SETEXACTOFF:默認(rèn)值,右端表達(dá)式結(jié)尾前的每個(gè)字符都相匹配例:SETEXACTOFF&&左部匹配?"ABCD"="ABC"&&.T.?"ABC"="ABCD"&&.F.SETEXACTON:每個(gè)字符都相匹配;忽略表達(dá)式結(jié)尾的空格;比較時(shí),在較短的表達(dá)式右邊加上空格,與較長(zhǎng)者匹配例:SETEXACTON?"ABCD"="ABC“&&.F.?"ABC"="ABC"&&.T.(2)“==”,不受setexact命令影響,只有長(zhǎng)度相等且各個(gè)個(gè)字符都相同時(shí),兩串才相等,結(jié)果為.T.。邏輯運(yùn)算符運(yùn)算符操作舉例邏輯運(yùn)算符()分組子表達(dá)式。改變表達(dá)式中的運(yùn)算順序?.t.and(.t.or.f.)NOT或!邏輯“非”。取反一個(gè)邏輯值?not.f.?!.f.AND邏輯“與”。對(duì)兩個(gè)邏輯值進(jìn)行“與”操作?.t.and.f.OR邏輯“或”?.t.or.f.用于操作邏輯類型的數(shù)據(jù),運(yùn)算結(jié)果為邏輯值。按優(yōu)先級(jí)高低排列,VFP中提供的邏輯運(yùn)算符如下表所示。2.4函數(shù)(Function)概念:一個(gè)預(yù)先編制好的計(jì)算模塊,可供用戶或程序調(diào)用。參數(shù)(Argument):供函數(shù)或過(guò)程操作的一個(gè)值,一個(gè)函數(shù)可接收若干個(gè)參數(shù)。返回值:返回單個(gè)值(所以函數(shù)調(diào)用可嵌入一個(gè)表達(dá)式)分類:系統(tǒng)函數(shù)和用戶自定義函數(shù)函數(shù)調(diào)用的語(yǔ)法格式:函數(shù)名([參數(shù)1[,參數(shù)2[,…]]])包含一對(duì)()以與命令區(qū)別。2.4.1系統(tǒng)函數(shù)的分類2.4.2常用函數(shù)2.4.1系統(tǒng)函數(shù)的分類VFP提供的函數(shù)有上百種之多按功能可分為五大類,每一大類又可分為若干功能更明確的小類參見(jiàn)P35表2_8(1)數(shù)據(jù)類型類包括:數(shù)值函數(shù),字符函數(shù),日期/時(shí)間函數(shù),數(shù)據(jù)轉(zhuǎn)換函數(shù)(2)數(shù)據(jù)庫(kù)類包括:數(shù)據(jù)庫(kù)函數(shù),字段函數(shù),索引函數(shù),記錄函數(shù),關(guān)系函數(shù),表函數(shù)。(3)環(huán)境類包括:環(huán)境函數(shù),文件管理函數(shù)。(4)輸入輸出類包括:鍵盤(pán)和鼠標(biāo)輸入函數(shù),菜單函數(shù),打印函數(shù),窗口函數(shù)。(5)程序設(shè)計(jì)類包括:數(shù)組函數(shù),調(diào)試和錯(cuò)誤處理函數(shù),低級(jí)文件函數(shù),面向?qū)ο蟪绦蛟O(shè)計(jì)函數(shù)。2.4.2常用函數(shù)應(yīng)從函數(shù)的功能,語(yǔ)法,及返回值等方面掌握函數(shù)數(shù)值函數(shù)字符函數(shù)日期/時(shí)間函數(shù)數(shù)據(jù)轉(zhuǎn)換函數(shù)其它常用函數(shù)數(shù)值函數(shù)(1)Abs(nExpression)——返回指定數(shù)值表達(dá)式的絕對(duì)值(2)Max(eExp1,eExp2[,eExp3…])——求最大值(3)Min(eExp1,eExp2[,eExp3…])——求最小值(4)Int(nExp)——計(jì)算指定數(shù)值表達(dá)式的值,并返回其整數(shù)部分,不進(jìn)行四舍五入(5)Mod(nDividend,nDivisor)——求余數(shù)(6)Round(nExp,nDecimalPlaces)——按指定的小數(shù)位數(shù)對(duì)數(shù)值表達(dá)式四舍五入,若小數(shù)位數(shù)為負(fù)數(shù),返回結(jié)果在小數(shù)點(diǎn)左端包含若干個(gè)零。(7)Sqrt(nExp)——返回指定數(shù)值表達(dá)式的平方根(8)Rand()——返回0-1之間的一個(gè)隨機(jī)數(shù)舉例說(shuō)明數(shù)值函數(shù)舉例說(shuō)明?int(20.9)&&20?round(1234.1962,3)&&1234.196?round(1234.1962,2)&&1234.20?round(1234.1962,-2)&&1200?40*rand()+20&&返回一個(gè)介于20—60之間的一個(gè)隨機(jī)數(shù)Mod(nDividend,nDivisor)(1)被除數(shù)中的小數(shù)位數(shù)決定了返回值中的小數(shù)位數(shù);(2)除數(shù)為正,返回值為正;除數(shù)為負(fù),返回值為負(fù)。例,?mod(5,3)&&2?mod(5.1,3)&&2.1?mod(5,-3)&&-1?mod(5,3.6)&&1?mod(-5,3)&&1?mod(-5,-3)&&-2字符函數(shù)(1)Alltrim(cExp):返回刪除字串前后空格后的串?alltrim('abcd')(2)Trim(cExp):返回刪除字串后綴空格后的串?trim('abcd')(3)Len(cExp):返回字串長(zhǎng)度?len('abcd')&&8(4)At():返回一個(gè)字符表達(dá)式在另一個(gè)字符表達(dá)中的位置(5)Substr():取子串(6)Left(cExp,nExp):從串cExp最左邊開(kāi)始取指定數(shù)目nExp個(gè)字符構(gòu)成的串,例,?left('abcdefghi',4)&&abcd(7)Right(cExp,nExp):從串cExp最右邊開(kāi)始取指定數(shù)目nExp個(gè)字符構(gòu)成的串,例,?right('abcdefghi',4)&&fghi(8)Space(nExp):返回由nExp指定數(shù)目的空格構(gòu)成的串函數(shù)at()At(cSearchExp,cExpSearched[,nOccurrence]):返回一個(gè)字符表達(dá)式在另一個(gè)字符表達(dá)中出現(xiàn)的位置,若未出現(xiàn),返回0。cSearchExp:搜索表達(dá)式cExpSearched:被搜索表達(dá)式nOccurrence:指定搜索表達(dá)式在被搜索表達(dá)式中第幾次出現(xiàn),缺省時(shí)為1。函數(shù)at()區(qū)分搜索字符的大小寫(xiě)函數(shù)atc()不區(qū)分搜索字符的大小寫(xiě)例,?at('ab','ddAB')&&0?at('ab','ddab')&&3?atc('ab','ddAB')&&3取子串函數(shù)SubstrSubstr(cExp,nStartPosition,[,nCharactersRturned])功能:從給定的cExp或備注字段中返回一個(gè)子串。nStartPosition:返回的字串在cExp或備注字段中的位置。nCharactersRturned:返回的字符個(gè)數(shù),缺省時(shí)返回cExp結(jié)束前的全部字符。例,?substr('abcdefghi',4)&&defghi?substr('abcdefghi',4,3)&&def日期/時(shí)間函數(shù)(1)Date():返回由OS控制的當(dāng)前系統(tǒng)日期,其格式受控于:setcentury,setdate,setmark命令的設(shè)置(2)Datetime():返回當(dāng)前的系統(tǒng)日期和時(shí)間,其格式受控于:setcentury,setdate,setmark,sethours,setseconds命令的設(shè)置(3)Dow(dExp|tExp):返回dExp|tExp是一周的第幾天注意第一天為星期日(4)Day(dExp|tExp):返回指定表達(dá)式的值是該月的第幾天(5)Month(dExp|tExp):返回指定表達(dá)式的值中的月份值(6)Year(dExp|tExp):返回指定表達(dá)式的值中的年份值(7)Time():以24小時(shí)制8位字符串格式返回當(dāng)前系統(tǒng)時(shí)間例,?len(time())數(shù)據(jù)轉(zhuǎn)換函數(shù)(1)Asc(cExp):返回字串最左邊字符的ASCII碼。(2)Chr(nExp):計(jì)算nExp的值,然后以該值為ASCII代碼返回其對(duì)應(yīng)的字符。(3)Val(cExp):字符串—〉數(shù)值(4)Dtoc()和Ttoc()函數(shù):日期|時(shí)間—〉字符串(5)Ctod()和Ctot()函數(shù):字符串—〉日期|時(shí)間(6)Str():數(shù)值—〉字符串Val(cExp)返回由數(shù)字組成的cExp的數(shù)值。(1)cExp最多由16位數(shù)字組成,若超過(guò)16位,則對(duì)其圓整。(2)Val()函數(shù)從左至右返回cExp中的數(shù)字,直到遇到非數(shù)值型字符為止。(3)若cExp的第一個(gè)字符不是數(shù)字、+、-,則返回0。例,?val("12345678901234567890")&&1.23456789012345600E+19?val("123456abc")&&123456.00?val("ab123456")&&0.00Dtoc()和Ttoc()函數(shù)Dtoc(dExp|tExp[,1])Ttoc(tExp[,1|2])參數(shù)1:指定以年月日順序且無(wú)分隔符的形式返回字符型日期;參數(shù)2:指定僅返回含時(shí)間部分的字符型時(shí)間。例,t={^2006/03/018:10:20a}?dtoc(t)&&03/01/06?dtoc(t,1)&&20060301?ttoc(t)&&03/01/0608:10:20AM?ttoc(t,1)&&20060301081020?ttoc(t,2)&&08:10:20AMCtod(

)和Ctot(

)函數(shù)Ctod(cExp):把cExp的值轉(zhuǎn)換成日期型數(shù)據(jù);Ctot(cExp):把cExp的值轉(zhuǎn)換成日期時(shí)間型數(shù)據(jù)。(1)cExp的范圍:1/1/1000至12/31/9999(2)cExp的默認(rèn)格式:mm/dd/yy,可用setdate,setcentury更改默認(rèn)格式(3)若輸入時(shí)未指定世紀(jì),則默認(rèn)為是當(dāng)前世紀(jì)。例,t="03-15-2006"?ctod(t)&&03/15/06?ctot(t)&&03/15/0612:00:00AMStr()函數(shù)Str(nExp,[,nLength[,nDecimalPlaces]]):將nExp轉(zhuǎn)換為字符串。nLength:指定返回字符串的長(zhǎng)度(包括小數(shù)點(diǎn)和小數(shù)點(diǎn)右邊每個(gè)數(shù)字所占的字符),缺省時(shí)默認(rèn)寬度為10。nDecimalPlaces:指定返回字符串的小數(shù)位數(shù),缺省時(shí)默認(rèn)寬度為0。nLength>數(shù)值寬度:前導(dǎo)空格填充。nLength<整數(shù)部分的數(shù)字位數(shù):返回一串星號(hào),表示數(shù)值溢出。nDecimalPlaces<nExp的值中的小數(shù)位數(shù):截去多余的數(shù)字。數(shù)值寬度>10位,且未指定nLength:以浮點(diǎn)數(shù)形式輸出對(duì)應(yīng)的字符串。例,?str(123.45)&&_______123(_表示空格)?str(123.45,5)&&__123(未指定小數(shù)位數(shù))?str(123.45,5,3)&&__123(寬度不夠,首先保證整數(shù))?str(123.45,2)&&**(數(shù)值溢出)?str(123.45,5,1)&&123.5(截去多余的小數(shù)位)?str(1234567890)&&123567890?str(12345678901)&&_1.234E+10?str(12345678901,11)&&1235678901其它常用函數(shù)(1)between()(2)inkey()(3)type()(4)iif()(5)diskspace()(6)file()(7)messagebox()(8)getfile()between()格式:between(eTestValue,eLowValue,eHighValue)eTestValue:測(cè)試值eLowValue:指定范圍的下界eHighValue:指定范圍的上界功能:判斷eTestValue的值是否在eLowValue與eHighValue之間返回:.T.,.F.,NULL(若eLowValue或eHighValue為NULL值,則返回NULL值)例:?between('a','a','z')&&.T.?between('a','A','z')&&.F.?between('2','1','5')&&.T.?between(2,1,5)&&.T.inkey()格式:inkey([nSeconds])功能:返回一個(gè)鍵碼值,該值對(duì)應(yīng)于鍵盤(pán)緩沖區(qū)中第一個(gè)按鍵操作nSeconds:對(duì)鍵擊的等待時(shí)間;缺省時(shí),inkey()函數(shù)立即返回一次鍵擊的值;為0時(shí),inkey()函數(shù)一直等待到有鍵擊為止。若沒(méi)有按下鍵,inkey()函數(shù)返回0;若在等待時(shí)間按下若干個(gè)鍵,inkey()返回第一個(gè)鍵的值。例:?inkey(100)&&若在100秒內(nèi)按abcd…等鍵,返回97?inkey(0)&&若按1,返回49type()格式:type(cExpression)功能:返回表達(dá)式cExpression值的類型cExpression:表達(dá)式,且必須用引號(hào)例:?type('date()')&&D?type('datetime()')&&T?type('time()')&&C?type('.t.and.f.')&&L?type(‘a(chǎn)=5’)&&U(變量a未預(yù)先賦予數(shù)值型的值,U表示不確定的類型)a=5?type('a')&&N?type('a=5')&&L?a=5&&.T.iif()條件函數(shù)格式:iif(LExp,eExp1,eExp2)功能:根據(jù)表達(dá)式LExp的值返回eExp1,eExp2中的一個(gè)值;LExp的值為條件,當(dāng)條件為真時(shí)返回eExp1的值,否則返回eExp2的值eExp1,eExp2的類型一般相同,但也可不同例:a=3?iif(a!=3,"y",0)&&0a=5b=6max=iif(a>b,a,b)?max&&6?iif(dow(date())=1ordow(date())=7,'今天休息','今天上班')diskspace()格式:diskspace()功能:返回當(dāng)前磁盤(pán)驅(qū)動(dòng)器上可用存儲(chǔ)空間的大?。ㄗ止?jié)數(shù))例:setdefaulttod:\?diskspace()file()格式:file(cFileName)功能:測(cè)試輔助存儲(chǔ)器上是否存在指定的文件cFileName:用于指定被測(cè)試文件的一個(gè)字符串返回:若指定文件存在,返回.T.,否則返回.F例:?file('d:\jxgl\xs.dbf')messagebox()格式:messagebox(cMessageText[,nDialogBoxType[,cTitleBarText]])功能:顯示一個(gè)用戶自定義對(duì)話框cTitleBarText:指定對(duì)話框的標(biāo)題缺省時(shí)顯示“MicrosoftVisualFoxpro”返回值:函數(shù)的返回值表明選取了對(duì)話框的哪個(gè)按鈕cMessageTextcMessageText:指定在對(duì)話框中顯示的文本若文本較長(zhǎng)需換行,可在表達(dá)式中包含回車(chē)符chr(13)例:messagebox('Hello!')messagebox('Hello!'+chr(13)+'大家好!')nDialogBoxType指定對(duì)話框中的按鈕和圖標(biāo)、顯示對(duì)話框時(shí)的默認(rèn)按鈕以及對(duì)話框的行為,缺省時(shí)值為0。數(shù)值對(duì)話框按鈕0“確定”1“確定”,“取消”2“終止”,“重試”,“忽略”3“是”,“否”,“取消”4“是”,“否”5“重試”,“取消”數(shù)值圖標(biāo)16“停止”32“問(wèn)號(hào)”48“驚嘆號(hào)”64“信息(i)”數(shù)值默認(rèn)激活按鈕0第一個(gè)按鈕256第二個(gè)按鈕512第三個(gè)按鈕例,messageb('Error,inputagain!',4+48+0)函數(shù)名的縮寫(xiě)返回值函數(shù)的返回值表明選取了對(duì)話框的哪個(gè)按鈕返回值按鈕1確定2取消3放棄4重試5忽略6是7否例,?messageb('Again!',4+48+0)函數(shù)名的縮寫(xiě)getfile()格式:getfile([cFileExtensions][,cText])功能:顯示“打開(kāi)”對(duì)話框cFileExtensions:文件擴(kuò)展名用于指定沒(méi)有選擇“全部文件”時(shí),列表中顯示的擴(kuò)展名cText:指定文件文本框前的標(biāo)簽返回:選定文件的名稱例:a=getfile('pjx','項(xiàng)目文件名')?acText參數(shù)cFileExtensions參數(shù)2.5表達(dá)式表達(dá)式(Expression):是通過(guò)運(yùn)算符將變量、常量、函數(shù)、字段名等組合起來(lái)可以進(jìn)行運(yùn)算的式子。單個(gè)的常量、函數(shù)、字段名、控件及屬性都為表達(dá)式,一般而言,可使用常量的地方都可使用表達(dá)式表達(dá)式求值的結(jié)果:?jiǎn)蝹€(gè)值表達(dá)式的應(yīng)用:設(shè)置字段和記錄的有效性規(guī)則,表示查詢條件等表達(dá)式的類型:字符表達(dá)式,日期表達(dá)式,算術(shù)表達(dá)式,邏輯表達(dá)式,名稱表達(dá)式和宏替換表達(dá)式的運(yùn)算:表達(dá)式自左向右進(jìn)行運(yùn)算。在運(yùn)算過(guò)程中,當(dāng)運(yùn)算出某個(gè)中間結(jié)果后,若已經(jīng)能確定最終的結(jié)果,則將終止本邏輯表達(dá)式中后面部分的運(yùn)算字符表達(dá)式(1)組成:由字符運(yùn)算符(+、_、$)、字符類型的字段、返回字符值的函數(shù)、字符型變量、數(shù)組元素、字符常量組成(2)運(yùn)算結(jié)果:字符型,邏輯型(如,表達(dá)式‘a(chǎn)’$‘a(chǎn)b’結(jié)果為.T.)日期表達(dá)式(1)組成:由日期運(yùn)算符、Date或DateTime類型的字段、返回日期或日期和時(shí)間的函數(shù)、日期或時(shí)間型的變量和數(shù)組元素、Date或DateTime類型的常量組成(2)運(yùn)算結(jié)果:日期型,日期時(shí)間型,數(shù)值型算術(shù)表達(dá)式(1)組成:由算術(shù)運(yùn)算符、Float、Double、Integer、Numeric類型的字段,返回一個(gè)數(shù)值數(shù)據(jù)的函數(shù),包含數(shù)值數(shù)據(jù)的變量和數(shù)組元素,數(shù)值常量組成(2)運(yùn)算結(jié)果:數(shù)值型邏輯表達(dá)式(1)組成:由邏輯運(yùn)算符和邏輯類型字段、返回邏輯值的函數(shù)、包括邏輯值的內(nèi)存變量或數(shù)組元素、邏輯常量、任何一個(gè)返回邏輯值的表達(dá)式組成(2)運(yùn)算結(jié)果:真(.T.)、假(.F.)名稱表達(dá)式和宏替換(1)名稱表達(dá)式定義:名稱表達(dá)式是由圓括號(hào)括起來(lái)的一個(gè)字符表達(dá)式,該表達(dá)式可以是單個(gè)變量或數(shù)組元素作用:用來(lái)替換命令和函數(shù)中的名稱,為命令和函數(shù)提供了靈活性舉例說(shuō)明名稱表達(dá)式的具體應(yīng)用(2)宏替換作用:宏替換與名稱表達(dá)式具有相似的作用,可使用宏替換的方法用內(nèi)存變量替換名稱使用方式:將連字符&置于變量名前,告訴VFP將此變量值當(dāng)作名稱使用,可使用一個(gè)點(diǎn)符號(hào)(.)結(jié)束宏替換表達(dá)式舉例說(shuō)明宏替換的具體應(yīng)用(3)宏替換與名稱表達(dá)式的區(qū)別宏替換與名稱表達(dá)式的區(qū)別同:都可以用變量或數(shù)組中的值來(lái)替換名稱異:宏替換的范圍更廣些,而名稱表達(dá)式的運(yùn)行速度更快些(1)宏替換可以替換整個(gè)命令,而名稱表達(dá)式不行(2)宏替換可以作為其它表達(dá)式的組成部分,而名稱表達(dá)式不可以(3)某些命令和函數(shù)中不能使用名稱表達(dá)式usejsf='js.xm'locatefor&f=‘高山’&&可以實(shí)現(xiàn)正確定位locatefor(f)=‘高山‘&&不能實(shí)現(xiàn)正確定位a='dir‘&a(a)&&出錯(cuò)s='xh'&s='0118101'(s)='0118102'&&出錯(cuò)store'0181202'to(s)&&正確執(zhí)行?&s,(s)&&結(jié)果為0118102xha=5b=10c='a'?max(&c,b)?max((c),b)&&出錯(cuò)名稱表達(dá)式具體應(yīng)用(1)用名稱表達(dá)式替換命令中的變量名a=100b='a'(b)=10store10to(b)&&相當(dāng)于store10toa?a&&結(jié)果為10(2)用名稱表達(dá)式替換命令中的文件名a='xs'use(a)&&相當(dāng)于usexs(3)可用字符表達(dá)式來(lái)構(gòu)成一個(gè)名稱表達(dá)式a='jxsj'b='xs'use(a+'!'+b)&&相當(dāng)于usejxsj!xs(4)使用多個(gè)名稱表達(dá)式時(shí),以逗號(hào)將各個(gè)名稱分隔,形成名稱列表usexsf1='xh'f2='xm'browsefields(f1),(f2)小結(jié):將名稱保存到變量或數(shù)組元素中,以后就可以用名稱表達(dá)式(用小括號(hào)括起內(nèi)存變量)來(lái)代替在命令或函數(shù)中所需的名稱宏替換的具體應(yīng)用例1:x='1'y='2'm1y=34?m&x.y&&相當(dāng)于?m1y

例2:a=100ab=100s='a'store200to&sstore300to&s.b?a,ab2.6空值處理支持空值的作用:降低了表達(dá)未知數(shù)據(jù)的難度,且可更方便地與含有NULL值的Access或其他SQL數(shù)據(jù)庫(kù)產(chǎn)品協(xié)同工作(1)NULL值的特點(diǎn)(2)NULL值在命令和函數(shù)中的行為(3)NULL值在邏輯表達(dá)式中的行為NULL值的特點(diǎn)(1)等價(jià)于沒(méi)有任何值(2)與0、“”、空格不同(3)排序優(yōu)先于其他數(shù)據(jù)(4)在計(jì)算過(guò)程中或大多數(shù)函數(shù)中可用到(5)會(huì)影響命令、函數(shù)、邏輯表達(dá)式和參數(shù)的行為,VFP支持的NULL可出現(xiàn)在任何使用值或表達(dá)式的地方(6)可用ISNULL()函數(shù)判斷是否為NULL值(7)NULL值不是一種數(shù)據(jù)類型,當(dāng)給字段或變量賦NULL值時(shí),該字段或變量的數(shù)據(jù)類型不變,只是值變?yōu)镹ULL值。a='10'a=NULL?type('a')&&CNULL值在命令和函數(shù)中的行為以下通用規(guī)則適用于傳遞給命令和函數(shù)的NULL值:(1)給命令傳遞NULL值將產(chǎn)生錯(cuò)誤(2)接收.NULL.為有效參數(shù)的函數(shù)其結(jié)果亦為.NULL.(3)若向本應(yīng)接受數(shù)值型參數(shù)的函數(shù)傳遞.NULL.值參數(shù),將產(chǎn)生錯(cuò)誤(4)當(dāng)傳遞NULL值時(shí),ISBLANK()、ISDIGIT()、ISLOWER()、ISUPPER()、ISALPHA()和EMPTY()返回.F.,而ISNULL()返回.T.(5)INSERT-SQL和SELECT-SQL命令通過(guò)ISNULL和ISNOTNULL子句處理NULL值。在這種情況下,INSERT、UPDATE、REPLACE將NULL值放入記錄中(6)SQL合計(jì)函數(shù)將忽略NULL值,若所有值皆為NULL,則VFP合計(jì)函數(shù)產(chǎn)生.NULL.,否則任何NULL值將被忽略相關(guān)函數(shù)的返回值參數(shù)EMPTY()ISBLANK()ISNULL()NULL.F..F..T.空白字段、空字符串、空格字符串.T..T..F.0.T..F..F.NULL值在邏輯表達(dá)式中的行為邏輯表達(dá)式表達(dá)式的結(jié)果X=.T.X=.F.X=.NULL.XAND.NULL..NULL..F..NULL.XOR.NULL..T..NULL..NULL.NOTX.F..T..NULL.2.7程序設(shè)計(jì)基礎(chǔ)程序相關(guān)概念程序的創(chuàng)建與運(yùn)行程序結(jié)構(gòu)過(guò)程與用戶自定義函數(shù)程序相關(guān)概念程序:是為了完成某一具體任務(wù)而編寫(xiě)的一系列指令。VFP程序由一系列代碼組成,代碼可以包括以命令形式出現(xiàn)的指令、函數(shù)或VFP可以理解的任何操作。且VFP將過(guò)程化程序設(shè)計(jì)與面向?qū)ο蟪绦蛟O(shè)計(jì)結(jié)合在一起,幫助用戶創(chuàng)建出功能強(qiáng)大、靈活多變的應(yīng)用程序。在程序中能完成的工作都可以通過(guò)界面或命令操作方式來(lái)完成,而運(yùn)行程序具有明顯的優(yōu)勢(shì):程序可被修改并重新運(yùn)行;可從菜單、表單和工具欄啟動(dòng)程序;一個(gè)程序可調(diào)用其它程序;具有在命令窗口中所不能使用的結(jié)構(gòu)化程序設(shè)計(jì)命令。程序的創(chuàng)建與運(yùn)行創(chuàng)建程序文件(1)文件/新建菜單命令(2)常用工具欄/新建按鈕(3)項(xiàng)目管理器:代碼選項(xiàng)卡/程序/新建(4)命令窗口:modifycommand[Filaname|?]運(yùn)行程序(1)常用工具欄/“!”按鈕(2)項(xiàng)目管理器:選擇程序文件/運(yùn)行(3)命令窗口:doProgramName[withParameterList]運(yùn)行程序文件的過(guò)程一旦運(yùn)行程序文件,系統(tǒng)會(huì)自動(dòng)地對(duì)程序文件(*.prg)進(jìn)行編譯,生成偽編譯程序(*.fxp);執(zhí)行程序時(shí),系統(tǒng)實(shí)際上是執(zhí)行*.fxp文件;偽編譯是計(jì)算機(jī)系統(tǒng)中對(duì)解釋性程序語(yǔ)言源代碼保密的一種常用技術(shù),文本格式的源代碼經(jīng)過(guò)偽編譯成為二進(jìn)制機(jī)器碼,并可被特定的程序讀懂。程序結(jié)構(gòu)程序結(jié)構(gòu)——根據(jù)不同的情況和條件,控制程序去執(zhí)行相應(yīng)的語(yǔ)句序列程序結(jié)構(gòu)主要分為:(1)順序結(jié)構(gòu),按照順序依次執(zhí)行程序中的命令;(2)分支結(jié)構(gòu),根據(jù)條件的結(jié)果執(zhí)行不同的操作;(3)循環(huán)結(jié)構(gòu),使得一組語(yǔ)句重復(fù)執(zhí)行若干次。順序,分支,循環(huán)可相互嵌套(在一種結(jié)構(gòu)中包含任何一種結(jié)構(gòu)),一個(gè)程序從總體上來(lái)說(shuō)是一個(gè)順序結(jié)構(gòu),而其中的各個(gè)子部分則是各種結(jié)構(gòu)的組合和嵌套。程序結(jié)構(gòu)的嵌套嵌套:在一種程序結(jié)構(gòu)中包含另一種程序結(jié)構(gòu)例,clearfori=1to9forj=1toi??str(j,1)+'*'+str(i,1)+'='+str(i*j,2)+space(2)endfor?endfor分支結(jié)構(gòu)兩種實(shí)現(xiàn)分支結(jié)構(gòu)的語(yǔ)句:(1)IF…ELSE...ENDIF語(yǔ)句(2)DOCASE…ENDCASE語(yǔ)句語(yǔ)法格式與執(zhí)行過(guò)程舉例說(shuō)明語(yǔ)法格式:IF條件表達(dá)式[THEN]命令組1[ELSE命令組2]ENDIF執(zhí)行過(guò)程:若含有ELSE子句,當(dāng)條件表達(dá)式為.T.時(shí),執(zhí)行命令組1,否則執(zhí)行命令組2;若不含有ELSE子句,當(dāng)條件表達(dá)式為.T.時(shí),執(zhí)行命令組1,否則執(zhí)行ENDIF后面的語(yǔ)句?!璱fa>bmax=aelsemax=bendif?max…ifx>=0ifx>0y=1elsey=0endifelsey=-1endifDOCASE語(yǔ)句語(yǔ)法格式與執(zhí)行過(guò)程語(yǔ)法格式:DOCASECASE條件表達(dá)式1命令組1[CASE條件表達(dá)式2命令組2……CASE條件表達(dá)式N命令組N][OTHERWISE其他命令組]ENDCASE執(zhí)行過(guò)程:從第一個(gè)CASE開(kāi)始,判斷其后的條件表達(dá)式是否為.T.,當(dāng)遇到第一個(gè)結(jié)果為.T.的表達(dá)式時(shí),執(zhí)行它后面的命令組,跳過(guò)下一個(gè)CASE和ENDCASE之間的所有語(yǔ)句,若包含了OTHERWISE語(yǔ)句,當(dāng)所有的CASE表達(dá)式的值為.F.時(shí),執(zhí)行OTHERWISE后的其它命令組。a=1b=-2c=1delta=b*b-4*a*cDOCASECASEdelta>0?"方程有兩個(gè)不相等的實(shí)數(shù)根:"??(-b+sqrt(delta))/(2*a)??(-b-sqrt(delta))/(2*a)CASEdelta=0?"方程有兩個(gè)相等的實(shí)數(shù)根:"??-b/(2*a)CASEdelta<0?"方程有兩個(gè)復(fù)根:"real_part=-b/(2*a)img_part=sqrt(-delta)/(2*a)

?ALLTRIM(STR(real_part))+"+"ALLTRIM(STR(img_part))+"i"

?ALLTRIM(STR(real_part))+"-"ALLTRIM(STR(img_part))+"i"ENDCASE循環(huán)結(jié)構(gòu)循環(huán):使得一組語(yǔ)句組重復(fù)執(zhí)行若干次??深A(yù)先指定要循環(huán)的次數(shù),也可不預(yù)先指定;只要某個(gè)條件成立,就可一直循環(huán)下去,直到條件不成立。三種實(shí)現(xiàn)循環(huán)的語(yǔ)句(1)FOR…ENDFOR計(jì)數(shù)循環(huán)(2)DOWHILE…ENDDO根據(jù)某條件決定是否結(jié)束循環(huán)(3)SCAN…ENDSCANLO

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論