版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、VFPVFP程序程序 設(shè)計設(shè)計結(jié)構(gòu)化程序設(shè)計。傳統(tǒng)的程序設(shè)計方法結(jié)構(gòu)化程序設(shè)計。傳統(tǒng)的程序設(shè)計方法面向?qū)ο蟪绦蛟O(shè)計面向?qū)ο蟪绦蛟O(shè)計用戶界面可利用用戶界面可利用VFPVFP提供的輔助工具來提供的輔助工具來設(shè)計,應(yīng)用于程序也可自動生成,但設(shè)計,應(yīng)用于程序也可自動生成,但是仍需用戶編寫一些過程代碼。是仍需用戶編寫一些過程代碼?;A(chǔ)基礎(chǔ)第第4 4章章 程序設(shè)計初步程序設(shè)計初步程序的基本概念及命令程序的基本概念及命令三種程序控制結(jié)構(gòu)三種程序控制結(jié)構(gòu)子程序、過程及自定義函數(shù)子程序、過程及自定義函數(shù)變量的作用域變量的作用域本章重點(diǎn)本章重點(diǎn)4.1 4.1 程序文件程序文件4.2 4.2 程序控制結(jié)構(gòu)程序控制結(jié)
2、構(gòu)4.3 4.3 多模塊程序多模塊程序4.4 4.4 窗口設(shè)計樣例窗口設(shè)計樣例章章節(jié)節(jié)安安排排4.1 4.1 程序文件程序文件4.1.1 4.1.1 程序文件的建立與執(zhí)行程序文件的建立與執(zhí)行 一、程序文件的建立與修改一、程序文件的建立與修改 二、程序的運(yùn)行二、程序的運(yùn)行 三、程序書定規(guī)則三、程序書定規(guī)則 四、求解的基本邏輯與程序通用性四、求解的基本邏輯與程序通用性4.1.2 4.1.2 程序文件中的專用命令程序文件中的專用命令 一、程序結(jié)尾的專用命令一、程序結(jié)尾的專用命令 二、輸入輸出專用命令二、輸入輸出專用命令 三、三、WAITWAIT命令命令4.1.3 4.1.3 幾個狀態(tài)設(shè)置命令和輔助命
3、令幾個狀態(tài)設(shè)置命令和輔助命令 一、置會話狀態(tài)命令一、置會話狀態(tài)命令 二、置系統(tǒng)提供保護(hù)狀態(tài)命令二、置系統(tǒng)提供保護(hù)狀態(tài)命令 三、置屏幕狀態(tài)命令三、置屏幕狀態(tài)命令 四、清屏命令四、清屏命令4.1 程序文件程序文件程序文件:即命令文件。程序文件:即命令文件。4.1.1 程序文件的建立與執(zhí)行程序文件的建立與執(zhí)行一、程序文件的建立與修改一、程序文件的建立與修改命令格式:命令格式: MODIFY COMMAND|FILE 功能:功能: 打開文本編輯窗口,用來建立或修改程序文件打開文本編輯窗口,用來建立或修改程序文件。說明說明: (1)程序文件由)程序文件由VFP命令組成。命令組成。由用由用戶指定,對于關(guān)鍵
4、字戶指定,對于關(guān)鍵字COMMAND缺省的擴(kuò)展名缺省的擴(kuò)展名為為.PRG。對于。對于FILE,缺省擴(kuò)展名,缺省擴(kuò)展名.TXT,因此須指,因此須指明擴(kuò)展名明擴(kuò)展名.PRG。 (2)關(guān)閉編輯窗口的主要方法有:按)關(guān)閉編輯窗口的主要方法有:按Ctrl+W鍵,按鍵,按Esc鍵,在編輯窗口雙擊控制菜單按鈕或單鍵,在編輯窗口雙擊控制菜單按鈕或單擊關(guān)閉按鈕。擊關(guān)閉按鈕。 (3)文本編輯窗口也可以編輯由)文本編輯窗口也可以編輯由ASCII字符字符組成的非組成的非.PRG文件。文件。.PRG文件是程序,可以運(yùn)行,文件是程序,可以運(yùn)行,一般的文本文件則可讀而不可運(yùn)行。一般的文本文件則可讀而不可運(yùn)行。二、程序的運(yùn)行二
5、、程序的運(yùn)行命令格式:命令格式:DO 功功 能:能:執(zhí)行由執(zhí)行由表示的程序。表示的程序。 DO命令默認(rèn)運(yùn)行命令默認(rèn)運(yùn)行.PRG程序,如果要運(yùn)行的程序,如果要運(yùn)行的是是.PRG程序,程序,DO命令中的命令中的只需取主只需取主文件名。要運(yùn)行其它程序,文件名。要運(yùn)行其它程序,中須包括中須包括擴(kuò)展名,如擴(kuò)展名,如DO MCZZ.QPR。 執(zhí)行執(zhí)行DO命令時,命令時,VFP會自動對程序編譯并產(chǎn)會自動對程序編譯并產(chǎn)生與主名相同的目標(biāo)程序,然后執(zhí)行該目標(biāo)程序。生與主名相同的目標(biāo)程序,然后執(zhí)行該目標(biāo)程序。目標(biāo)程序是緊湊的非文本文件,運(yùn)行速度快,并目標(biāo)程序是緊湊的非文本文件,運(yùn)行速度快,并可起到對源程序加密的作
6、用??善鸬綄υ闯绦蚣用艿淖饔?。三、程序書寫規(guī)則三、程序書寫規(guī)則1. 命令分行命令分行 程序中每條命令都以回車鍵結(jié)尾,一行只能寫程序中每條命令都以回車鍵結(jié)尾,一行只能寫一條命令。若命令需分行書寫,應(yīng)在一行終了時鍵一條命令。若命令需分行書寫,應(yīng)在一行終了時鍵入續(xù)行符入續(xù)行符“;”,然后按回車鍵。,然后按回車鍵。 2. 命令注釋命令注釋 程序中可插入注釋,以提高程序的可讀性。程序中可插入注釋,以提高程序的可讀性。 注釋行以符號注釋行以符號“”或命令字或命令字“NOTE”開頭,開頭,它是一條非執(zhí)行命令,僅在程序中顯示。命令后也它是一條非執(zhí)行命令,僅在程序中顯示。命令后也可添加注釋,這種注釋以符號可添加
7、注釋,這種注釋以符號“”開頭。開頭。四、求解的基本邏輯與程序通用性四、求解的基本邏輯與程序通用性1. 求解的基本邏輯求解的基本邏輯 VFP程序多用于數(shù)據(jù)處理,解決問題的基本邏程序多用于數(shù)據(jù)處理,解決問題的基本邏輯是:輯是:輸入數(shù)據(jù)處理數(shù)據(jù)輸出數(shù)據(jù)輸入數(shù)據(jù)處理數(shù)據(jù)輸出數(shù)據(jù)。 例如計算圓面積:例如計算圓面積: (1)給出圓半徑;)給出圓半徑; (2)按圓面積公式計算圓面積;)按圓面積公式計算圓面積; (3)輸出圓面積。輸出圓面積。2. 程序的通用性程序的通用性 程序的通用性指程序?qū)Χ喾N場合的適應(yīng)性,通程序的通用性指程序?qū)Χ喾N場合的適應(yīng)性,通用性好的程序的應(yīng)用范圍較廣。用性好的程序的應(yīng)用范圍較廣。
8、* *計算圓面積程序計算圓面積程序CLEARCLEARr=3r=3s=3.1416s=3.1416* *r r* *r r?圓面積圓面積=,s=,s4.1.2 程序文件中的專用命令程序文件中的專用命令一、程序結(jié)尾的專用命令一、程序結(jié)尾的專用命令 1. RETURN命令,它能使程序執(zhí)行結(jié)束,并返回命令,它能使程序執(zhí)行結(jié)束,并返回到調(diào)用它的上級程序繼續(xù)執(zhí)行,若無上級程序則返到調(diào)用它的上級程序繼續(xù)執(zhí)行,若無上級程序則返回到命令窗口。回到命令窗口。RETURN命令一般允許缺省。命令一般允許缺省。 2. CANCEL命令,它能使程序運(yùn)行終止,清除程命令,它能使程序運(yùn)行終止,清除程序的私有變量,并返回到命
9、令窗口。序的私有變量,并返回到命令窗口。 3. QUIT命令,退出命令,退出VFP系統(tǒng)。使用該命令正常系統(tǒng)。使用該命令正常退出,就不會出現(xiàn)數(shù)據(jù)丟失或打開的文件被破壞等退出,就不會出現(xiàn)數(shù)據(jù)丟失或打開的文件被破壞等情況,還會自動刪去磁盤中的臨時文件;程序終止情況,還會自動刪去磁盤中的臨時文件;程序終止運(yùn)行后將返回到運(yùn)行后將返回到Windows。二、輸入輸出專用命令二、輸入輸出專用命令1. 非定位輸入輸出命令非定位輸入輸出命令 鍵盤輸入命令鍵盤輸入命令命令格式:命令格式: INPUT TO ACCEPT TO 功能:功能: 首先在屏幕上顯示命令中的提示信息,隨后等首先在屏幕上顯示命令中的提示信息,隨
10、后等待用戶從鍵盤輸入。待用戶輸入后,即把輸入內(nèi)容待用戶從鍵盤輸入。待用戶輸入后,即把輸入內(nèi)容賦值給指定的內(nèi)存變量。賦值給指定的內(nèi)存變量。說明:說明: (1)INPUT命令能接受從鍵盤輸入的命令能接受從鍵盤輸入的任何類任何類型型的表達(dá)式,把計算出來的結(jié)果值賦給指定的內(nèi)存的表達(dá)式,把計算出來的結(jié)果值賦給指定的內(nèi)存變量。變量類型隨輸入數(shù)據(jù)的類型而定。需注意輸變量。變量類型隨輸入數(shù)據(jù)的類型而定。需注意輸入字符型數(shù)據(jù)時要加定界符,日期型數(shù)據(jù)要加入字符型數(shù)據(jù)時要加定界符,日期型數(shù)據(jù)要加。 (2)ACCEPT命令只能接受命令只能接受字符型字符型數(shù)據(jù),對數(shù)據(jù),對用戶輸入內(nèi)容,系統(tǒng)自動加上定界符后再賦給指定用戶
11、輸入內(nèi)容,系統(tǒng)自動加上定界符后再賦給指定的內(nèi)存變量。的內(nèi)存變量。 (3)提示信息可以是字符型表達(dá)式,執(zhí)行時)提示信息可以是字符型表達(dá)式,執(zhí)行時屏幕上將顯示該表達(dá)式的結(jié)果值。表達(dá)式中可含有屏幕上將顯示該表達(dá)式的結(jié)果值。表達(dá)式中可含有變量,屏幕上的提示信息能隨變量的變化而變化。變量,屏幕上的提示信息能隨變量的變化而變化。CLEARCLEARINPUT INPUT 設(shè)備名稱設(shè)備名稱: TO NN: TO NNINPUT INPUT 設(shè)備價格設(shè)備價格: TO JG1: TO JG1INPUT INPUT 設(shè)備啟用日期設(shè)備啟用日期: TO DD: TO DDACCEPT ACCEPT 設(shè)備名稱設(shè)備名稱:
12、 TO MM: TO MMACCEPT ACCEPT 輸入輸入+MM+MM+的價格的價格 TO JG2 TO JG2?設(shè)備名稱設(shè)備名稱:,NN:,NN?設(shè)備價格設(shè)備價格:,JG1:,JG1?設(shè)備啟用日期設(shè)備啟用日期:,DD:,DD?設(shè)備名稱設(shè)備名稱:,MM:,MM?輸入輸入+MM+MM+的價格的價格:,JG2:,JG2 文本輸出命令文本輸出命令命令格式:命令格式: TEXT ENDTEXT其中其中TEXT與與ENDTEXT必須成對出現(xiàn)。必須成對出現(xiàn)。CLEARCLEARTEXTTEXT * * * * * * * * * * * * * * * * * * * * * * * * * * *
13、* * * * * * * * * * * * * 設(shè)設(shè) 備備 管管 理理 系系 統(tǒng)統(tǒng) * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *ENDTEXT ENDTEXT 2. 定位輸入輸出命令定位輸入輸出命令命令基本格式:命令基本格式: SAY GET DEFAULT 功能:功能: 在屏幕的指定行列輸出在屏幕的指定行列輸出SAY子句的表達(dá)式值,子句的表達(dá)式值,并可修改并可修改GET子句的變量值。子句的變量值。說明:說明: (1)表示數(shù)據(jù)在窗口中顯示的位置,表示數(shù)據(jù)在窗口中顯示的位置,行自
14、頂向下編號,列自左向右編號,編號均從行自頂向下編號,列自左向右編號,編號均從0開開始。始。 (2)SAY子句用來輸出數(shù)據(jù)子句用來輸出數(shù)據(jù),GET子句用來輸子句用來輸入及編輯數(shù)據(jù)。入及編輯數(shù)據(jù)。若缺省若缺省SAY子句,子句,GET變量值從指變量值從指定位置開始顯示;含有定位置開始顯示;含有SAY子句時先顯示其表達(dá)式子句時先顯示其表達(dá)式值,然后空開一格顯示值,然后空開一格顯示GET變量的值。變量的值。SAY子句數(shù)子句數(shù)據(jù)顯示時的背景色以標(biāo)準(zhǔn)型顯示,據(jù)顯示時的背景色以標(biāo)準(zhǔn)型顯示,GET子句則以增子句則以增強(qiáng)型顯示。強(qiáng)型顯示。 (3)GET子句中的變量必須具有初值,或用子句中的變量必須具有初值,或用D
15、EFAULT子句的子句的指定初值。初值一旦指指定初值。初值一旦指定,該變量的類型在編輯期間就不能改變,字符型定,該變量的類型在編輯期間就不能改變,字符型變量的寬度與數(shù)值型變量的小數(shù)位數(shù)也無法再變。變量的寬度與數(shù)值型變量的小數(shù)位數(shù)也無法再變。 (4)GET子句的變量必須用子句的變量必須用READ命令命令來激活,即在若干帶有來激活,即在若干帶有GET子句的定位輸入輸子句的定位輸入輸出命令后,必須遇到出命令后,必須遇到READ命令才能編輯命令才能編輯GET變量。當(dāng)光標(biāo)移出這些變量。當(dāng)光標(biāo)移出這些GET變量組成的區(qū)域時變量組成的區(qū)域時READ命令執(zhí)行結(jié)束。命令執(zhí)行結(jié)束。 試編一程序,能根據(jù)記錄號修改某
16、設(shè)備的價格和部門。試編一程序,能根據(jù)記錄號修改某設(shè)備的價格和部門。CLEAR CLEAR USE sbUSE sbjlh=1 &GETjlh=1 &GET變量必須有初值變量必須有初值2,10 SAY 2,10 SAY 請輸入記錄號請輸入記錄號: GET jlh: GET jlhREADREADGO jlhGO jlh 4,10 SAY “ 4,10 SAY “請修改第請修改第”+str(jlh,1)+“+str(jlh,1)+“個設(shè)備的數(shù)個設(shè)備的數(shù)據(jù)據(jù):” :” 6,10 SAY “6,10 SAY “價格價格” ” GET GET 價格價格 8,10 SAY 8,10 SAY
17、 部門部門 GET GET 部門部門READ READ USE 三、三、WAIT命令命令命令格式:命令格式: W A I T T O WINDOW AT , NOWAIT CLEAR | NOCLEAR TIMEOUT 功能:功能:暫停程序的運(yùn)行,直到用戶輸入一個字符。也可暫停程序的運(yùn)行,直到用戶輸入一個字符。也可只用于輸出一條提示信息。只用于輸出一條提示信息。說明:(說明:(1)WAIT命令使命令使VFP程序暫停運(yùn)行,等用戶程序暫停運(yùn)行,等用戶按任一鍵(或回車)后,程序繼續(xù)運(yùn)行。按任一鍵(或回車)后,程序繼續(xù)運(yùn)行。 (2)用來保存鍵入的字符,如果不選用來保存鍵入的字符,如果不選TO子句,則輸
18、入的數(shù)據(jù)不予保存。子句,則輸入的數(shù)據(jù)不予保存。 (3)如果缺省)如果缺省,則執(zhí)行命令后屏幕顯,則執(zhí)行命令后屏幕顯示示“按任意鍵繼續(xù)按任意鍵繼續(xù)”,提示按任一鍵將繼續(xù)運(yùn)行。,提示按任一鍵將繼續(xù)運(yùn)行。 (4)WINDOW子句可使主屏幕上出現(xiàn)一個子句可使主屏幕上出現(xiàn)一個WAIT提示窗口,位置由提示窗口,位置由AT選項的選項的,來來指定。若缺省指定。若缺省AT選項,選項,將顯示在主屏將顯示在主屏幕右上角。幕右上角。 (5)若使用)若使用NOWAIT選項,系統(tǒng)將不等用戶選項,系統(tǒng)將不等用戶按鍵,立即往下執(zhí)行。按鍵,立即往下執(zhí)行。 ( 6 ) C L E A R 選 項 用 來 關(guān) 閉 提 示 窗 口 。
19、選 項 用 來 關(guān) 閉 提 示 窗 口 。NOCLEAR表示不關(guān)閉提示窗口。表示不關(guān)閉提示窗口。WAIT窗口將在執(zhí)窗口將在執(zhí)行到下一個行到下一個WAITWINDOW命令時自動關(guān)閉。命令時自動關(guān)閉。 (7)TIMEOUT子句用來設(shè)定等待時間(秒子句用來設(shè)定等待時間(秒數(shù)),一旦超時自動往下執(zhí)行命令。數(shù)),一旦超時自動往下執(zhí)行命令。示例:示例:CLEARCLEAR WAIT WAIT 請檢查輸入內(nèi)容請檢查輸入內(nèi)容! WINDOW timeout 5! WINDOW timeout 5 RETURN RETURN4.1.3 幾個狀態(tài)設(shè)置命令和輔助命令幾個狀態(tài)設(shè)置命令和輔助命令一、置會話狀態(tài)命令一、置
20、會話狀態(tài)命令 VFP命令執(zhí)行時會在屏幕上反饋有關(guān)的信息,命令執(zhí)行時會在屏幕上反饋有關(guān)的信息,稱為稱為“會話會話”(TALK)。但工作于程序模式時,反)。但工作于程序模式時,反饋信息與程序本身的輸出相互夾雜,有時反顯得累饋信息與程序本身的輸出相互夾雜,有時反顯得累贅。故用戶可用贅。故用戶可用“置會話狀態(tài)置會話狀態(tài)”命令把會話置于接命令把會話置于接通或切斷狀態(tài)。通或切斷狀態(tài)。命令格式:命令格式:SET TALK ON | OFF ON為默認(rèn)狀態(tài)為默認(rèn)狀態(tài)二、置系統(tǒng)提供保護(hù)狀態(tài)命令二、置系統(tǒng)提供保護(hù)狀態(tài)命令命令格式:命令格式:SET SAFETY ON | OFF 系統(tǒng)默認(rèn)狀態(tài)為系統(tǒng)默認(rèn)狀態(tài)為ON,
21、在此狀態(tài)下,系統(tǒng)會對已,在此狀態(tài)下,系統(tǒng)會對已經(jīng)建立的文件提供保護(hù)。當(dāng)用戶發(fā)出重寫或破壞有經(jīng)建立的文件提供保護(hù)。當(dāng)用戶發(fā)出重寫或破壞有關(guān)文件的命令時,系統(tǒng)會提出警告并提供糾錯機(jī)會。關(guān)文件的命令時,系統(tǒng)會提出警告并提供糾錯機(jī)會。三、置屏幕狀態(tài)命令三、置屏幕狀態(tài)命令命令格式:命令格式:SET CONSOLE ON | OFF 系統(tǒng)的默認(rèn)狀態(tài)為系統(tǒng)的默認(rèn)狀態(tài)為ON,在此狀態(tài)下,用,在此狀態(tài)下,用戶從鍵盤輸入的內(nèi)容都在屏幕上顯示,而在戶從鍵盤輸入的內(nèi)容都在屏幕上顯示,而在OFF狀態(tài)下,用戶的鍵盤輸入便不在屏幕出現(xiàn)狀態(tài)下,用戶的鍵盤輸入便不在屏幕出現(xiàn)了。了。四、清屏命令四、清屏命令命令格式:命令格式:C
22、LEAR4.2 4.2 程序控制結(jié)構(gòu)程序控制結(jié)構(gòu) 4.2.1 4.2.1 順序結(jié)構(gòu)順序結(jié)構(gòu) 4.2.2 4.2.2 分支結(jié)構(gòu)分支結(jié)構(gòu) 一、簡單的條件語句一、簡單的條件語句 二、帶二、帶ELSEELSE的條件語句的條件語句 三、多分支語句三、多分支語句 4.2.3 4.2.3 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu) 一、條件循環(huán)一、條件循環(huán) 二、步長循環(huán)二、步長循環(huán) 三、掃描循環(huán)三、掃描循環(huán) 四、循環(huán)輔助語句四、循環(huán)輔助語句 五、多重循環(huán)五、多重循環(huán)4.2 程序的控制結(jié)構(gòu)程序的控制結(jié)構(gòu)4.2.1 順序結(jié)構(gòu)順序結(jié)構(gòu) 順序結(jié)構(gòu)的程序運(yùn)行時按照語句排列的先順序結(jié)構(gòu)的程序運(yùn)行時按照語句排列的先后順序,一條接一條地依次執(zhí)行,它
23、是程序中后順序,一條接一條地依次執(zhí)行,它是程序中最基本的結(jié)構(gòu)。最基本的結(jié)構(gòu)。4.2.2 分支結(jié)構(gòu)分支結(jié)構(gòu)一、簡單的條件語句一、簡單的條件語句語句格式:語句格式: IF ENDIF功能:功能: 首先計算首先計算的值,若其值為真,的值,若其值為真,對對IF與與ENDIF之間的語句順序執(zhí)行,然后執(zhí)行之間的語句順序執(zhí)行,然后執(zhí)行ENDIF后面的語句;若其值為假,直接執(zhí)行后面的語句;若其值為假,直接執(zhí)行ENDIF后面的語句。后面的語句。* *計算某正數(shù)的平方根計算某正數(shù)的平方根cleacleaset talk offset talk off4,30 say 4,30 say 請輸入一個數(shù)請輸入一個數(shù)=
24、get m defa 0.00= get m defa 0.00readreadif m=0if m=0 x=sqrt(m)x=sqrt(m)6,30 say allt(str(m,10,2)+“6,30 say allt(str(m,10,2)+“的平方根的平方根=”=” +allt(str(x,10,2) +allt(str(x,10,2)endifendifset talk onset talk on二、帶二、帶ELSE的條件語句的條件語句語句格式:語句格式:IF ELSE ENDIF 功能:功能: 根據(jù)根據(jù)的邏輯值,選擇執(zhí)行兩個的邏輯值,選擇執(zhí)行兩個語句序列中的一個。若語句序列中的一個
25、。若值為真,先值為真,先執(zhí)行執(zhí)行,然后再執(zhí)行,然后再執(zhí)行ENDIF后面的語后面的語句;若其值為假,先執(zhí)行句;若其值為假,先執(zhí)行,然后再,然后再執(zhí)行執(zhí)行ENDIF后面的語句。后面的語句。* *查找非主要設(shè)備查找非主要設(shè)備CLEARCLEARUSE sbUSE sbLOCATE FOR NOT LOCATE FOR NOT 主要設(shè)備主要設(shè)備IF FOUND()IF FOUND() DISPLAY DISPLAYELSEELSE WAIT WAIT 無此設(shè)備無此設(shè)備! WINDOW! WINDOWENDIFENDIFUSEUSERETURN RETURN * *計算某正數(shù)的平方根計算某正數(shù)的平方根c
26、leacleaset talk offset talk off4,30 say 4,30 say 請輸入一個數(shù)請輸入一個數(shù)= get m defa 0.00= get m defa 0.00readreadif m=0if m=0 x=sqrt(m)x=sqrt(m)6,30 say allt(str(m,10,2)+6,30 say allt(str(m,10,2)+的平方根的平方根=+allt(str(x,10,2)=+allt(str(x,10,2)elseelse6,30 say allt(str(m,10,2)+6,30 say allt(str(m,10,2)+無平方根無平方根!e
27、ndifendifset talk onset talk on宏代換函數(shù)宏代換函數(shù)函數(shù)格式:函數(shù)格式:&.功能:替換出字符型內(nèi)存變量的值。功能:替換出字符型內(nèi)存變量的值。示例:示例: CLEARCLEAR m=5m=5 x=m &x x=m &x為字符型內(nèi)存變量為字符型內(nèi)存變量 ?x &?x &顯示字符型內(nèi)存變量顯示字符型內(nèi)存變量X X的值的值 ?&x &?&x &顯示數(shù)值型內(nèi)存變量顯示數(shù)值型內(nèi)存變量M M的值的值 若宏代換函數(shù)后還有非空的若宏代換函數(shù)后還有非空的,則需在此則需在此前加前加“”才能將宏代換才能將宏代換結(jié)果與
28、結(jié)果與的值聯(lián)接起來。的值聯(lián)接起來。 注意,注意,VFPVFP不允許直接用變量名作為表名,不允許直接用變量名作為表名,即對于存有表名的字符變量即對于存有表名的字符變量bmbm,USE bmUSE bm命令包命令包含語法錯誤,但可用含語法錯誤,但可用&bm&bm來表示表名。除宏代來表示表名。除宏代換外,也可使用名稱表達(dá)式(變量名用括號括換外,也可使用名稱表達(dá)式(變量名用括號括起來)來表示表名,即起來)來表示表名,即USE USE (bmbm)是正確的命)是正確的命令。令。CLEARCLEAR5,10 SAY 5,10 SAY 請輸入表名請輸入表名: GET bm DEFAULT :
29、 GET bm DEFAULT SPACE(10)SPACE(10)READREADbm=ALLTRIM(bm) &bm=ALLTRIM(bm) &刪去兩端空格刪去兩端空格IF FILE(&bm.dbf) &IF FILE(&bm.dbf) &文件存在返回文件存在返回.T.,&BM.T.,&BM后后用一個用一個. .來連接擴(kuò)展名來連接擴(kuò)展名.dbf.dbf USE &bm USE &bm BROWSE BROWSEELSEELSE WAIT WAIT 該文件不存在該文件不存在! WINDOW! WINDOWENDI
30、FENDIFUSE USE 關(guān)于宏代換函數(shù)關(guān)于宏代換函數(shù)1、例:、例:m=“1234” x=&m+1000 &x的值為的值為22342、若被代換的字符變量的值為字符串,則代換、若被代換的字符變量的值為字符串,則代換值為與字符串相應(yīng)的變量名值為與字符串相應(yīng)的變量名abcd=“ty”L=“abcd”K=&L+”1234” & k的值為字符型的的值為字符型的ty1234,即即k=abcd+”1234”三、多分支語句三、多分支語句語句格式:語句格式:DO CASE CASE CASE CASE OTHERWISE ENDCASE在構(gòu)成分支結(jié)構(gòu)時需注意:在構(gòu)成分支結(jié)構(gòu)時需
31、注意: (1)條件語句中的)條件語句中的IF和和ENDIF必須配對必須配對出現(xiàn);同樣,多分支語句中的出現(xiàn);同樣,多分支語句中的DO CASE和和ENDCASE也須配對出現(xiàn)。也須配對出現(xiàn)。 (2)為使程序清晰易讀,對分支、循環(huán))為使程序清晰易讀,對分支、循環(huán)等結(jié)構(gòu)應(yīng)使用縮格書寫方式。等結(jié)構(gòu)應(yīng)使用縮格書寫方式。 (3)表達(dá)分支、循環(huán)的每種語句都不允)表達(dá)分支、循環(huán)的每種語句都不允許在一個命令行中輸入完,必須按所示語句格許在一個命令行中輸入完,必須按所示語句格式一行一個回車分行鍵入。由此可見,這些語式一行一個回車分行鍵入。由此可見,這些語句不能用于命令窗口中。句不能用于命令窗口中。yue=MONTH
32、(DATE() &yue=MONTH(DATE() &獲取當(dāng)前月份獲取當(dāng)前月份DO CASEDO CASE CASE INLIST(yue,3,4,5) CASE INLIST(yue,3,4,5) jj= jj=春春 CASE INLIST(yue,6,7,8) CASE INLIST(yue,6,7,8) jj= jj=夏夏 CASE INLIST(yue,9,10,11) CASE INLIST(yue,9,10,11) jj= jj=秋秋 CASE INLIST(yue,12,1,2) CASE INLIST(yue,12,1,2) jj= jj=冬冬 ENDCASEE
33、NDCASEWAIT jj WINDOW WAIT jj WINDOW & &當(dāng)前季節(jié)顯示在當(dāng)前季節(jié)顯示在WAITWAIT提示窗口內(nèi)提示窗口內(nèi) set talk offset talk offcleacleause cjuse cjrepl all repl all 平均平均 with (with (經(jīng)濟(jì)學(xué)經(jīng)濟(jì)學(xué)+ +語言語言+ +管理學(xué)管理學(xué)+ +金融金融)/4)/46,30 say 6,30 say 請輸入查詢的同學(xué)學(xué)號請輸入查詢的同學(xué)學(xué)號 get xh defa space(10) get xh defa space(10)readreadloca for loca fo
34、r 學(xué)號學(xué)號=xh=xhdo casedo case case case 平均平均=90=90 8,30 say trim( 8,30 say trim(姓名姓名)+)+同學(xué)的成績?yōu)閮?yōu)秀同學(xué)的成績?yōu)閮?yōu)秀! case case 平均平均=80=80 8,30 say trim( 8,30 say trim(姓名姓名)+)+同學(xué)的成績?yōu)榱己猛瑢W(xué)的成績?yōu)榱己? case case 平均平均=70=70 8,30 say trim( 8,30 say trim(姓名姓名)+)+同學(xué)的成績?yōu)橹械韧瑢W(xué)的成績?yōu)橹械? case case 平均平均=60=60 8,30 say trim( 8,30 say
35、trim(姓名姓名)+)+同學(xué)的成績?yōu)榧案裢瑢W(xué)的成績?yōu)榧案? otherwise otherwise 8,30 say trim( 8,30 say trim(姓名姓名)+)+同學(xué)的成績不及格同學(xué)的成績不及格! endcase endcase use use set talk off set talk off return return4.2.3 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)一、條件循環(huán)一、條件循環(huán)語句格式:語句格式:DO WHILE ENDDO 語句格式中的語句格式中的稱為循環(huán)條件,稱為循環(huán)條件,稱為循環(huán)體。稱為循環(huán)體。 執(zhí)行時,若執(zhí)行時,若DO WHILE子句的循環(huán)條件為假循環(huán)就結(jié)子句的循環(huán)條件為假循
36、環(huán)就結(jié)束,然后執(zhí)行束,然后執(zhí)行ENDDO子句后面的語句;為真則執(zhí)行循環(huán)體,子句后面的語句;為真則執(zhí)行循環(huán)體,一旦遇到一旦遇到ENDDO就自動返回到就自動返回到DO WHILE重新判斷循環(huán)重新判斷循環(huán)條件是否成立,以決定是否繼續(xù)循環(huán)。條件是否成立,以決定是否繼續(xù)循環(huán)。 EXAM4-7,EXAM4-8 二、步長循環(huán)二、步長循環(huán)語句格式:語句格式: FOR = TO STEP ENDFOR | NEXT 語句格式中的語句格式中的稱為循環(huán)變量稱為循環(huán)變量、分別稱為初值、終值、步長。分別稱為初值、終值、步長。 執(zhí)行時,通過比較循環(huán)變量值與終值來決執(zhí)行時,通過比較循環(huán)變量值與終值來決定是否執(zhí)行定是否執(zhí)行。
37、步長。步長 為正數(shù)時,若為正數(shù)時,若循環(huán)變量值不大于終值就執(zhí)行循環(huán)體;步長為循環(huán)變量值不大于終值就執(zhí)行循環(huán)體;步長為負(fù)數(shù),若循環(huán)變量值不小于終值就執(zhí)行循環(huán)體。負(fù)數(shù),若循環(huán)變量值不小于終值就執(zhí)行循環(huán)體。執(zhí)行一旦遇到執(zhí)行一旦遇到ENDFOR或或NEXT,循環(huán)變量值,循環(huán)變量值即加上步長,然后返回即加上步長,然后返回FOR重新與終值比較。重新與終值比較。 步長的缺省值為步長的缺省值為1。 EXAM4-9 三、掃描循環(huán)三、掃描循環(huán)語句格式:語句格式: SCAN FOR WHILE ENDSCAN SCAN循環(huán)針對當(dāng)前表進(jìn)行循環(huán),循環(huán)針對當(dāng)前表進(jìn)行循環(huán),子句表示記錄范子句表示記錄范圍,缺省值為圍,缺省值
38、為ALL。語句執(zhí)行時在。語句執(zhí)行時在中依次尋找滿足中依次尋找滿足FOR條件或條件或WHILE條件的記錄,并對找到的記錄執(zhí)行條件的記錄,并對找到的記錄執(zhí)行。注:掃描循環(huán)只適用于表文件的處理!注:掃描循環(huán)只適用于表文件的處理! EXAM4-10四、循環(huán)輔助語句四、循環(huán)輔助語句 LOOP語句能使執(zhí)行轉(zhuǎn)向循環(huán)語句頭部繼續(xù)循環(huán)。語句能使執(zhí)行轉(zhuǎn)向循環(huán)語句頭部繼續(xù)循環(huán)。 EXIT語句用來立即退出循環(huán),轉(zhuǎn)去執(zhí)行語句用來立即退出循環(huán),轉(zhuǎn)去執(zhí)行ENDDO,ENDFOR或或ENDSCAN后面的語句。后面的語句。 DO WHILE DO WHILE LOOP EXIT ENDDO ENDDO 注意:在注意:在FOR循
39、環(huán)語句中執(zhí)行循環(huán)語句中執(zhí)行LOOP語句,語句,將會先修改循環(huán)變量的值,然后轉(zhuǎn)向循環(huán)語句將會先修改循環(huán)變量的值,然后轉(zhuǎn)向循環(huán)語句頭部。在頭部。在SCAN循環(huán)語句中執(zhí)行循環(huán)語句中執(zhí)行LOOP語句,語句,將會先移動記錄指針,然后轉(zhuǎn)去判斷循環(huán)條件。將會先移動記錄指針,然后轉(zhuǎn)去判斷循環(huán)條件。 EXAM4-11 EXAM4-11-1 EXAM4-11-2 EXAM4-11-3五、多重循環(huán)五、多重循環(huán) 若一個循環(huán)語句的循環(huán)體內(nèi)又包含其它循若一個循環(huán)語句的循環(huán)體內(nèi)又包含其它循環(huán),就構(gòu)成了多重循環(huán),也稱為循環(huán)嵌套。環(huán),就構(gòu)成了多重循環(huán),也稱為循環(huán)嵌套。 EXAM4-12 EXAM4-12-14.3 4.3 多模
40、塊程序多模塊程序一、子程序一、子程序二、自定義函數(shù)二、自定義函數(shù)三、過程三、過程四、變量作用域四、變量作用域4.3 4.3 多模塊程序多模塊程序4.3.1 子程序子程序一、調(diào)用與返回一、調(diào)用與返回 對于兩個具有調(diào)用關(guān)系的程序文件,常稱調(diào)用對于兩個具有調(diào)用關(guān)系的程序文件,常稱調(diào)用程序?yàn)橹鞒绦?,被調(diào)用程序?yàn)樽映绦?。程序?yàn)橹鞒绦?,被調(diào)用程序?yàn)樽映绦颉?主程序執(zhí)行時遇到主程序執(zhí)行時遇到DO命令,執(zhí)行就轉(zhuǎn)向子程命令,執(zhí)行就轉(zhuǎn)向子程序,稱為調(diào)用子程序。子程序執(zhí)行到序,稱為調(diào)用子程序。子程序執(zhí)行到RETURN語語句(或缺省該語句),就會返回到主程序中轉(zhuǎn)出句(或缺省該語句),就會返回到主程序中轉(zhuǎn)出處的下一語句
41、繼續(xù)執(zhí)行程序,稱為從子程序返回,處的下一語句繼續(xù)執(zhí)行程序,稱為從子程序返回,或簡稱返主?;蚝喎Q返主。 subp二、帶參數(shù)子程序的調(diào)用與返回二、帶參數(shù)子程序的調(diào)用與返回命令格式:命令格式:DO WITH 說明:說明:中的參數(shù)可以是表達(dá)式,但若為內(nèi)中的參數(shù)可以是表達(dá)式,但若為內(nèi) 存變量必須具有初值。存變量必須具有初值。 調(diào)用子程序時參數(shù)表中的參數(shù)要傳送給子程序,調(diào)用子程序時參數(shù)表中的參數(shù)要傳送給子程序,子程序中也必須設(shè)置相應(yīng)的參數(shù)接收語句。子程序中也必須設(shè)置相應(yīng)的參數(shù)接收語句。命令格式:命令格式:PARAMETERS 功能:功能:指定內(nèi)存變量以接收指定內(nèi)存變量以接收DO命令發(fā)送的參數(shù)值,命令發(fā)送的
42、參數(shù)值, 返主時把內(nèi)存變量值回送給調(diào)用程序中相應(yīng)返主時把內(nèi)存變量值回送給調(diào)用程序中相應(yīng) 的內(nèi)存變量。的內(nèi)存變量。說明:說明: (1)PARAMETERS語句必須是被調(diào)語句必須是被調(diào)用程序的第一個語句。用程序的第一個語句。 (2)命令中的參數(shù)被)命令中的參數(shù)被VFP默認(rèn)為私有默認(rèn)為私有變量,返主時回送參數(shù)值后即被清除。變量,返主時回送參數(shù)值后即被清除。 (3)命令中的參數(shù)依次與調(diào)用命令)命令中的參數(shù)依次與調(diào)用命令WITH子句中的參數(shù)相對應(yīng),故兩者參數(shù)個子句中的參數(shù)相對應(yīng),故兩者參數(shù)個數(shù)必須相同。數(shù)必須相同。EXAM4-13三、子程序嵌套三、子程序嵌套 子程序還可以調(diào)用它自己的子程序,即子程序還可
43、以調(diào)用它自己的子程序,即子程序可以嵌套調(diào)用。子程序可以嵌套調(diào)用。VFP的返回命令包含的返回命令包含了因嵌套而引出的多種返回方式。了因嵌套而引出的多種返回方式。命令格式:命令格式:RETURN TO MASTER | TO 命令格式中的命令格式中的 TO MASTER選項選項,使返使返主時直接返回到最外層主程序;可選項主時直接返回到最外層主程序;可選項TO 強(qiáng)制返回到指定的程序文件。強(qiáng)制返回到指定的程序文件。 4.3.2 4.3.2 自定義函數(shù)自定義函數(shù)一、自定義函數(shù)的建立一、自定義函數(shù)的建立自定義函數(shù)的格式:自定義函數(shù)的格式: FUNCTION PARAMETERS RETURN ENDFUN
44、C說明說明: (1)若使用)若使用FUNCTION語句來指出函數(shù)語句來指出函數(shù)名,表示該函數(shù)包含在調(diào)用程序中。若缺省名,表示該函數(shù)包含在調(diào)用程序中。若缺省該語句,表示此函數(shù)是一個獨(dú)立文件,函數(shù)該語句,表示此函數(shù)是一個獨(dú)立文件,函數(shù)名將在建立文件時確定,其擴(kuò)展名默認(rèn)名將在建立文件時確定,其擴(kuò)展名默認(rèn)為為.PRG。還需注意,自定義函數(shù)的函數(shù)名不。還需注意,自定義函數(shù)的函數(shù)名不能和能和VFP系統(tǒng)函數(shù)同名,也不能和內(nèi)存變量系統(tǒng)函數(shù)同名,也不能和內(nèi)存變量同名。同名。 (2)組成為函數(shù)體,用于進(jìn)組成為函數(shù)體,用于進(jìn)行各種處理;簡單的函數(shù)其函數(shù)體也可為空。行各種處理;簡單的函數(shù)其函數(shù)體也可為空。 (3)RE
45、TURN語句用于返回函數(shù)值,其中的語句用于返回函數(shù)值,其中的值就是函數(shù)值。若缺省該語句,則返回的函值就是函數(shù)值。若缺省該語句,則返回的函數(shù)值為數(shù)值為.T.。 (4)自定義函數(shù)與系統(tǒng)函數(shù)調(diào)用方法相同,其)自定義函數(shù)與系統(tǒng)函數(shù)調(diào)用方法相同,其形式為:函數(shù)名(形式為:函數(shù)名() EXAM4-14A,EXAM4-14B二、數(shù)組參數(shù)的傳遞二、數(shù)組參數(shù)的傳遞 數(shù)組作為參數(shù)時,發(fā)送參數(shù)與接收參數(shù)都使用數(shù)組作為參數(shù)時,發(fā)送參數(shù)與接收參數(shù)都使用數(shù)組名,發(fā)送參數(shù)數(shù)組名前要加數(shù)組名,發(fā)送參數(shù)數(shù)組名前要加來標(biāo)記,而作為來標(biāo)記,而作為接收參數(shù)的數(shù)組不需事先定義。接收參數(shù)的數(shù)組不需事先定義。 例子例子SZCS4.3.3
46、過程過程 VFP允許在一個允許在一個.PRG文件中設(shè)置多個程序模塊,文件中設(shè)置多個程序模塊,并將主程序以外的每個模塊定義為一個過程。這種并將主程序以外的每個模塊定義為一個過程。這種文件可稱為文件可稱為“過程文件過程文件”,仍使用,仍使用.PRG為擴(kuò)展名。為擴(kuò)展名。過程的格式:過程的格式: PROCEDURE PARAMETERS RETURN ENDPROC過程打開與關(guān)閉的命令:過程打開與關(guān)閉的命令: SET PROCEDURE TO EXAM4-15,EXAM4-16 ,root1.prg過程的調(diào)用過程的調(diào)用格式:格式:1、調(diào)用過程:、調(diào)用過程:DO WITH 功能:用于調(diào)用與主程序處于同一
47、文件的過程功能:用于調(diào)用與主程序處于同一文件的過程2、調(diào)用過程:、調(diào)用過程:DO WITH IN 功能:用于調(diào)用與主程序不處于同一文件功能:用于調(diào)用與主程序不處于同一文件的過程文件中的過程。的過程文件中的過程。 EXAM4-16 EXAM4-154.3.4 4.3.4 帶參數(shù)的函數(shù)與過程的另一種格式帶參數(shù)的函數(shù)與過程的另一種格式 FUNCTION/PROCEDURE () RETURN ENDFUNC/ENDPROC首行語句等價于:首行語句等價于: FUNCTION/PROCEDURE LPARAMETERS 在函數(shù)或過程的定義行的括號中包含參數(shù),表明在函數(shù)或過程的定義行的括號中包含參數(shù),表明
48、該參數(shù)的作用域僅為該函數(shù)或過程。該參數(shù)的作用域僅為該函數(shù)或過程。4.3.5 4.3.5 變量的作用域變量的作用域 若以變量的若以變量的作用域作用域來分類,內(nèi)存變量可分來分類,內(nèi)存變量可分為為公共變量、私有變量和本地變量公共變量、私有變量和本地變量3類。類。一、公共變量:一、公共變量:在任何模塊中都可使用的變量稱在任何模塊中都可使用的變量稱為公共變量,可用下述命令來建立。為公共變量,可用下述命令來建立。命令格式:命令格式:PUBLIC 功能:功能:將將指定的變量設(shè)置為公共指定的變量設(shè)置為公共變量,并將這些變量的初值均賦以變量,并將這些變量的初值均賦以.F.。說明說明: (1)若下層模塊中建立的內(nèi)
49、存變量要供)若下層模塊中建立的內(nèi)存變量要供上層使用,或某模塊中建立的內(nèi)存變量要供并上層使用,或某模塊中建立的內(nèi)存變量要供并列模塊使用,必須將這種變量說明成公共變量。列模塊使用,必須將這種變量說明成公共變量。 (2)VFP默認(rèn)命令窗口中定義的變量都默認(rèn)命令窗口中定義的變量都是公共變量,但這樣定義的變量不能在程序方是公共變量,但這樣定義的變量不能在程序方式下利用。式下利用。 (3)程序終止執(zhí)行量公共變量不會自動)程序終止執(zhí)行量公共變量不會自動清除,而只能用命令來清除。注意無法用帶通清除,而只能用命令來清除。注意無法用帶通配符的配符的RELEASE命令清除公共變量。命令清除公共變量。二、私有變量二、
50、私有變量 VFP默認(rèn)程序中定義的變量是私有變量,默認(rèn)程序中定義的變量是私有變量,私有變量僅在定義它的模塊及其下層模塊中有私有變量僅在定義它的模塊及其下層模塊中有效,而在定義它的模塊運(yùn)行結(jié)束時自動清除。效,而在定義它的模塊運(yùn)行結(jié)束時自動清除。 私有變量允許與上層模塊的變量同名,但私有變量允許與上層模塊的變量同名,但此時為分清兩者是不同的變量,需要采用暫時此時為分清兩者是不同的變量,需要采用暫時屏蔽上級模塊變量的辦法??墒褂盟接凶兞柯暺帘紊霞壞K變量的辦法??墒褂盟接凶兞柯暶髅睢C髅?。命令格式:命令格式:PRIVATE ALL LIKE | EXCEPT 功能:功能: 聲明私有變量并隱藏上級模
51、塊的同名變量,聲明私有變量并隱藏上級模塊的同名變量,直到聲明它的程序、過程或自定義函數(shù)執(zhí)行結(jié)直到聲明它的程序、過程或自定義函數(shù)執(zhí)行結(jié)束后,才恢復(fù)使用先前隱藏的變量。束后,才恢復(fù)使用先前隱藏的變量。說明:說明: (1)“聲明聲明”與與“建立建立”不一樣,前者不一樣,前者僅 指 變 量 的 類 型 , 后 者 包 括 類 型 與 值 。僅 指 變 量 的 類 型 , 后 者 包 括 類 型 與 值 。PUBLIC命令聲明變量的類型外還賦了初值,命令聲明變量的類型外還賦了初值,故稱為建立;而故稱為建立;而PRIVATE并不自動對變量賦并不自動對變量賦值,僅是聲明而已。值,僅是聲明而已。 (2)若應(yīng)用
52、程序由多個人員同時開發(fā),)若應(yīng)用程序由多個人員同時開發(fā),很可能因變量名相同造成失誤,如果各人將很可能因變量名相同造成失誤,如果各人將自己所用的變量用自己所用的變量用PRIVATE命令來聲明,就命令來聲明,就能避免發(fā)生混淆。能避免發(fā)生混淆。 (3)在程序模塊調(diào)用時,參數(shù)接受命令)在程序模塊調(diào)用時,參數(shù)接受命令PARAMETERS聲明的參變量也是私有變量,聲明的參變量也是私有變量,與與PRIVATE命令作用相同。命令作用相同。EXAM4-17 三、本地變量三、本地變量 本地變量只能在建立它的模塊中使用,而本地變量只能在建立它的模塊中使用,而且不能在高層或底層模塊使用,該模塊運(yùn)行且不能在高層或底層模
53、塊使用,該模塊運(yùn)行結(jié)束時本地變量就自動釋放。結(jié)束時本地變量就自動釋放。命令格式:命令格式:LOCAL 功能:功能:將將指定的變量設(shè)置為本地指定的變量設(shè)置為本地變量,并將這些變量的初值均賦以變量,并將這些變量的初值均賦以.F.。說明:說明:在程序模塊調(diào)用時,參數(shù)接受命令在程序模塊調(diào)用時,參數(shù)接受命令LPARAMETERS接受的參變量也只在本模塊接受的參變量也只在本模塊中起作用。中起作用。 注意:注意:LOCAL與與LOCATE前前4個字母相個字母相同,故不可縮寫。同,故不可縮寫。4.3.6 4.3.6 程序調(diào)試方法程序調(diào)試方法一、調(diào)試的概念一、調(diào)試的概念 程序調(diào)試的目的就是檢查并糾正程程序調(diào)試的
54、目的就是檢查并糾正程序中的錯誤,以保證程序的可靠運(yùn)行。序中的錯誤,以保證程序的可靠運(yùn)行。調(diào)試通常分三步進(jìn)行:檢查程序是否有調(diào)試通常分三步進(jìn)行:檢查程序是否有錯,確定出錯的位置,糾正錯誤。錯,確定出錯的位置,糾正錯誤。1. 程序中的常見錯誤程序中的常見錯誤 (1)語法錯誤)語法錯誤 (2)超出系統(tǒng)允許范圍的錯誤)超出系統(tǒng)允許范圍的錯誤 (3)邏輯錯誤)邏輯錯誤2. 查錯技術(shù)查錯技術(shù) 靜態(tài)檢查,例如閱讀程序,找出錯誤。靜態(tài)檢查,例如閱讀程序,找出錯誤。 動態(tài)檢查,通過執(zhí)行程序來考察執(zhí)行結(jié)果是否與設(shè)動態(tài)檢查,通過執(zhí)行程序來考察執(zhí)行結(jié)果是否與設(shè)計要求相符。計要求相符。 (1)設(shè)置斷點(diǎn))設(shè)置斷點(diǎn) (2)
55、單步執(zhí)行)單步執(zhí)行 (3)跟蹤)跟蹤 (4)設(shè)置錯誤陷阱)設(shè)置錯誤陷阱 所謂設(shè)置錯誤陷井的意思就是在系統(tǒng)中啟動一個監(jiān)控程所謂設(shè)置錯誤陷井的意思就是在系統(tǒng)中啟動一個監(jiān)控程序,一旦錯誤發(fā)生,這個監(jiān)控程序就將錯誤捕獲,并不讓錯誤序,一旦錯誤發(fā)生,這個監(jiān)控程序就將錯誤捕獲,并不讓錯誤顯示出來,可保證程序的繼續(xù)運(yùn)行,然后用一個命令去對出現(xiàn)顯示出來,可保證程序的繼續(xù)運(yùn)行,然后用一個命令去對出現(xiàn)的錯誤進(jìn)行處理,比如顯示一個錯誤提示等。如果錯誤不發(fā)的錯誤進(jìn)行處理,比如顯示一個錯誤提示等。如果錯誤不發(fā)生,這個命令則始終不執(zhí)行。生,這個命令則始終不執(zhí)行。 ON ERROR 命令命令 功能:此即為指定的在捕獲錯誤后
56、所要執(zhí)行的程序。一旦功能:此即為指定的在捕獲錯誤后所要執(zhí)行的程序。一旦程序執(zhí)行到某個語句發(fā)生錯誤,該命令即被執(zhí)行,執(zhí)行完后,程序執(zhí)行到某個語句發(fā)生錯誤,該命令即被執(zhí)行,執(zhí)行完后,接著執(zhí)行發(fā)生錯誤的下一條語句。接著執(zhí)行發(fā)生錯誤的下一條語句。 有時為了對錯誤進(jìn)行處理,一條命令可能是不夠的,則可有時為了對錯誤進(jìn)行處理,一條命令可能是不夠的,則可用該命令調(diào)用一個子程序,那么需要在子程序執(zhí)行完后才接用該命令調(diào)用一個子程序,那么需要在子程序執(zhí)行完后才接著執(zhí)行發(fā)生錯誤的下一條語句。著執(zhí)行發(fā)生錯誤的下一條語句。 如果子程序中有如果子程序中有 RETRY 命令,該命令將使子程序返回,并命令,該命令將使子程序返回
57、,并重新執(zhí)行發(fā)生錯誤的語句,這個命令一般用在這種情況下,重新執(zhí)行發(fā)生錯誤的語句,這個命令一般用在這種情況下,當(dāng)子程序?qū)﹀e誤進(jìn)行了處理,使得再執(zhí)行該命令時不會發(fā)生當(dāng)子程序?qū)﹀e誤進(jìn)行了處理,使得再執(zhí)行該命令時不會發(fā)生錯誤了,這樣就可以使程序按照正常情況運(yùn)行下去。錯誤了,這樣就可以使程序按照正常情況運(yùn)行下去。 當(dāng)處理錯誤子程序執(zhí)行時,還可以用當(dāng)處理錯誤子程序執(zhí)行時,還可以用 ERROR()(), MESSAGE()(), LINE()(), PROGRAM()() 等函數(shù)返回出錯的等函數(shù)返回出錯的編號、信息、出錯的語句所在行號以及出錯的程序等,這些可編號、信息、出錯的語句所在行號以及出錯的程序等,這
58、些可能能對處理錯誤有幫助。對處理錯誤有幫助。例如:當(dāng)例如:當(dāng) DBF 文件的結(jié)構(gòu)化復(fù)合索引損壞時,如果您打開文件的結(jié)構(gòu)化復(fù)合索引損壞時,如果您打開 DBF 文件就會出錯,下面的例子就捕獲錯誤并自動修復(fù)索引文件就會出錯,下面的例子就捕獲錯誤并自動修復(fù)索引二、調(diào)試器二、調(diào)試器1. 打開調(diào)試器的窗口打開調(diào)試器的窗口 (1)選定)選定VFP工具菜單的調(diào)試器命令工具菜單的調(diào)試器命令 (2)在命令窗口鍵入)在命令窗口鍵入DEBUG命令命令2. 調(diào)試器窗口的組成調(diào)試器窗口的組成 (1)跟蹤窗口:顯示選定的程序,可為程序設(shè)置斷)跟蹤窗口:顯示選定的程序,可為程序設(shè)置斷點(diǎn)。點(diǎn)。 (2)監(jiān)視窗口:用于設(shè)置監(jiān)視表達(dá)
59、式,并能顯示監(jiān))監(jiān)視窗口:用于設(shè)置監(jiān)視表達(dá)式,并能顯示監(jiān)視表達(dá)式及其當(dāng)前值。視表達(dá)式及其當(dāng)前值。 (3)局部窗口:用于顯示程序、過程或方法程序中)局部窗口:用于顯示程序、過程或方法程序中的所有變量、數(shù)組、對象以及對象成員。的所有變量、數(shù)組、對象以及對象成員。 (4)調(diào)用堆棧窗口:顯示正在執(zhí)行的過程、程序和)調(diào)用堆棧窗口:顯示正在執(zhí)行的過程、程序和方法程序。方法程序。 (5)調(diào)試輸出窗口:用于顯示活動程序、過程或方)調(diào)試輸出窗口:用于顯示活動程序、過程或方法程序代碼的輸出。法程序代碼的輸出。3. 調(diào)試器窗口的調(diào)試菜單調(diào)試器窗口的調(diào)試菜單 (1)執(zhí)行:開始執(zhí)行在跟蹤窗口中打開的程序。)執(zhí)行:開始執(zhí)
60、行在跟蹤窗口中打開的程序。 (2)繼續(xù)執(zhí)行:從當(dāng)前代碼行開始執(zhí)行跟蹤窗)繼續(xù)執(zhí)行:從當(dāng)前代碼行開始執(zhí)行跟蹤窗口中的程序,遇到斷點(diǎn)就暫停執(zhí)行。口中的程序,遇到斷點(diǎn)就暫停執(zhí)行。 (3)單步:逐行執(zhí)行代碼。)單步:逐行執(zhí)行代碼。 (4)單步跟蹤:逐行執(zhí)行代碼)單步跟蹤:逐行執(zhí)行代碼 (5)運(yùn)行到光標(biāo)處:執(zhí)行從當(dāng)前指示器到光標(biāo))運(yùn)行到光標(biāo)處:執(zhí)行從當(dāng)前指示器到光標(biāo)所在行之間的代碼。所在行之間的代碼。 (6)定位修改:打開文本編輯窗口,修改程序。)定位修改:打開文本編輯窗口,修改程序。 (7)取消:關(guān)閉程序,并終止程序執(zhí)行。)取消:關(guān)閉程序,并終止程序執(zhí)行。 EXAM4-184.3.7 結(jié)構(gòu)化程序設(shè)計結(jié)構(gòu)化程序設(shè)計 結(jié)構(gòu)化程序設(shè)計常用的結(jié)構(gòu)化程序設(shè)計常用的3種方法:自頂向下進(jìn)行種方法:自頂向下進(jìn)行設(shè)計、模塊化和層次化。設(shè)計、模塊化和層次化。 (1)自頂向下,逐步求精)自頂向下,逐步求精 系統(tǒng)設(shè)計可以采取自底向上與自頂向下兩
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公路路政許可培訓(xùn)課件
- 無錫德慧培訓(xùn)
- ga4傳祺培訓(xùn)課件
- 無菌附錄培訓(xùn)
- 護(hù)理課件制作軟件
- 企業(yè)財務(wù)管理制度指南
- 簡筆畫教師培訓(xùn)課件
- 2026年汽車電機(jī)培訓(xùn)
- 2026年航空物流管理培訓(xùn)
- 簡報培訓(xùn)課件
- 規(guī)范外賣企業(yè)管理制度
- 2026年公共部門人力資源管理試題含答案
- 2026年中國數(shù)聯(lián)物流備考題庫有限公司招聘備考題庫有答案詳解
- 黑龍江省哈爾濱市師范大學(xué)附中2026屆數(shù)學(xué)高三第一學(xué)期期末質(zhì)量檢測模擬試題含解析
- DB32/T+5311-2025+港口與道路工程+固化土施工技術(shù)規(guī)范
- DB31T+1661-2025公共區(qū)域電子屏播控安全管理要求
- 醫(yī)療聯(lián)合體兒童保健服務(wù)模式創(chuàng)新
- 2025年河南農(nóng)業(yè)大學(xué)輔導(dǎo)員考試真題
- 2026年書記員考試題庫附答案
- 中國高尿酸血癥與痛風(fēng)診療指南(2024更新版)課件
- 2025至2030中國專用車行業(yè)發(fā)展分析及投資前景與戰(zhàn)略規(guī)劃報告
評論
0/150
提交評論