第7章結(jié)構(gòu)化程序設(shè)計(jì)_第1頁(yè)
第7章結(jié)構(gòu)化程序設(shè)計(jì)_第2頁(yè)
第7章結(jié)構(gòu)化程序設(shè)計(jì)_第3頁(yè)
第7章結(jié)構(gòu)化程序設(shè)計(jì)_第4頁(yè)
第7章結(jié)構(gòu)化程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩56頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第第6章章 Visual FoxPro6.0程序設(shè)計(jì)程序設(shè)計(jì)n程序程序是能夠完成一定任務(wù)的命令的有序是能夠完成一定任務(wù)的命令的有序集合。集合。n這組命令以文件的形式存儲(chǔ)在磁盤(pán)上,這組命令以文件的形式存儲(chǔ)在磁盤(pán)上,所存放的文件稱(chēng)為所存放的文件稱(chēng)為命令文件命令文件。n程序文件的擴(kuò)展名為:程序文件的擴(kuò)展名為:.prg6-1 程序與程序文件程序與程序文件6-1-1 6-1-1 程序的建立與修改程序的建立與修改1、程序的建立、程序的建立(1)項(xiàng)目管理器)項(xiàng)目管理器(2)菜單方式菜單方式(3)命令方式命令方式: MODIFY COMMAND 2、程序的打開(kāi)和修改、程序的打開(kāi)和修改(1)項(xiàng)目管理器)項(xiàng)目管理

2、器(2)菜單方式菜單方式(2)命令方式命令方式: MODIFY COMMAND 示例示例:建立名為:建立名為P1.PRG的應(yīng)用程序,使其能的應(yīng)用程序,使其能夠打開(kāi)表文件夠打開(kāi)表文件“ 學(xué)生學(xué)生.DBF”,查找并輸出,查找并輸出“張三張三” 的基本情況,然后關(guān)閉該文件。的基本情況,然后關(guān)閉該文件。命令窗口命令窗口:MODI COMM P1.PRG編輯窗口編輯窗口 SET TALK OFF USE 學(xué)生學(xué)生.DBF LOCATE FOR 姓名姓名=張三張三 ?學(xué)號(hào)學(xué)號(hào),姓名姓名,入學(xué)成績(jī)?nèi)雽W(xué)成績(jī) USE SET TALK ON RETURN set talk on|offVfp在執(zhí)行命令時(shí)會(huì)向用戶

3、提供大量的反饋信息在執(zhí)行命令時(shí)會(huì)向用戶提供大量的反饋信息,工作于程序方式工作于程序方式時(shí)時(shí),會(huì)減慢程序的運(yùn)行速度會(huì)減慢程序的運(yùn)行速度,而且還會(huì)與程序本身的輸出相互混雜而且還會(huì)與程序本身的輸出相互混雜.一般程序執(zhí)行時(shí)一般程序執(zhí)行時(shí)”會(huì)話會(huì)話”斷開(kāi)斷開(kāi).6-1-2 6-1-2 程序的運(yùn)行程序的運(yùn)行1. 菜單方式菜單方式2. 命令方式:命令方式:DO 應(yīng)用程序名應(yīng)用程序名 說(shuō)明:說(shuō)明:在程序運(yùn)行過(guò)程中執(zhí)行到下述命令在程序運(yùn)行過(guò)程中執(zhí)行到下述命令時(shí)將會(huì)中斷運(yùn)行而退出,它們退出后返回時(shí)將會(huì)中斷運(yùn)行而退出,它們退出后返回的系統(tǒng)狀態(tài)分別是:的系統(tǒng)狀態(tài)分別是:CANCEL:返回命令窗口狀態(tài)。:返回命令窗口狀態(tài)

4、。QUIT:操作系統(tǒng)狀態(tài)。:操作系統(tǒng)狀態(tài)。RETURN:調(diào)用點(diǎn)或命令窗口狀態(tài)。:調(diào)用點(diǎn)或命令窗口狀態(tài)。6.1.3 程序的書(shū)寫(xiě)程序的書(shū)寫(xiě)n每條命令都以回車(chē)鍵結(jié)尾,一行一條每條命令都以回車(chē)鍵結(jié)尾,一行一條n若命令需分行寫(xiě),應(yīng)鍵入續(xù)行符若命令需分行寫(xiě),應(yīng)鍵入續(xù)行符“;”n命令注釋命令注釋 * 用于對(duì)下面一段命令代碼解釋用于對(duì)下面一段命令代碼解釋 & 放在命令行的尾部放在命令行的尾部6-1-4 6-1-4 簡(jiǎn)單的輸入輸出命令簡(jiǎn)單的輸入輸出命令1. 鍵入字符串命令鍵入字符串命令A(yù)CCEPT格式格式:ACCEPT TO 說(shuō)明:說(shuō)明:1)暫停程序的運(yùn)行,等待用戶鍵入字符)暫停程序的運(yùn)行,等待用戶鍵入

5、字符型常量以賦給指定的內(nèi)存變量。型常量以賦給指定的內(nèi)存變量。2)是顯示在屏幕上的、用于提示說(shuō)是顯示在屏幕上的、用于提示說(shuō)明的字符型表達(dá)式,用雙引號(hào)引起來(lái)。明的字符型表達(dá)式,用雙引號(hào)引起來(lái)。3)輸入數(shù)據(jù)時(shí)不要加定界符。)輸入數(shù)據(jù)時(shí)不要加定界符。 accept總是接受字符型數(shù)據(jù)總是接受字符型數(shù)據(jù) 如果不鍵入任何字符而只按回車(chē)鍵,則賦給如果不鍵入任何字符而只按回車(chē)鍵,則賦給內(nèi)存變量的值將是一個(gè)空字符串。內(nèi)存變量的值將是一個(gè)空字符串。例例1:編寫(xiě)查找學(xué)生表中任一學(xué)生的學(xué)號(hào),編寫(xiě)查找學(xué)生表中任一學(xué)生的學(xué)號(hào),姓名,性別,班級(jí)的通用程序。姓名,性別,班級(jí)的通用程序。(p2.prg)SET TALK OFFU

6、SE 學(xué)生學(xué)生.DBFACCEPT “請(qǐng)輸入學(xué)生姓名請(qǐng)輸入學(xué)生姓名:” TO XMLOCATE FOR 姓名姓名=XM?學(xué)號(hào)學(xué)號(hào),姓名姓名,性別性別,班級(jí)班級(jí)USESET TALK ONRETURN2. 輸入數(shù)據(jù)輸入數(shù)據(jù)命令命令I(lǐng)NPUT格式:格式:INPUT TO 功能:暫停程序運(yùn)行,等待鍵入表達(dá)式并將其值賦功能:暫停程序運(yùn)行,等待鍵入表達(dá)式并將其值賦給指定的內(nèi)存變量,待按回車(chē)鍵后,繼續(xù)運(yùn)行程序。給指定的內(nèi)存變量,待按回車(chē)鍵后,繼續(xù)運(yùn)行程序。說(shuō)明:說(shuō)明:1)是顯示在屏幕上的、用于提示說(shuō)明是顯示在屏幕上的、用于提示說(shuō)明的字符型表達(dá)式,用雙引號(hào)引起來(lái)。的字符型表達(dá)式,用雙引號(hào)引起來(lái)。2)可以輸入

7、任何類(lèi)型的常量,可以是字符型數(shù)據(jù))可以輸入任何類(lèi)型的常量,可以是字符型數(shù)據(jù),數(shù)值型數(shù)據(jù)數(shù)值型數(shù)據(jù),日期型數(shù)據(jù)和邏輯型數(shù)據(jù)的值日期型數(shù)據(jù)和邏輯型數(shù)據(jù)的值,輸入字輸入字符型數(shù)據(jù)加上相應(yīng)的定界符。符型數(shù)據(jù)加上相應(yīng)的定界符。3)也可以輸入變量或表達(dá)式;若是表達(dá)式,則先)也可以輸入變量或表達(dá)式;若是表達(dá)式,則先計(jì)算出表達(dá)式的值。計(jì)算出表達(dá)式的值。例例1、查找入學(xué)成績(jī)大于、查找入學(xué)成績(jī)大于500分的學(xué)生的學(xué)分的學(xué)生的學(xué)號(hào)、姓名、入學(xué)成績(jī)。(號(hào)、姓名、入學(xué)成績(jī)。(p3.PRG)set talk offuse 學(xué)生學(xué)生 input “輸入入學(xué)成績(jī)輸入入學(xué)成績(jī) to asele 學(xué)號(hào)學(xué)號(hào),姓名姓名,入學(xué)成績(jī)?nèi)雽W(xué)

8、成績(jī) from 學(xué)生學(xué)生 where 入學(xué)成績(jī)?nèi)雽W(xué)成績(jī) a use clos allset talk on return例例2:編程,根據(jù)輸入的半徑值,計(jì)算出相:編程,根據(jù)輸入的半徑值,計(jì)算出相應(yīng)的圓的周長(zhǎng)。(應(yīng)的圓的周長(zhǎng)。(p4.PRG) SET TALK OFFCLEARINPUT “請(qǐng)輸入圓的半徑:請(qǐng)輸入圓的半徑:” TO RL=2*3.1416*R?LSET TALK ONRETURN3. 輸入單字符命令輸入單字符命令WAIT格式:格式:WAIT TO WINDOWAT,TIMEOUT功能:暫停程序的運(yùn)行,等待用戶鍵入單個(gè)字符后功能:暫停程序的運(yùn)行,等待用戶鍵入單個(gè)字符后再恢復(fù)程序運(yùn)行

9、。再恢復(fù)程序運(yùn)行。說(shuō)明:說(shuō)明:1)為可選項(xiàng),其格式、功能與為可選項(xiàng),其格式、功能與要求同要求同ACCEPT命令。如果命令中無(wú)此選項(xiàng),則系命令。如果命令中無(wú)此選項(xiàng),則系統(tǒng)默認(rèn)的提示信息是:統(tǒng)默認(rèn)的提示信息是:PRESS ANY KEY TO CONTINUE2)TO 也為可選項(xiàng),選用時(shí),則鍵入的也為可選項(xiàng),選用時(shí),則鍵入的單個(gè)字符均作為字符型數(shù)據(jù)賦給內(nèi)存變量。如果只單個(gè)字符均作為字符型數(shù)據(jù)賦給內(nèi)存變量。如果只是按下回車(chē)鍵,則只將一個(gè)空字符存入內(nèi)存變量。是按下回車(chē)鍵,則只將一個(gè)空字符存入內(nèi)存變量。例例:編寫(xiě)查找學(xué)生表中任一學(xué)生的學(xué)號(hào),姓名,編寫(xiě)查找學(xué)生表中任一學(xué)生的學(xué)號(hào),姓名,性別,入學(xué)成績(jī)的通用

10、程序。性別,入學(xué)成績(jī)的通用程序。SET TALK OFFUSE 學(xué)生學(xué)生.DBFAccept “請(qǐng)輸入學(xué)生姓名請(qǐng)輸入學(xué)生姓名:” TO XMLOCATE FOR 姓名姓名=XMWAIT “請(qǐng)稍候請(qǐng)稍候” WINDOW TIMEOUT 15?學(xué)號(hào)學(xué)號(hào),姓名姓名,性別性別,入學(xué)成績(jī)?nèi)雽W(xué)成績(jī)USESET TALK ONRETURN6.3 6.3 順序結(jié)構(gòu)程序設(shè)計(jì)順序結(jié)構(gòu)程序設(shè)計(jì)三種基本程序結(jié)構(gòu)流程圖:三種基本程序結(jié)構(gòu)流程圖:AB條件條件AB條件條件A順序結(jié)構(gòu)順序結(jié)構(gòu)分支結(jié)構(gòu)分支結(jié)構(gòu)循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)6-2 順序結(jié)構(gòu)程序設(shè)計(jì)順序結(jié)構(gòu)程序設(shè)計(jì) 順序結(jié)構(gòu)程序:自始至終嚴(yán)格按照程序中語(yǔ)句的順序結(jié)構(gòu)程序:自始至

11、終嚴(yán)格按照程序中語(yǔ)句的先后順序逐條執(zhí)行,是最基本、最普遍的結(jié)構(gòu)形式。先后順序逐條執(zhí)行,是最基本、最普遍的結(jié)構(gòu)形式。示例:編程,根據(jù)輸入的半徑值,計(jì)算出相應(yīng)的圓示例:編程,根據(jù)輸入的半徑值,計(jì)算出相應(yīng)的圓的周長(zhǎng)。(的周長(zhǎng)。(p5.prg) SET TALK OFF CLEAR INPUT “請(qǐng)輸入圓的半徑請(qǐng)輸入圓的半徑:” TO R L=2*3.1416*R 10,10 SAY “圓的周長(zhǎng)是:圓的周長(zhǎng)是:”+STR(L,6,3) SET TALK ON say 在指定的位置輸出表達(dá)式在指定的位置輸出表達(dá)式6-2-1 6-2-1 基本結(jié)構(gòu)基本結(jié)構(gòu)6-2-2 6-2-2 基本語(yǔ)句基本語(yǔ)句格式格式I:

12、NOTE 格式格式II:* 格式格式III:&說(shuō)明:說(shuō)明:1)注釋命令為非執(zhí)行語(yǔ)句)注釋命令為非執(zhí)行語(yǔ)句 2)若注釋內(nèi)容最后一個(gè)字符是分號(hào))若注釋內(nèi)容最后一個(gè)字符是分號(hào)(;),系統(tǒng)默認(rèn)下一行內(nèi)容仍為注釋內(nèi)容。系統(tǒng)默認(rèn)下一行內(nèi)容仍為注釋內(nèi)容。 1. 程序注釋語(yǔ)句程序注釋語(yǔ)句格式I:CLEAR說(shuō)明:清除當(dāng)前屏幕上的所有信息格式II:CLEAR ALL說(shuō)明:關(guān)閉所有文件,清除所有內(nèi)存變量1. 清除命令2. 關(guān)閉文件命令格式I:CLOSE ALL說(shuō)明:關(guān)閉所有的數(shù)據(jù)庫(kù)、表以及索引文件格式II:CLOSE 說(shuō)明:文件類(lèi)型DATABASE數(shù)據(jù)庫(kù)文件、索引文件、格式文件INDEX當(dāng)前工作區(qū)的索引文件

13、PROCEDURE 當(dāng)前工作區(qū)的過(guò)程文件5. 運(yùn)行中斷和結(jié)束命令格式I:QUIT說(shuō)明:退出VFP,返回到操作系統(tǒng)狀態(tài)格式II:CANCEL說(shuō)明:結(jié)束本次程序的運(yùn)行,返回到命令窗口狀態(tài)格式III:RETURN 說(shuō)明:返回到調(diào)用點(diǎn)處。6. 定位輸出命令格式: SAY 說(shuō)明:在指定的行、列處輸出數(shù)據(jù)分支結(jié)構(gòu):分支結(jié)構(gòu):就是按照一定的條件由判斷語(yǔ)句就是按照一定的條件由判斷語(yǔ)句或選擇語(yǔ)句構(gòu)成的雙重或多重走向的程序。或選擇語(yǔ)句構(gòu)成的雙重或多重走向的程序。6-3-1 單條件選擇語(yǔ)句單條件選擇語(yǔ)句6-3 6-3 分支結(jié)構(gòu)程序設(shè)計(jì)分支結(jié)構(gòu)程序設(shè)計(jì)6-3-2 多條件選擇語(yǔ)句多條件選擇語(yǔ)句1) 選擇分支結(jié)構(gòu)選擇分支

14、結(jié)構(gòu)格式:格式:IF ELSE ENDIF語(yǔ)句行序列語(yǔ)句行序列1語(yǔ)語(yǔ) 句句 行行條件條件語(yǔ)句行序列語(yǔ)句行序列2ENDIF后后面的語(yǔ)句面的語(yǔ)句6-3-1 單條件選擇語(yǔ)句單條件選擇語(yǔ)句例例1: 輸入兩個(gè)數(shù)按從大到小輸出輸入兩個(gè)數(shù)按從大到小輸出.(p21.prg) Set talk offinput “第一個(gè)數(shù):第一個(gè)數(shù):” to xinput “第二個(gè)數(shù):第二個(gè)數(shù):” to yif xy ?x,yelse ?y,xEndifSet talk onreturn輸入x,yxy?x,y結(jié)束?y,xYN例例2、 輸入兩個(gè)數(shù)按從大到小輸出輸入兩個(gè)數(shù)按從大到小輸出.(p22.prg) Y輸入x,yxy?x,y

15、交換?x,y結(jié)束N set talk off input “第一個(gè)數(shù):第一個(gè)數(shù):” to xinput “第二個(gè)數(shù):第二個(gè)數(shù):” to y if xy k=x x=y y=k endif ?x,y set talk on return 例例3:在:在“學(xué)生學(xué)生”表中查看表中查看“張三張三”的基的基本情況。本情況。(p23.prg) SET TALK OFF CLEAR USE 學(xué)生學(xué)生 LOCATE FOR 姓名姓名=“張三張三” IF FOUND( ) &判斷是否找到判斷是否找到 DISPLAY ENDIF USE SET TALK ON return2) 判斷語(yǔ)句嵌套判斷語(yǔ)句嵌套I

16、F語(yǔ)句多重嵌套示意結(jié)構(gòu)如下:語(yǔ)句多重嵌套示意結(jié)構(gòu)如下: IF ELSE IF ELSE IF ELSE ENDIF ENDIF ENDIF 注意:注意: (1)IF、ELSE(可可不選不選)、ENDIF一一一一 對(duì)對(duì)應(yīng)、互相匹配應(yīng)、互相匹配 (2)允許簡(jiǎn)單判斷)允許簡(jiǎn)單判斷和選擇判斷語(yǔ)句自我嵌和選擇判斷語(yǔ)句自我嵌套或相互嵌套,但層次套或相互嵌套,但層次必須清楚,不得交叉必須清楚,不得交叉 (3)最好采用縮格)最好采用縮格(鋸齒形)的書(shū)寫(xiě)方式(鋸齒形)的書(shū)寫(xiě)方式例:根據(jù)鍵入例:根據(jù)鍵入X的值,計(jì)算下面分段函數(shù)的值,并顯示結(jié)果。的值,計(jì)算下面分段函數(shù)的值,并顯示結(jié)果。X2+4X-1 (X0)3X2

17、-2X+1 (0X10)10)+1 (X10)Y=程序如下:程序如下:SET TALK OFFSET TALK OFFCLEARCLEARINPUT “X=” TO XINPUT “X=” TO XIF X0IF X0 IF X10 IF X10 Y=X Y=X* *X+1X+1 ELSE ELSE Y=3 Y=3* *X X* *X-2X-2* *X+1X+1 ENDIF ENDIFELSEELSE Y=X Y=X* *X+4X+4* *X-1X-1ENDIFENDIF?Y?YSET TALK ONSET TALK ONRETURNRETURN6-3-2 6-3-2 多分支結(jié)構(gòu)多分支結(jié)構(gòu)格式

18、:格式:DO CASE CASE CASE CASE OTHERWISE ENDCASE例:用例:用DO CASE語(yǔ)句修改上面計(jì)算分段函數(shù)的例子。語(yǔ)句修改上面計(jì)算分段函數(shù)的例子。 SET TALK OFF CLEAR INPUT “X=” TO X DO CASE CASE X0.AND.X10 Y=X*X+1 ENDCASE ?” ?”分段函數(shù)值為:分段函數(shù)值為:”+STR(Y,10,2)+STR(Y,10,2) SET TALK ON SET TALK ON RETURN RETURN6-4 6-4 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 從某處開(kāi)始有規(guī)律的反復(fù)執(zhí)行某一操作塊,從某處開(kāi)始有規(guī)律的

19、反復(fù)執(zhí)行某一操作塊,成為循環(huán)。成為循環(huán)。 被重復(fù)執(zhí)行的操作塊(或程序塊)稱(chēng)為循環(huán)被重復(fù)執(zhí)行的操作塊(或程序塊)稱(chēng)為循環(huán)體。體。6-4-1 6-4-1 當(dāng)型循環(huán)結(jié)構(gòu)當(dāng)型循環(huán)結(jié)構(gòu)格式:格式:DO WHILE EXIT LOOP ENDDO說(shuō)明:說(shuō)明:結(jié)構(gòu)組成:循環(huán)起始語(yǔ)句、循環(huán)體、結(jié)構(gòu)組成:循環(huán)起始語(yǔ)句、循環(huán)體、循環(huán)終端語(yǔ)句循環(huán)終端語(yǔ)句注意:在循環(huán)體內(nèi)要設(shè)置修改循環(huán)注意:在循環(huán)體內(nèi)要設(shè)置修改循環(huán)條件的語(yǔ)句,避免死循環(huán)。條件的語(yǔ)句,避免死循環(huán)。 ENDDO后面的語(yǔ)句后面的語(yǔ)句語(yǔ)句行序列語(yǔ)句行序列條件表達(dá)式條件表達(dá)式循環(huán)體內(nèi)語(yǔ)句循環(huán)體內(nèi)語(yǔ)句修改條件表達(dá)式修改條件表達(dá)式Y(jié)N例例1:編程求和:編程求和1+

20、2+3+100。(p31.PRG) SET TALK OFF CLEAR S=0 N=1 DO WHILE N=100 S=N+S N=N+1 ENDDO ?”累加和累加和S=”,S SET TALK ON RETURN例例2:編程顯示學(xué)生表中所有女生的記:編程顯示學(xué)生表中所有女生的記錄。錄。 SET TALK OFF USE 學(xué)生學(xué)生 INDEX ON 性別性別 TO 性別性別 SEEK “女女” DO WHILE 性別性別=”女女” DISPLAY SKIP ENDDO USE SET TALK ON RETURN Seek 按主索引文件查詢與指定表達(dá)式按主索引文件查詢與指定表達(dá)式值匹配的

21、第一條記錄。該命令只能使記錄定位于符合值匹配的第一條記錄。該命令只能使記錄定位于符合條件的第一條記錄,可用條件的第一條記錄,可用skip命令使指針指向下一個(gè)命令使指針指向下一個(gè)符合條件的記錄符合條件的記錄(p32.PRG)例例3:編程顯示學(xué)生表中所有女生的記錄。:編程顯示學(xué)生表中所有女生的記錄。 SET TALK OFF (p33.PRG) CLEAR USE 學(xué)生表學(xué)生表 LOCA FOR 性別性別=”女女” DO WHILE .NOT. EOF() DISPLAY CONTINUE ENDDO USE SET TALK ON RETURN Locate for :條件定位,當(dāng)發(fā)現(xiàn)一個(gè)滿足條

22、件的記錄后,:條件定位,當(dāng)發(fā)現(xiàn)一個(gè)滿足條件的記錄后,可以執(zhí)行可以執(zhí)行continue命令,在表的剩余部分尋找滿足條件的記錄。命令,在表的剩余部分尋找滿足條件的記錄。Use 學(xué)生學(xué)生Do while not eof() Do case Case 入學(xué)成績(jī)?nèi)雽W(xué)成績(jī)=550 ? “優(yōu)秀優(yōu)秀” Case 入學(xué)成績(jī)?nèi)雽W(xué)成績(jī)=520 ? “良好良好” Case 入學(xué)成績(jī)?nèi)雽W(xué)成績(jī)=490 ? “合格合格” Other ? “不合格不合格” Endcase SkipEnddoreturn例4:P154l循環(huán)退出語(yǔ)句循環(huán)退出語(yǔ)句EXIT的使用的使用 exit從循環(huán)體內(nèi)跳出,轉(zhuǎn)去執(zhí)行從循環(huán)體內(nèi)跳出,轉(zhuǎn)去執(zhí)行end

23、do后第后第一條命令,一條命令,exit可以放在循環(huán)體的任何地方可以放在循環(huán)體的任何地方例例5:1+2+3+?和大于和大于50停止。停止。 X=1 ( p35.prg) S=0 DO WHILE .T. S=S+X IF S50 EXIT ENDIF X=X+1 ENDDO ?X循環(huán)短路語(yǔ)句循環(huán)短路語(yǔ)句loop的使用的使用Loop直接轉(zhuǎn)回到直接轉(zhuǎn)回到do while 語(yǔ)句,語(yǔ)句,而不執(zhí)行而不執(zhí)行l(wèi)oop和和Enddo之間的命令之間的命令對(duì)選課表中統(tǒng)計(jì)統(tǒng)計(jì)成績(jī)及格的記錄個(gè)數(shù)Use 選課S=0Do while .T. If eof() exit Endif If 成績(jī)60 skip loop En

24、dif S=s+1 SkipEnddo?s6-4-2 6-4-2 固定次數(shù)的循環(huán)結(jié)構(gòu)固定次數(shù)的循環(huán)結(jié)構(gòu)格式:格式:FOR = TO STEP LOOP EXITENDFOR|NEXT功能:該語(yǔ)句通常用于循環(huán)次數(shù)已知情況下的循環(huán)結(jié)構(gòu)。功能:該語(yǔ)句通常用于循環(huán)次數(shù)已知情況下的循環(huán)結(jié)構(gòu)。首先計(jì)算初值、終值和步長(zhǎng)值,如果循環(huán)變量的值在初值和終首先計(jì)算初值、終值和步長(zhǎng)值,如果循環(huán)變量的值在初值和終值范圍內(nèi),執(zhí)行值范圍內(nèi),執(zhí)行for和和endfor之間的命令,然后循環(huán)變量按步之間的命令,然后循環(huán)變量按步長(zhǎng)值增加或減小,直到循環(huán)變量的值不在初值與終值范圍內(nèi)長(zhǎng)值增加或減小,直到循環(huán)變量的值不在初值與終值范圍內(nèi)

25、注意:步長(zhǎng)可為注意:步長(zhǎng)可為正值正值和和負(fù)值,默認(rèn)值為負(fù)值,默認(rèn)值為1例例1:編程求和:編程求和S=1+2+3+100。SET TALK OFFCLEARS=0FOR N=1 TO 100 S=S+N ENDFOR?”S=”,SSET TALK ONRETURN(L11.PRG)例例2:求求1!+2!+3!+10! (L12.PRG) Set talk off s=0 p=1 For i=1 to 10 p=p*I s=s+p Endfor ?s set talk on retu6-4-3 6-4-3 表掃描循環(huán)結(jié)構(gòu)表掃描循環(huán)結(jié)構(gòu)格式:格式:SCAN FOR WHILE LOOP EXIT E

26、NDSCAN 執(zhí)行該語(yǔ)句時(shí)執(zhí)行該語(yǔ)句時(shí),記錄指針自動(dòng)、依次地在當(dāng)記錄指針自動(dòng)、依次地在當(dāng)前表的指定范圍內(nèi)滿足條件的記錄上移動(dòng),前表的指定范圍內(nèi)滿足條件的記錄上移動(dòng),對(duì)每一條記錄執(zhí)行循環(huán)體內(nèi)的命令對(duì)每一條記錄執(zhí)行循環(huán)體內(nèi)的命令例例1:編程統(tǒng)計(jì)學(xué)生表中男學(xué)生的人數(shù)。:編程統(tǒng)計(jì)學(xué)生表中男學(xué)生的人數(shù)。SET TALK OFFCLEARN=0USE 學(xué)生學(xué)生SCAN FOR 性別性別=”男男” N=N+1ENDSCAN?”學(xué)生表中男學(xué)生的人數(shù)是:學(xué)生表中男學(xué)生的人數(shù)是:”,NUSESET TALK ONRETURN(L13.PRG)例例2:統(tǒng)計(jì)表文件:統(tǒng)計(jì)表文件“學(xué)生學(xué)生.DBF”中各個(gè)班級(jí)的人數(shù)。中各

27、個(gè)班級(jí)的人數(shù)。SET TALK OFFSTORE 0 TO A,BCLEARUSE 學(xué)生學(xué)生.DBFSCAN DO CASE CASE 班級(jí)班級(jí)=“會(huì)計(jì)學(xué)會(huì)計(jì)學(xué)” A=A+1 CASE 班級(jí)班級(jí)=“金融學(xué)金融學(xué)” B=B+1 ENDCASEENDSCAN?“會(huì)計(jì)學(xué)的人數(shù)為:會(huì)計(jì)學(xué)的人數(shù)為:”+STR(A,3)?“金融學(xué)的人數(shù)為:金融學(xué)的人數(shù)為:”+STR(B,3)USESET TALK ONRETURN(L14.PRG)6-4-4 6-4-4 多重循環(huán)結(jié)構(gòu)多重循環(huán)結(jié)構(gòu)格式(以當(dāng)型循環(huán)結(jié)構(gòu)為例):DO WHILE 條件表達(dá)式1 語(yǔ)句行序列11 DO WHILE 條件表達(dá)式2 語(yǔ)句行序列21 DO

28、 WHILE 條件表達(dá)式3 語(yǔ)句行序列31 ENDDO 語(yǔ)句序列22 ENDDO 語(yǔ)句行序列12 ENDDO1、已有表文件已有表文件“成績(jī)表成績(jī)表.DBF”。編寫(xiě)程序?qū)崿F(xiàn):。編寫(xiě)程序?qū)崿F(xiàn):如:如:“張三張三 95 優(yōu)秀優(yōu)秀”。skipenddouse set talk onretuSet talk offUse 成績(jī)表成績(jī)表Do while not eof()Do case case 數(shù)學(xué)數(shù)學(xué)=90 ?學(xué)號(hào)學(xué)號(hào),數(shù)學(xué)數(shù)學(xué),優(yōu)秀優(yōu)秀 case 數(shù)學(xué)數(shù)學(xué)=60 and 數(shù)學(xué)數(shù)學(xué)1949-10-01 and 職稱(chēng)職稱(chēng)=“教授教授”Do while not eof() ?姓名,性別,出生日期,基本工資

29、姓名,性別,出生日期,基本工資 continueEnddoUseSet talk on 6-3-1 6-3-1 過(guò)程的建立與調(diào)用過(guò)程的建立與調(diào)用過(guò)程:可被調(diào)用的功能模塊或能夠完成某種特定過(guò)程:可被調(diào)用的功能模塊或能夠完成某種特定功能的獨(dú)立程序。功能的獨(dú)立程序。1、過(guò)程的建立:、過(guò)程的建立: MODIFY COMMAND 建立格式:建立格式: PROCEDURE PAPAMERTERS RETUREN 2.過(guò)程文件過(guò)程文件:包含若干包含若干“過(guò)程過(guò)程”的命令文件,的命令文件,打開(kāi)一個(gè)過(guò)程文件就是同時(shí)打開(kāi)了它所包含的打開(kāi)一個(gè)過(guò)程文件就是同時(shí)打開(kāi)了它所包含的所有過(guò)程,其建立過(guò)程和文件建立過(guò)程一樣,所

30、有過(guò)程,其建立過(guò)程和文件建立過(guò)程一樣,用用modify command建立建立 PROCEDURE RETUREN PROCEDURE RETUREN PROCEDURE RETUREN 3.過(guò)程文件打開(kāi)與關(guān)閉(寫(xiě)在主程序中)過(guò)程文件打開(kāi)與關(guān)閉(寫(xiě)在主程序中) 打開(kāi):打開(kāi): 命令格式:命令格式: SET PROCEDURE TO 關(guān)閉:關(guān)閉: 命令格式:命令格式: CLOSE PROCEDURE 或或 SET PROCEDURE TO 4.過(guò)程的調(diào)用過(guò)程的調(diào)用 命令格式:命令格式: DO WITH例例1、 s=5!+6!+7!modify command main.prgSet talk of

31、fset proc to bbs=0for k=5 to 7do bbendfor?”s=5!+6!+7!=“,sclose procedurereturnprocedure bbp=1for n=1 to kp=p*nendfors=s+preturnmodify command sub.prg6-3-2過(guò)程的建立與調(diào)用過(guò)程的建立與調(diào)用方法方法2、s=5!+6!+7!modify command main1.prgset talk offs=0for k=5 to 7do aaendfor?”s=5!+6!+7!=“,sproc aa &過(guò)程開(kāi)始過(guò)程開(kāi)始p=1for n=1 to k

32、p=p*nendfors=s+preturn &過(guò)程結(jié)束過(guò)程結(jié)束 主程序與子程序之間或過(guò)程與過(guò)程之間通過(guò)互相傳遞參數(shù)來(lái)完成整體上的操作。程序之間的參數(shù)傳遞可以通過(guò)兩種途徑進(jìn)行:一是通過(guò)帶參數(shù)的程序調(diào)用來(lái)實(shí)現(xiàn),二是通過(guò)內(nèi)存變量來(lái)實(shí)現(xiàn)。一、通過(guò)帶參數(shù)的程序調(diào)用實(shí)現(xiàn)參數(shù)傳遞一、通過(guò)帶參數(shù)的程序調(diào)用實(shí)現(xiàn)參數(shù)傳遞 傳遞參數(shù)命令格式:傳遞參數(shù)命令格式: DO DO WITH WITH 接收參數(shù)命令格式:接收參數(shù)命令格式: PARAMETERS PARAMETERS 參數(shù)傳遞參數(shù)傳遞 參數(shù)傳遞與接受規(guī)則: 傳遞參數(shù)命令可以出現(xiàn)在調(diào)用程序(主程序)中的任何位置,而接收參數(shù)命令必須出現(xiàn)在被調(diào)用程序(子程

33、序)中的第一行。 傳址方式:當(dāng)WITH后的中是內(nèi)存變量列表時(shí),每個(gè)內(nèi)存變量的值傳給PARAMETERS中對(duì)應(yīng)變量,而該調(diào)用程序中的內(nèi)存變量被隱含起來(lái),但其值隨著被調(diào)用程序中相對(duì)應(yīng)變量的值的變化而變化。 傳值方式:當(dāng)WITH后的中是內(nèi)存變量表達(dá)式列表或單個(gè)內(nèi)存變量用圓括號(hào)括起來(lái)時(shí),每個(gè)內(nèi)存變量表達(dá)式的值傳給PARAMETERS中對(duì)應(yīng)變量,而該調(diào)用程序中出現(xiàn)在表達(dá)式中的內(nèi)存變量不被隱含,其值也不隨著被調(diào)用程序中相對(duì)應(yīng)變量的值的變化而變化。例例2:主程序主程序 MAIN.PRGSet proc to subA1=1A2=2A3=3Do bb WITH A1+A2,A3?A1+A2+A3Close p

34、rocedure子程序子程序SUB.PRGProc bbPARA B1,B2B1=B1+B2B2=B1+B2Return126-3-4 變量的作用域變量的作用域內(nèi)存變量可分為公共變量、私有變量和本地變量。內(nèi)存變量可分為公共變量、私有變量和本地變量。1、公共變量、公共變量(在任何模塊中都可以使用的變量,初在任何模塊中都可以使用的變量,初值值.f.) public 2、私有變量、私有變量(建立它的模塊及其下屬的各層模塊建立它的模塊及其下屬的各層模塊) 在程序中直接使用,而由系統(tǒng)自動(dòng)隱含建立的在程序中直接使用,而由系統(tǒng)自動(dòng)隱含建立的變量都是私有變量。變量都是私有變量。 Private All like/except3、本地變量、本地變量(只能在建立它的模塊中使用,初值只能在建立它的模塊中使用,初值.f.) local 例:本地變量的作用范圍例:本地變量的作用范圍set talk off x=10 y=20 do sub with y?”x=“,x?”y=“,yReturnlocal xx=1 x=x+zz=x returnproc sub parameter z結(jié)果:結(jié)果: x=21 y=21

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論