版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第八章程序設(shè)計基礎(chǔ)一、VF的工作方式二、程序的建立與運(yùn)行三、程序中的交互語句及輔助語句四、程序的基本結(jié)構(gòu)五、過程設(shè)計VF的工作方式VF的三種工作方式:命令方式、菜單方式、程序文件方式。程序文件(命令文件)方式:程序:就是根據(jù)所解決問題的需要,將能完成相應(yīng)功能的命令或語句按照一定的邏輯關(guān)系組織起來的命令集合。程序文件的擴(kuò)展名為.PRG。返回程序的建立與運(yùn)行以命令方式建立、編輯程序文件格式:MODIFYCOMMAND<程序文件名>
功能:建立或編輯修改程序文件。
說明:擴(kuò)展名默認(rèn)為PRG。文件名為默認(rèn)路徑下已有的文件,則使用此命令表示修改指定的程序。
文件名為默認(rèn)路徑下沒有的文件,則使用此命令表示新建指定的程序。命令:MODICOMM?功能:從文件列表中選擇要修改的程序。
保存程序:1、用“文件”菜單中的”保存“命令。
2、工具欄上的”保存“按鈕。3、按關(guān)閉按鈕。上一頁下一頁程序的建立與運(yùn)行程序書寫規(guī)則:程序中的每條命令都必須以回車結(jié)尾。一行只能寫一條命令,若命令需分行寫,應(yīng)在一行尾加“;”號續(xù)行,然后回車。以菜單方式建立、編輯程序文件用“項目管理器”建立、編輯程序文件上一頁下一頁程序文件的調(diào)用以命令方式調(diào)用
格式:DO<程序文件名>
說明:程序運(yùn)行中,遇到以下情況之一,將終止程序運(yùn)行:執(zhí)行到程序尾,自然結(jié)束,返回VF系統(tǒng)主窗口。執(zhí)行了RETURN命令,終止程序執(zhí)行,返回原調(diào)用處的下一語句繼續(xù)執(zhí)行。(主要用于過程中)執(zhí)行了CANCEL命令,終止程序執(zhí)行返回系統(tǒng)主窗口。執(zhí)行了QUIT命令,終止程序執(zhí)行,退出VF系統(tǒng)。以菜單方式調(diào)用程序文件上一頁返回程序中的交互語句及輔助語句簡單的格式化輸入、輸出命令格式化輸入命令(P140)
格式:語句1:@<行,列>[SAY<提示信息>]GET<變量>[DEFAULT<表達(dá)式2>]
語句2:READ
功能:語句1的功能是在屏幕指定位置顯示<提示信息>和<變量>的值。語句2的功能是重新編輯修改<變量>的值。
說明:要輸入編輯數(shù)據(jù),語句1、2必須聯(lián)用,可編輯類型:C、N、D、L型。SAY<提示信息>用于對GET變量作提示性說明。
上一頁下一頁程序中的交互語句及輔助語句變量可為字段名變量,也可為內(nèi)存變量,內(nèi)存變量必須有初值,或用DEFAULT短語的<表達(dá)式2>指定初值.初值一旦指定,該變量的類型在編輯期間就不能改變,字符型變量的寬度與數(shù)值型變量的小數(shù)位數(shù)也無法改變。
例1:編程在RCDA表中追加記錄,并輸入編號、姓名、性別、出生日期、工資現(xiàn)狀的值。(ZJ.PRG)
例2:編程輸入BH、XM、XB、RQ、GZ變量的值,并將其追加到RCDA表中。(ZJ1.PRG)
上一頁下一頁程序中的交互語句及輔助語句格式化輸出命令
格式:@<行,列>SAY<表達(dá)式>[FUNCTION<功能符>][PICTURE<格式符>]
例:查找王國民并輸出。(CHAZ.PRG)上一頁下一頁人機(jī)對話命令輸入單字符命令—WAIT
格式:WAIT[<提示信息>][TO<內(nèi)存變量>]
功能:暫停程序執(zhí)行,等待用戶鍵入一字符后繼續(xù)。
說明:輸入的任何數(shù)據(jù),均作為字符型數(shù)據(jù)處理。只能輸入一個字符或直接回車(回車相當(dāng)于輸入空串)。<提示信息>一般用字符串說明,不選用則自動提示“按任一鍵繼續(xù)…”。選用TO<內(nèi)存變量>時,可將輸入的字符保存在內(nèi)存變量中,以便以后使用。例:若有表文件WJ1.DBF、WJ2.DBF、WJ3.DBF,如何實現(xiàn)只輸入一個字符而能打開這些表。
上一頁下一頁人機(jī)對話命令輸入字符串命令—ACCEPT(可輸入多個字符)
格式:ACCEPT[<提示信息>]TO<內(nèi)存變量>
功能:暫停程序執(zhí)行,等待用戶輸入一串字符后,按回車鍵程序繼續(xù)運(yùn)行。
說明:輸入的任何數(shù)據(jù),均作為字符型數(shù)據(jù)處理。提示信息的用法與WAIT語句相同,不選用則不提示(與WAIT不同)。例1:根據(jù)輸入的文件名,打開指定的表文件。例2:在RCDA表中按指定姓名(出生日期、工資)查詢(LOCATE,SEEK)記錄。(XMCZ)上一頁下一頁輸入多種類型數(shù)據(jù)命令—INPUT
格式:INPUT[<提示信息>]TO<內(nèi)存變量>
功能:暫停程序執(zhí)行,等待用戶輸入數(shù)據(jù),回車后繼續(xù)。
說明:輸入的數(shù)據(jù)類型可為C、N、D、L。輸入字符型數(shù)據(jù),必須加定界符;輸入日期型,用{^yyyy-mm-dd}或用CTOD()函數(shù)轉(zhuǎn)換。例1:在RCDA表中按指定姓名查詢。(XMCZ.PRG)例2:在RCDA表中按指定工資(生日)查找。小結(jié):區(qū)別WAIT、ACCEPT、INPUT三條命令的不同。上一頁下一頁輔助命令CLEAR清屏命令NOTE|*[<字符串>]注釋必須自成一行,對程序段作說明。
&&[<字符串>]注釋接在命令語句后對該語句作說明。TEXT
<文本內(nèi)容>
ENDTEXT
功能:原樣輸出TEXT與ENDTEXT之間的內(nèi)容。
(CD.PRG)上一頁返回程序的基本結(jié)構(gòu)VF系統(tǒng)的應(yīng)用程序中,常見的控制結(jié)構(gòu)有:順序結(jié)構(gòu)
特點(diǎn):按照語句書寫的先后順序依次執(zhí)行,執(zhí)行到程序尾退出。
缺陷:1、一次只能操作一組數(shù)據(jù);2、不能對數(shù)據(jù)進(jìn)行判斷。分支結(jié)構(gòu)
一、簡單分支語句
格式:IF<條件>
<語句序列>
ENDIF
意義:略。
上一頁下一頁一、簡單分支語句說明:IF、ENDIF必須成對使用。<條件>可以是表達(dá)式,也可是函數(shù),但結(jié)果必須為邏輯值。例1:在RCDA表中按姓名查詢記錄,找到則顯示該記錄,沒找到則提示“無此姓名的記錄!”。例2:從鍵盤輸入兩個不同的自然數(shù),輸出其中最大的。例3:按姓名查詢,并提示是否進(jìn)行修改,回答“Y”則修改,否則退出。(CDXG.PRG)上一頁下一頁二、選擇分支語句
格式:IF<條件>
<語句序列1>
ELSE
<語句序列2>
ENDIF
意義:略。
例1:P150。
例2:修改前面的例2。
上一頁下一頁三、多分支語句格式:DOCASECASE<條件1>
<命令序列1>
……CASE<條件n><命令序列n>[OTHERWISE
<命令序列n+1>]
ENDCASE功能說明:略。
上一頁下一頁三、多分支語句注意:DOCASE與ENDCASE必須成對出現(xiàn)。DOCASE與CASE之間不能放其它語句。各條件不能互相包含,即不能讓兩個或兩個以上的<條件>值為.T.,因為程序只能執(zhí)行第一個值為.T.的<條件>所對應(yīng)的語句序列。例1:P151。
例2:從鍵盤上輸入三個不同的自然數(shù),輸出其中最大的。
上一頁下一頁四、分支語句的嵌套
結(jié)構(gòu):略。
例1:對DJPD表,根據(jù)學(xué)號查詢,對查到的記錄再根據(jù)平均分定等級,并填寫等級字段,(85分以上為優(yōu),76~85為良,60~75為中,60分以下為差)若沒找到則顯示:“查無此人!”。
例2:對成績表,根據(jù)學(xué)號查詢,對查到的記錄再判斷其民族,若為少數(shù)民族則總分+5,否則不加分,若沒找到指定記錄,則提示:“查無此人!”。
注意:ELSE與ENDIF都與最近的IF語句匹配。各分支結(jié)構(gòu)不能相互交叉。
上一頁下一頁循環(huán)結(jié)構(gòu)程序設(shè)計
一、當(dāng)型循環(huán)
格式:DOWHILE<條件>
<語句序列>
[LOOP]
<語句序列>
[EXIT]
<語句序列>
ENDDO
意義:當(dāng)<條件>為.T.時,重復(fù)執(zhí)行DOWHILE與ENDDO之間的語句序列,直到<條件>為.F.時,退出循環(huán)繼續(xù)執(zhí)行ENDDO之后的語句。
上一頁下一頁一、當(dāng)型循環(huán)注意:LOOP、EXIT只能在循環(huán)中使用,而不能在循環(huán)外使用。DOWHILE…ENDDO語句本身不具有給循環(huán)變量賦初值的功能,因此應(yīng)當(dāng)在該語句之前給循環(huán)變量賦初值,并在循環(huán)體中修改循環(huán)變量的值。LOOP作用:不再執(zhí)行其后的語句序列,而進(jìn)入下一次循環(huán),即重新返回DOWHILE處判斷條件的值。EXIT作用:強(qiáng)制退出循環(huán),繼續(xù)執(zhí)行ENDDO之后的語句。上一頁下一頁幾種常見的循環(huán)結(jié)構(gòu):1、對數(shù)據(jù)表記錄進(jìn)行操作的循環(huán)特點(diǎn):循環(huán)條件一般用.NOT.EOF()。用SKIP命令修改循環(huán)條件。循環(huán)體中操作對象是數(shù)據(jù)表中的記錄。例1:逐條顯示RCDA表中性別為女的記錄。(條件分別為.NOT.EOF()與.NOT.BOF()。)例2:在RCDA表中,按性別查找,依次對性別為女的工資加100元。上一頁下一頁1、對數(shù)據(jù)表記錄進(jìn)行操作的循環(huán)例3:在成績表中,統(tǒng)計解幾成績分別在85分以上,76至85分,小于76分的學(xué)生的人數(shù)。練習(xí):在DJPD表中,按平均分對每人評定等級,并將評定結(jié)果填到等級字段中。(85分以上為優(yōu),76~85為良,60~75為中,60分以下為差)上一頁下一頁2、循環(huán)次數(shù)一定的循環(huán)特點(diǎn):循環(huán)次數(shù)一定。循環(huán)條件多為關(guān)系表達(dá)式,其中含控制循環(huán)次數(shù)的循環(huán)變量。循環(huán)變量有初值和終值。循環(huán)體中有修改循環(huán)變量的語句,使循環(huán)變量增或減值,否則成為死循環(huán)。例1:求1到100之間所有整數(shù)之和。(兩種方法)例2:求1到100之間的奇數(shù)和。(三種方法)練習(xí):求10!。上一頁下一頁特點(diǎn):隨機(jī)條件總是為T。(這樣就不能自動退出循環(huán)—死循環(huán))必要時,可使用EXIT、RETURN、CANCEL、QUIT強(qiáng)制退出循環(huán))例:在RCDA表中,實現(xiàn)可連續(xù)按姓名查詢。作業(yè):用循環(huán)語句編程判斷任意一個由鍵盤輸入的數(shù)是否為素數(shù)。3、隨機(jī)循環(huán)上一頁下一頁二、“計數(shù)”型循環(huán)控制語句格式:FOR<循環(huán)變量>=<變量初值>TO<終值>[STEP<變量步長>]<命令序列>[LOOP][EXIT]ENDFOR|NEXT功能:循環(huán)變量首先被賦為變量初值,然后比較循環(huán)變量與終值來決定是否執(zhí)行循環(huán)體內(nèi)的命令語句。步長值為正數(shù)時,若循環(huán)變量值不大于終值,就執(zhí)行循環(huán)體;步長為負(fù)數(shù)時,若循環(huán)變量不小于終值,就執(zhí)行循環(huán)體。執(zhí)行一遇到ENDFOR或NEXT,循環(huán)變量立即被加上步長值,然后重新與結(jié)束值比較。說明:如果無STEP短語,默認(rèn)步長值為1。例:改寫前面當(dāng)型循環(huán)的例子。上一頁下一頁三、“指針”型循環(huán)控制語句格式:SCAN[<范圍>][FOR<條件表達(dá)式1>][WHILE<條件表達(dá)式2>]<命令序列>[LOOP][EXIT]ENDSCAN
功能:程序執(zhí)行到該語句,首先判斷EOF()函數(shù)的值,若為真,則執(zhí)行ENDSCAN之后的語句;否則結(jié)合條件1與條件2執(zhí)行循環(huán)中的<命令序列>,然后指針移到下一條范圍內(nèi)滿足條件的記錄,再判斷EOF()的值,直到EOF()為真結(jié)束循環(huán)。上一頁下一頁四、多重循環(huán):即循環(huán)體中又包含另外一些循環(huán)。格式:略。例1:在RCDA表中,按性別查詢,要求能逐條查到所有性別相同的記錄并顯示。例2:打印九九表。練習(xí):輸出3到100之間的所有素數(shù)。(輸出格式:一行輸出5個數(shù),每個數(shù)間用5空格隔開。)上一頁返回過程與過程調(diào)用引入定義:我們將以過程說明語句開頭,以返回命令結(jié)束,能完成一定功能,可以被其它程序反復(fù)調(diào)用的程序段叫做過程。過程的分類:
1、以獨(dú)立文件存在的過程,稱為外部過程。
2、若干個過程共存于一個過程文件的過程,稱為內(nèi)部過程。上一頁下一頁過程返回語句
1、RETURN[TOMASTER]
功能:返回調(diào)用程序原調(diào)用處的下一語句繼續(xù)執(zhí)行。
TOMASTER的作用:用在過程嵌套中,直接返回最高層調(diào)用處,如不選,則逐級返回。
2、RETRY
功能:返回調(diào)用程序原調(diào)用語句,繼續(xù)執(zhí)行。外部過程的建立及調(diào)用:
1、建立與建立一般程序相同。
上一頁下一頁求5!+10!+20!
SETTALKOFF
S=0
N=1
T=1
DOWHILEN<=5
T=T*N
N=N+1
ENDDO
S=S+T
N=1
T=1
DOWHILEN<=10
T=T*N
N=N+1
ENDDO
S=S+T
N=1
T=1
DOWHILEN<=20
T=T*N
N=N+1
ENDDO
S=S+T
?’5!+10!+20!=‘,S
SETTALKON
返回2、過程調(diào)用格式:DO<過程名>說明:可以將過程保存在單獨(dú)的程序文件中,也可放在程序的結(jié)尾,但不能把可執(zhí)行的主程序放在過程之后。
例:改寫引入程序。
思考:求C=M!/(N!*(M-N)!)
上一頁下一頁過程文件及使用
1、過程文件的建立
格式:MODICOMM<文件名>
2、過程文件的組織形式
PROCEDURE<過程名1>
<語句序列>
ENDPROC
……
PROCEDURE<過程名N>
<語句序列>
ENDPROC
上一頁下一頁3、過程文件的調(diào)用
步驟:①打開過程文件
格式:SETPROCEDURETO<文件名>
注意:同一時刻只允許打開一個過程文件。
②調(diào)用過程文件中的過程
格式:DO<過程名>
功能:調(diào)用已打開的過程文件中的指定過程。
③關(guān)閉過程文件
格式1:SETPROCEDURETO
格式2:CLOSEPROCEDURE
功能:關(guān)閉打開的過程文件。上一頁下一頁過程的嵌套過程調(diào)用中的數(shù)據(jù)傳遞利用內(nèi)存變量的屬性傳遞數(shù)據(jù)全局變量(公共變量)
公共變量是在VF系統(tǒng)的全部范圍內(nèi)均有效的內(nèi)存變量。(包括命令窗口及程序的任何部分[主程序及其子程序中])
定義格式:PUBLIC<內(nèi)存變量表>功能:把<內(nèi)存變量表>中指定的內(nèi)存變量定義為全局變量。說明:1、全局變量在程序結(jié)束時不釋放,只能使用清除內(nèi)存變量的命令清除。(CLEARMEMORY,CLEARALL)2、定義的全局變量在賦值前,自動賦值為.F.。上一頁下一頁局部變量局部變量只在定義它的程序段有效,而在此程序段的上級程序段或下級程序段無效。定義格式:LOCAL<內(nèi)存變量表>功能:把<內(nèi)存變量表>中指定的內(nèi)存變量定義為局部變量。說明:1、局部變量在其所在程序段結(jié)束時自動清除。2、定義的局部變量在賦值前,自動賦值為.F.。
上一頁下一頁私有變量私有變量是在定義它的程序段以及其下級程序段(被調(diào)用過程)的局部范圍內(nèi)都有效的內(nèi)存變量。定義格式1:PRIVATE<內(nèi)存變量表>格式2:PRIVATEALL[LIKE|EXCEPT<通配變量名>]功能:把指定的變量定義為私有變量。說明:1、程序中凡沒有使用PUBLIC、LOCAL和PRIVATE語句定義的變量都是私有變量。
上一頁下一頁2、格式2用法:PRIVATEALL:定義所有內(nèi)存變量為私有變量。PRIVATEALLLIKE<通配變量名>:定義與<通配變量名>相符的變量為私有變量。PRIVATEALLEXCEPT<通配變量名>:定義與<通配變量名>不相符的變量為私有變量。3、局部、私有變量在其有效程序段結(jié)束時自動清除。例子上一頁下一頁settalkofflocalyprivx1publicz,z1x=5y=6z=9z1=28x1=8?'x=',x,'y
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 成人教育語文考試及答案
- 鐵碳合金試題及答案
- 2025-2026人教版一年級語文上冊測試
- 2025-2026二年級體育期末檢測試
- 幼兒園愛國衛(wèi)生四包制度
- 衛(wèi)生院廉政風(fēng)險防控制度
- 小學(xué)生衛(wèi)生保健教室制度
- 全國衛(wèi)生調(diào)查制度
- 衛(wèi)生院產(chǎn)后訪視工作制度
- 衛(wèi)生院護(hù)理消毒制度
- 2026重慶高新開發(fā)建設(shè)投資集團(tuán)招聘3人備考考試試題及答案解析
- 2026年度宣城市宣州區(qū)森興林業(yè)開發(fā)有限公司第一批次員工公開招聘筆試參考題庫及答案解析
- 老年人管理人員培訓(xùn)制度
- 2025年湖南常德市鼎城區(qū)面向全市選調(diào)8名公務(wù)員備考題庫及答案詳解(新)
- 2026年高考時事政治時事政治考試題庫及答案(名校卷)
- 2026年新能源汽車動力電池回收體系構(gòu)建行業(yè)報告
- 2026四川成都市錦江區(qū)國有企業(yè)招聘18人筆試備考試題及答案解析
- 2025學(xué)年度人教PEP五年級英語上冊期末模擬考試試卷(含答案含聽力原文)
- 2025年上海市普通高中學(xué)業(yè)水平等級性考試地理試卷(含答案)
- 腔鏡器械的清洗與管理
- 企業(yè)內(nèi)部承包責(zé)任制管理辦法
評論
0/150
提交評論