




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第6章 VFP的結(jié)構(gòu)化程序設(shè)計6.1 程序與程序文件6.2 程序的基本結(jié)構(gòu)6.3 模塊化程序設(shè)計本章要點(diǎn)前面各章都是以交互方式,即在命令窗口中逐條輸入命令或通過選擇菜單來執(zhí)行Visual FoxPro命令的。除此之外,常常采用程序的方式來完成更為復(fù)雜的任務(wù)。VFP程序設(shè)計包括結(jié)構(gòu)化程序設(shè)計和面向?qū)ο蟪绦蛟O(shè)計。前者是傳統(tǒng)的程序設(shè)計方法;后者面向?qū)ο?,用戶界面可利用VFP提供的輔助工具來設(shè)計,應(yīng)用程序可自動生成,但是仍需用戶編寫一些過程代碼。就此而言,結(jié)構(gòu)化程序設(shè)計仍是面向?qū)ο蟪绦蛟O(shè)計的基礎(chǔ)。 6.1 程序與程序文件6.1.1 程序的概念 程序是能夠完成一定任務(wù)的命令的有序集合。這組命令被存放在稱
2、為程序文件或命令文件(以.PRG為擴(kuò)展名)的文本文件中。當(dāng)運(yùn)行程序時,系統(tǒng)會按照一定的次序自動執(zhí)行包含在程序文件的命令。程序方式的特點(diǎn):可以利用編輯器,方便地輸入、修改和保護(hù)程序??梢杂枚喾N方式、多次運(yùn)行程序??梢栽谝粋€程序中調(diào)用另一個程序。6.1.2 程序文件的建立與執(zhí)行1程序文件的建立與修改以命令方式建立、編輯程序文件 MODIFY COMMAND | ? MODIFY FILE | ? w存盤 q或者放棄存盤以菜單方式建立、編輯程序文件編寫一個計算半徑為10米的圓的周長和面積的程序,程序文件名為LS1.prg。R=10L=2*3.14*R &計算周長S=3.14*R2 &計算面積?L,S
3、 &輸出周長和面積2運(yùn)行程序文件 (1) 菜單方式從“程序”菜單中選擇“運(yùn)行”命令,打開“運(yùn)行”對話框。從文件列表框中選擇要運(yùn)行的程序文件,并單擊“運(yùn)行”命令按鈕。 (2) 命令方式用命令方式運(yùn)行程序文件的格式為:DO WITH DO命令默認(rèn)運(yùn)行.PRG程序, DO命令中的只需輸入主文件名。要運(yùn)行其它程序,中須包括擴(kuò)展名。 當(dāng)程序文件被執(zhí)行時,文件中包含的命令將被依次執(zhí)行,直到所有的命令被執(zhí)行完畢。但當(dāng)執(zhí)行到程序文件中的以下命令時會終止執(zhí)行或改變執(zhí)行循序:CANCEL:終止程序運(yùn)行,清除所有的私有變量,返回命令窗口。DO:轉(zhuǎn)去執(zhí)行另一個程序。RETURN:結(jié)束當(dāng)前程序的執(zhí)行,返回到調(diào)用它的上級
4、程序,若無上級程序則返回命令窗口。QUIT:退出Visual FoxPro系統(tǒng),返回到操作系統(tǒng)。 6.1.3 簡單的輸入輸出命令1INPUT命令I(lǐng)NPUT TO 功能:該命令等待用戶從鍵盤輸入數(shù)據(jù),用戶可以輸入任意合法的表達(dá)式。當(dāng)用戶以回車鍵結(jié)束輸入時,系統(tǒng)將表達(dá)式的值存入指定的內(nèi)存變量,程序繼續(xù)運(yùn)行。說明:如果選用 ,那末系統(tǒng)會首先顯示該表達(dá)式的值,作為提示信息。輸入的數(shù)據(jù)可以是常量、變量,也可以是一般的表達(dá)式。但不能不輸入任何內(nèi)容直接按回車鍵。輸入字符串是必須加定界符,輸入邏輯型常量是要用圓點(diǎn)定界符(如.T.,.F.),輸入日期時間性常量是要用大括號(如2001-03-01)。2ACCEP
5、T命令A(yù)CCEPT TO 功能:該命令等待用戶從鍵盤輸入字符串。當(dāng)用戶以回車鍵結(jié)束輸入時,系統(tǒng)將該字符串存人指定的內(nèi)容變量,程序繼續(xù)運(yùn)行。說明:如果選用 ,那么系統(tǒng)會首先顯示該表達(dá)式的值,作為提示信息。該命令只能接收字符串。用戶在輸入字符串時不需要加定界符;否則,系統(tǒng)會把定界符作為字符串本身的一部分。如果不輸入任何內(nèi)容而直接按回車鍵,系統(tǒng)會把空串賦給指定的內(nèi)存變量。 3WAIT命令WAIT TO 功能:該命令顯示字符表達(dá)式之值作為提示信息,暫停程序的執(zhí)行,直到用戶按任意鍵或單擊鼠標(biāo)時繼續(xù)程序的執(zhí)行。說明:如果 值為空串,那么不會顯示任何提示信息。如果沒有指定 ,則顯示默認(rèn)的提示信息:“按任何鍵
6、繼續(xù).”。用來保存用戶鍵人的字符,其類型為字符型。 4文本輸出命令命令格式: TEXT ENDTEXT功能:將文本信息內(nèi)容原樣輸出。 5定位輸入輸出命令行,列 SAY PICTURE FUNCTION GET PICTURE FUNCTION DEFAULT WHEN RANGE , VALID READ功能:從屏幕上指定位置開始顯示GET變量的值并可接受輸入新值。說明:GET后面的變量可以是字段變量,但要先打開數(shù)據(jù)表。GET后面的變量可以是內(nèi)存變量,但要先定義(賦初值)。READ用于激活屏幕,使當(dāng)前所有的GET能接受輸入(修改),不需要修改按回車鍵。RANGE 限定變量(C,N)的取值范圍,
7、只有在數(shù)據(jù)修改后才檢驗(yàn)VALID若邏輯表達(dá)式的值為.T.或非0,結(jié)束本操作;值為1跳到下一域(GET);若值為為.F.或0,返回本域重新輸入。VALID 不管數(shù)據(jù)是否修改都要檢驗(yàn)。WHEN 的條件表達(dá)式的值為.F.時,不能修改變量。模式符僅對相應(yīng)位置施加作用,常用模式符如下:A: 純字母9:純數(shù)字(可含+/-號)N :字母,數(shù)字X:字符# :數(shù)字(可含+/-號及空格)Y :肯定或否定符Y,y,N,n. :小數(shù)點(diǎn), :數(shù)值分節(jié)符! :小寫換大寫功能符對整個數(shù)據(jù)施加作用,常用功能符如下:A:純字母Z:數(shù)值為0時顯示空白S(n):限制字符型數(shù)據(jù)的顯示寬度 6.2 程序的基本結(jié)構(gòu)程序結(jié)構(gòu)是指程序中命令
8、或語句執(zhí)行的流程結(jié)構(gòu)。程序有三種基本結(jié)構(gòu):順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。順序結(jié)構(gòu)是程序中最簡單、最普遍使用的一種基本結(jié)構(gòu),其特點(diǎn)是按照語句排列的先后順序依次執(zhí)行,以上所寫程序都是順序結(jié)構(gòu)。6.2.1 選擇結(jié)構(gòu)分支結(jié)構(gòu)是在程序執(zhí)行時,根據(jù)不同的條件,選擇執(zhí)行不同的程序語句,用來解決有選擇、有轉(zhuǎn)移的諸多問題。支持選擇結(jié)構(gòu)的語句有下面幾種:1IF條件語句IF ELSE ENDIF 條件命令序列1ENDIF的下一條命令NY條件命令序列1ENDIF的下一條命令命令序列2YN輸入貨物重量,計算該貨物的托運(yùn)費(fèi),記費(fèi)標(biāo)準(zhǔn)每公斤為0.1元,當(dāng)超過50公斤后,超出數(shù)每公斤為0.2元。分別用雙分支選擇及單分支選擇編
9、寫程序,程序文件名分別為YH1.prg及YH2.prg。用雙分支選擇編寫YH1.prg程序如下:INPUT “請輸入貨物重量:” TO w IF w=50 f=w*0.1 &貨物重量沒有超過50公斤時的計算公式ELSE f=50*01+(w-50)*0.2 &貨物重量超過50公斤時的計算公式ENDIF? “托運(yùn)費(fèi)為:”,f用單分支選擇編寫YH2.prg程序如下:INPUT “請輸入貨物重量:” TO w IF w50 f=50*01+(w-50)*0.2 ENDIF? “托運(yùn)費(fèi)為:”,f輸入姓名,在XSQK.DBF表中查詢該姓名對應(yīng)的學(xué)號、身高及體重,并用定位輸出命令輸出,程序文件名為ifsa
10、y.prg。USE XSQKACCEPT “請輸入姓名:” TO xm &執(zhí)行此命令時要輸入姓名如:馬大大Locat for 姓名=xmIF .NOT. EOF( ) &當(dāng)指針沒有指到文件末時,表示表中有用戶輸入的姓名15,40 SAY “姓名:”+姓名16,40 SAY “學(xué)號:”+學(xué)號15,60 SAY “身高:”+str(身高,6,2)16,60 SAY “體重:”+str(體重,6)ELSE15,40 SAY “查無此人!”ENDIFUSE2多分支語句多分支語句實(shí)現(xiàn)一種擴(kuò)展的選擇結(jié)構(gòu),它可以根據(jù)條件從多組命令中選擇一組執(zhí)行。DO CASE CASE CASE CASE ORTHERWI
11、SE ENDCASE編寫一個簡單的菜單程序,提供“添加”、“修改”和“打印”三種功能選擇并轉(zhuǎn)入相應(yīng)處理,程序文件名為MCASE.prg。use XSQKCLEARtext 1.添加 2.修改 3.打印endtextinput 請選擇: to opDO CASECASE OP=1 APPENDCASE OP=2 BROWCASE OP=3 WAIT “請準(zhǔn)備好打印機(jī),按任一鍵開始” LIST TO PRINTOTHERWISE ? 選擇錯!ENDCASEUSE6.2.2 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)也稱為重復(fù)結(jié)構(gòu),是指程序在執(zhí)行的過程中,其中的某段代碼被重復(fù)執(zhí)行若干次。 被重復(fù)執(zhí)行的代碼段,通常稱之為循環(huán)體
12、。VisualFoxPro 提供了多種循環(huán)結(jié)構(gòu)。1條件循環(huán)DO WHILE LOOP EXIT ENDDO條件條件循環(huán)體ENDDO后面的語句.F.T.LOOPEXIT循環(huán)體ENDDO后面的語句.F.T.2步長循環(huán)FOR = TO STEP ENDFOR | NEXT該語句通常用于實(shí)現(xiàn)已知循環(huán)次數(shù)情況下的循環(huán)結(jié)構(gòu)。執(zhí)行該語句時,首先將初值賦給循環(huán)變量,然后判斷循環(huán)條件是否成立(若步長為正值,循環(huán)條件為“循環(huán)變量 = 終值”)。若循環(huán)條件成立,則執(zhí)行循環(huán)體,然后循環(huán)變量增加一個步長值,并再次判斷循環(huán)條件是否成立,以確定是否再次執(zhí)行循環(huán)體。若循環(huán)條件不成立,則結(jié)束該循環(huán)語句,執(zhí)行ENDFOR后面的語
13、句。3表文件掃描循環(huán)SCAN FOR WHILE ENDSCAN該循環(huán)語句一般用于處理表中記錄。語句可指明需處理的記錄范圍及應(yīng)滿足的條件。執(zhí)行該語句時,記錄指針在當(dāng)前表的指定范圍內(nèi)自動、從上往下依次移到滿足條件的記錄上,并對每一條記錄執(zhí)行循環(huán)體內(nèi)的命令。的默認(rèn)值是ALL。 4. 多重循環(huán)一個循環(huán)的循環(huán)體中又有另外一個循環(huán)時,稱為多重循環(huán),VFP程序可以使用多重循環(huán)。 6.3 模塊化程序設(shè)計模塊是一個具有獨(dú)立功能的程序,可以單獨(dú)設(shè)計、調(diào)試和管理。將一個應(yīng)用程序系統(tǒng)劃分成一個個功能相對簡單,單一的模塊程序,不僅便于程序的開發(fā),也利于程序的閱讀和維護(hù)。一個應(yīng)用程序系統(tǒng)的設(shè)計就是設(shè)計組成該系統(tǒng)的各個模
14、塊,并把這些模塊組合起來的過程。模塊可以是普通的命令文件,也可以是函數(shù)和過程。6.3.1 子程序與模塊的調(diào)用模塊之間可以互相調(diào)用。通常,把被其他模塊調(diào)用的模塊稱為子程序,把調(diào)用其它模塊而沒有被其它模塊調(diào)用的模塊稱為主程序。模塊調(diào)用的格式有兩種:格式1:DO with 參數(shù)表格式2: (參數(shù)表)注意:包括命令文件名、過程名和函數(shù)名。格式2是作為函數(shù)出現(xiàn)在表達(dá)里,函數(shù)其實(shí)是特殊的子程序。 6.3.2 過程過程是一個程序段,定義過程的語法格式如下:PROCEDURE | FUNCTION RETURN ,ENDPROC | ENDFUNC6.3.3 參數(shù)傳遞模塊程序可以接收調(diào)用程序傳遞過來的參數(shù),并
15、能夠根據(jù)收到的參數(shù)控制程序流程和對接收到的參數(shù)進(jìn)行處理。接收參數(shù)的命令有:PARAMETERS ,LPARAMETERS ,PARAMETERS命令聲明的形參變量被看作是模塊程序中建立的私有變量,LPARAMETERS命令聲明的形參變量被看作是模塊程序中建立的局部變量。除此之外,兩條命令沒有什么不同。 不管是PARAMETERS命令還是LPARAMETERS命令,都應(yīng)該是模塊程序的第一條可執(zhí)行命令。 格式1:DO WITH ,格式2: (,)實(shí)參可以是常量、變量,也可以是一般形式的表達(dá)式。形參的數(shù)目不能少于實(shí)參的數(shù)目。如果形參的數(shù)目多于實(shí)參的數(shù)目,那么多余的形參取初值邏輯假.F.。采用格式1調(diào)
16、用模塊程序時如果實(shí)參是常量或一般形式的表達(dá)式,系統(tǒng)會計算出實(shí)參的值,并把它們賦值給相應(yīng)的形參變量。這種情形稱為按值傳遞。如果實(shí)參是變量,那么傳遞的是變量的地址。這種情形稱為按引用傳遞。采用格式2調(diào)用模塊程序時,默認(rèn)情況下都以按值方式傳遞參數(shù)。如果實(shí)參是變量,可以通過命令SET UDFPARMS命令重新設(shè)置參數(shù)傳遞的方式。該命令的格式如下:SET UDFPARMS TO VALUE|REFERENCE 6.3.4 用戶自定義函數(shù)FUNCTION PARAMETERS RETURN 6.3.5 變量的作用域變量的作用域指的是變量在什么范圍內(nèi)是有效或能夠被訪問的。1公共變量在任何模塊中都可以使用的變量稱為公共變量。公共變量要先建立后使用,可用下面兩種方法建立公共變量:在命令窗口中直接建立在程序中使用PUBLIC命令,其命令格式為:PUBLIC 2. 私有變量沒有通過PUBLIC和LOCAL命令事先聲明而在程序中直接建立的變量都是私有變量。私有變量的作用域是建立它的模塊以及其調(diào)用的下屬各層模塊。一旦建立它的模塊程序運(yùn)行結(jié)束,這些私有變量將自動清除。3. 局部變量只能在建立它的模塊中使用的變量稱為局部變量。當(dāng)建立它的模塊程序結(jié)束時,局部變量自動從內(nèi)存中清除。局部變量用LOCAL命令建立,格式為:LO
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國進(jìn)排氣歧管行業(yè)發(fā)展前景及投資戰(zhàn)略咨詢報告
- 2021-2026年中國烏雞白鳳丸市場競爭策略及行業(yè)投資潛力預(yù)測報告
- 2025年中國智能云臺控制器行業(yè)市場發(fā)展前景及發(fā)展趨勢與投資戰(zhàn)略研究報告
- ct復(fù)合原料及可降解環(huán)保餐具項(xiàng)目可行性論證報告
- 2025年中國智慧餐廳行業(yè)市場全景評估及投資戰(zhàn)略研究報告
- 2023-2029年中國中型車(B級車)行業(yè)市場發(fā)展現(xiàn)狀及投資策略咨詢報告
- 2024-2025學(xué)年高中地理課時分層作業(yè)11濕地干涸及其恢復(fù)生物多樣性保護(hù)含解析新人教版選修6
- 2024-2025學(xué)年高中化學(xué)第二章化學(xué)反應(yīng)與能量第二節(jié)化學(xué)能與電能1化學(xué)能與電能的相互轉(zhuǎn)化課時訓(xùn)練含解析新人教版必修2
- 2024-2025學(xué)年高中語文2雷雨習(xí)題含解析新人教版必修4
- 2024-2025學(xué)年高中生物第1章無菌操作技術(shù)實(shí)踐第3節(jié)植物組織培養(yǎng)技術(shù)學(xué)案蘇教版選修1
- 樂理知識考試題庫130題(含答案)
- 前言 馬克思主義中國化時代化的歷史進(jìn)程與理論成果
- 融資租賃租金計算表
- 數(shù)據(jù)結(jié)構(gòu)英文教學(xué)課件:Chapter 5 Recursion
- 《中國—東盟自由貿(mào)易區(qū)概論》新版
- 棕色偵探推理劇本殺活動方案項(xiàng)目介紹ppt模板
- 降低鉆孔灌注樁混凝土充盈系數(shù)QC
- 華中數(shù)控車床編程及操作PPT課件
- 趣味歷史(課堂PPT)
- 供應(yīng)鏈供應(yīng)鏈管理
- 《消防安全評估檢查記錄》
評論
0/150
提交評論