第一篇:VFP常用命令小結(jié)
VFP常用命令小結(jié)
表中不設(shè)合計(jì)字段的大體思路如下:(如有合計(jì)字段,當(dāng)然更簡(jiǎn)單,就用Replace All)Dimension Array Myarray(RECCOUNT())定義一個(gè)下標(biāo)為記錄總數(shù)的數(shù)組 Go Top Do While!Eof()
Myarray(RECNO())=字段1+字段2+字段3…… Skip Enddo
1、CREATE 作用:建立一個(gè)新的表。
格式:CREATE [<文件>|?](注意,命令字符可取前面四個(gè)字符,后面可省略不寫,即CREA,下同;中括號(hào)表示其中的參數(shù)是可選的;|管道符號(hào)表示兩個(gè)參數(shù)只能選擇一個(gè),不能同時(shí)選擇,下同。)說明:文件指建立以.dbf為擴(kuò)展名的VFP數(shù)據(jù)庫文件,在命令后面加上一個(gè)問號(hào)表示系統(tǒng)會(huì)彈出 對(duì)話框,要求用戶輸入想要建立的表名。在命令中不加文件名或問號(hào)系統(tǒng)也會(huì)彈出對(duì)話框,要求用 戶輸入想要建立的表名。
2、MODIFY STRUCTURE 作用:顯示表文件結(jié)構(gòu),并允許修改此表的結(jié)構(gòu)。格式:MODIFY STRUCTURE 說明:只有在用USE命令打開表文件以后,才能顯示或修改表文件的結(jié)構(gòu)。
3、APPEND 作用:在當(dāng)前表的尾部(無論表中有無記錄)追加記錄(在當(dāng)前表指當(dāng)前正使用的表)。格式:APPEND [BLANK] 說明:在APPEND命令后面加上BLANK參數(shù)表示在當(dāng)前表的尾部添加一條空白記錄。無BLANK參數(shù)時(shí),表示在當(dāng)前表的尾部添加一條記錄并要求用戶輸入相應(yīng)的字段內(nèi)容。
4、INSERT 作用:在表文件中間插入一個(gè)新記錄。格式:INSERT [BEFORE] [BLANK] 說明:INSERT 在當(dāng)前記錄后插入一記錄; INSERT BEFORE 在當(dāng)前記錄前插入一記錄;
INSERT BEFORE BLANK 在當(dāng)前記錄前插入一空記錄。
5、BROWSE 作用:主要用于打開瀏覽窗口,查閱表文件并同時(shí)進(jìn)行修改。格式:BROWSE
6、USE 作用:打開和關(guān)閉表文件。格式:USE [<文件名>] USE 說明:前一個(gè)命令用來打開<文件名>指定的表文件,該表如有備注型字段,則同時(shí)打開相應(yīng)的 備注文件(.fpt文件);后一個(gè)命令關(guān)閉當(dāng)前打開的表文件。
7、LIST和DISPLAY 作用:顯示表(.dbf)的內(nèi)容、結(jié)構(gòu)或狀態(tài)。
格式:LIST|DISPLAY [OFF] [<范圍>] [FIELDS] <表達(dá)式表> [WHILE <條件>] [FOR <條件>] [TO PRINT|TO FILE <文件>] LIST|DISPLAY STRUCTURE TO PRINT|TO FILE <文件>] LIST|DISPLAY STATUS [TO PRINT|TO FILE <文件>] 說明:命令帶OFF參數(shù)表示不顯示記錄號(hào),范圍指定對(duì)哪些記錄進(jìn)行操作,范圍包括:RECORD n 第幾號(hào)記錄、NEXT n 當(dāng)前記錄開始的幾個(gè)記錄、REST 自當(dāng)前記錄開始至文件末尾的所有記錄、ALL 所有的記錄。不選范圍則隱含范圍為ALL;FIELDS后跟字段名,字段名與字段名之間用逗號(hào)分 隔。WHILE后跟條件,F(xiàn)OR后面也跟條件,區(qū)別是,WHILE后的條件如果滿足,便停止查找;FOR后的 條件查找所有滿足條件的記錄。TO PRINT和TO FILE <文件>分別表示將顯示結(jié)果在打印機(jī)上打印出 來和將顯示結(jié)果輸出到文件。DISPLAY命令在顯示記錄滿屏后,要求用戶按任意鍵繼續(xù)顯示,并且在 該命令中,如果省略范圍僅顯示當(dāng)前記錄。格式中,下面兩個(gè)命令分別為顯示表結(jié)構(gòu)(STRUCTURE)和工作狀態(tài)(STATUS)。
8、記錄的定位
作用:用記錄指針(POINTER)定位記錄。格式:GO[TO] RECORD n|TOP|BOTTOM n SKIP [+|-] 說明:第一個(gè)命令又叫絕對(duì)定位,其中,RECORD n定位到n號(hào)記錄,TOP定位到第1個(gè)記錄,BOTTOM定位到最后一個(gè)記錄。第二個(gè)命令定位到第n個(gè)記錄,n是一個(gè)數(shù)值。第三個(gè)命令又叫相對(duì)定 位,它以當(dāng)前記錄為基準(zhǔn)前移(-)或后移(+)n個(gè)記錄,不選任選項(xiàng),則默認(rèn)記錄指針后移一個(gè)記錄。
9、CHANGE和EDIT 作用:顯示要編輯或修改的字段。
格式:CHANGE|EDIT [<范圍>] [FIELDS <字段名表>] [WHILE <條件>] [FOR <條件>]
10、BROWSE 作用:打開一個(gè)“瀏覽”窗口,供用戶瀏覽或修改記錄。格式:BROWSE [FIELDS <字段名表>]
11、REPLACE 作用:用表達(dá)式的值代替命令中與之相對(duì)應(yīng)的字段的內(nèi)容。
格式:REPLACE [<范圍>] <字段1> WITH <表達(dá)式1>[,<字段2> WITH <表達(dá)式2>] [FOR <條件> ] [WHILE<條件>]
12、DELETE、PACK、ZAP和RECALL 作用:分別是給要?jiǎng)h除的記錄作刪除標(biāo)記、徹底刪除、刪除所有記錄和取消被選中的表記錄的 刪除標(biāo)志。
格式:DELETE [<范圍>] [WHILE<條件>] [FOR <條件>](特例:DELETE FILE FILENAME.DBF,該命令刪除指定的表文件)PACK ZAP RECALL [<范圍>] [FOR <條件>] [WHILE<條件>]
13、SORT和INDEX 作用:分別是建立一個(gè)其記錄以新的物理順序排列的新表文件和對(duì)當(dāng)前表根據(jù)關(guān)鍵字表達(dá)式的值 從小到大排列,并存入TO后指定的索引文件名的文件或復(fù)合索引文件的一個(gè)標(biāo)識(shí)中。格式:SORT TO <文件名> ON <字段名1> [/A] [/C] [/D][,<字段名2> [/A] [/C] [/D]]...[ASCENDING|DESCENDING] [<范圍>] [FOR <條件>] [WHILE<條件>] [FIELDS<字段表>] INDEX ON <關(guān)鍵字表達(dá)式> TO <文件名> INDEX ON <關(guān)鍵字表達(dá)式> TAG <標(biāo)識(shí)名> [OF <文件名>] [FOR <條件>] 說明:第1個(gè)命令中,/A按字段名升序排序,/D按字段名降序排序,/C忽略大小寫,針對(duì)字符型 關(guān)鍵字而言,ASCENDING和DESCENDING分別表示升序和降序。第1個(gè)命令建立.dbf表文件,第2個(gè)命令 建立.idx單一索引文件,第3個(gè)命令建立.cdx復(fù)合索引文件(Compound Index)。
14、USE <表文件名> INDEX <索引文件名表>、SET INDEX TO和SET ORDER TO 作用:分別是打開表文件的同時(shí)打開索引文件、打開索引文件和改變主索引。格式:USE <表文件名> INDEX <索引文件名表> SET INDEX TO [<索引文件名表>] SET ORDER TO [<索引文件名>](特例:重新索引命令:REINDEX)
15、FIND、SEEK和LOCATE及CONTINUE 作用:前兩個(gè)命令FIND和SEEK是在一個(gè)已經(jīng)建立了索引文件的表中,定位到關(guān)鍵字中的內(nèi)容與命 令行中字符串相同的第一個(gè)記錄。后一個(gè)命令在用USE打開表文件以后,直接查詢表中字段內(nèi)容。格式:FIND <“字符串”>|<字符串> SEEK <表達(dá)式> LOCATE [<范圍>] [FOR <條件>] [WHILE<條件>] CONTINUE 說明:FIND命令與SEEK命令的區(qū)別是前者后跟字符串,而后者后跟表達(dá)式。在用LOCATE命令找到 一個(gè)匹配記錄后,可用CONTINUE命令搜索表的剩余部分來尋找其他匹配的記錄。
16、COUNT 作用:統(tǒng)計(jì)當(dāng)前表文件中符合條件的記錄數(shù)。
格式:COUNT [<范圍>] [FOR <條件>] [WHILE<條件>] [TO <內(nèi)存變量名>] 說明:內(nèi)存變量名可用除參數(shù)外的任意字符。
17、SUM 作用:對(duì)當(dāng)前表中選中記錄的全部或指定的數(shù)值字段或由指定字段組成的數(shù)值表達(dá)式累加求和。格式:SUM [<范圍>] [數(shù)值<表達(dá)式>] [TO <內(nèi)存變量名表>] [FOR <條件>] [WHILE<條件>]
18、AVERAGE 作用:對(duì)當(dāng)前表中選中記錄的全部或部分?jǐn)?shù)值型字段及其組成的表達(dá)式求平均值并顯示。格式:AVERAGE [<范圍>] [數(shù)值<表達(dá)式>] [TO <內(nèi)存變量名表>] [FOR <條件>] [WHILE<條件>]
第二篇:VFP命令、函數(shù)及程序語句解讀
VFP命令、函數(shù)及程序語句大全(1 學(xué)過VFP(Microsoft Visual FoxPro的朋友都知道它是微軟公司開發(fā)的數(shù)據(jù)庫管理系統(tǒng)。它
經(jīng)歷了從dBASE、FoxBASE、FoxPro直到VFP的發(fā)展過程。本文便以VFP 6.0為例介紹它的命令、函數(shù)
及程序語句,為學(xué)習(xí)VFP的朋友提供必要的學(xué)習(xí)參考,也為已經(jīng)精通VFP的朋友提供復(fù)習(xí)的好機(jī)會(huì)。
一、主要命令:
1、CREATE 作用:建立一個(gè)新的表。
格式:CREATE [<文件>|?](注意,命令字符可取前面四個(gè)字符,后面可省略不寫,即CREA,下
同;中括號(hào)表示其中的參數(shù)是可選的;|管道符號(hào)表示兩個(gè)參數(shù)只能選擇一個(gè),不能同時(shí)選擇,下
同。
說明:文件指建立以.dbf為擴(kuò)展名的VFP數(shù)據(jù)庫文件,在命令后面加上一個(gè)問號(hào)表示系統(tǒng)會(huì)彈出
對(duì)話框,要求用戶輸入想要建立的表名。在命令中不加文件名或問號(hào)系統(tǒng)也會(huì)彈出對(duì)話框,要求用
戶輸入想要建立的表名。
2、MODIFY STRUCTURE
作用:顯示表文件結(jié)構(gòu),并允許修改此表的結(jié)構(gòu)。格式:MODIFY STRUCTURE 說明:只有在用USE命令打開表文件以后,才能顯示或修改表文件的結(jié)構(gòu)。
3、APPEND 作用:在當(dāng)前表的尾部(無論表中有無記錄追加記錄(在當(dāng)前表指當(dāng)前正使用的表。
格式:APPEND [BLANK] 說明:在APPEND命令后面加上BLANK參數(shù)表示在當(dāng)前表的尾部添加一條空白記錄。無BLANK 參數(shù)
時(shí),表示在當(dāng)前表的尾部添加一條記錄并要求用戶輸入相應(yīng)的字段內(nèi)容。
4、INSERT 作用:在表文件中間插入一個(gè)新記錄。格式:INSERT [BEFORE] [BLANK] 說明:INSERT 在當(dāng)前記錄后插入一記錄;INSERT BEFORE 在當(dāng)前記錄前插入一記錄;INSERT BEFORE BLANK 在當(dāng)前記錄前插入一空記錄。INSERT-SQL命令追加記錄
INSERT INTO 表名[(字段1[,字段2…]];VALUES(表達(dá)式1[,表達(dá)式2…]
例:INSERT INTO XS(XH,XM,XB,XIMING VALUES(“950106”,“高山”,“男”,“”
5、UPDATE 作用:修改數(shù)據(jù)
update <表名> set <字段1=表達(dá)式1>,<字段2=表達(dá)式2...> where <條件> 例: update <表名> set <字段1,字段2...>=<表達(dá)式1,表達(dá)式2...> where <條件>
6、BROWSE 作用:主要用于打開瀏覽窗口,查閱表文件并同時(shí)進(jìn)行修改。格式:BROWSE 作用:打開一個(gè)“瀏覽”窗口,供用戶瀏覽或修改記錄。格式:BROWSE [FIELDS <字段名表>]
7、USE 作用:打開和關(guān)閉表文件。格式:USE [<文件名>] USE 說明:前一個(gè)命令用來打開<文件名>指定的表文件,該表如有備注型字段,則同時(shí)打開相應(yīng)的
備注文件(.fpt文件;后一個(gè)命令關(guān)閉當(dāng)前打開的表文件。
8、LIST和DISPLAY
作用:顯示表(.dbf的內(nèi)容、結(jié)構(gòu)或狀態(tài)。
格式:LIST|DISPLAY [OFF] [<范圍>] [FIELDS] <表達(dá)式表> [WHILE <條件>] [FOR <條件>] [TO PRINT|TO FILE <文件>] LIST|DISPLAY STRUCTURE TO PRINT|TO FILE <文件> LIST|DISPLAY STATUS [TO PRINT|TO FILE <文件>] 說明:命令帶OFF參數(shù)表示不顯示記錄號(hào),范圍指定對(duì)哪些記錄進(jìn)行操作,范圍包括:RECORD n 第幾號(hào)記錄、NEXT n 當(dāng)前記錄開始的幾個(gè)記錄、REST 自當(dāng)前記錄開始至文件末尾的所有記錄、ALL 所有的記錄。不選范圍則隱含范圍為ALL;FIELDS后跟字段名,字段名與字段名之間用逗號(hào)分
隔。WHILE后跟條件,FOR后面也跟條件,區(qū)別是,WHILE后的條件如果不滿足,便停止查找;FOR后的條件查找所有滿足條件的記錄。TO PRINT和TO FILE <文件>分別表示將顯示結(jié)果在打印機(jī)上打印出
來和將顯示結(jié)果輸出到文件。
格式中,下面兩個(gè)命令分別為顯示表結(jié)構(gòu)(STRUCTURE和工作狀態(tài)(STATUS。注:LIST命令一次連續(xù)顯示完所有記錄內(nèi)容。DISPLAY命令在顯示記錄滿屏后,要求用戶按
任意鍵繼續(xù)顯示。如果LIST與DISPLAY都無任何選擇項(xiàng)時(shí),LIST顯示文件的全部記錄, DISPLAY僅顯示當(dāng)前記錄。
9、記錄的定位
作用:用記錄指針(POINTER定位記錄。格式: 1GO[TO] RECORD n|TOP|BOTTOM 命令定位 GO [RECORD] N GO BOTTOM GO TOP 2n 3SKIP [+|-] n 說明:第一個(gè)命令又叫絕對(duì)定位,其中,RECORD n定位到n號(hào)記錄,TOP定位到第1個(gè)記錄, BOTTOM定位到最后一個(gè)記錄。第二個(gè)命令定位到第n個(gè)記錄,n是一個(gè)數(shù)值。第三個(gè)命令又叫相對(duì)定
位,它以當(dāng)前記錄為基準(zhǔn)前移(-或后移(+n個(gè)記錄,不選任選項(xiàng),則默認(rèn)記錄指針后移一個(gè)記
錄。
LOCATE [<范圍>] FOR <表達(dá)式> 范圍: ALL NEXT N RECORD N
REST
10、CHANGE和EDIT 作用:顯示要編輯或修改的字段。
格式:CHANGE|EDIT [<范圍>] [FIELDS <字段名表>] [WHILE <條件>] [FOR <條件>]
11、REPLACE 作用:用表達(dá)式的值代替命令中與之相對(duì)應(yīng)的字段的內(nèi)容。
格式:REPLACE [<范圍>] <字段1> WITH <表達(dá)式1>[,<字段2> WITH <表達(dá)式2>] [FOR <條件> ] [WHILE<條件>] 例:USE B2-1 REPLACE ALL 工資 WITH 工資+200 FOR 工資<1000 BROW
12、DELETE、PACK、ZAP和RECALL 作用:分別是給要?jiǎng)h除的記錄作刪除標(biāo)記、徹底刪除、刪除所有記錄和取消被選中的表記錄的
刪除標(biāo)志。
格式:DELETE [<范圍>] [WHILE<條件>] [FOR <條件>](特例:DELETE FILE FILENAME.DBF,該命令刪除指定的表文件
PACK
ZAP RECALL [<范圍>] [FOR <條件>] [WHILE<條件>]
13、SORT和INDEX 1SORT 作用:是建立一個(gè)其記錄以新的物理順序排列的新表文件,原文件不變.格式:SORT TO <文件名> ON <字段名1> [/A] [/C] [/D][,<字段名2> [/A] [/C] [/D>...[ASCENDING|DESCENDING] [<范圍>] [FOR <條件>] [WHILE<條件>] [FIELDS<字段表>] 2INDEX 作用: 對(duì)當(dāng)前表根據(jù)關(guān)鍵字表達(dá)式的值從小到大排列,并存入TO后指定的索引文件名的文件或復(fù)合索引文件的一個(gè)標(biāo)識(shí)中。
格式: INDEX ON <關(guān)鍵字表達(dá)式> TO <文件名> INDEX ON <關(guān)鍵字表達(dá)式> TAG <標(biāo)識(shí)名> [OF <文件名>] [FOR <條件>] 說明:第1個(gè)命令中,/A按字段名升序排序,/D按字段名降序排序,/C忽略大小寫,針對(duì)字符型
關(guān)鍵字而言,ASCENDING和DESCENDING分別表示升序和降序。第1個(gè)命令建立.dbf表文件,第2個(gè)命令建立.idx單一索引文件,第3個(gè)命令建立.cdx復(fù)合索引文件(Compound Index。
刪除索引
DELETE TAG ALL [OF 復(fù)合索引文件名]
DELETE TAG 索引標(biāo)識(shí)1 [OF 復(fù)合索引文件名1][,索引標(biāo)識(shí)2 [OF 復(fù)合索引文件名2>…
14、USE <表文件名> INDEX <索引文件名表>、SET INDEX TO和SET ORDER TO 作用:分別是打開表文件的同時(shí)打開索引文件、打開索引文件和改變主索引。并確定第一個(gè)索引文件為主控索引文件.(當(dāng)前起作用的索引文件稱為主控索引文件, 當(dāng)前起作用的索引標(biāo)識(shí)稱為主控索引
格式:USE <表文件名> INDEX <索引文件名表> SET INDEX TO [<索引文件名表>] 作用:打開當(dāng)前表的一個(gè)或多個(gè)索引文件并確定第一個(gè)索引文件為主控索引文件,該命令用于單索引文件.格式:SET INDEX TO [<索引文件表>] [ADDITIVE] 說明:(1[<索引文件表>]中第一個(gè)索引文件為主控索引文件.(2若缺省ADDITIVE選項(xiàng),則在用本命令打開索引文件時(shí),除結(jié)構(gòu)復(fù)合索引文件以外的索引文件均被關(guān)閉
SET ORDER TO [<數(shù)值表達(dá)式>]|[<單索引文件名>]|[TAG] <索引標(biāo)識(shí)> [ASCENDING|DESCENDING>(特例:重新索引命令:REINDEX 作用:對(duì)于打開表時(shí)自動(dòng)打開的復(fù)合索引文件確定主索引,也能確定主索引文件.(1 數(shù)值表達(dá)式表示已打開的索引的序號(hào).系統(tǒng)先為單索引文件編號(hào),故結(jié)構(gòu)復(fù)合索引文件的序號(hào)比單索引文件大.(2 SET ORDER TO 或 SET ORDER TO 0命令取消主索引和主索引文件,表中記錄將按物理記錄輸出.15、CLOSE INDEX 或 SET INDEX TO 單獨(dú)關(guān)閉索引文件,并不關(guān)閉與之相關(guān)的表文件
16、FIND、SEEK和LOCATE及CONTINUE 作用:前兩個(gè)命令FIND和SEEK是在一個(gè)已經(jīng)建立了索引文件的表中,定位到關(guān)鍵字中的內(nèi)容與命
令行中字符串相同的第一個(gè)記錄。后一個(gè)命令在用USE打開表文件以后,直接查詢表中字段內(nèi)容。
格式:FIND <“字符串”>|<字符串> SEEK <表達(dá)式>(表達(dá)式的數(shù)據(jù)類型可為字符型、數(shù)字型、日期型和邏輯型。LOCATE [<范圍>] [FOR <條件>] [WHILE<條件>] CONTINUE 說明:FIND命令與SEEK命令的區(qū)別是前者后跟字符串,而后者后跟表達(dá)式。在用LOCATE命令找到
一個(gè)匹配記錄后,可用CONTINUE命令搜索表的剩余部分來尋找其他匹配的記錄。
例:SET ORDER TO NL ?確定索引關(guān)鍵字為NL(年齡 FIND 28 ?找年齡字段為“28“的記錄 DISPLAY ?顯示當(dāng)前記錄
SET ORDER TO NL ?確定索引關(guān)鍵字為NL(年齡 SEEK “28”?找年齡字段為“28“的記錄
DISPLAY 17.從磁盤上刪除任意文件:(1ERASE filename|?(2DELETE FILE [filename|?]
18、COUNT 作用:統(tǒng)計(jì)當(dāng)前表文件中符合條件的記錄數(shù)。
格式:COUNT [<范圍>] [FOR <條件>] [WHILE<條件>] [TO <內(nèi)存變量名>] 說明:內(nèi)存變量名可用除參數(shù)外的任意字符。
19、SUM 作用:對(duì)當(dāng)前表中選中記錄的全部或指定的數(shù)值字段或由指定字段組成的數(shù)值表達(dá)式累加求和。
格式:SUM [<范圍>] [數(shù)值<表達(dá)式>] [TO <內(nèi)存變量名表>] [FOR <條件>] [WHILE<條件>] 20、AVERAGE 作用:對(duì)當(dāng)前表中選中記錄的全部或部分?jǐn)?shù)值型字段及其組成的表達(dá)式求平均值并顯示。
格式:AVERAGE [<范圍>] [數(shù)值<表達(dá)式>] [TO <內(nèi)存變量名表>] [FOR <條件>] [WHILE<條件>]
21、TOTAL 作用:分類匯總命令,按<表達(dá)式>做過索引或排序的表文件的數(shù)字型字段進(jìn)行分類匯總。它把與<表達(dá)式>值相同的所有記錄中的數(shù)字字段的值分別進(jìn)行求和,并各
自作為一條記錄存放在由文件指定的文件中去。在新生成的記錄中,還將包括與<表達(dá)式>值相同的所有記錄中的首項(xiàng)記錄的其他字段內(nèi)容。
格式:TOTAL TO <文件名> ON <表達(dá)式>[FIELDS <數(shù)值型字段名表>][<范圍>][FOR <邏輯表達(dá)式1>][WHILE <邏輯表達(dá)式2>] 例:USE B2-1 INDEX ON 職稱 TO ZC TATOL ON 職稱 TO B2-1T FILEDS 工資 22.APPEND FROM 作用:從其他文件向表文件添加數(shù)據(jù)。數(shù)據(jù)來源文件既可以是表文件,也可是文本文件或其他符合規(guī)定的文件。
格式:APPEND FROM <文件名>|?[FIELDS <字段名表>][FOR <邏輯表達(dá)式>] FIELDS <字段名表>和FOR <邏輯表達(dá)式>,用于源文件為表文件時(shí),指定追加記錄的字段和條件。在字段名表和邏輯表達(dá)式中的字段名,必須是在來源和目的兩個(gè)文件中公有的,共注意寬度和類型匹配。實(shí)際應(yīng)用中,數(shù)據(jù)來源文件常為表文件(.DBF和ASCII碼文本文件(.TXT 對(duì)于文本文件又有標(biāo)準(zhǔn)格式(SDF和通用格式(DELIMITED之分.例: USE B2-1 APPE FROM S3-1.TXT SDF BROWSE 23.COPY(選擇表的部分內(nèi)容生成一個(gè)新表
作用:把打開的表文件結(jié)構(gòu)及數(shù)據(jù)復(fù)制成由<文件名>所指定的并符合規(guī)定要求的文件。如果默認(rèn)全部選擇項(xiàng)和文件名的擴(kuò)展名,則結(jié)構(gòu)及全部數(shù)據(jù)都被復(fù)制,且其文件擴(kuò)展名由系統(tǒng)規(guī)定為“.DBF”。
格式:COPY TO<文件名> [FIELDS <字段名表>][<范圍>][FOR <邏輯表達(dá)式1>][WHILE <邏輯表達(dá)式2>] 格式中的或用來為新表建立一個(gè)與原表相同的結(jié)構(gòu)索引.例1: COPY TO B3-2 COPY TO S3-2.TXT SDF 例2: USE RS COPY TO RS3 FIELDS 姓名,基本工資,獎(jiǎng)金 USE RS3 LIST 24.COPY FILE復(fù)制數(shù)據(jù)整表:(可用于復(fù)制任何類型文件 COPY FILE 原文件名 TO 目標(biāo)文件名
注:復(fù)制表時(shí),還應(yīng)當(dāng)復(fù)制和它相配的備注文件(.FPT,如有備注字段和結(jié)構(gòu)復(fù)合索引文件。
當(dāng)前表應(yīng)關(guān)閉。(如果已打開表:COPY TO 新文件名 例:將RS.DBF復(fù)制為RS1.DBF COPY FILE RS.DBF TO RS1.DBF 或USE RS
COPY TO RS1 USE RS1 LIST 25.COPY STRUCTURE(只復(fù)制結(jié)構(gòu)不復(fù)制數(shù)據(jù)
作用:表文件結(jié)構(gòu)復(fù)制,生成一個(gè)指定文件名和包括指定字段的表文件結(jié)構(gòu);如有CDX或PRODUCTION選擇項(xiàng)還將為新表建立一個(gè)與源表相同的結(jié)構(gòu)索引.格式: COPY STRUCTURE TO<文件名> [FIELDS <字段名表>] 例: COPY STRUCTURE TO B3-3 FIELDS 編號(hào),姓名,何時(shí)工作,職稱 26.copy to建立結(jié)構(gòu)擴(kuò)展文件
作用:把已打開的表文件的結(jié)構(gòu)作為數(shù)據(jù)記錄復(fù)制到由<文件名>指定的庫文件中去.格式: COPY TO<文件名> STRUCTURE EXTENDED 例: USE B3-3 COPY TO B3-4 STRUCTURE EXTENDED USE B3-4 BROW 該命令可以用于測(cè)試表文件結(jié)構(gòu),也可以用于順序方式建立庫文件結(jié)構(gòu).新庫文件的結(jié)構(gòu)是一個(gè)由系統(tǒng)規(guī)定的標(biāo)準(zhǔn)結(jié)構(gòu),它由4個(gè)字段構(gòu)成: FIELD_NAME 字段名
FIELD_TYPE 字段類型 FIELD_LEN 字段寬度 FIELD_DEC 小數(shù)位數(shù) 27.常用命令: 庫表
建立數(shù)據(jù)庫: CREATE DATABASE 庫文件名.DBC 建立表: CREATE 表文件名.DBF CREATE TABLE/DBF 表名(各個(gè)字段屬性 打開數(shù)據(jù): OPEN DATABASE 庫文件名 打開表: USE 表文件名
使用非前庫的表:USE 庫名!表名 打開索引表:USE 表名 INDEX 索引名 顯示庫信息:DISP DATABASE [TO PRINTER] 顯示記錄:LIST(快速查看 BROWSE(分屏瀏覽可修改 DISP(顯示當(dāng)前記錄
關(guān)閉數(shù)據(jù)庫:CLOSE ALL(關(guān)閉所有庫、表、索引 關(guān)閉表: USE
CLOSE DATABASES(關(guān)閉當(dāng)前庫、表 CLOSE TABLES(關(guān)閉當(dāng)前表,不關(guān)庫 CLOSE INDEXES(關(guān)閉當(dāng)前索引
修改庫:MODI DATA 庫名 [NOWAIT] [NOEDIT] 修改表結(jié)構(gòu):MODI STRU ALTER TABLE 表名 ADD 字段名 ALTER TABLE 表名 ALTER 字段名 ALTER TABLE 表名 DROP 字段名 添加表:ADD TABLE 表名追加記錄: INSERT INTO 表名(字段名列表 VALUES(對(duì)應(yīng)數(shù)值 APPEND APPEND FROM 源文件 移去表:REMOVE TABLE 表名
刪除記錄:DELETE ALL FOR [條件](邏輯刪除 PACK(物理刪除 ZAP(全部徹底刪除
刪除庫:DELETE DATABASE 庫名(先關(guān)閉庫 刪除表:DELETE FILE 表名(先關(guān)閉表 VFP命令、函數(shù)及程序語句大全(2
二、常用函數(shù)
1、數(shù)學(xué)函數(shù) 函數(shù)用途
ABS(<數(shù)值表達(dá)式>絕對(duì)值,|x| CEILING(<數(shù)值表達(dá)式> >=自變量的最小整數(shù) EXP(<數(shù)值表達(dá)式>對(duì)基E的冪,e=2.71828 FLOOR(<數(shù)值表達(dá)式> <=自變量的最大整數(shù) INT(<數(shù)值表達(dá)式>取整(舍尾自變量
LOG(<數(shù)值表達(dá)式>自變量的自然對(duì)數(shù),ln x LOG10(<數(shù)值表達(dá)式>自變量的普通對(duì)數(shù),lg x MAX(<表達(dá)式1>,<表達(dá)式2>兩個(gè)值的最大值 MIN(<表達(dá)式1>,<表達(dá)式2>兩個(gè)值的最小值 MOD(<數(shù)值表達(dá)式1>,<數(shù)值表達(dá)式2>求余數(shù) RAND([<數(shù)值表達(dá)式1>]返回偽隨機(jī)數(shù)
ROUND(<數(shù)值表達(dá)式1>,<數(shù)值表達(dá)式2>四舍五入第一個(gè)自變量 SIGN(<數(shù)值表達(dá)式>自變量的符號(hào) SQRT(<數(shù)值表達(dá)式>平方根(正根
2、字符串操作函數(shù) 函數(shù)用途
&<內(nèi)存變量> 用于代替內(nèi)存變量?jī)?nèi)容
LEN(<字符串表達(dá)式>返回字符串表達(dá)式的字符個(gè)數(shù) SPACE(<數(shù)值表達(dá)式>生成空格
SUBSTR(<字符串表達(dá)式>,<數(shù)值表達(dá)式n>[,<數(shù)值表達(dá)式L>]求子字符串,從指定的字符串表達(dá)式第n個(gè)開始,總長(zhǎng)為L(zhǎng)的字符串
LOWER(<字符串表達(dá)式>將字符串字母轉(zhuǎn)換成小寫字母 UPPER(<字符串表達(dá)式>將字符串字母轉(zhuǎn)換成大寫字母 TRIM(<字符串表達(dá)式>刪除字符串尾空格
ASC(<字符串表達(dá)式>返回字符串表達(dá)式最左邊的第一個(gè)字符的ASCII碼 CHR(<數(shù)值表達(dá)式>將數(shù)值表達(dá)式轉(zhuǎn)換成字符
AT(<字符串表達(dá)式1>,<字符串表達(dá)式2>[,<數(shù)值表達(dá)式n>] 確定字符串表達(dá)式1在字符串表達(dá)式2中的位置,n為字符串表達(dá)式第幾次出現(xiàn) STR(<數(shù)值表達(dá)式>[,<數(shù)值表達(dá)式L>][,<數(shù)值表達(dá)式n>將數(shù)值轉(zhuǎn)換為字符串,L為數(shù)值表達(dá)式總長(zhǎng),n為小數(shù)位數(shù)
VAL(<字符串表達(dá)式>將數(shù)字字符串轉(zhuǎn)換為數(shù)字 TYPE(<表達(dá)式>檢測(cè)表達(dá)式值的數(shù)據(jù)類型 LTRIM(<字符串表達(dá)式>刪除字符串左部空格 RTRIM(<字符串表達(dá)式>刪除字符串右部空格
LEFT(<字符串表達(dá)式>,<數(shù)值表達(dá)式n>取字符串左邊部分字符,n為返回的字符個(gè)數(shù)
RIGHT(<字符串表達(dá)式>,<數(shù)值表達(dá)式n>取字符串右邊部分字符,n從右邊截取字符個(gè)數(shù)
3、表(.dbf操作函數(shù)
函數(shù)用途
BOF([<工作區(qū)號(hào)或別名>]查表文件開始函數(shù) EOF([<工作區(qū)號(hào)或別名>]表文件結(jié)尾測(cè)試函數(shù)
RECNO([<工作區(qū)號(hào)或別名>]測(cè)試當(dāng)前或指定工作區(qū)表的當(dāng)前記錄號(hào) DELETED([<工作區(qū)號(hào)或別名>]記錄刪除測(cè)試函數(shù) FILE(<“字符串”>測(cè)試文件是否存在函數(shù) DBF([<工作區(qū)號(hào)或別名>]檢測(cè)表的文件名函數(shù)
4、日期、時(shí)間函數(shù) 函數(shù)用途
DATE(查系統(tǒng)當(dāng)前日期函數(shù)
TIME([<數(shù)值表達(dá)式>]查系統(tǒng)當(dāng)前時(shí)間函數(shù)
YEAR(<日期型表達(dá)式>|<日期時(shí)間型表達(dá)式>由日期查年函數(shù) MONTH(<日期型表達(dá)式>|<日期時(shí)間型表達(dá)式>從日期查月份函數(shù) CMONTH(<日期型表達(dá)式>|<日期時(shí)間型表達(dá)式>由日期查月份名函數(shù) DAY(<日期型表達(dá)式>|<日期時(shí)間型表達(dá)式>從日期查當(dāng)月的日函數(shù)
DOW(<日期型表達(dá)式>|<日期時(shí)間型表達(dá)式>[,<數(shù)值表達(dá)式>]由日期查星期函數(shù)
CDOW(<日期型表達(dá)式>|<日期時(shí)間型表達(dá)式>從日期查星期名函數(shù) DTOC(<日期型表達(dá)式>|<日期時(shí)間型表達(dá)式>日期轉(zhuǎn)換為字符函數(shù)
CTOD(<字符串表達(dá)式>字符串轉(zhuǎn)換為日期函數(shù) CTOT(<字符串表達(dá)式>返回日期時(shí)間值函數(shù) TTOC(<日期時(shí)間型表達(dá)式>返回字符值
5、顯示、打印位置函數(shù) 函數(shù)用途
ROW(判斷光標(biāo)行位置函數(shù) COL(判斷光標(biāo)列位置函數(shù)
INKEY([<數(shù)值表達(dá)式>]檢測(cè)用戶所擊鍵對(duì)應(yīng)的ASCII碼函數(shù),數(shù)值表達(dá)式以秒為單位等待擊鍵的時(shí)間
6、其他函數(shù) 函數(shù)用途
DISKSPACE(返回默認(rèn)磁盤驅(qū)動(dòng)器中可用字節(jié)數(shù)函數(shù) OS(檢測(cè)操作系統(tǒng)名稱的函數(shù) VERSION(返回VFP版本號(hào)的函數(shù) VFP命令、函數(shù)及程序語句大全(3
三、主要程序語句
1、條件判斷語句 格式:(1IF <條件> <命令語句組>
ENDIF 說明:如果條件為真,則執(zhí)行命令語句組中的各語句,否則跳過這些命令語句不執(zhí)行, 而執(zhí)行ENDIF后的語句。(2IF <條件> <命令語句組1> ELSE <命令語句組2> ENDIF 說明:如果條件為真,執(zhí)行命令語句組1,否則執(zhí)行命令語句組2。(3IF <條件1> IF <條件2> <命令語句組1> ELSE <命令語句組2> ENDIF...ELSE <命令語句組N>
ENDIF 說明:進(jìn)行多重條件的嵌套選擇。(4DO CASE CASE <條件1> <命令語句組1> CASE <條件2> <命令語句組2> CASE <條件3> <命令語句組3>......CASE <條件N> <命令語句組N> [OTHERWISE] [<命令語句組N+1>] ENDCASE 說明:依次判斷條件,轉(zhuǎn)入條件為真的命令語句組中執(zhí)行。當(dāng)所有條件都不成立時(shí),若有
OTHERWISE項(xiàng),則執(zhí)行命令語句組N+1,否則執(zhí)行ENDCASE后面的語句。
2、循環(huán)語句
格式:(1DO WHILE <條件> <命令語句組> [LOOP] <命令語句組> [EXIT] <命令語句組> ENDDO 說明:判斷條件是否為真,如為真就重復(fù)執(zhí)行循環(huán)體中的命令語句組,直到條 件為假,結(jié)束循環(huán)。(2)SCAN <命令語句組> ENDSCAN 說明:在一個(gè)表中建立一個(gè)執(zhí)行命令語句組的循環(huán),并執(zhí)行對(duì)每一條記錄的操 作,直到表文件 記錄完為止。
第三篇:VFP對(duì)口高考命令-3至5
DO <查詢文件名> 功能:運(yùn)行指定的查詢
例:do d:chax1.qpr 運(yùn)行名為chax1的查詢文件
MODIFY QUERY <查詢文件名> 功能:打開指定的查詢文件 例:modify query d:chax1.qpr 打開名為chax1的查詢文件
注:不論用什么方法打開查詢文件,VFP都會(huì)自動(dòng)打開查詢?cè)O(shè)計(jì)器
SELECT <字段列表> FROM [數(shù)據(jù)庫名!] <表名> [,[數(shù)據(jù)庫名!] <表名>,?] [WHERE 條件] [GROUP BY 分組項(xiàng)列表] [ORDER BY 排序項(xiàng)[DESC]?] [INTO 目標(biāo)|TO FILE 文件名|TO PRINTER] 功能:從一個(gè)或多個(gè)表中查詢數(shù)據(jù)
例:select b1.語文,b1.數(shù)學(xué),b1.英語 from sjk1!b1 where b1.語文>70 group by b1.語文 order by b1.學(xué)號(hào) desc 查詢sjk1數(shù)據(jù)庫中的b1表的語文,數(shù)學(xué),英語字段中滿足語文大于70的數(shù)據(jù),按照b1表的語文字段分組,按照b1表的學(xué)號(hào)排序,且設(shè)置排序方式為倒序。
[INTO 目標(biāo)]的“目標(biāo)”可以使用如下3種:“ARRAY 數(shù)組名”、“CURSOR 表名”、“DBF 表名”。
[ORDER BY[desc]]中若缺省“desc”則按升序排序。否則則按降序排序。[TO PRINTER]:將查詢結(jié)果送往打印機(jī)輸出
[TO FILE 文件名]:將查詢結(jié)果輸出到指定的文本文件中
CREATE VIEW <視圖名> AS <查詢語句> 功能:為當(dāng)前數(shù)據(jù)庫創(chuàng)建視圖 例:open database d:sjk1 打開數(shù)據(jù)庫sjk1
create view st1 as select * from sjk1!b1 為當(dāng)前數(shù)據(jù)庫創(chuàng)建一個(gè)視圖st1其功能為“查詢數(shù)據(jù)庫sjk1的表b1中所有字段數(shù)據(jù)”
注:使用上述命令創(chuàng)建的視圖還需要在視圖設(shè)計(jì)器中指定可更新字段,才能實(shí)現(xiàn)更新數(shù)據(jù)的功能
DROP VIEW <視圖名> 功能:刪除當(dāng)前數(shù)據(jù)庫中指定的視圖 例:open database d:sjk1 打開數(shù)據(jù)庫sjk1
drop view st1 刪除視圖st1 CREATE REPORT <報(bào)表文件名> 功能:建立一個(gè)空白報(bào)表 例:create report d:bb1 建立一個(gè)報(bào)表bb1
MODIFY REPORT <報(bào)表文件名> 功能:打開指定的報(bào)表文件 例:modify report d:bb1 打開報(bào)表bb1
REPORT FORM <報(bào)表文件名> TO PRINTER 功能:打印指定的報(bào)表 例:report form d:bb1 to printer 打印報(bào)表bb1
MODIFY COMMAND <程序文件名> 功能:建立一個(gè)程序文件 例:modify command cx1 建立一個(gè)名為cx1的程序文件并打開編寫 DO <程序文件名> 功能:運(yùn)行指定的程序 例:do d:cx1 運(yùn)行程序cx1
注:如果在A程序中使用命令調(diào)用B程序,則B程序稱為A程序的子程序,A程序稱為B程序的主程序。
VFP中可以使用“*”號(hào)和NOTE命令可以給某一行加注釋,也可以使用“&&”在語句行后面添加注釋。
注:給某一個(gè)行加注釋就是以“*”或NOTE開頭后進(jìn)行注釋,給語句行加注釋就是使用“&&”直接在語句后面加上注釋,相比來說“&&”注釋更加靈活。
例:clear &&清屏
給clear加注釋“清屏” 注:注釋的作用就是幫助理解程序的功能,以利今后修改程序時(shí)提高工作效率,一般注釋的內(nèi)容在VFP中以綠色顯示。
CLEAR 功能:清除屏幕上的顯示信息 ACCEPT [提示信息] TO <內(nèi)存變量>
功能:把用戶輸入的字符串保存到指定的內(nèi)存變量中
例:accept to x 在屏幕上光標(biāo)處輸入字符串,并將字符串保存到變量x中
accept ”請(qǐng)輸入x:” to x
在屏幕上”請(qǐng)輸入x:”后輸入字符串,并將字符串保存變量x中 INPUT [提示信息] TO <內(nèi)存變量>
功能:把用戶輸入的表達(dá)式的值保存到指定的內(nèi)存變量 例:input ”請(qǐng)輸入y:” to y 在“清輸入y:”后輸入數(shù)據(jù),并將數(shù)據(jù)保存到變量y中 注:input與accept的區(qū)別是,前者可以輸入數(shù)值型數(shù)據(jù)、邏輯型數(shù)據(jù),也可輸入字符型數(shù)據(jù),在輸入字符型數(shù)據(jù)時(shí)要加定界符,后者輸入的數(shù)據(jù)都一律被認(rèn)為是字符型數(shù)據(jù),且不用加定界符。
WAIT [提示信息] [TO 內(nèi)存變量] [WINDOW] [TIMEOUT 時(shí)間] 功能:等待用戶輸入一個(gè)字符
例:wait 屏幕上顯示“按任意鍵繼續(xù)?”,并要求任意輸入一個(gè)字符以繼續(xù)
wait “是否繼續(xù)(Y/N)?” to x window timeout 2 在屏幕右上角中的系統(tǒng)窗口中顯示“是否繼續(xù)(Y/N)?”系統(tǒng)窗口存在2秒,并將輸入的字符保存到變量x中
注:wait命令和accept命令中的變量的一定是字符型變量且不用加定界符,而input命令的變量的類型由輸入表達(dá)式值的數(shù)據(jù)類型決定。wait命令常用于輸入單字符和顯示信息,accept命令常用于輸入字符串,input命令常用于輸入其他類型的數(shù)據(jù)。
@<行,列> SAY <顯示信息> 功能:在指定位置輸出信息 例:@1,1 say ”你好” 在第一行第一列顯示“你好” @<行,列> [SAY 顯示信息] GET <變量> 功能:在指定位置輸入數(shù)據(jù),并把輸入的數(shù)據(jù)保存在指定的變量 例:@1,1 say”姓名:” get xm
read 在第一行第一列顯示“姓名:”并在其后面輸入數(shù)據(jù)并將數(shù)據(jù)其保存給變量xm 注:該命令需要與read命令共同使用,才能激活命令中的變量,接收輸入的數(shù)據(jù)。注:不與read命令共同使用的話,系統(tǒng)將自動(dòng)將原先變量的值載入。ROW()功能:返回當(dāng)前坐標(biāo)的行坐標(biāo) COL()功能:返回當(dāng)前坐標(biāo)的列坐標(biāo) SET TALK ON|OFF
功能:設(shè)置是否顯示某些命令執(zhí)行的結(jié)果,ON為顯示,OFF為不顯示 SET SAFETY ON|OFF
功能:設(shè)置刪除文件數(shù)據(jù)時(shí)是否顯示提示信息,ON為顯示,OFF為不顯示 CLEAR ALL 功能:清除用戶自定義的內(nèi)存變量和對(duì)象 IF <條件>
功能:?jiǎn)畏种нx擇結(jié)構(gòu)
<語句組> ENDIF 例:if x<0 判斷x是否小于0,其返回值是.T.或.F.?”x小于0”
返回.T.時(shí)執(zhí)行,執(zhí)行后執(zhí)行endif后面的語句
endif
返回.F.時(shí)執(zhí)行endif后面的語句 IF<條件> 功能:雙分支選擇結(jié)構(gòu)
<語句組1> ELSE
<語句組2> ENDIF 例:if x<0 判斷x是否小于0,其返回值是.T.或.F.?”x小于0”
返回.T.時(shí)執(zhí)行,執(zhí)行后執(zhí)行endif后面的語句
else
?”x大于等于0” 返回.F.時(shí)執(zhí)行,執(zhí)行后執(zhí)行endif后面的語句
endif 注:條件是一個(gè)邏輯表達(dá)式,其返回值為.T.或.F.。
注:if和endif必須成對(duì)使用,分別表示選擇結(jié)構(gòu)開始和選擇結(jié)構(gòu)結(jié)束 DO CASE
功能:多分支選擇結(jié)構(gòu)
CASE <條件1>
<語句組1> CASE <條件2> <語句組2> ?
CASE <條件n> <語句組n> [OTHERWISE 語句組] ENDCASE 例:do case
case x=1
?”x等于1”
x等于1時(shí)執(zhí)行,執(zhí)行后執(zhí)行endcase后面的語句
case x=2 ?”x等于2”
x等于2時(shí)執(zhí)行,執(zhí)行后執(zhí)行endcase后面的語句
case x=3
?”x等于3”
x等于3時(shí)執(zhí)行,執(zhí)行后執(zhí)行endcase后面的語句
otherwise
? ”x是大于3的數(shù)”
x不滿足以上的所有條件時(shí)執(zhí)行,執(zhí)行后執(zhí)行endcase后面的語句 endcase 注:do case和endcase必須成對(duì)使用,分別表示選擇結(jié)構(gòu)開始和選擇結(jié)構(gòu)結(jié)束
DO WHILE <條件> 功能:基于條件的循環(huán)結(jié)構(gòu) <語句組>
ENDDO 例:do while x<10 判斷x是否小于10,其返回值是.T.或.F.?”x小于10”
x=x+1
返回.T.時(shí)執(zhí)行,執(zhí)行完畢后跳回循環(huán)開始處(do while <條件>)再次判斷條件是不是滿足或不滿足
enddo 返回.F.時(shí)執(zhí)行enddo后面的語句
SCAN [FOR條件] 功能:針對(duì)表記錄的循環(huán)結(jié)構(gòu) <語句組> ENDSCAN
例:use d:b1 由于是針對(duì)表記錄的循環(huán),所以需打開一張表
scan for 性別=”男”
display
每個(gè)性別字段等于“男”的記錄都會(huì)執(zhí)行一次語句組的語句,全部執(zhí)行完畢后,執(zhí)行endscan后面的語句
endscan FOR <變量>=<初值> TO <終值> [STEP 步長(zhǎng)] 功能:指定次數(shù)的循環(huán)
<語句組> ENDFOR
例:s=0 設(shè)置累加器s
for x=1 to 11 step 2 給x賦初值1,終值11,其步長(zhǎng)為s=s+x
因步長(zhǎng)為2,故x的值為1、3、5、7、9、11,s將x從初值1到11的每一步的值都加起來,當(dāng)x的值下一步大于其終值時(shí),執(zhí)行endfor后面的語句
endfor 注:do while enddo,scan endscan,for endfor必須成對(duì)使用
LOOP 功能:終止本次循環(huán),使程序再次檢查是否滿足循環(huán)條件,以決定是否進(jìn)行下一次循環(huán)即直接跳回循環(huán)開始處(如do while <條件>)。
EXIT 功能:結(jié)束循環(huán),使程序執(zhí)行循環(huán)結(jié)構(gòu)后面的語句即直接跳到循環(huán)結(jié)束處(如 enddo)。PROCEDURE <過程名> 功能:定義一個(gè)過程 <語句組> ENDPROC 例:procedure x 定義一個(gè)過程,過程名為x
display
該過程的語句
endproc
結(jié)束過程
SET PROCEDURE TO [過程文件名] 功能 :打開指定的過程文件 例:set procedure to 關(guān)閉正在打開的過程
set procedure to d:gc1 打開過程文件gc1 注:缺省可選項(xiàng)則關(guān)閉已經(jīng)打開的過程文件。DO <程序名|過程名> [WITH 參數(shù)表] 功能:調(diào)用指定的程序,并把指定的參數(shù)傳遞給調(diào)用的下級(jí)程序。注:缺省可選項(xiàng),則不傳遞參數(shù)。
PAREMETERS <參數(shù)表> 功能:接受上級(jí)程序傳遞來的參數(shù) 例:input”你出生的年份:” to c
input”現(xiàn)在的年份:” to n
do c1 with c,n
調(diào)用過程c1并傳遞參數(shù)c和n,并執(zhí)行過程c1的語句
?”你現(xiàn)在”+alltrim(str(n))+alltrim(”歲”)
在屏幕上顯示“你現(xiàn)在n(變量)歲”,因n為數(shù)值型,所有要用str()函數(shù)轉(zhuǎn)換成字符型,用alltrim()函數(shù)消除多余的空格
return
procedure c1 定義過程c1
parameters x,y 接收上級(jí)傳遞過來的參數(shù),c對(duì)應(yīng)x,n對(duì)應(yīng)y
y=y-x 即用現(xiàn)在的年份減去你出生的年份,算出要計(jì)算的年齡
endproc
結(jié)束過程,并將參數(shù)y,x的值傳遞回c,n,此時(shí)執(zhí)行調(diào)用該過程之后的語句 注:在這里c,n稱為實(shí)參,即實(shí)際使用的參數(shù)。x,y稱為形參,即位置相同,形式相同的參數(shù)。
CREATE FORM <表單文件名> 功能:創(chuàng)建一個(gè)空白表單 例:create form d:bd1 建立一個(gè)名為bd1的表單 DO FORM <表單文件名> 功能:運(yùn)行指定的表單 例:do form d:bd1 運(yùn)行表單bd1
MODIFY FORM <表單文件名> 功能:打開指定的表單 例:modify form d:bd1 打開表單bd1 Thisform.refresh 功能:刷新表單
Thisform.release 功能:釋放并關(guān)閉表單,即從內(nèi)存中清除表單
Thisform.<對(duì)象名>.<屬性名>=<屬性值> 功能:修改或設(shè)置表單對(duì)象的屬性值Thisform.text1.value=”VFP”
這個(gè)表單的text1控件的value屬性值是”VFP” DO <菜單程序名> 功能:運(yùn)行指定的菜單 例:do d:cd1.mpr 運(yùn)行菜單cd1
DO <菜單程序名> WITH this ,T,功能:使用表單調(diào)用菜單 例:do d:cd1 with this ,T, 在當(dāng)前表單上調(diào)用菜單cd1
例:5
第四篇:mathematic命令小結(jié)
1.初等數(shù)學(xué)(1).算術(shù)函數(shù)
Plus(+)加號(hào) Subtract(-)減號(hào)
Times(×)乘號(hào), 用空格,* 或者×(Esc * Esc)表示 Divide(/)除號(hào)
Power(^)冪, 以上標(biāo)形式輸入,使用 Ctrl+^ Sqrt平方根, 輸入 Sqrt[?] 或使用 Ctrl+@ expr 直接輸入表達(dá)式 N[expr]或 expr//N expr的近似值
N[expr,n] n位精度的expr的近似值(2).數(shù)學(xué)常數(shù)
Pi(?)圓周率?(Esc p Esc)
E(?)自然對(duì)數(shù)底數(shù)?(Esc ee Esc)Infinity(?)無窮大 ?(Esc inf Esc)I 虛數(shù)單位
Degree 度數(shù) °
GoldenRatio 黃金分割 ?=(1+Sqrt[5])/2?1.618 EulerGamma 歐拉常數(shù) ??0.577(3).復(fù)數(shù) z=x+I y Re[z] 求z的實(shí)部 Im[z] 求z的虛部 Conjugate[z] 求z的共軛 Abs[z] 求z的模 Arg[z] 求z的幅角
Sign[z] 將z單位化(z/|z|)(4).數(shù)值函數(shù)
IntegerPart[x] x的整數(shù)部分 FractionalPart[x] x的分?jǐn)?shù)部分 Round[x] x的四舍五入取整 Floor[x] x的向下取整 Ceiling[x] x的向上取整 Abs[x] x的絕對(duì)值
Max[{e1,..., en}] 給出n個(gè)數(shù)的最大值 Min[{e1,..., en}] 給出n個(gè)數(shù)的最小值 Sign[x] 符號(hào)函數(shù) Boole[x] 布爾函數(shù)
UnitStep[x] 階梯函數(shù)(x>=0時(shí)為1, x<0時(shí)為0)Mod[k, n] k模n(k除 n的余數(shù))Quotient[m, n] m除n的商數(shù)(舍棄m/n的小數(shù)部分)QuotientRemainder[m,n] m除n的商數(shù)和余數(shù)的列表 GCD[n1, n2, ?] 求n1, n2,...最大公約數(shù) LCM[n1, n2, ?] 求n1, n2,...最小公倍數(shù) n!n的階乘 n(n-1)(n-2)?1 n!n的二階階乘 n(n-2)(n-4)? Binomial[n,m] 組合數(shù)(n,m)= n!/[m!(n-m)!Multinomial[n1,n2, ?]] 多重組合(n1+n2+ ?)!/(n1!n2!...)Rescale[x,{xmin,xmax}] IntegerDigits FromDigits(5).一般函數(shù) 初等函數(shù)
Log[x] 計(jì)算表達(dá)式的對(duì)數(shù)函數(shù)值 Log[b,x]
計(jì)算x以b為底的對(duì)數(shù)...Sin[x]
計(jì)算表達(dá)式的三角正弦 Cos[x] 計(jì)算表達(dá)式的三角余弦 Tan[expr]
計(jì)算表達(dá)式的三角正切 Cot[expr]
計(jì)算表達(dá)式的三角余切 Sec[expr]
計(jì)算表達(dá)式的三角余割 ArcSin[expr] 計(jì)算表達(dá)式的反三角正弦 ArcCos[expr] 計(jì)算表達(dá)式的反三角余弦 ArcTan[expr] 計(jì)算表達(dá)式的反三角正切...Sinh[expr]
計(jì)算表達(dá)式的雙曲正弦 Cosh[expr] 計(jì)算表達(dá)式的雙曲余弦 Coth[expr] 計(jì)算表達(dá)式的雙曲余切 Tanh[expr]
計(jì)算表達(dá)式的雙曲正切 ArcCosh[expr] 計(jì)算表達(dá)式的反雙曲余弦 ArcSinh[expr] 計(jì)算表達(dá)式的反雙曲正弦 ArcTanh[expr] 計(jì)算表達(dá)式的反雙曲正切 Sech[expr]
計(jì)算表達(dá)式的雙曲余割
特殊函數(shù)
Zata[expr]
計(jì)算表達(dá)式的Zata函數(shù) Bessell[expr] 計(jì)算表達(dá)式的貝賽爾函數(shù)值 Beta[expr] 計(jì)算表達(dá)式的Beta函數(shù)值 Gamma[expr] 計(jì)算表達(dá)式的伽瑪函數(shù)值 Erf[expr]
計(jì)算表達(dá)式的誤差函數(shù)
統(tǒng)計(jì)函數(shù)
NormalDistribution[?,?] 正態(tài)分布 StudentTDistribution[v] 學(xué)生分布 ChiSquareDistribution[v] ?2分布 FRatioDistribution[m,n] F分布 UniformDistribution[min,max] 均勻分布 ExponentialDistribution[?] 指數(shù)分布
LaplaceDistribution[?,?] 拉普拉斯分布 GammaDistribution?, ?] ?分布 BetaDistribution[?, ?] ?分布 CauchyDistribution[a,b] 柯西分布 BernoulliDistribution[p] 貝努利分布 BinomialDistribution[n,p] 二項(xiàng)分布 PoissonDistribution[?] 泊松分布
PDF 求分布的密度函數(shù) CDF 求分布的概率函數(shù) Mean 求均值 Variance 求方差 Quantile 求距 Skewness 求峰度 Kurtosis 求偏度 ExpectedValue 求期望
RandomReal 產(chǎn)生隨機(jī)實(shí)數(shù) RandomInteger 產(chǎn)生隨機(jī)整數(shù)(6).自定義函數(shù)
f[x_]:=expr 定義函數(shù)f f[x_,y_]:=expr 定義多變量函數(shù)f.Piecewise[{{val1,cond1},{val2,cond2},?}] 用于定義分段函數(shù) ?f 顯示函數(shù)的定義 Clear[f] 清除函數(shù)f x=value 給x賦值
x=.清除變量x的值
expr/.x->value 用value替換expr中的x(7).表達(dá)式化簡(jiǎn)
Simplify[expr] FullSimplify[exper] Simplify[expr,assum] assum 選項(xiàng)
Element[x,Reals] 或 x?Reals Element[x,Integers] 或 x?Integers Element[x,Complexs] 或 x?Complexs Element[x,Primes] 或 x?Primes Element[x,Rationals] 或 x?Rationals Element[x,Booleans] 或 x?Booleans Assumptions Assumming
2.多項(xiàng)式與有理函數(shù)(1).多項(xiàng)式
1、多項(xiàng)式的普通運(yùn)算 Expand[poly] 展開多項(xiàng)式乘積與乘方 Factor[poly] 對(duì)多項(xiàng)式進(jìn)行因式分解 FactorTerms[poly] 提取數(shù)字公因子
FactorTerms[poly,patt] 提取關(guān)于patt的公因子
Collect[poly,x] 以x冪的形式重新排列多項(xiàng)式 Collect[poly,{x,y,...}] 以x、y、...冪的形式重新排列多項(xiàng)式 Expand[poly,patt] 展開與patt相匹配的多項(xiàng)式poly
2、得到多項(xiàng)式的結(jié)構(gòu)
PolynomialQ[expr,x] 判斷expr是否為關(guān)于x 的多項(xiàng)式
PolynomialQ[expr,{x,y,...}] 判斷expr是否為關(guān)于x,y,...的多項(xiàng)式 Variables[poly] 列出多項(xiàng)式poly中的變量 Length[poly] 列出多項(xiàng)式poly的項(xiàng)數(shù)
Exponent[poly,x] 給出多項(xiàng)式poly的x的最高指數(shù) Coefficient[poly,expr] 給出多項(xiàng)式poly中關(guān)于expr的系數(shù)
CoefficientList[poly,{x,y,..}] 生成多項(xiàng)式poly中關(guān)于x、y、...的系數(shù)
3、多項(xiàng)式的代數(shù)運(yùn)算
PolynomialQuotient[poly1,poly2,x] 求出關(guān)于x的多項(xiàng)式poly1除以poly2的商,忽略余式 PolynomialRemainder[poly1,poly2,x] 求出關(guān)于x的多項(xiàng)式poly1除以poly2的余式
PolynomialQuotientRemainder[poly1,poly2,x] 求出關(guān)于x的多項(xiàng)式poly1除以poly2的商和余式 PolynomialReduce[poly,{poly1,poly2,...},{x1,x2,...}] PolynomialGCD[poly1,poly2] 尋找兩個(gè)多項(xiàng)式的最大公因式 PolynomialLCM[poly1,poly2] 尋找兩個(gè)多項(xiàng)式的最小公倍式 Resultant[poly1,poly2,x] 尋找兩個(gè)多項(xiàng)式的消元式 Discriminant[poly, x] 給出多項(xiàng)式有根的判別式
PolynomialReduce[poly,{poly1,poly2,...},{x1,x2,...}] 尋找使用ployi表示poly的最小表示式(2).有理式
關(guān)于有理多項(xiàng)式的運(yùn)算
ExpandNumerator[expr] 僅把有理表達(dá)式的分子展開 ExpandDenominator[expr] 僅把有理表達(dá)式的分母展開 Expand[expr] 僅展開分子,并把分母分成單項(xiàng) ExpandAll[expr] 同時(shí)展開有理表達(dá)式的分子和分母 ExpandAll[expr,patt] 僅展開與patt匹配的項(xiàng) Together[expr] 合并具有相同分母的項(xiàng)
Apart[expr] 以最簡(jiǎn)分母項(xiàng)和的形式書寫表達(dá)式 Cancel[expr] 約去分子分母中的公因子
Factor[expr] 將有理式合并,并同時(shí)對(duì)分子分母因式分解 Numerator[expr] 獲取有理表達(dá)式的分子 Denominator[expr] 獲取有理表達(dá)式的分母(3).三角函數(shù)表達(dá)式
1、三角表達(dá)式
TrigExpand[expr] 將三角函數(shù)表達(dá)式轉(zhuǎn)化為和差
TrigFactor[expr] 將三角函數(shù)表達(dá)式和差形式轉(zhuǎn)化為乘積形式 TrigReduce[expr] 用倍角的方法化簡(jiǎn)三角表達(dá)式 TrigToExp[expr] 將三角函數(shù)表達(dá)式轉(zhuǎn)化為指數(shù)形式 ExpToTrig[expr] 將指數(shù)形式表達(dá)式轉(zhuǎn)化為三角函數(shù)形式
2、含有復(fù)數(shù)變量的表達(dá)式
ComplexExpand[expr] 展開表達(dá)式expr,并假定所有的變量都是實(shí)數(shù) ComplexExpand[expr,{x1,x2,...}] 展開表達(dá)式expr,并假定x1,x2,...變量都是復(fù)數(shù)
3.代數(shù)方程與不等式(1)代數(shù)方程求解
Solve[eq var] 求解方程eqns中的未知變量vars Solve[{eq1,eq2,...},{var1,var2,...}] 求解方程組
Root[f,k] 求解方程f[x]=0的第k個(gè)根
Reduce[eqns vars] 給出含未知常數(shù)方程eqns所有可能的情況 Eliminate[eqns,elims], 消去方程eqns中變量elims RSolve[eqns,vars[n]] 求遞推方程eqns的通解vars[n] Resolve(2)不等式求解
Reduce[{eqns1, eqns2,...}, x] 給出滿足不等式eqnsi的x的集合
4.微積分(1).求極限
x0f(x)Limit[f,x->x0] x?limLimit[f,x?x0Limit[f,x?x0
x0,Direction->1] x?x0,Direction->-1] x?limf(x)f(x)
lim(2).求(偏)導(dǎo)
D[exp,x] 計(jì)算表達(dá)式一階(偏)導(dǎo)數(shù) D[exp,x1,x2,?xn] 計(jì)算表達(dá)式混合偏導(dǎo)數(shù)
D[exp,{x,n}] 計(jì)算表達(dá)式對(duì)x的n階(偏)導(dǎo)數(shù) D[exp,{{x1,x2,...}}] 計(jì)算向量函數(shù)(偏)導(dǎo)數(shù)
Derivative[n 1,n2,?][f] 對(duì)f的第一個(gè)變量求n1階導(dǎo)數(shù),第二個(gè)變量求n2階導(dǎo)數(shù),...Dt[exp] 計(jì)算表達(dá)式的全微分df Dt[exp,x] 計(jì)算表達(dá)式關(guān)于x的全導(dǎo)數(shù)df/dx
Dt[exp,x1,x2, ? xn] 計(jì)算表達(dá)式關(guān)于x1,x2,?xn的全導(dǎo)數(shù)d/dx1 d/dx2...d/dxn f Dt[exp,x,Constants->{c1,c2,?, cn}] 計(jì)算表達(dá)式關(guān)于x的全導(dǎo)數(shù),并指出表達(dá)式中 ci為常數(shù) Maximize[f,{x,y,?}] 求變量為x,y,?函數(shù)f的最大值.Maximize[{f,cons},{x,y,?}] 求在約束條件cons下函數(shù)f的最大值
Minimize[f,{x,y,?}] 求變量為x,y,?函數(shù)f的最小值.Minimize[{f,cons},{x,y,?}] 求在約束條件cons下函數(shù)f的最小值
FindMinimum[{f,cons},{x,x0},{y,y0}?] 求在約束條件cons下函數(shù)f的局部最小值(3).求積分 Integrate[exp,x] 求表達(dá)式關(guān)于x的不定積分
Integrate[exp,{x,a,b}] 求表達(dá)式關(guān)于x在區(qū)間[a,b]上的定積分 NIntegrate[exp,{x,a,b}] 求表達(dá)式關(guān)于x在區(qū)間[a,b]上的數(shù)值積分 Integrate[exp,{x,a,b},{y,c,d}] 求x,y在區(qū)間[a,b][c,d]上的二重積分 Integrate[Boole*ieq,{x,a,b},{y,c,d}] 求不等式所限制的區(qū)域上的二重積分(4).冪級(jí)數(shù)展開
Series[exp,{x,x0,n}] 對(duì)表達(dá)式在x0處進(jìn)行n階展開
Series[exp,{x,x0,n1},{y,y0,n2}] 對(duì)二元表達(dá)式在x0,y0處進(jìn)行n1,n2階展開 Series1/.x->Series2 將級(jí)數(shù)Series2代入級(jí)數(shù)Series1 Normal[exp] 將級(jí)數(shù)轉(zhuǎn)化為函數(shù)表達(dá)式(即:除去余項(xiàng))Residue[exp,{x,x0}] 求exp在x=x0處的留數(shù)(5).微分方程
DSolve[eqn,y[x],x] 求解微分方程解y[x] DSolve[eqn,y,x] 求解微分方程解函數(shù) DSolve[{eqn1,eqn2,?eqnn},{y1,y2,?yn},x] 求解微分方程組的解
DSolve[eqn, y[x1,x2,...], {x1,x2,...}] 求解偏微分方程的解(6).和與積
Sum[f,{i,imin,imax}] 和式
Sum[f,{i,imin,imax,di}] 關(guān)于i求和,i的步長(zhǎng)為di
Sum[f,{i,imin,imax},{j,min,jmax}] 多重求和
Product[f,{i,imin,imax}] 求積(7).一些用于迭代的函數(shù)
Nest[f,x,n] 對(duì)x嵌套運(yùn)用f函數(shù)n次 NestList[f,x,n] 產(chǎn)生一n元嵌套列表{x,f(x),f(f(x)),...}。FixPoint[f,x] 求x=f(x)的不動(dòng)點(diǎn)
FixPointList[f,x] 產(chǎn)生一列表{x,f(x),f(f(x)),...},直到不動(dòng)點(diǎn)為止 FixPoint[f,x,SameTest?Comp] 求x=f(x)的迭代,直到滿足comp為止 Fold[f,x0,{a,b,...}] FoldList[f,x,{a,b,...}] 產(chǎn)生一列表{x,f(x,a),f(f(x,a),b),...}
5.線性代數(shù)
(1).數(shù)表與矩陣的輸入及其構(gòu)造
v={a1,a2,...an} 輸入一個(gè)名為v的n維向量(表),其中ai為數(shù)值或?yàn)楸磉_(dá)式 p={{e11,e12,?e1n},?,{em1,em2,?emn}} 輸入一個(gè)名為p的m×n矩陣(多維表),其中eij為數(shù)值或?yàn)楸磉_(dá)式 v=Table[f,{i,m}] 輸入一個(gè)名為v的n維向量(表), 其元素f為i的函數(shù)
p=Table[f,{i,m},{j,n}] 輸入一個(gè)名為p的m×n矩陣, 其元素f為i,j的函數(shù) p=Array[f,{i,m},{j,n}] 輸入一個(gè)名為p的m×n矩陣,其元素為f[i,j] p=Range[f,{n}] 生成一列表{f[1],f[2],....f[n]} p=DiagonalMatrix[{e1,e2,?,en}] 輸入一個(gè)名為p的n階對(duì)角陣,對(duì)角元素為e1,e2,?,en
????imaxi?iminfimaxi?iminjmaxj?jminf
imaxi?iminfp=IdentityMatrix[n] 輸入一個(gè)名為t的n階單位陣 p=Table[0,{m},{n}] 輸入一個(gè)名為t的m×n零矩陣
p=Table[If[i>=j,f,0],{i,m},{j,n}] 輸入一個(gè)名為p的m×n下三角陣,其元素f為i,j的函數(shù) p=Table[If[i<=j,f,0],{i,m},{j,n}] 輸入一個(gè)名為p的m×n上三角陣其元素f為i,j的函數(shù) p=Normal[SparseArry[{{i1,j1}->v1,{i2,j2}->v2,...},{m,n}] 構(gòu)造一矩陣其在ik行jk列的值為vk,其余為0。Tuples Subsets Permutations RandomChoice
(2).矩陣的剪裁
v[[i]](Part[v,i])取出向量v的第i個(gè)元素 M[[i,j]] 取出矩陣M的元素m(i,j)M[[i]] 取出矩陣M的第i行 M[[All,i]] 取出矩陣M的第i列
M[ {i1,i2?ir},{ j1,j2?js }] 取出矩陣M的一個(gè)r×s子矩陣,它由i1, 行和 j1, ?js列相交處的元素構(gòu)成 M[{Range[ i0,i1],Range[ j0,j1]}] 或Take[M,{i0,i1}, {j0,j1}] 取出矩陣M的一個(gè)子塊,它由 i0到 i1行和 j0Minors[M,i] 算出矩陣M的一個(gè)i×s的i階余子式矩陣 ArrayRules[M] 矩陣M中非零元素的位置 Tr[M,List] 矩陣M對(duì)角線上的元素
M[[i,j]]=v 將矩陣M的i行j列的元素?fù)Q為v。M[[i]]=v 將矩陣M的i行的元素全換為v。
M[[i]]={v1,v2,...} 將矩陣M的i行的元素全換為{v1,v2,...}。M[[All,j]]=u 將矩陣M的j列的元素全換為u。
M[[All,j]]={u1,u2,...} 將矩陣M的j列的元素全換為{u1,u2,...}。First Last Rest Most Take Drop TakeWhile Append Prepend Insert Delete AppendTo PrependTo RotateLeft RotateRight Reverse
ir 到j(luò)1列相交處的元素構(gòu)成? Partition Flatten Sort Join Riffle(3).矩陣的運(yùn)算
c*v 常數(shù)乘矩陣 v.u 向量?jī)?nèi)積 Norm[u] 求向量u的模
v*m 向量對(duì)應(yīng)的元素相乘 m.v 矩陣乘向量 m.p 矩陣相乘 Cross[v,v] 向量差積
m*p 矩陣對(duì)應(yīng)的元素相乘 VectorAngle[u,v] 求兩向量的夾角 Normalize[u] 將向量u單位化 Orthogonalize[{u,v,...}] 將向兩組正交化 Projection[u,v] 求向量u到v上的投影 Outer[Times,m,n] 求矩陣的外積 Transpose[m] 求矩陣的轉(zhuǎn)置 Inverse[m] 求矩陣的逆矩陣 Det[m] 求矩陣的行列式
Minors[m,k] 矩陣所有可能的k*k階子式 MatrixPower[m,i] 求矩陣m的i次冪
MatrixExp[m] 求以矩陣m作為指數(shù)的值 Tr[m] 求矩陣的跡
CharacteristicPolynomial[m,x] 求矩陣的特征多項(xiàng)式。Chop[%] 舍棄上一個(gè)輸出中的無意義的小量 MatrixPlot[M] 打印矩陣 Map Apply(4).解線性方程組
LinearSolve[m,w] 求解線性方程組m.x=w的解 NullSpace[m] 求矩陣m的零化子空間
RowReduce[m] 用Gauss消元將矩陣m化為對(duì)角形式 MatrixRank[m] 求矩陣m的秩
LeastSquares[m,w] 求線性方程組m.x=w的最小二乘解(5).特征值,特征向量及分解
Eigenvalues[m] 求矩陣m的特征值
Eigenvalues[m,k] 矩陣m的最大的前k個(gè)特征值 Eigenvectors[m] 求矩陣m的特征向量
Eigenvectors[m,k] 對(duì)應(yīng)矩陣m的最大的前k個(gè)特征值的特征向量 Eigensystems[m] 求數(shù)字矩陣m的特征值和特征向量 Eigenvalules[{m,a}] 求矩陣m關(guān)于a的廣義特征值 Eigenvectors[{m,a}] 求矩陣m關(guān)于a的廣義特征向量 QRDecomposition[m] 求數(shù)字矩陣m的QR分解 SchurDecomposition[m] 求數(shù)字矩陣m的Schur分解 LUDecomposition[m] 求數(shù)字矩陣m的LU分解
CholeskyDecomposition[m] 求數(shù)字矩陣m的Cholesky分解 JordanDecomposition[m] 求數(shù)字矩陣m的Jordan分解 SingularValues[m] 求數(shù)字矩陣m的奇異值分解 PseudoInverse[m] 求數(shù)字奇異矩陣m的擬逆
6.數(shù)值計(jì)算
(1).數(shù)據(jù)擬合與插值
ff=Table[N[f[x]],{x,n}] 輸入名為ff的擬合函數(shù)表,變量x在區(qū)間[0,n]上,間距為1。fp=Fit[ff,{f1,f2,?,fn},x] 建立名為fp的擬合函數(shù),它由f1,?,fn的線性組合形成,擬合變量為x。fp=FindFit[ff,form,{pars1,pars2,...},x] 建立名為fp的擬合函數(shù),函數(shù)形式form已知,求參數(shù)parsi。fp=Fit[ff,Table[x^i,{i,0,n}],x] 多項(xiàng)式擬合的簡(jiǎn)單輸入形式
ff=Flatten[Table[{x,y,f[x,y]},{x,x1,x2,dx},{y,y1,y2,dy},1] 輸入名為ff的二元擬合函數(shù)表,變量x在區(qū)間[x1,x2]上,間距為dx。變量y在區(qū)間[y1,y2]上,間距為dy。
fp=Fit[ff,{f1,f2,?,fn},{x,y}] 建立名為fp的擬合函數(shù),它由f1,?,fn的線性組合形成,擬合變量為x,y。ff={{x1,y1},{x2,y2},?,{xn,yn}} 輸入名為ff的二元插值函數(shù)表 fp=InterpolatingPolynomial[ff,x] 用牛頓法進(jìn)行多項(xiàng)式插值
ip=Interpolation[{f1,f2,...}] 構(gòu)造在整數(shù)點(diǎn)i處函數(shù)值為fi的插值多項(xiàng)式 ip=Interpolation[{{x1,f1},{x2,f2},...}] 構(gòu)造在點(diǎn)xi處函數(shù)值為fi的插值多項(xiàng)式
ip=Interpolation[{{x1,y1,f1},{x2,y2,f2},...}] 對(duì)二維整數(shù)網(wǎng)格點(diǎn)上值為fij構(gòu)造插值多項(xiàng)式
ip=ListInterpolation[List,{{xmin,xman},{ymin,ymax},...}] 對(duì)二維區(qū)域網(wǎng)格點(diǎn)值構(gòu)造插值多項(xiàng)式
ip=ListInterpolation[List,{{x1,x2,...},{y1,y2...}}] 對(duì)二維區(qū)域上給定的網(wǎng)格點(diǎn)上值構(gòu)造插值多項(xiàng)式(2).方程數(shù)值解與函數(shù)優(yōu)化
NSolve[poly==0,x] 求多項(xiàng)式方程的解
NSolve[poly==0,x,n] 求多項(xiàng)式方程的解,精度為n。FindRoot[f[x]==0,{x,x0}] 用牛頓方法求方程在x0附近的解
FindRoot[f[x]==0,{x,x0,x1}] 用割線方法求方程在x0、x1附近的解 FindRoot[{f1,f2,...},{{x,x0},{y,y0},...}] 用牛頓方法求方程組在x10,x20,?,附近的解 FindInstance[f[x]==0,x] 求方程的任意一特解
FindInstance[f[x]==0,x,dom] 求在給定范圍dom內(nèi)任意特解 FindInstance[f[x]==0,x,dom,n] 求在給定范圍dom內(nèi)任意n個(gè)特解 NIntegrate[f[x],{x,xmin,xmax}] 計(jì)算一元定積分
NIntegrate[f[z],{z,z0,z1,?,zn,z0}] 計(jì)算復(fù)變函數(shù)的回路積分 NIntegrate[f[x,y],{x,a,b},{y,c,d}] 計(jì)算二元定積分
LinearProgramming[c,m,b] 求滿足m.x>b,x>0約束使c.x最小的x LinearProgramming[c,m,b,l] 求滿足m.x>b,x>l約束使c.x最小的x FindMinimum[f[x],{x,x0}] 求函數(shù)f(x)在x0附近的局部極小值
FindMinimum[f,{{x,x0},{y,y0},...}] 求函數(shù)f在{x0,y0,...}附近的局部極小值 FindMaximum[f[x],{x,x0}] 求函數(shù)f(x)在x0附近的局部極大值
FindMaximum[f,{{x,x0},{y,y0},...}] 求函數(shù)在{x0,y0,...}附近的局部極大值 NMinimize[f,{x,y,...}] 求多元函數(shù)函數(shù)f最小
NMinimize[{f,cons} ,{x,y,...}] 求在約束cons下函數(shù)f最大值 NMaximize[f,{x,y,...}] 求多元函數(shù)函數(shù)f最大值
NMaximize[{f,cons}, {x,y,...}] 求在約束cons下函數(shù)f最大值值(3).微分方程數(shù)值解
NDSolve[equ,y,{x,xmin,xmax}] 給出方程在區(qū)間[xmin,xmax]上關(guān)于y的數(shù)值解。NDSolve[equs,{y1,y2,...},{x,xmin,xmax}] 給出方程在區(qū)間[xmin,xmax]上關(guān)于函數(shù)yi的數(shù)值解。NDSolve[equs,u,{t,tmin,tmax},{x,xmin,xmax},...] 給出偏微分方程組上關(guān)于函數(shù)u的數(shù)值解。NDSolve[equs,{u1,u2,...},{t,tmin,tmax},{x,xmin,xmax},...] 給出偏微分方程組上關(guān)于函數(shù)ui的數(shù)值解。y[x]/.solution 得到方程插值形式的解y[x].Plot[Evaluate[y[x]/.solution],{x,xmin,xmax}] 打印出微分方程解的圖形
7.繪圖
(1).平面圖形 顯函數(shù)繪圖
Plot[f, {x, x1, x2}, “選項(xiàng)”] 打印函數(shù)f在區(qū)間[x1, x2] 上的圖形
Plot[{f1, f2,...}, {x, x1, x2}, “選項(xiàng)”] 在同一幅圖上打印出函數(shù)f1, f2,...在區(qū)間[x1, x2] 上的圖形 參數(shù)方程繪圖
ParametricPlot[{x[t], y[t]}, {t, t0, t1}, “選項(xiàng)”] 畫出參數(shù)形式給出的函數(shù)曲線圖形 ParametricPlot[{fx, fy}, {u, u0, u1}, {v, v0, v1}, Option] 畫出參數(shù)形式給出的函數(shù)所描述的區(qū)域圖形 極坐標(biāo)圖形
PolarPlot[r, {theta, theta1, theta2}] 畫出極坐標(biāo)形式給出的函數(shù)曲線圖形 PolarPlot[{r1, r2,...}, {theta, theta1, theta2}] 同時(shí)畫出多個(gè)極坐標(biāo)形式給出的函數(shù)曲線圖形 隱函數(shù)圖形
ContourPlot[f(x, y)== 0, {x, xmin, xmax}, {y, ymin, ymax}] 打印隱函數(shù)f == 0 所描述的曲線圖 等高線圖形
ContourPlot[f, {x, xmin, xmax}, {y, ymin, ymax}] 打印函數(shù)f所對(duì)應(yīng)的等高線圖 密度圖形
DensityPlot[f, {x, xmin, xmax}, {y, ymin, ymax}] 打印函數(shù)f所對(duì)應(yīng)的密度圖 區(qū)域圖形
RegionPlot[ineq, {x, xmin, xmax}, {y, ymin, ymax}] 打印不等式ineq所描述的區(qū)域圖 Show[{g1, g2,..., gn}, Option] 顯示幾個(gè)已畫出的函數(shù)圖形 離散點(diǎn)圖形
ListPlot[{y1, y2,..., yn}] 畫出列表形式給出的函數(shù)圖象(橫坐標(biāo)為整數(shù))ListPlot[{{x1, y1}, {x2, y2},..., {xn, yn}}] 畫出表形式給出的函數(shù)圖象 ListLinePlot[list1, list2,..., Option] ListContourPlot[array] ListContourPlot[{{x1, y1, f1}, {x2, y2, f2},...}] ListDensityPlot[array] ListDensityPlot[{{x1, y1, f1}, {x2, y2, f2},...}] ArrayPlot[array] ReliefPlot[array] MatrixPlot[matrix]
Option選項(xiàng)常用的有: 圖形界面選項(xiàng)
Frame-> “True” 給圖形加上圖框 FrameLabel-> None, FrameStyle-> {}, FrameTicks-> Automatic, FrameTicksStyle-> {}, AspectRatio-> Automatic,Background-> None, GridLines-> None, GridLinesStyle-> {}, ImageSize-> Automatic, Mesh-> None, MeshShading-> None, MeshStyle-> Automatic, 坐標(biāo)軸選項(xiàng) Axes-> True, AxesOrigin-> Automatic, AxesStyle-> {}, AxesLabel-> “名1,名2” 是否給坐標(biāo)軸加上名字 RotateLabel-> True, Ticks-> Automatic, TicksStyle-> {} 圖形選項(xiàng)
PlotPoints-> 數(shù)字 畫圖時(shí)計(jì)算函數(shù)的點(diǎn)數(shù)
PlotStyle-> RGBColor[a, b, c] 產(chǎn)生彩色圖, a, b, c為[0, 1] 中的值 PlotRange-> {y1, y2} 指定函數(shù)因變量的區(qū)間 PlotLabel-> “圖名” 是否給圖形加上名字 ColorFunction-> Automatic, ColorFunctionScaling-> True, ColorOutput-> Automatic, Epilog-> {}, Filling-> None, FillingStyle-> Automatic, LabelStyle-> {}, Method-> Automatic, PlotRangeClipping-> True, PlotRegion-> Automatic, Prolog-> {}
ColorFunction-> Automatic, ColorFunctionScaling-> True, ColorOutput-> Automatic, ContourLabels-> None, ContourLines-> True, Contours-> Automatic, ContourShading-> Automatic, ContourStyle-> Automatic, Exclusions-> Automatic, GridLines-> None, GridLinesStyle-> {}, ImageMargins-> 0., ImageSize-> Automatic, LabelStyle-> {}, PlotPoints-> Automatic, PlotRange-> {Full, Full, Automatic}, PlotRegion-> Automatic Prolog-> {}, RegionFunction->(True &), RotateLabel-> True, Ticks-> Automatic, TicksStyle-> {}
(2).空間圖形
Plot3D[f[x,y],{x,xmin,xmax},{y,ymin,ymax},Option] 繪制函數(shù)z=f(x,y)在給定范圍內(nèi)的三維圖形。ParametricPlot3D[{x[t],y[t],z[t]},{t,t1,t2},Options] 繪制三維空間的曲線圖。
ParametricPlot3D[{fx[u,v],fy[u,v],fz[u,v]},{u,u1,u2},{v,v1,v2},Option] 繪制三維空間的曲面圖 RevolutionPlot3D SphericalPlot3D RegionPlot3D Show[圖形名,Option] 顯示已繪制好的圖形,按特別說明加以修改 CotourPlot3D[f[x,y,z],{x,xmin,xmax},{y,ymin,ymax},{z,zmin,zmax}] 繪制函數(shù)f=f(x,y,z)在給定范圍內(nèi)的等值面圖。ListPlot3D ListPointPlot3D 繪制3維散點(diǎn)圖 ListSurfacePlot3D ListContourPlot3D 8.編程
(1).條件結(jié)構(gòu)
If[cond,then,else,none] 如果cond成立,計(jì)算then;不成立,計(jì)算else;無法判定,計(jì)算none。Which[cond1,value1,cond2,value2,...,True,value] 如果條件cond1成立,計(jì)算value1,條件cond2成立,計(jì)算value2,...,全不成立,計(jì)算value。lhs:=rhs/;cond 如果cond成立,定義lhs為rhs,Switch[expr,form1,valu1,form2,value2,...,_,def] 如果條件cond1成立,計(jì)算value1,條件cond2成立,計(jì)算value2,...,都不相等,計(jì)算def。(2).循環(huán)結(jié)構(gòu)
Do[expr[i],{i,min,max,id}] 計(jì)算表達(dá)式expr[i],i從min到max,步長(zhǎng)為id。Do[expr,{n}] 計(jì)算表達(dá)式expr n次。
While[cond,expr] 只要cond為true,就計(jì)算expr。For[start,test,incr,expr] 從start開始計(jì)算expr一次,再計(jì)算incr一次,直到test為false結(jié)束.
第五篇:vfp命令、語句等說明總結(jié)
VFP命令、函數(shù)及程序語句大全
VFP提供一些簡(jiǎn)單的程序設(shè)計(jì)語言命令,包括賦值語句、控制語句、設(shè)置命令等,我們可根據(jù)某種功能的需要,利用這些命令及數(shù)據(jù)庫操作的有關(guān)命令構(gòu)成語句,分行存在文件中(稱為命令文件,以. PRG為擴(kuò)展名,在項(xiàng)目管理器中標(biāo)為“程序”)或一些對(duì)象的過程或事件處理程序中。如被調(diào)用,系統(tǒng)將一條條順序執(zhí)行各行命令,如遇到控制語句(IF,DO,CALL,F(xiàn)OR?等),依據(jù)控制語句的指定,轉(zhuǎn)移到指定語句再一條條順序執(zhí)行。
這些命令書寫時(shí),每條語句應(yīng)在一行中寫完,如不能寫完,可用分號(hào)“;”結(jié)束,表示下一行繼續(xù)。兩條語句不能寫在一行上。每條語句中命令字及選項(xiàng)中保留字大多數(shù)可只書寫前四個(gè)字符。
一般一個(gè)簡(jiǎn)單的VFP應(yīng)用系統(tǒng)由若干模塊組成,各自完成一定的功能,總的系統(tǒng)用一個(gè)總控模塊去控制,通過它調(diào)用子模塊,層層調(diào)用以實(shí)現(xiàn)全系統(tǒng)的功能。這種結(jié)構(gòu)如圖5.4所示。這種方式便于設(shè)計(jì)、調(diào)試,保證程序的正確性,也容易實(shí)現(xiàn)模塊共亭,實(shí)現(xiàn)軟件重用,提高程序設(shè)計(jì)效率。
主模塊可由主封面表單、主命令文件和主菜單文件構(gòu)成;各個(gè)模塊可由過程、自定義函數(shù)、表單、表單集、應(yīng)用程序或子菜單等構(gòu)成。
一個(gè)表單或一個(gè)表單集中可有一到多個(gè)用戶界面,可設(shè)置一到多個(gè)命令按鈕及其他程序控件,用戶可利用按鈕及程序控件,產(chǎn)生特定的消息觸發(fā)執(zhí)行一個(gè)程序,完成一個(gè)功能。應(yīng)用程序是對(duì)一個(gè)模塊編譯后的. APP執(zhí)行文件,“過程”是由命令組成的程序,以RETURN語句結(jié)束,它可為另一個(gè)程序所調(diào)用,調(diào)用執(zhí)行時(shí)遇到RETURN語句將返回其調(diào)用程序。
圖 5.4 VFP程序總體結(jié)構(gòu)
一.變量賦值與顯示語句
在項(xiàng)目管理器中選“代碼→程序→新建”或在命令框利用命令MODIFY COMMAND建立命令文件。
1.MODIFY COMMAND
意義:創(chuàng)建命令文件。
命令格式:MODIFY COMMAND 文件名
例如:MODIFY COMMAND PROC1
執(zhí)行此命令后,將進(jìn)入全屏幕編輯狀態(tài)。如原已建立了該文件proc1,將調(diào)出該文件在屏幕上顯示,用戶可對(duì)之修改。如是新文件,則用戶可利用全屏幕編輯鍵,輸入自己的程序。新文件將自動(dòng)加上擴(kuò)展名.PRG。
2.DO
意義:執(zhí)行命令文件程序,有三種方法:①在項(xiàng)目管理器中選“代碼→程序→選擇程序名→運(yùn)行”。②在主菜單中選“程序→運(yùn)行→輸入(選擇)程序名→運(yùn)行”。③在程序中或命令窗日中使用DO命令。命令格式:DO 程序名[WITH 表達(dá)式表]
程序名可以是上述方式建立的命令文件(.PRG文件)、可執(zhí)行文件(.EXE文件)、應(yīng)用程序(.APP文件),及對(duì).PRG文件編譯后的文件(.FXP文件)。如調(diào)用DO命令時(shí)不帶擴(kuò)展名,則按.EXE文件、.APP文件、.FXP文件、.PRG文件的順序查找同名程序并執(zhí)行之。
例如:DO PROC1
此外,程序名還可能是菜單程序,調(diào)用時(shí)必須帶擴(kuò)展名(.MPR)。例如,有菜單程序MAIN.MPR,則可如下調(diào)出執(zhí)行:
DO MAIN.MPR
程序名還可以是事件名或過程名。
其中表達(dá)式表由多個(gè)表達(dá)式組成,用逗號(hào)分開,在執(zhí)行時(shí)首先計(jì)算各表達(dá)式的值,并帶入被調(diào)程序,被調(diào)程序第一句應(yīng)是LPARAMETERS形參表語句,形參表是以逗號(hào)分隔的多個(gè)內(nèi)存變量名,其個(gè)數(shù)應(yīng)等于調(diào)用時(shí)的表達(dá)式的個(gè)數(shù),執(zhí)行時(shí),首先用調(diào)用語句中各表達(dá)式的值對(duì)應(yīng)給它們賦值。
例如:主程序中:DO PROC1 WITH “AB”,21
被調(diào)程序:LPARAMETERS M1,X0
執(zhí)行時(shí),首先完成賦值:M1=“AB”;X0=21,再往下執(zhí)行。
當(dāng)使用DO運(yùn)行一個(gè)程序時(shí),包含在其中的命令一直執(zhí)行,直到下列某一事件發(fā)生。遇到RETURN語句,返回到調(diào)用程序DO命令的下一句,遇到了CANCEL命令,返回VFP命令狀態(tài)。遇到QUIT命令退出程序并退出VFP;到達(dá)文件尾回到調(diào)用前狀態(tài);再遇到另一個(gè)DO命令,將轉(zhuǎn)人新程序執(zhí)行。
3.PUBLIC
意義:設(shè)置全局性內(nèi)存變量命令。
格式:PUBLIC 變量名1[,變量名2]?
在不同程序或過程或事件中,同名內(nèi)存變量的值不一定相同,如要將一個(gè)程序(過程、事件)中變量的值傳到另一程序(過程、事件)中,可應(yīng)用上述命令將它定義成全局變量。
4.PRIVATE
意義:設(shè)置局部變量的命令。
格式:PRIVATE[ALL[LIKE∣EXCEPT 通配符]∣內(nèi)存變量表]
其中選項(xiàng)意義:ALL將所有內(nèi)存變量說明為局部性變量,ALL[LIKE∣EXCEPT 通配符]將變量名能與通配符相匹配的內(nèi)存變量說明為局部性變量。“ALL EXCEPT通配符”將除了能與通配符相匹配的變量名之外的內(nèi)存變量說明為局部性變量。在程序中,為了一個(gè)程序的運(yùn)行結(jié)果不影響另一個(gè)程序的執(zhí)行,不希望同名變量將值從一個(gè)程序帶到另一個(gè)程序而造成干擾。為此,可將該變量定義成局部性變量。
5.DIMENSION
意義:定義內(nèi)存變量數(shù)組命令,VFP中可定義一維或二維數(shù)組。
格式:DIMENSION 數(shù)組名(數(shù)字表達(dá)式1[,數(shù)字表達(dá)式2])[,數(shù)組名2(數(shù)字表達(dá)式1[,數(shù)字表達(dá)式2])]?
每個(gè)數(shù)組的每個(gè)元素都可單獨(dú)使用,如同一個(gè)內(nèi)存變量,稱為下標(biāo)變量,下標(biāo)起始值為1。
例如,DIMENSION ARRAY1(8,20),X1(30)定義了兩個(gè)數(shù)組,數(shù)組名分別為ARRAY1和X1,前一個(gè)數(shù)組共有20×8=160個(gè)元素:ARRAY1(l,l)、ARRAY1(l,2)?? ARRAY1(l,20),ARRAY1(2,1)?ARRAY1(8,20)。對(duì)各元素也可用單下標(biāo)取用其值,如用ARRAY1(l),ARRAY1(2)?ARRAY1(160)也可訪問該數(shù)組各元素,與前面雙下標(biāo)表示形式一一對(duì)應(yīng)。
6.PUBLIC ARRAY
意義:定義全局性內(nèi)存變量數(shù)組。
格式:PUBLIC ARRAY 數(shù)組名(數(shù)字表達(dá)式1[,數(shù)字表達(dá)式2])[,數(shù)組名2(數(shù)字表達(dá)式1[,數(shù)字表達(dá)式2])]?
7.=
意義:賦值語句。
將表達(dá)式的值賦值給一個(gè)內(nèi)存變量。對(duì)變量賦值后,該變量類型也即確定為表達(dá)式返回值的類型。對(duì)一個(gè)變量可重復(fù)賦值,也可改變變量的類型。但為了保證程序的清晰和結(jié)構(gòu)完整,建議在一個(gè)系統(tǒng)中每個(gè)變量名應(yīng)有確定的意義和數(shù)據(jù)類型。
8.STORE
意義:同時(shí)對(duì)多個(gè)變量賦值命令。
格式:STORE 表達(dá)式 TO變量1[,變量2]?
在程序運(yùn)行時(shí)常要求用戶輸入控制參數(shù)或數(shù)據(jù),實(shí)現(xiàn)此功能語句我們稱為人機(jī)對(duì)話語句。在程序中如插入人機(jī)對(duì)話語句,用戶可借助鍵盤輸入?yún)?shù)或控制量賦值給變量。控制程序走向,或用于不同數(shù)據(jù)處理。在程序執(zhí)行到這類語句時(shí),將停止運(yùn)行,在屏幕上顯示命令中附注的提示信息,同時(shí)等待用戶從鍵盤輸入數(shù)據(jù),賦給所指定的變量。完成賦值之后再接著運(yùn)行下一條語句。在VFP中這類語句可在主控程序中或在調(diào)試程序時(shí)使用,在表單程序中使用文本框等各種控件及消息框代替它們。
9.INPUT
意義:輸入各種類型數(shù)據(jù)賦給內(nèi)存變量
格式:INPUT “提示信息” TO 內(nèi)存變量名
本命令允許輸入字符類型、數(shù)值類型、日期類型、邏輯類型等不同類型的數(shù)據(jù),要求輸入數(shù)據(jù)是字符類型時(shí),數(shù)據(jù)兩端要加定界符,例“張平”;輸入數(shù)據(jù)是日期類型時(shí),要按{MM/DD/YY}或設(shè)定的格式,例{12/21/00};邏輯類型按.T.、.F.格式。
用戶輸入還可以是包括變量名及函數(shù)在內(nèi)的表達(dá)式,但變量必須是己賦值的,表達(dá)式是可以計(jì)算出確定值的。用戶輸入完后回車表示輸入結(jié)束。
例:INPUT“請(qǐng)輸入初始日期:” TO D1
屏幕上顯示:“請(qǐng)輸入初始日期:”,光標(biāo)在此句之后。用戶可輸入{05/10/96}。
此時(shí)用戶如果執(zhí)行命令:?D1
屏幕上將顯示:05/10/96
10.ACCEPT
意義:輸入字符串賦給變量。
格式:ACCEPT[“提示內(nèi)容”]TO內(nèi)存變量名
該命令和INPUT命令區(qū)別有兩點(diǎn):
.輸入數(shù)據(jù)均被視為字符類型。
.輸入數(shù)據(jù)兩端不需加定界符,如加了定界符,定界符被視作字符串的一部分。
11.WAIT
意義:接收單個(gè)字符賦給變量,或中斷程序,按任意鍵后繼續(xù)。
格式:WAIT [“提示信息”] TO 內(nèi)存變量名
該命令與ACCEPT命令不同點(diǎn)在于只接收從鍵盤輸入的一個(gè)字符,用戶輸入一個(gè)字符后無須回車。該命令也可用在VFP表單程序的某個(gè)事件中,用于中斷該事件的執(zhí)行,讓屏幕顯示程序運(yùn)行的中間結(jié)果,按某個(gè)鍵或單擊鼠標(biāo)后再繼續(xù)執(zhí)行。
12.GET
意義:格式化輸入數(shù)據(jù),給內(nèi)存變量賦值或修改表中當(dāng)前記錄字段內(nèi)容。
格式:@ 行號(hào),列號(hào) GET 內(nèi)存變量名或字段名
[FUNCTION功能代碼][PICTURE格式代碼][DEFAULT表達(dá)式][MESSAGE提示信息]
[RANGE輸入值范圍下限,輸入值范圍上限][SIZE文本框高度,文本框?qū)挾萞[VALID 條件表達(dá)式]
該命令可用于對(duì)內(nèi)存變量賦值,也可用于修改當(dāng)前打開表中當(dāng)前記錄中指定字段的內(nèi)容。如對(duì)內(nèi)存變量賦值且省略DEFAULT選項(xiàng),在使用此語句時(shí),必須已對(duì)該內(nèi)存變量賦值。否則按此選項(xiàng)中表達(dá)式對(duì)內(nèi)存變量初始化。
本命令執(zhí)行后只顯示內(nèi)存變量或字段當(dāng)前值,要到執(zhí)行命令“READ”時(shí),此語句方被激活,程序停止執(zhí)行,等待用戶從鍵盤輸入數(shù)據(jù),直待回車后才繼續(xù)執(zhí)行。行號(hào)、列號(hào)為當(dāng)前窗口中字符行和列的位置號(hào)。行號(hào)與列號(hào)允許是小數(shù)。FUNCTION選項(xiàng)用于對(duì)輸入內(nèi)容限制或變化。功能代碼:
A:只允許輸入內(nèi)容由字母字符組成,包括不允許空格和標(biāo)點(diǎn)符號(hào)。
B:數(shù)值數(shù)據(jù)左對(duì)齊,默認(rèn)格式為右對(duì)齊。
I:文本居中對(duì)齊。
J:文本右對(duì)齊,默認(rèn)為左對(duì)齊。
Sn:限定文本框中字符個(gè)數(shù)為n。如S20。
T:去掉前導(dǎo)和后綴空格。
Z:當(dāng)數(shù)值數(shù)據(jù)值為0時(shí)顯示空格。
!:把字母字符轉(zhuǎn)換為大寫。
PICTURE選項(xiàng)用于限定輸入數(shù)據(jù)的字符類型及大小。功能代碼例:
A:該位為字母或數(shù)字
L:只允許邏輯數(shù)據(jù)。
N:該位為字符或數(shù)字。
X:任何字符。
I:該位為數(shù)字,或數(shù)值數(shù)據(jù)中的符號(hào)。
-:標(biāo)明小數(shù)點(diǎn)位置。,:用逗號(hào)分隔左右數(shù)字。
!:將小寫字母轉(zhuǎn)換為大寫字符。
例:@3,10 GET x1 DEFAULT 0 PICTURE“9999.99”
此時(shí)在屏幕第3行的第10列位置顯示方框,其中內(nèi)容為DEFAULT規(guī)定的初始值0.00,如再發(fā)出命令:READ,將光標(biāo)落在尚未激活的第一個(gè)方框上等待輸入,只能輸入數(shù)字和符號(hào),且整數(shù)部分不多于4位,小數(shù)部分不多于2位,否則將提示“請(qǐng)您重新輸入”。
RANGE、VALID兩個(gè)選項(xiàng)用于保證數(shù)據(jù)完整性,輸入數(shù)據(jù)必須在預(yù)定范圍內(nèi),滿足條件表達(dá)式要求時(shí),才可完成賦值操作。本語句還有設(shè)置字體、字形和顏色的選項(xiàng)。
在VFP中,綜合上述人機(jī)交互命令尤其是@? GET命令的功能和特性,設(shè)計(jì)了文本框、編輯框等類和控件,便之應(yīng)用更加方便、簡(jiǎn)單,我們將在下一章中介紹。
程序運(yùn)行結(jié)果一般由輸出語句使其顯示在屏幕上或輸出到其他地方,輸出語句可將數(shù)據(jù)輸出到屏幕上顯示也可傳送給打印機(jī)或傳送存入到其他文件中。屏幕顯示語句在VFP中一般用在主控程序或調(diào)試程序時(shí)使用。在表單程序中使用各種控件、消息框代替它們。
13.?|??
意義:計(jì)算<表達(dá)式表>所指定的各表達(dá)式的值,并顯示在屏幕上。
格式:?表達(dá)式1[,表達(dá)式2]?
用?時(shí),從下一行第一列起顯示結(jié)果。用??時(shí),從當(dāng)前行當(dāng)前列起顯示結(jié)果。
14.SAY
意義:格式化輸出語句。
格式:@行號(hào),列號(hào) SAY表達(dá)式[FUNCTION功能代碼] [PICTURE格式代碼][SIZE高度,寬度]
有關(guān)選項(xiàng)的意義與@?GET命令相似,此外還有關(guān)于字體,顏色設(shè)置的選項(xiàng)。若發(fā)出有SET DEVICE TO PRINTER命令,輸出到打印機(jī),否則輸出至屏幕上顯示。
本語句常與@? GET語句合用,合用時(shí),行號(hào)、列號(hào)指SAY內(nèi)容顯示所在行、列號(hào),GET變量?jī)?nèi)容框?qū)⒎胖迷赟AY內(nèi)容之后。二.程序控制命令
1.IF?ENDIF命令
意義:分支條件語句,根據(jù)邏輯表達(dá)式的值,有選擇的執(zhí)行一組命令。根據(jù)條件表達(dá)式的值是.T.還是.F.控制程序流向。
格式:
IF 條件表達(dá)式
語句序列1
[ELSE
語句序列2]
ENDIF
IF條件表達(dá)式語句是條件語句的開始,ENDIF語句是條件語句的終止。語句序列是若干條順序執(zhí)行的語句。執(zhí)行時(shí)首先計(jì)算條件表達(dá)式的值,如結(jié)果為“真”(.T.)則執(zhí)行語句序列l(wèi),執(zhí)行完后退出該語句。如條件表達(dá)式不滿足,且有ELSE語句和語句序列2,則執(zhí)行語句序列2。其程序流程圖如圖5.5所示。
圖5.5 分支結(jié)構(gòu)程序流程圖
圖5.6 主控模塊程序流程圖
在一個(gè)分支控制語句塊中可以嵌套另一個(gè)IF?ENDIF語句塊。【例5.7】主控模塊的程序
程序流程圖如圖5.6所示。編寫程序清單如下: CLEAR &&清屏幕
@ 5,27 SAY “設(shè)備管理系統(tǒng)” @ 7,36 SAY “主菜單”
@10,21 PROMPT “1.各種查詢、屏幕修改”+SPAC(16)@11,21 PROMPT “2.數(shù)據(jù)編輯”+SPAC(26)@12,21 PROMPT “3.資產(chǎn)統(tǒng)計(jì)”+SPAC(26)@13,21 PROMPT “4.報(bào)表打印”+SPAC(26)@14,21 PROMPT “5.系統(tǒng)維護(hù)”+SPAC(26)MENU TO m_choic &&等待用戶輸入
IF LASTKEY()=27 &&按Esc鍵返回VFP
RETURN ENDIF
IF m_choic=1
DO sbcx_sc.spr
ELSE
IF m_choic=2
DO sjbj_sc.spr
ELSE
IF m_choic=3
DO zctj_sc.spr
ELSE
IF m_choic=4
DO bbdy_sc.spr
ELSE
IF m_choic=5
DO xtwh_pg
ENDIF
ENDIF
ENDIF
ENDIF ENDIF RETURN
2.CASE
意義:分情況語句,當(dāng)求解一個(gè)問題存在多種情況,如要求對(duì)不同選擇執(zhí)行不同的語句序列,可采用分情況語句。該語句一句中列出許多語句成分,每個(gè)語句成分給出一個(gè)條件表達(dá)式,每次只根據(jù)具體條件找出第一個(gè)條件表達(dá)式值為.T.的語句成分,執(zhí)行該成分語句中的語句序列后退出該語句。
命令格式:
DO CASE
CASE條件表達(dá)式1
語句序列1
CASE條件表達(dá)式2
語句序列2
?
CASE條件表達(dá)式n
語句序列n
[OTHERWISE
語句序列n+1]
END CASE
執(zhí)行該語句時(shí),系統(tǒng)逐一計(jì)算條件表達(dá)式1的值,條件表達(dá)式2的值?只要有一個(gè)條件表達(dá)式的值為.T.則執(zhí)行其后語句序列,執(zhí)行它后退出本分情況語句。
如到條件表達(dá)式n的值仍均為.F.又有OTHERWISE成分,則執(zhí)行語句序列n+l,其程序流程圖如圖5.7所示。
仍如上面主控程序的例子,程序可設(shè)計(jì)為:
CLEAR &&清屏幕
@ 5,27 SAY “設(shè)備管理系統(tǒng)”
@ 7,36 SAY “主菜單”
@10,21 PROMPT “1.各種查詢、屏幕修改”+SPAC(16)
@11,21 PROMPT “2.數(shù)據(jù)編輯”+SPAC(26)
@12,21 PROMPT “3.資產(chǎn)統(tǒng)計(jì)”+SPAC(26)
@13,21 PROMPT “4.明細(xì)報(bào)表打印”+SPAC(22)@14,21 PROMPT “5.系統(tǒng)維護(hù)”+SPAC(26)MENU TO m_choic &&等待用戶輸入
IF LASTKEY()=27 &&按Esc鍵返回VFP
RETURN ENDIF
DO CASE
CASE m_choic=1
DO sbcx_sc.spr
CASE m_choic=2
DO sjbj_sc.spr
CASE m_choic=3
DO zctj_sc.spr
CASE m_choic=4
DO bbdy_sc.spr
CASE m_choic=5
DO xtwh_pg
ENDCASE
RETURN
圖5.7 CASE結(jié)構(gòu)程序流程圖
從上面兩段程序可見,對(duì)于同一個(gè)問題,用DO CASE ?ENDCASE 語句比IF?ENDIF語句要簡(jiǎn)潔了并且邏輯關(guān)系清晰,因此不容易出錯(cuò)。在分情況語句中也可嵌入分支條件語句及分情況。它本身也可嵌入到分支條件語句中去使用。
在對(duì)數(shù)據(jù)表中數(shù)據(jù)時(shí),常常每條記錄被處理的過程是一樣的,處理語句也就大體相同,如果表中有多少記錄就寫多少條語句是十分困難的,為避免重復(fù)書寫,可使用循環(huán)。
3.DO WHILE?.ENDDO
意義:循環(huán)語句,可使多次重復(fù)執(zhí)行同一組語句。格式:
DO WHILE條件表達(dá)式
語句序列
[LOOP]
[EXIT]
ENDDO
其中“DO WHILE條件表達(dá)式”語句稱為循環(huán)起始語句,“ENDDO”語句稱為循環(huán)結(jié)束語句,進(jìn)入此命令時(shí)首先檢查條件表達(dá)式的值是否為真(.T.)。如果是真,則執(zhí)行語句序列,然后再判斷條件表達(dá)式的結(jié)果,如仍為真,則繼續(xù)下去。如果為假(.F.)則退出循環(huán),執(zhí)行ENDDO后面的語句。如果進(jìn)入本命令一開始,條件表達(dá)式的值為假,則語句序列一次也不執(zhí)行,就直接轉(zhuǎn)入執(zhí)行ENDDO后面的語句。其中LOOP意義為結(jié)束本次循環(huán),返回循環(huán)體開始。EXIT意義為結(jié)束循環(huán),轉(zhuǎn)入執(zhí)行ENDDO后面的語句。
LOOP語句和EXIT語句一般用在分支條件語句中,因而語句格式為:
DO WHILE 條件表達(dá)式1
語句序列1
[IF條件表達(dá)式2
LOOP
ELSE
語句序列2
ENDIF]
[IF條件表達(dá)式3
EXIT
ELSE
語句序列3
ENDIF]
ENDDO
其程序流程圖如圖5.8所示。
在使用時(shí)必須保證經(jīng)有限次循環(huán)后條件表達(dá)式1應(yīng)變?yōu)榧倩驐l件表達(dá)式3的值應(yīng)變?yōu)檎妫雇顺鲅h(huán)。否則就可能成為死循環(huán)。在條件表達(dá)式中的變量稱循環(huán)變量,在數(shù)據(jù)庫中循環(huán)變量可能是內(nèi)存變量,也可能是表中的指針。必須注意在每次循環(huán)過后,循環(huán)變量的值都要改變并且是向最終使條件表達(dá)式1的值為假或條件表達(dá)式3的值變真的方向變化,否則就無法滿足前述退出條件。在VFP中有兩類特殊用法。
(1)循環(huán)變量是指針。該用法中有兩種結(jié)構(gòu)①指針首先指向第一條的DO WHILE結(jié)構(gòu)如圖5.9所示。②指向滿足條件記錄的第一條的DO WHILE結(jié)構(gòu)如圖5.10所示。
圖5.8 DO WHILE?ENDDO結(jié)構(gòu)程序流程圖
圖5.9 指針做循環(huán)變量開始指向第一條時(shí)的DO WHILE結(jié)構(gòu)流程圖
圖5.10 指針做循環(huán)變量開始指向滿足條件記錄的第一條時(shí) 的DO WHILE結(jié)構(gòu)流程圖
格式1:圖5.9實(shí)現(xiàn)的語句。
USE(表名)
SELECT工作區(qū)別名
GO TOP
DO WHILE NOT EOF()
語句序列
SKIP
ENDDO
在本格式中,循環(huán)變量是表中指針,首先讓指針指向表的第一條記錄,如果不是文件尾,則執(zhí)行語句序列之后讓指針下移一條,再返回判斷指針是否指向文件尾。這樣一直繼續(xù)下去直到指針指到最后一條記錄的后面,循環(huán)結(jié)束。
【例5.8】在學(xué)生表中有少數(shù)學(xué)生更換了班級(jí),現(xiàn)要求在屏幕上一屏一屏地顯示每個(gè)學(xué)生的數(shù)據(jù),并提問是否修改班級(jí)名稱,如回答“Y”,則提供修改框。
SET TALK OFF
USE學(xué)生
KEY=“Y”
GO TOP
DO WHILE NOT EOF()
@3,10 SAY“姓名:”+姓名
@5,10 SAY“班級(jí):”+班級(jí)
@7,10 SAY“出生日期:”+DTOC(出生日期)
@9,10 SAY“是否修改,Y/N?’GET KEY
READ
IF UPPER(KEY)=“Y”
@11,10 SAY“請(qǐng)輸入改后班級(jí)名稱” GET 班級(jí)
READ
ENDIF
SKIP
ENDDO
USE
SET TALK ON
格式2:如果只按某個(gè)條件查看記錄,則可用查找語句開始。圖5.10實(shí)現(xiàn)語句:
LOCATE FOR條件表達(dá)式
DO WHILE NOT EOF()
語句序列
CONTINUE
ENDDO
例5.8中如只查99級(jí)學(xué)生,顯示其姓名則:
LOCATE FOR “99”$班級(jí)
DO WHILE NOT EOF()
?姓名
CONTINUE
ENDDO
(2)當(dāng)于DO UNTIL的循環(huán)結(jié)構(gòu)。
有些循環(huán)要在執(zhí)行部分語句之后再根據(jù)一個(gè)條件表達(dá)式判斷是否結(jié)束,此時(shí)循環(huán)條件可用常量.T.,見圖5.11所示。
圖5.11 DO UNTIL結(jié)構(gòu)程序流程圖
語句格式: DO WHILE.T.語句序列
IF 條件表達(dá)式
EXIT ENDIF
ENDDO
【例5.9】求編寫學(xué)生表錄入新數(shù)據(jù)的程序,每次錄入一條記錄,之后提問是否繼續(xù),如回答不是“Y”,就停止錄入。
SET TALK OFF
USE 學(xué)生
KEY=“ ”
DO WHILE.T.APPEND BLANK
@3,10 SAY“姓名:” GET 姓名
@5,10 SAY“班級(jí):” GET 班級(jí)
@7,10 SAY“出生日期:”GET 出生日期
READ
@9,10 SAY“否繼續(xù)?Y/N?” GET KEY
READ
IF UPPER(KEY)<>“Y”
EXIT
ENDIF
ENDDO
USE
SET TALK ON
此語句由用戶輸入Y或N控制程序結(jié)束。
上述第一、二兩種格式可以用等價(jià)的SCAN循環(huán)取代。
4.SCAN?ENDSCAN循環(huán)語句
意義:在數(shù)據(jù)表中循環(huán)檢查或處理一條條記錄。
命令格式一:
SCAN
語句序列
ENDSCAN
此句等價(jià)于前述格式1的語句。
命令格式二:
SCAN FOR條件表達(dá)式
語句序列
ENDSCAN
本語序等價(jià)于前述格式2的語句。有一些循環(huán)次數(shù)是一定的,或者循環(huán)變量的值在每次循環(huán)中增加的量是相同的,則可應(yīng)用FOR循環(huán)。
5.FOR?ENDFOR循環(huán)語句
命令格式:
FOR內(nèi)存變量=初始值 TO 終了值[STEP 增量]
語句序列
ENDFOR
此循環(huán)以某個(gè)內(nèi)存變量為循環(huán)變量,進(jìn)入循環(huán)時(shí)首先給它賦初始數(shù)值,只要不超過終了值,則執(zhí)行語句序列。STEP語句為可選項(xiàng),指示在每次循環(huán)后循環(huán)變量的增加量。前面執(zhí)行語句序列之后,將循環(huán)變量值增加增量的值,再判斷是否超過終了值,這樣繼續(xù)下去直到超過終了值。增量可為正值也可為負(fù)值,省略時(shí)默認(rèn)值是1。如增量為正,則當(dāng)循環(huán)變量大于終了值時(shí),循環(huán)結(jié)柬。如增量為負(fù),則每循環(huán)一次,循環(huán)變量均減小,減少到小于終了值時(shí)循環(huán)結(jié)束。
例5.8中修改班級(jí)名的程序也可寫為:
SET TALK OFF
USE 學(xué)生
KEY=“ ”
N=RECCOUNT()&&記錄總條數(shù)
FOR I=1 TO N
@3,10 SAY“姓名:”十姓名
@5,10 SAY“班級(jí):”十班級(jí)
@7,10 SAY“出生日期:”+DTOC(出生日期)
@
9、10 SAY“是否修改班級(jí)名,Y/N?” GET KEY
READ
IF UPPER(KEY)=“Y”
@11,10 SAY“請(qǐng)輸入改后班級(jí)名稱” GET 班級(jí)
READ
ENDIF
ENDFOR
USE
SET TALK ON
使用相對(duì)指針,如果打開索引,或某些錄入、修改、查詢操作使當(dāng)前指針位置改變都可能引起錯(cuò)誤。不如本例中采用物理地址,比較可靠。
【例5.10】要求輸入N個(gè)學(xué)生的總分X,按總分分成優(yōu)、良、及格、不及格四個(gè)等級(jí),統(tǒng)計(jì)每個(gè)等級(jí)的人數(shù)。等級(jí)劃分標(biāo)準(zhǔn)為:90-100分為優(yōu),75-89分為良,60-74分為及格,59分及以下為不及格。
SET TALK OFF
DIMENSION M(4)&&定義數(shù)組
STORE 0 TO M&&M所有元素初值設(shè)為0
x=0
INPUT“學(xué)生人數(shù) N=?” TO N&&計(jì)數(shù)循環(huán)
FOR I=1 TO N
?“請(qǐng)輸入第”,I,“人的成績(jī)”
@ROW(),20 SAY “X=?” GET X
READ
DO CASE
CASE x>=90
M(l)=M(1)+1&&統(tǒng)計(jì)優(yōu)秀生人數(shù)
CASE x>=75
M(2)=M(2)+1
CASE x>=60
M(3)=M(3)+l
CASE x<60 AND x>=0
M(4)=M(4)+1
OTHERWISE
?“輸入數(shù)據(jù)有錯(cuò),請(qǐng)重輸”
I=I-1
ENDCASE
ENDFOR
?“優(yōu)、良、及格、不及格人數(shù)各為”,M(1),M(2),M(3),M(4)SET TALK ON
【例5.11】設(shè)有商品表,結(jié)構(gòu)為商品(商品代碼,品名,單價(jià),數(shù)量,金額),欲對(duì)其中部分商品調(diào)動(dòng)單價(jià),為此建立一個(gè)調(diào)價(jià)表,其結(jié)構(gòu)為調(diào)價(jià)(商品代碼,原單價(jià),新單價(jià)),編寫程序用調(diào)價(jià)表中新單價(jià)數(shù)據(jù)修改商品表中單價(jià)與金額。
SET TALK OFF
SELE 1
USE商品
SELE 2
USE 調(diào)價(jià)
SCAN
代碼1=商品代碼
SELE 1
LOCATE FOR商品代碼=代碼1
IF NOT EOF()
REPL 單價(jià) WITH 調(diào)價(jià).新單價(jià)、金額 WITH 單價(jià)*數(shù)量
ENDIF
SELE 2
ENDSCAN
CLOSE ALL
SET TALK ON
本例中設(shè)置二個(gè)工作區(qū),分別打開二個(gè)表,首先在工作區(qū)2上利用SCAN循環(huán)遍歷調(diào)價(jià)所有記錄,對(duì)每一記錄在商品表中查找有無商品代碼標(biāo)識(shí)相同的記錄,如有,則用新單價(jià)更新原單價(jià),并修改金額。由于在非當(dāng)前工作區(qū)中不能移動(dòng)指針,不能查詢,不能修改數(shù)據(jù),因而在轉(zhuǎn)到商品表中查詢之前要將商品表所在工作區(qū)1設(shè)為當(dāng)前工作區(qū),更新以后又轉(zhuǎn)到工作區(qū)2將調(diào)價(jià)表中指針指向下一條,再準(zhǔn)備按第二個(gè)品種調(diào)價(jià)。
在當(dāng)前工作區(qū)中可讀取非當(dāng)前工作區(qū)中數(shù)據(jù),如本例中用 “調(diào)價(jià).單價(jià)”這樣的格式從工作區(qū)2的調(diào)價(jià)表中讀取其中指針?biāo)赣涗浀膯蝺r(jià),這種方式稱為聯(lián)訪。如此對(duì)多個(gè)數(shù)據(jù)表操作十分麻煩,可采用預(yù)先建立關(guān)聯(lián)的辦法,在一個(gè)表中移動(dòng)指針時(shí),第二個(gè)表中指針按關(guān)鍵字保持一致的方式跟著移動(dòng)。
三.其他常用命令
1.SET RELATION
意義:將當(dāng)前數(shù)據(jù)庫和“別名”工作區(qū)中的表文件關(guān)聯(lián)在一起,當(dāng)前表文件稱為主動(dòng)表文件,“別名”工作區(qū)中的表文件稱為被關(guān)聯(lián)表文件,每當(dāng)主動(dòng)表文件中指針移動(dòng)時(shí),被關(guān)聯(lián)表文件中指針也相應(yīng)移動(dòng)。
命令格式:SET RELATION TO 字段名 INTO 別名[ADDITIVE]
命令中選用的“字段名”必須同時(shí)包含在兩個(gè)表文件中,且被關(guān)聯(lián)表必須以該字段建立索引文件并打開為主索引文件。每當(dāng)主動(dòng)表文件中記錄指針移動(dòng)時(shí),被關(guān)聯(lián)表中記錄指針根據(jù)主索引文件指引指向與之相匹配(索引字段值等于主動(dòng)表當(dāng)前記錄該字段的值)的第一條記錄。若找不到匹配記錄,則指針將指向文件尾,EOF()為真(.T.)
如命令無ADDITIVE選項(xiàng),在建立關(guān)聯(lián)時(shí)將取消當(dāng)前數(shù)據(jù)庫與其他數(shù)據(jù)庫的任何關(guān)聯(lián),僅保留一個(gè)新關(guān)聯(lián)。而選了此選項(xiàng),則原有關(guān)聯(lián)均保留,增加一個(gè)新關(guān)聯(lián)。
要注意的是,如果對(duì)應(yīng)主動(dòng)表中某記錄在被關(guān)聯(lián)表中找不到匹配記錄時(shí),主動(dòng)表中數(shù)據(jù)被改為0。例5.11中如果調(diào)價(jià)表中商品包括商品表中全部商品,利用此命令程序可修改為:
USE 調(diào)價(jià)&&第一個(gè)打開表默認(rèn)置于1號(hào)工作區(qū)
INDEX ON 商品代碼 TO INDEX1
SELECT 2
USE 商品
SET RELATION TO 商品代碼 INTO 調(diào)價(jià)
SCAN
REPLACE 單價(jià) WITH 調(diào)價(jià).新單價(jià),金額 WITH 單價(jià)*數(shù)量
ENDSCAN
本例中關(guān)于被關(guān)聯(lián)表中字段名也可用“區(qū)號(hào).字段名”形式對(duì)之訪問。
不過使用本程序要求兩表中內(nèi)容必須匹配,例如例5.11中如商品只有部分調(diào)價(jià),在調(diào)價(jià)表中只有商品表中部分商品,那么該程序?qū)⑹股唐繁碇胁徽{(diào)價(jià)商品單價(jià)均變?yōu)?。
一般在涉及利用一個(gè)表數(shù)據(jù)修改另一個(gè)表數(shù)據(jù)時(shí),我們以采用SQL語言中修改命令UPDATE比較好。也可采用全聯(lián)結(jié)視圖再對(duì)之操作。”
2.RUN
意義:在VFP環(huán)境中調(diào)用DOS命令。·
命令格式:RUN DOS命令或!DOS命令
3.LOAD命令
意義:把匯編或C語言編寫并編譯的二進(jìn)制文件調(diào)入內(nèi)存命令。
命令格式:LOAD 二進(jìn)制文件名
4.CALL命令
意義:執(zhí)行由LOAD裝入內(nèi)存的二進(jìn)制代碼文件命令。命令格式:CALL 文件名[WITH 字符表達(dá)式/內(nèi)存變量] 其中WITH選項(xiàng)用于向調(diào)用程序傳遞參數(shù)。
5.ON ERROR
意義:當(dāng)出現(xiàn)錯(cuò)誤時(shí)執(zhí)行的命令。
命令格式:ON ERROR 命令
其中命令可為任何VFP語句。在程序調(diào)試過程中,可在程序中加入此命令,并設(shè)計(jì)命令處理程序,在其中可加入顯示ERROR(),MESSAGE(),LINENO()和PROGRAM()的語句,將錯(cuò)誤代碼、錯(cuò)誤消息、錯(cuò)誤行號(hào)及程序名稱顯示出來,以幫助發(fā)現(xiàn)錯(cuò)誤所在,方便糾正錯(cuò)誤。在應(yīng)用程序中,有時(shí)可能出現(xiàn)一些不影響最終結(jié)果的錯(cuò)誤,我們也可在程序中加入這類錯(cuò)誤陷阱,所指定的命令可以是一條無效語句,不讓錯(cuò)誤影響程序運(yùn)行。
【例5.12】程序出錯(cuò)時(shí)的處理程序及調(diào)用方法 主程序:
*---Set system enviroment------
clos data
clea
on erro do showerro with prog(),lineno(),erro(),mess()&&調(diào)用出錯(cuò)程序showerro
語句序列
程序出錯(cuò)時(shí)的處理程序:
para m_prog,m_line,m_num,m_mess&&傳遞參數(shù)
priv m_odcons&&定義局部變量
m_odcons=set('cons')
set cons off
defi wind erro_win from 0,0 to 14,49;
titl ' 系統(tǒng)錯(cuò)誤 ';
colo gr+/b;
shad doub;
in desktop
move wind erro_win cent
acti wind erro_win
@1,4 say ' 錯(cuò)誤警告' colo gr+/b
@3,8 say '當(dāng)前程序無法繼續(xù),按<確定>將返回主調(diào)!' colo w+/b
@4,4 say '程序建議:稍后再試或與軟件供應(yīng)商聯(lián)系.' colo w+/b
@6,4 say '出錯(cuò)程序:'+m_prog colo w+/b
@7,4 say '出 錯(cuò) 行:'+allt(str(m_line))colo w+/b
@8,4 say '錯(cuò)誤代碼:'+allt(str(m_num))colo w+/b
@9,4 say '錯(cuò)誤內(nèi)容:'+iif(len(m_mess)<=28,m_mess,subs(m_mess,1,28)+'...')colo w+/b
@2,3 to 2,wcol()-4 colo w/b
@5,3 to 10,wcol()-4 colo w/b
=opendbf('errosave','errosave','shar')&&存放錯(cuò)誤情況
inse into;
dbferrosave(errodate,errotime,erroprog,erroline,errocode,erromess);
valu(date(),time(),m_prog,m_line,m_num,m_mess)
use in errosave
m_readkey=20
m_cnt=1
do while m_readkey=20
if mod(m_cnt,2)=0
@1,6 say ' 錯(cuò)誤警告' colo b/b
else
@1,6 say ' 錯(cuò)誤警告' colo gr+/b
endi
@wrow()-2,wcol()/2-2 get mb_isee func '*th 確定' defa 1 &&colo sche 13
read cycl modal time 0.4
m_readkey=readkey()
m_cnt=m_cnt+1
endd
set cons &m_odcons
clea wind
close data
clea
retu to master&&返回主程序
6.顯示文件目錄命令
格式:DIR [<驅(qū)動(dòng)器>][<路徑>][<文件名>] 功能:顯示指定的磁盤驅(qū)動(dòng)器上的文件名
說明:<文件名>中可帶通配符;命令中不指定文件名,則僅僅顯示指定目錄下的數(shù)據(jù)表文件名。7.清屏命令CLEAR 格式:CLEAR 功能:清除屏幕 8.總清命令CLEAR ALL 格式:CLEAR ALL 功能:關(guān)閉所有打開的數(shù)據(jù)表文件、索引文件和其他各種文件,清除已有的內(nèi)存變量 9.SET TALK ON/OFF
四.程序設(shè)計(jì)基礎(chǔ)
程序的概念
命令執(zhí)行方式:通過命令菜單或直接在命令窗口輸命令來執(zhí)行,執(zhí)行的結(jié)果顯示在屏幕上。程序執(zhí)行方式:以程序的方式來執(zhí)行。
程序是能夠完成一定任務(wù)的命令的有序集合,這組命令存放在程序文件(*.prg)中,執(zhí)行程序時(shí),系統(tǒng)按一定的次序自動(dòng)執(zhí)行包含在程序文件中的命令。
程序的特點(diǎn)
可以利用編輯器,方便地輸入、修改和保存程序。可以利用多種方式、多次運(yùn)行程序。可以在一個(gè)程序中調(diào)用另一個(gè)程序。
程序的基本要求
正確性,能實(shí)現(xiàn)算法的各個(gè)步驟,邏輯上正確,對(duì)輸入產(chǎn)生的錯(cuò)誤有檢測(cè)措施。通用性,不能只解決一個(gè)問題,還考慮解決一類問題。高效率性,編寫執(zhí)行時(shí)間短,占用存儲(chǔ)空間少的程序。可維護(hù)性,程序應(yīng)易讀、易懂、易修改。安全性,必須確保安全、可靠。
程序文件的建立
在項(xiàng)目管理器中和菜單中建立
用命令方式:modify command <文件名>
程序的執(zhí)行
從“ 程序” 菜單中選擇“ 運(yùn)行” 命令方式:do < 文件名> <文件名>中如果沒有指定擴(kuò)展名,系統(tǒng)將按下列順序?qū)ふ页绦蛭募?zhí)行:.exe-->.app(應(yīng)用程序)-->.fxp(編譯程序)-->.prg
當(dāng)程序文件被執(zhí)行時(shí),文件中包含的命令將被依次執(zhí)行,直到所有的命令被執(zhí)行完畢中,或者執(zhí)行到以下命令:
cancel(終止程序執(zhí)行,返回命令窗口)do(轉(zhuǎn)去執(zhí)行另一個(gè)程序)return(結(jié)束當(dāng)前程序,返回到上級(jí)程序,若無上級(jí)程序則返回到命令窗口)quit(退出VFP 系統(tǒng),返回到操作系統(tǒng))
程序結(jié)構(gòu)
(1)每個(gè)程序都必須有1個(gè)文件名,文件名由字符、數(shù)字或下劃線組成,第一個(gè)字符必須是字母或漢字,程序擴(kuò)展名為.PRG(2)程序由若干行數(shù)據(jù)庫命令組成,每行最多寫2048個(gè)字符,1行只能寫1條命令,若把一個(gè)命令寫成若干行,需在該命令的第1行及中間各行的行尾寫“;”號(hào),但最后一行不寫。(3)注釋行由“*”開頭,用以說明程序的名稱、功能及其他需要說明的問題,“*”是注釋命令,是非執(zhí)行語句,可以寫在程序任一位置。
(4)以“set”開頭的命令為環(huán)境設(shè)置命令,一般出現(xiàn)在可執(zhí)行語句的前面。(5)每行程序的后部可以寫由“&&”號(hào)引導(dǎo)的注釋。(6)“return”命令是返回命令,表示程序結(jié)束。
編寫程序的步驟
舉例:編寫一個(gè)簡(jiǎn)單的程序:給出一個(gè)整數(shù),判斷是奇數(shù)還是偶數(shù)。(1)分析任務(wù),確定方法;(2)分解任務(wù),描述算法;(3)編寫程序,認(rèn)真檢查;(4)上機(jī)調(diào)試,糾正錯(cuò)誤
流程圖
流程圖符號(hào)的使用規(guī)則: 流程線的方向是從左到右,自上而下,非標(biāo)準(zhǔn)流向的流程線要用箭頭表示。流程線就盡量避免交叉。
流程圖符號(hào)內(nèi)的文字一律從左到右,自上而下書寫。流程圖符號(hào)的注釋應(yīng)寫在符號(hào)右側(cè)。
出入口處的連接符應(yīng)使用相同名稱,表示把它們連接起來。
子程序、過程和自定義函數(shù)
模塊化:按適當(dāng)?shù)脑瓌t把一個(gè)情況復(fù)雜、規(guī)模較大的程序系統(tǒng)劃分為一個(gè)個(gè)較小的、功能相關(guān)而又相對(duì)獨(dú)立的模塊的過程。
模塊:一個(gè)在結(jié)構(gòu)上相對(duì)獨(dú)立的程序段。可以是子程序、過程或自定義函數(shù)。
子程序的基本概念
子程序:總被其它程序調(diào)用的,一般不單獨(dú)運(yùn)行的一個(gè)程序段。
子程序與主程序的關(guān)系:是一種調(diào)用和被調(diào)用的關(guān)系。主程序是能調(diào)用其他子程序,而不被其他程序調(diào)用的程序,凡能被調(diào)用的程序都稱為子程序。程序中至少應(yīng)有一個(gè)主程序,可以有一個(gè)或若干個(gè)子程序。子程序的使用
①使用模塊化程序設(shè)計(jì)方法編寫程序時(shí),把各個(gè)功能劃分成若干個(gè)功能子模塊,把子模塊寫成一個(gè)子程序。
②需要反復(fù)調(diào)用的情況下,可以寫成一個(gè)子程序,以節(jié)省存儲(chǔ)空間。
編寫子程序
調(diào)用子程序命令格式:
do <子程序名>[ WITH<參數(shù)表>] 子程序返回命令
return [ to master ] 表示返回到上一級(jí)子程序或主程序。帶參數(shù)to master表示無論在哪級(jí)子程序上,均立即返回主程序。
例
1、對(duì)任意給的正整數(shù)A、B、C,編寫程序計(jì)算S=A!+(3/5)B!+(C!/2)調(diào)試子程序 聯(lián)合調(diào)試:當(dāng)主程序和子程序分別編輯完成之后,直接運(yùn)行主程序。若主程序或子程序有錯(cuò),再進(jìn)行編輯、調(diào)試、重新運(yùn)行,直到輸出正確結(jié)果為止。單獨(dú)調(diào)試:編輯一個(gè)模塊,調(diào)試一個(gè)模塊,各個(gè)模塊都調(diào)試成功后,加入主程序聯(lián)調(diào)。例
2、根據(jù)數(shù)據(jù)庫student.dbf編寫一個(gè)菜單程序main.prg,完成對(duì)數(shù)據(jù)庫查詢程序cx.prg和刪除程序sc.prg的調(diào)用
過程與過程文件
過程是一段程序,它與子程序不同之處在于,子程序是一個(gè)獨(dú)立文件,而過程是過程文件的一個(gè)組成部分,可以把多個(gè)過程寫在一個(gè)過程文件中。過程的結(jié)構(gòu):
procedure <過程名> <過程體> return [to master/to <程序名>] 過程名由用戶定義,供調(diào)用過程時(shí)使用,過程體是一個(gè)語句序列,是過程的核心部分,選擇to <程序名>表示返回到“程序名”指定的程序。過程文件的結(jié)構(gòu)
procedure <過程名1> <過程體1> return [to master/to <程序名>] procedure <過程名2> <過程體2> return [to master/to <程序名>] ??
procedure <過程名n> <過程體n> return [to master/to <程序名>] 過程文件的調(diào)用
在主程序中,調(diào)用過程前,首先要打開過程文件。
命令格式:set proc to <過程文件名>
調(diào)用后,要關(guān)閉過程文件。
命令格式:set procedure to 或 close procedure 過程的調(diào)用
格式:do <過程名> 例
3、根據(jù)數(shù)據(jù)庫student.dbf編寫一個(gè)菜單程序gczxc.prg,用過程形式完成對(duì)數(shù)據(jù)庫查詢程序cx.prg和刪除程序sc.prg的調(diào)用。
自定義函數(shù)命令
命令格式:(1)function <函數(shù)名>(2)return <表達(dá)式> 基本格式:
function<函數(shù)名> parameters <參數(shù)表> <語句序列>
return <表達(dá)式>
主程序與自定義函數(shù)的組織形式:
舉例計(jì)算組合數(shù)的值
編寫K!的函數(shù)。作業(yè)
1、從鍵盤輸入五個(gè)數(shù)組,每組有六個(gè)數(shù)據(jù),分別用子程序、過程、自定義函數(shù)的方法,輸出每組數(shù)的最大值和最小值。
2、用子程序、過程、自定義函數(shù)三種不同形式對(duì)student.dbf數(shù)據(jù)庫編寫一個(gè)菜單程序:
系統(tǒng)主菜單
1??追加記錄
2??修改記錄
3??插入記錄
4??刪除記錄
5??輸出記錄
6??退
出