(中職)數(shù)據(jù)庫應(yīng)用基礎(chǔ)-Visual FoxPro模塊6教學(xué)課件_第1頁
(中職)數(shù)據(jù)庫應(yīng)用基礎(chǔ)-Visual FoxPro模塊6教學(xué)課件_第2頁
(中職)數(shù)據(jù)庫應(yīng)用基礎(chǔ)-Visual FoxPro模塊6教學(xué)課件_第3頁
(中職)數(shù)據(jù)庫應(yīng)用基礎(chǔ)-Visual FoxPro模塊6教學(xué)課件_第4頁
(中職)數(shù)據(jù)庫應(yīng)用基礎(chǔ)-Visual FoxPro模塊6教學(xué)課件_第5頁
已閱讀5頁,還剩59頁未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

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

文檔簡介

1、YCF正版可修改PPT(中職)數(shù)據(jù)庫應(yīng)用基礎(chǔ)Visual FoxPro模塊6教學(xué)課件模塊6 結(jié)構(gòu)化程序設(shè)計單元1 程序文件的建立和運(yùn)行單元2 程序設(shè)計中的常用語句單元3 程序的控制結(jié)構(gòu)單元4 過程與過程調(diào)用單元1 程序文件的建立和運(yùn)行程序文件也稱為命令文件或程序。程序是能夠完成一定任務(wù)的命令的有序集合,它是由一系列Visual FoxPro的命令組成的文本文件,其擴(kuò)展名為.prg。任務(wù)1.1程序文件的建立、運(yùn)行和調(diào)試1.1.1程序文件的建立程序文件可以使用任何文本編輯軟件來創(chuàng)建或編輯。在Visual FoxPro中創(chuàng)建程序文件的方法有以下3種。在“項目管理器”對話框中選擇“代碼”選項卡的“程序

2、”選項,然后單擊“新建”按鈕,在彈出的對話框中,輸入所要建立的程序代碼,如圖6-1所示。選擇“文件”一“新建”命令,打開“新建”對話框,在其中選擇“程序”文件類型,然后單擊“新建文件”按鈕,在彈出的對話框中,輸入所要建立的程序代碼。下一頁返回單元1 程序文件的建立和運(yùn)行在命令窗口中執(zhí)行命令:MODIFY COMMAND在彈出的程序窗口中,輸入所要建立的程序代碼。例如,要建立一個名為pjz(求平均值)的程序,可在命令窗口輸入命令:MODIFY COMMAND pjz此時主窗口便打開一個標(biāo)題為pjz .prg的文本編輯對話框,在該對話框中輸入相應(yīng)程序代碼即可,如圖6-2所示。程序文件的代碼編寫完后

3、,必須進(jìn)行保存。保存程序文件的方法是:按Ctrl+W組合鍵或按Ctrl+S組合鍵(相當(dāng)于執(zhí)行“文件”菜單中的“保存”命令)。前者存盤并退出編輯,后者只存盤但不退出編輯對話框。上一頁下一頁返回單元1 程序文件的建立和運(yùn)行1.1.2程序文件的修改程序文件被保存以后,若要對其中的內(nèi)容進(jìn)行修改,可以將其重新打開。同樣有3種方法可以打開程序文件并進(jìn)行修改。若程序包含在一個項目中,則在項目管理器中選中它,單擊“修改”按鈕。在“文件”菜單中選擇“打開”命令,在彈出的對話框中選擇“程序”文件類型(*.prg、*.spr、*.mpr、*.qpr),然后在文件列表中選中要修改的程序后單擊“確定”按鈕。使用命令:M

4、ODIFY COMMAND修改完畢,需要重新保存,按Ctrl+W組合鍵。若要放棄所做的修改,則按Esc鍵。上一頁下一頁返回單元1 程序文件的建立和運(yùn)行1.1.3程序文件的運(yùn)行程序文件創(chuàng)建之后便可運(yùn)行了。運(yùn)行程序的方法有以下3種。若程序包含在一個項目中,則在項目管理器中選中它,單擊“運(yùn)行”按鈕。在“程序”菜單中選擇“運(yùn)行”命令,從文件列表中選擇要運(yùn)行的文件,單擊“運(yùn)行”按鈕。在命令窗口中使用命令:DO所謂運(yùn)行程序,就是依次執(zhí)行程序中的命令。1.1.4程序的調(diào)試程序調(diào)試的目的就是檢查并糾正程序中的錯誤,以保證程序的可靠運(yùn)行。調(diào)試通常分3步進(jìn)行:檢查程序是否存在錯誤一確定出錯的位置一糾正錯誤。上一頁

5、下一頁返回單元1 程序文件的建立和運(yùn)行程序中常見錯誤包括:語法錯誤,如命令字拼寫錯、命令格式錯、使用未定義的變量、數(shù)據(jù)類型不匹配、操作的文件不存在、超出系統(tǒng)允許的范圍等;邏輯錯誤,邏輯錯誤指程序設(shè)計的差錯,如計算或處理邏輯有錯。Visual FoxPro提供了一個稱為調(diào)試器的程序調(diào)試工具,打開調(diào)試器窗口的方法有兩種。選擇Visual FoxPro“工具”菜單中的“調(diào)試器”命令。在命令窗口輸入DEBU命令。用戶可通過調(diào)試設(shè)置、執(zhí)行程序和修改程序來完成程序調(diào)試。調(diào)試設(shè)置包括為程序設(shè)置斷點,設(shè)置監(jiān)視表達(dá)式,設(shè)置要顯示的變量、數(shù)組等;執(zhí)行程序有多種方式,用于觀察各種設(shè)置的動態(tài)執(zhí)行結(jié)果;如果發(fā)現(xiàn)錯誤,允

6、許當(dāng)場切換為程序修改方式。上一頁下一頁返回單元1 程序文件的建立和運(yùn)行任務(wù)1.2程序的書寫規(guī)則和編輯技巧2.1程序的書寫規(guī)則正確的程序書寫,會使程序具有可讀性,將給程序的修改帶來方便。首先,程序中的每條命令都以Enter鍵結(jié)束,一行只能寫一條語句或命令。若命令太長需分行書寫,應(yīng)在要續(xù)行的末尾鍵入續(xù)行符“;”,然后按Enter鍵。另外,為了提高程序的可讀性,可在程序中插入注釋。以符號“*”或命令字“NOTE”開始的注釋行可以出現(xiàn)在程序的任何地方,它是一條非執(zhí)行語句行,僅在編輯窗口中顯示,程序執(zhí)行時,不會對其進(jìn)行解釋執(zhí)行。如果要在命令或語句行后面添加注釋,則以符號“&”開頭添加注釋。例如,*本程序

7、用于計算1100的和。SUM=1 &給求和變量賦初值注意:不能在命令語句行續(xù)行的分號后面加入&和注釋上一頁下一頁返回單元1 程序文件的建立和運(yùn)行1.2.2命令窗口的使用技巧在“命令”窗口中執(zhí)行命令時,經(jīng)常重復(fù)執(zhí)行以前用過的命令。這時,不需要重新鍵入命令,只需將光標(biāo)移到前面命令出現(xiàn)的位置,按Enter鍵即可重新執(zhí)行該命令。如果需要修改該命令,可以用一般的編輯技巧對命令進(jìn)行修改后再按Enter鍵。若要執(zhí)行前面幾條連續(xù)的命令行,則選定這幾條命令,然后按Enter鍵即可。1.2.3程序文件中的使用技巧程序編寫好了,如果想只運(yùn)行程序文件中的部分語句,只需選定這些行并單擊鼠標(biāo)右鍵,執(zhí)行“運(yùn)行所選區(qū)域”命令

8、。上一頁下一頁返回單元1 程序文件的建立和運(yùn)行1.2.4程序代碼中的顏色程序代碼在代碼窗口中會以不同的顏色出現(xiàn)。系統(tǒng)默認(rèn)的顏色設(shè)定與含義為:綠色代碼代表注釋,藍(lán)色代碼代表命令關(guān)鍵字,黑色代碼代表非命令關(guān)鍵字或用戶使用的字符,紅色代碼則表明有語法錯誤,以提醒用戶改正。執(zhí)行“工具”一“選項”一“語法著色”命令,可以改變這些默認(rèn)值。1.2.5過程與函數(shù)列表在程序編輯窗口中右擊鼠標(biāo)后,執(zhí)行“過程”一“函數(shù)列表”命令,可以顯示當(dāng)前文件中所采用的過程或函數(shù),從中可快速定位到所需之處。上一頁返回單元2 程序設(shè)計中的常用語句1. ?輸出命令功能:計算表達(dá)式的值,并輸出計算結(jié)果。語法:? ?Expression

9、1ATnColumn,Expression2說明:?Expressionl:計算表達(dá)式Expression1的值,輸出一個回車和換行符,再將計算結(jié)果輸出到Visual FoxPro主窗口。若省略表達(dá)式,則顯示或打印一個空行。當(dāng)包含多個表達(dá)式時,在表達(dá)式的結(jié)果之間插入一個空格。?Expression1:計算表達(dá)式Expression1的值,并把技術(shù)結(jié)果輸出到Visual FoxPro主窗口。AT nColumn:指定顯示結(jié)果的列編號,即屏幕上絕對列坐標(biāo)。下一頁返回單元2 程序設(shè)計中的常用語句該命令可以在指定的屏幕或窗口的列坐標(biāo)處顯示表達(dá)式的值。缺省顯示坐標(biāo)時,?用于當(dāng)前光標(biāo)的下一行行首顯示,?用

10、于在當(dāng)前光標(biāo)處顯示。2.WAIT輸入命令功能:顯示信息并暫停Visual FoxPro的執(zhí)行,按某個鍵或單擊鼠標(biāo)后繼續(xù)執(zhí)行。語法:WAIT cMessageText TO VarName WINDOWATnRow,nColumn TIMEOUTnSeconds說明:cMessageText指定要顯示的提示信息。若缺省該參數(shù),則Visual FoxPro顯示默認(rèn)的信息:按任一鍵繼續(xù)。TO VarName將按下的鍵保存到變量或數(shù)組元素中。它專用于接受單個字符,且輸入單個字符后不需按Enter鍵。上一頁下一頁返回單元2 程序設(shè)計中的常用語句WINDOWATnRow,nColumn按指定坐標(biāo)顯示用戶提

11、示信息,按Ctrl鍵或Shift鍵可以暫時隱藏該窗口。TIMEOUTnSeconds指定在中斷WAIT命令之前,等待鍵盤或鼠標(biāo)輸入的秒數(shù)。執(zhí)行該命令,可以暫停程序的運(yùn)行,并在屏幕上或指定位置的提示信息窗口中顯示提示信息。如果給定了等待時間,一旦未擊鍵而超時,將立即結(jié)束等待,去執(zhí)行其后的命令。例6-1用WAIT命令在信息提示窗口中顯示:謝謝使用Visual FoxPro。WAIT“正在執(zhí)行中,請稍候”執(zhí)行該命令后,屏幕右上角如圖6-3所示。3.格式輸入/輸出命令功能:在指定的行列位置顯示或打印輸出結(jié)果。語法:SAYExpression1GETMemvarDEFAULT Expression2上一

12、頁下一頁返回單元2 程序設(shè)計中的常用語句說明:row,column:指定光標(biāo)放置在屏幕上的位置。SAY Expression1:讀取表達(dá)式Expressionl的值,并在row, column指定的坐標(biāo)位置顯示。GET Metnvar GET子句中的變量必須具有初值或用DEFAULT子句的Expression2指定初值。GET子句的變量必須用READ命令來激活。在多個GET命令之后,只要使用一個READ命令即可,如果只使用GET命令而不加入READ命令,則不能由鍵盤輸入任何值。因為.GET命令之后必須有READ,才能讀取用戶的輸入。4.CLEAR清屏命令功能:清除屏幕或窗口中顯示的內(nèi)容。語法:

13、CLEAR上一頁下一頁返回單元2 程序設(shè)計中的常用語句5.ACCEP下內(nèi)存變量接收命令功能:從鍵盤輸入字符給內(nèi)存變量。語法:ACCEPT cPromPtText TO MemVarName說明:cPromptText1:指定提示信息。Mem VarName:指定接收所擊鍵值的內(nèi)存變量。執(zhí)行該命令時,屏幕上顯示由cPromptText給定的提示信息,然后等待用戶從鍵盤上輸入數(shù)據(jù),并將其值賦給內(nèi)存變量。本命令可將字符直接從鍵盤輸入內(nèi)存變量MemVarName,無須使用分界符。輸入的數(shù)據(jù)作為字符串存儲起來。上一頁下一頁返回單元2 程序設(shè)計中的常用語句例6-2用ACCEPT命令編寫程序?qū)嵗LEAR

14、USE新生入學(xué)信息ACCEPT“請輸入待查學(xué)生的姓名:”TO XM LOCATE FOR姓名=XMDISPLAY編號;姓名;入學(xué)成績;專業(yè)USERETURN這里我們輸入學(xué)生的名字為“劉中平”,運(yùn)行程序結(jié)果如下。上一頁下一頁返回單元2 程序設(shè)計中的常用語句6.INPUT內(nèi)存變量輸入命令功能:從鍵盤輸入數(shù)據(jù)給內(nèi)存變量。語法:INPUTcPromPtTextTO Mem VarName說明:參數(shù)含義同ACCEPT該命令與ACCEPT命令都是接收鍵盤數(shù)據(jù)賦給內(nèi)存變量,執(zhí)行時都會在屏幕上顯示提示信息,提示用戶應(yīng)該輸入什么數(shù)據(jù)不同之處是:INPUT命令可以接收任何有效的表達(dá)式,表達(dá)式中可以包含函數(shù)、字段變

15、量、內(nèi)存變量和常數(shù)。當(dāng)輸入字符串常量時,INPUT命令要求用單引號、雙引號或方括號括起來,內(nèi)存變量的類型也取決于輸入數(shù)據(jù)的類型;上一頁下一頁返回單元2 程序設(shè)計中的常用語句例6-3用INPUT命令編寫程序?qū)嵗鼵LEARINPUT“請輸入圓的半徑:”TORS=3.1415926*R*R?“圓的面積為:”,S這里我們輸入半徑為3.4,運(yùn)行程序結(jié)果如下RETURN上一頁返回單元3 程序的控制結(jié)構(gòu)Visual FoxPro的程序與其他高級語言類似,其基本控制結(jié)構(gòu)包括:順序結(jié)構(gòu)、分支(選擇)結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。任務(wù)3.1順序結(jié)構(gòu)順序結(jié)構(gòu)是最簡單的程序結(jié)構(gòu),它只能順序地逐條執(zhí)行程序中的命令。當(dāng)一條命令執(zhí)行完后

16、就會自動開始下一條命令的執(zhí)行,每條命令按順序都要執(zhí)行一次,且只執(zhí)行一次。本模塊前面所舉例子都是順序結(jié)構(gòu)的例子。任務(wù)3.2介支結(jié)構(gòu)分支結(jié)構(gòu)是在程序執(zhí)行時,根據(jù)不同的條件,選擇執(zhí)行不同的程序語句,用來解決有選擇的諸多問題。分支結(jié)構(gòu)是Visual FoxPro系統(tǒng)程序的基本結(jié)構(gòu)之一,分支語句是非常重要的語句,其基本形式有3種。3.2.1單向分支單向分支語句,即根據(jù)條件表達(dá)式的值,決定某一操作是否執(zhí)行。下一頁返回單元3 程序的控制結(jié)構(gòu)語句格式:IfEndIf語句功能:首先計算的值,當(dāng)?shù)闹禐檎鏁r,執(zhí)行;否則,執(zhí)行EndIf后面的命令單向分支語句的流程如圖6-4所示。上一頁下一頁返回單元3 程序的控制結(jié)構(gòu)

17、例6-4修改“專業(yè)特長”表中的數(shù)據(jù),把編號為“yy101”的專業(yè)由“英語”改為“數(shù)學(xué)”。編寫的程序代碼如下Use新生入學(xué)信息.dbf ExclusiveLocate All For編號=“YY101”If專業(yè)=“英語”Replace專業(yè)With“數(shù)學(xué)”EndIfBrowse Last程序的運(yùn)行結(jié)果如圖6-5所示。上一頁下一頁返回單元3 程序的控制結(jié)構(gòu)3.2.2雙向分支雙向分支語句,即根據(jù)條件表達(dá)式的值,選擇兩個操作中的一個來執(zhí)行。語句格式:IfElseEndIf語句功能:首先計算的值,當(dāng)?shù)闹禐檎鏁r,執(zhí)行中的命令;否則,執(zhí)行中的命令;執(zhí)行完或后都將執(zhí)行EndIf后面的第一條命令。雙向分支語句的流

18、程如圖6-6所示。上一頁下一頁返回單元3 程序的控制結(jié)構(gòu)例6-5在專門人才檔案“人才檔案”表中,查找姓名為“林立報”的記錄,如果找到把該記錄加上刪除標(biāo)記,沒有找到則顯示提示信息“查無此人”。編寫的程序代碼如下。ClearUse新生入學(xué)信息.dbf ExclusiveLocate All For姓名=“林立報,If.not.eof()De1eteElse2,30Say“查無此人”EndIfBrowse Last程序運(yùn)行結(jié)果如圖6-7所示。上一頁下一頁返回單元3 程序的控制結(jié)構(gòu)從圖6-7中可以看出,姓名為“林立報”的記錄已加上刪除標(biāo)記;如果沒有找到林立報,會在屏幕的第2行、第30列顯示提示信息“查

19、無此人”。3.2.3多向分支多向分支語句,即根據(jù)多個條件表達(dá)式的值,選擇多個操作中的一個對應(yīng)執(zhí)行。語句格式:上一頁下一頁返回單元3 程序的控制結(jié)構(gòu)DoCaseCase Case Case Otherwise EndCase上一頁下一頁返回單元3 程序的控制結(jié)構(gòu)語句功能:該語句根據(jù)給出的n個的值,選擇n+1個中的一個執(zhí)行。當(dāng)所有CASE中的的值都是假時,如果有Otherwise項,則執(zhí)行,再執(zhí)行EndCase后面的第一條命令;否則,直接執(zhí)行EndCase后面的第一條命令。多向分支語句的流程如圖6-8所示。任務(wù)3.3循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)用于實現(xiàn)有規(guī)律性的重復(fù)操作,控制程序段的反復(fù)執(zhí)行,直到滿足某種條件

20、為止。具有這種控制循環(huán)機(jī)制的程序就稱為循環(huán)結(jié)構(gòu)程序。Visual FoxPro。支持循環(huán)結(jié)構(gòu)的語句有:DO WHILE.ENDDO,FOR.ENDFOR和SCAN.ENDSCAN。上一頁下一頁返回單元3 程序的控制結(jié)構(gòu)如果要改變循環(huán)語句的執(zhí)行順序,可以用EXIT和LOOP命令。EXIT命令用于結(jié)束語句的執(zhí)行,退出循環(huán)體,轉(zhuǎn)去執(zhí)行ENDDO后面的語句;LOOP命令用于結(jié)束循環(huán)體的本次執(zhí)行,重新開始下一次循環(huán)。3.3.1DO WHILEENDDO功能:在一個條件循環(huán)里執(zhí)行一組命令。語法:DOWHILE 1Expression Commands LOOP EXIT ENDDO上一頁下一頁返回單元3

21、程序的控制結(jié)構(gòu)說明:根據(jù)指定的邏輯表達(dá)式1Expression,控制循環(huán)中命令的執(zhí)行次數(shù)。如果條件為真(.T.),則執(zhí)行DO WHILE與ENDDO之間的命令序列。當(dāng)執(zhí)行到ENDDO時,再返回到DOWHILE,再次判斷循環(huán)條件是否為真,以確定是否再次執(zhí)行循環(huán)體,只有當(dāng)DOWHILE的條件為假(.F.)時,才結(jié)束循環(huán)。如果第1次判斷條件時,條件為假,則循環(huán)體一次都不執(zhí)行。上一頁下一頁返回單元3 程序的控制結(jié)構(gòu)例6-6計算1100的平方和。上一頁下一頁返回單元3 程序的控制結(jié)構(gòu)例6-7計算110的階乘(10!)。上一頁下一頁返回單元3 程序的控制結(jié)構(gòu)3.3.2FOR.ENDFOR功能:按指定的次數(shù)

22、重復(fù)執(zhí)行一組命令。說明:Var:循環(huán)控制變量。nInilialValue:指定循環(huán)次數(shù)控制變量初值。nFinalValue:指定循環(huán)次數(shù)控制變量終值。上一頁下一頁返回單元3 程序的控制結(jié)構(gòu)STEP nIneretnent:指定循環(huán)次數(shù)控制變量增量,其值可正可負(fù)。當(dāng)缺省此項時,增量值默認(rèn)為1。Commands:循環(huán)體命令組。ENDFOR/NEXT:循環(huán)終止語句。例6-8輸出九九乘法表的矩陣形式。上一頁下一頁返回單元3 程序的控制結(jié)構(gòu)該程序的運(yùn)行結(jié)果為:上一頁下一頁返回單元3 程序的控制結(jié)構(gòu)3.3.3SCANENDSCAN功能:在當(dāng)前選定表中移動記錄指針,并對每一個滿足指定條件的記錄執(zhí)行一組命令。

23、語法:SCANScopeFOR1Expression1WHILE1Expression2CommandsLOOPEXITENDSCAN說明:SCOPE:指定掃描記錄的范圍,只有范圍之內(nèi)的記錄才能掃描到。SCAN的默認(rèn)范圍是所有記錄(ALL)。FOR1Expression1:指定記錄的操作條件。上一頁下一頁返回單元3 程序的控制結(jié)構(gòu)WHILE 1Expression2:指定記錄的操作條件。Commands:指定要執(zhí)行的Visual FoxPro命令。ENDSCAN:標(biāo)志SCAN過程的結(jié)束。該命令對當(dāng)前表指定范圍和滿足條件的記錄執(zhí)行循環(huán)體語句,每執(zhí)行一次循環(huán),該命令自動將記錄指針移到下一條滿足指定

24、條件的記錄,并執(zhí)行相應(yīng)的命令組。當(dāng)記錄指針從頭到尾移動通過整個表時,SCAN循環(huán)將對記錄指針指向的每一個滿足條件的記錄執(zhí)行一遍SCAN與ENDSCAN之間的命令。上一頁下一頁返回單元3 程序的控制結(jié)構(gòu)例6-9J輸出“新生入學(xué)信息.DBF”中所有女學(xué)生的姓名、性別、學(xué)號、入學(xué)成績和專業(yè)。clearUSE新生入學(xué)信息SCANFOR性別=女DISPLAY編號,姓名,入學(xué)成績,專業(yè)ENDSCANUSERETURN上一頁下一頁返回單元3 程序的控制結(jié)構(gòu)輸出結(jié)果如下:上一頁下一頁返回單元3 程序的控制結(jié)構(gòu)3.3.4三種循環(huán)的比較若事先知道循環(huán)次數(shù),可以使用DO WHILE或FOR循環(huán)。若事先不知道循環(huán)的次

25、數(shù),只知道在某一條件滿足時結(jié)束循環(huán),可以使用DO WHILE循環(huán)。DO WHILE循環(huán)和FOR循環(huán)可以用于對表的循環(huán)處理,也可以用于其他循環(huán)處理,而SCAN循環(huán)只用于對表的處理。因為SCAN循環(huán)語句的功能是移動表內(nèi)指針,所以不能處理除了表之外的其他問題。上一頁返回單元4 過程與過程調(diào)用任務(wù)4.1主程序和子程序4.1.1主程序和子程序的概念子程序的建立方法與程序文件的方法相同,擴(kuò)展名為.prg。在許多應(yīng)用程序中,有一些程序段需要反復(fù)執(zhí)行多次,這些程序段不是集中在一個固定的位置上重復(fù)執(zhí)行,而是分散在程序的許多位置上重復(fù)執(zhí)行。通常將這樣的程序段與嵌入它的程序分開,形成獨立的程序序列,待使用時再調(diào)入程

26、序中,以實現(xiàn)不同位置上的重復(fù)操作。這樣做增強(qiáng)了程序的可讀性及模塊化。一般情況下,把這種具有獨立的功能,并且可以被其他程序調(diào)用的程序序列稱為過程,將調(diào)用過程的程序稱為主程序。下一頁返回單元4 過程與過程調(diào)用過程是由一個或多個命令、語句構(gòu)成,以返回語句(Return)結(jié)束的獨立程序段。使用過程時,通過過程名調(diào)用并執(zhí)行。過程文件可以存儲多個過程,調(diào)用執(zhí)行一個過程文件后,就可以調(diào)用執(zhí)行其中每個過程構(gòu)成的程序段。過程文件是以過程說明語句開頭,以過程返回命令結(jié)束的多個程序段落的集合。4.1.2子程序的調(diào)用在某一程序中安排一條DO命令來運(yùn)行一個獨立存儲的程序,就是調(diào)用子程序。其語法格式如下:DOWITH中的

27、參數(shù)可以是任何合法的表達(dá)式,包括常量、已賦值的變量或可計算的表達(dá)式等,各參數(shù)間用逗號間隔。上一頁下一頁返回單元4 過程與過程調(diào)用子程序的調(diào)用與返回主程序的過程如圖6-9所示。當(dāng)主程序執(zhí)行到子程序調(diào)用語句時,立即轉(zhuǎn)去執(zhí)行子程序;當(dāng)在子程序中遇到RETURN語句或遇到ENDPROC語句時,又轉(zhuǎn)回主程序,執(zhí)行DO命令的下一條語句。需要說明的是,主程序和子程序的概念是相對的,一個子程序還可以調(diào)用其他的程序,即程序的嵌套調(diào)用。程序的嵌套調(diào)用如圖6-10所示。4.1.3子程序返回語句語法格式如下:RETURNTO MASTERRETURN稱為返回語句,即當(dāng)程序執(zhí)行該語句時,返回到其上級程序。語句RETUR

28、N TO MASTER在過程嵌套調(diào)用時使用,表示返回到最高級調(diào)用者。上一頁下一頁返回單元4 過程與過程調(diào)用例6-10調(diào)用兩個子程序sub1.PRG和sub2.PRG。上一頁下一頁返回單元4 過程與過程調(diào)用任務(wù)4.2過程及過程文件子程序是完成某一功能的程序,它以獨立的文件形式(.prg)存儲在磁盤中。主程序需要的時候可以多次調(diào)用它,每調(diào)用一次子程序就要訪問磁盤一次,如果要調(diào)用多個子程序,在內(nèi)存中打開和管理的文件多了,就增加了讀磁盤的時間和內(nèi)存管理的難度,從而降低了系統(tǒng)的運(yùn)行效率。解決的方法是:把每一個子程序作為過程文件中的一個“過程”,整個過程文件是磁盤中的一個文件,進(jìn)行存儲。當(dāng)打開過程文件時,

29、過程文件中的所有過程都調(diào)入內(nèi)存,主程序可以任意調(diào)用其中的過程(子程序)。但從打開文件的個數(shù)來說,只打開了一個過程文件。上一頁下一頁返回單元4 過程與過程調(diào)用4.2.1過程文件的建立過程文件是過程的集合,一個過程文件中可包含若干個過程或自定義函數(shù)。在Visual FoxPro中,過程文件的建立方法與一般程序相同,可以用MODIFYCOMMAND命令、菜單方式或項目管理器等多種方式操作,擴(kuò)展名為.prg。4.2.2過程的定義過程定義的語法格式如下:PROCEDUREPARAMETERSRETURNTO MASTERENDPROC上一頁下一頁返回單元4 過程與過程調(diào)用PROCEDURE是過程的第一條

30、語句,它標(biāo)志著過程的始;PARAMETERS用于定義形式參數(shù),是可選項;命令語句序列則構(gòu)成了一個過程體。在該過程的最后一條語句后,自動執(zhí)行一條隱含RETURN命令,也可以在過程最后一行中包含一條RETURN命令。注意:可以將過程放在單獨的過程文件中,也可放在程序的結(jié)尾過程名和過程文件是兩個不同的概念,過程名是一個沒有擴(kuò)展名的過程名稱,而過程文件可由多個過程構(gòu)成4.2.3過程的調(diào)用過程的調(diào)用格式有兩種情況。其一是程序中過程的調(diào)用,其二是過程文件中過程的調(diào)用。上一頁下一頁返回單元4 過程與過程調(diào)用1.程序中過程的調(diào)用程序中過程的調(diào)用方法與子程序的調(diào)用基本相同,其語法格式如下:DOWITH2.過程文

31、件中過程的調(diào)用如果過程或自定義函數(shù)放在過程文件中,可以在調(diào)用語句IN中指出。其語法格式如下:DOWITHIN也可以在調(diào)用過程之前先通過命令打開過程文件,然后再用DO命令來調(diào)用其中的過程或函數(shù)。其語法格式如下:上一頁下一頁返回單元4 過程與過程調(diào)用SET PROCEDURE TOADDDITIVEADDDITIVE選項表示在不關(guān)閉當(dāng)前已打開的過程文件的情況下打開其他過程文件。注意:如果不加ADDDITIVE選項,打開一個過程文件,將關(guān)閉原已打開的過程文件。該命令在主程序中使用時,應(yīng)放在調(diào)用過程文件的命令之前。當(dāng)不再調(diào)用過程文件時,應(yīng)在調(diào)用程序中使用下列命令予以關(guān)閉。格式1:CLOSE PROCE

32、DURE格式2:SET PROCEDURE TO上一頁下一頁返回單元4 過程與過程調(diào)用任務(wù)4.3帶參數(shù)的過程調(diào)用實際應(yīng)用中,常需要在調(diào)用程序和被調(diào)用程序之間進(jìn)行一些參數(shù)的傳遞,并根據(jù)接收到的參數(shù)控制程序流程或?qū)邮盏降膮?shù)進(jìn)行處理,從而大大提高程序設(shè)計的靈話性。程序之間的參數(shù)傳遞可通過兩種方法進(jìn)行:一是通過帶參數(shù)的程序調(diào)用來實現(xiàn);二是通過內(nèi)存變量來實現(xiàn)。這里介紹通過帶參數(shù)的程序調(diào)用實現(xiàn)參數(shù)傳遞。傳遞參數(shù)命令:DOWITH接受參數(shù)命令:PARAMETERS上一頁下一頁返回單元4 過程與過程調(diào)用當(dāng)調(diào)用語句包含了WITH選項時,表示主程序和子程序(過程)之間要進(jìn)行參數(shù)的傳遞,中的參數(shù)可以是常量、變量

33、和表達(dá)式。參數(shù)傳遞與接收規(guī)則如下。子程序(過程)中的第一條可執(zhí)行語句必須是參數(shù)接收語句。PARAMETERS中的參數(shù)和WITH子句中的參數(shù)必須一一對應(yīng),即參數(shù)的個數(shù)、類型、順序都必須相同。任務(wù)4.4有定義函數(shù)Visual FoxPro除提供眾多的系統(tǒng)函數(shù)(亦稱標(biāo)準(zhǔn)函數(shù))外,還可以由用戶來自定義函數(shù)。上一頁下一頁返回單元4 過程與過程調(diào)用4.4.1自定義函數(shù)的建立自定義函數(shù)的格式FUNCTIONPARAMETERSRETURN說明:若使用FUNCTION語句來指出函數(shù)名,則表示該函數(shù)包含在調(diào)用程序中;若省略此語句,表示該函數(shù)是一個獨立文件,函數(shù)名將在建立文件時確定,其擴(kuò)展名默認(rèn)為.prg,并可使用命令“MODIFYCOMMAND函數(shù)名”來建立或編輯該自定義函數(shù)?!罢Z句序列”為函數(shù)體,用于進(jìn)行各種處理。RETURN語句用于返回函數(shù)值,其中的“表達(dá)式”值就是函數(shù)值,默認(rèn)值為.T.。自定義函數(shù)與系統(tǒng)函數(shù)調(diào)用方法相同。上一頁下一頁返回單元4 過程與過程調(diào)用4.4.2數(shù)組參數(shù)的傳遞在調(diào)用自定義函數(shù)或過程時,也可將數(shù)組作為參數(shù)來傳遞數(shù)據(jù)。此時,發(fā)送參數(shù)與接收參數(shù)都使用數(shù)組名,發(fā)送參數(shù)數(shù)組名前要加標(biāo)記,而作為接收參數(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論