結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求_第1頁
結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求_第2頁
結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求_第3頁
結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求_第4頁
結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求_第5頁
已閱讀5頁,還剩74頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求 結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求 VFP提供一種程序執(zhí)行方式,這種方式就是預(yù)先把需要執(zhí)行的多條命令按一定的結(jié)構(gòu)組成一個有機(jī)序列以文件的形式存儲在磁盤上,這個文件就稱為程序文件,這個序列的設(shè)計、編碼和調(diào)試的過程就是程序設(shè)計。9.1 程序設(shè)計基礎(chǔ) 9.1.1 程序設(shè)計的概念 結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求9.1.2 程序的控制結(jié)構(gòu) 任何復(fù)雜的程序都由3種基本控制結(jié)構(gòu)組成。它們是順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。 圖程序的控制結(jié)構(gòu) 結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求9.1.3 結(jié)構(gòu)化程序設(shè)計方法 結(jié)構(gòu)化程序設(shè)計采用自頂向下、逐步求精和模塊化的分析方法。 自頂向下是指對設(shè)計的系統(tǒng)要有一個

2、全面的理解,從問題的全局入手,把一個復(fù)雜問題分解成若干個相互獨(dú)立的子問題 。逐步求精是指程序設(shè)計的過程是一個漸進(jìn)的過程,先把一個子問題用一個程序模塊來描述,再把每個模塊的功能逐步分解細(xì)化為一系列的具體步驟 。模塊化是結(jié)構(gòu)化程序的重要原則。所謂模塊化就是把大程序按照功能分為較小的程序。 結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求9.1.4 程序文件的建立與執(zhí)行 1命令方式建立或修改程序文件命令格式: MODIFY COMMAND ? MODIFY.FILE.文件名? 功能:啟動VFP提供的文本編輯器來建立或編輯程序文件。2菜單方式建立編輯程序文件 結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求命令格式: DO 程序文件名 功

3、能 : 將程序文件從磁盤調(diào)入內(nèi)存, 編譯成.FXP目標(biāo)文件后并執(zhí)行。3.程序文件的執(zhí)行 菜單方式:.CANCEL:終止程序運(yùn)行,清除所有的私有變量,返回命令窗口。.RETURN:結(jié)束程序執(zhí)行,返回調(diào)用它的上級程序,若無上級程序則返回命令窗口。.QUIT:結(jié)束程序執(zhí)行并退出系統(tǒng),返回操作系統(tǒng)。 結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求9.2 順序結(jié)構(gòu)程序 順序結(jié)構(gòu)是最簡單、最基本的一種程序結(jié)構(gòu)。在順序結(jié)構(gòu)程序中,各命令按照各自出現(xiàn)的先后順序,依次執(zhí)行。 結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求9.2.1 程序文件中的輔助命令 一輸入類語句 格 式1: STORE 表達(dá)式 TO 內(nèi)存變量名表 格 式2: 內(nèi)存變量 表達(dá)式

4、 功 能:給內(nèi)存變量賦值。. 賦值語句結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求. 交互式語句/鍵盤輸入命令 1. 字符串?dāng)?shù)據(jù)輸入命令格式: ACCEPT TO 功能:在屏幕上顯示提示信息,等待用戶從鍵盤輸入,再把輸入內(nèi)容賦值給指定的內(nèi)存變量。 注:ACCEPT命令只能接受字符型常量,輸入時不需加定界符。 鍵盤輸入命令主要用于程序執(zhí)行過程中原始數(shù)據(jù)的輸入。結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求例9-1:要求用戶從鍵盤上輸入用戶名,然后把輸入的用戶名顯示出來。ACCEPT “請輸入用戶名:” TO NAME?NAME結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求格式:INPUT TO 2. 數(shù)據(jù)輸入命令功能:在屏幕上顯示提示信息,等待用

5、戶從鍵盤輸入,再把輸入內(nèi)容賦值給指定的內(nèi)存變量。 注:INPUT命令能接受任何類型的表達(dá)式: 輸入C 型數(shù)據(jù)時,要使用 或 “ ” 作為定界符; 輸入L 型數(shù)據(jù)時,.T. 和 .F. ,兩邊的 . 不能?。?輸入D 型數(shù)據(jù)時,要用 或CTOD( ) 將字符串轉(zhuǎn)成日期型變量。結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求例9-2:求任意兩數(shù)之和。INPUT “請輸入一個數(shù)x:” TO X?X+YINPUT “請輸入另一個數(shù)y:” TO Y結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求 J=2800 INPUT “輸入 J+200 :” TO A ACCEPT “輸入 J+200 :” TO B ?“A=”,A ? “B=”,B 注

6、:執(zhí)行時,先后兩次輸入同樣的內(nèi)容:J+200例9-3: 給出下列A、B的結(jié)果結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求格式:WAIT TO TIMEOUT 3. 只能輸入一個字符的命令功能:當(dāng)程序執(zhí)行某一處需要暫停時使用此命令。 注:WAIT命令響應(yīng)速度快,它只接受一個字符,不需用戶鍵入回車鍵。結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求* 數(shù)據(jù)表操作命令菜單 *打開工作數(shù)據(jù)表增加數(shù)據(jù)表記錄刪除數(shù)據(jù)表記錄修改數(shù)據(jù)表記錄打印數(shù)據(jù)表記錄關(guān)閉工作數(shù)據(jù)表? “您選擇的是第” + CHOICE + “個選項(xiàng)”WAIT “請選擇相應(yīng)代碼:” TO CHOICE例9-4:結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求格式: SAY GET RANGE ,

7、 READ4. 格式輸入語句功能:在屏幕指定的坐標(biāo)位置上顯示提示或輸入數(shù)據(jù)。 READ 一般與GET 聯(lián)合起來用:當(dāng)有READ時, GET 的內(nèi)容可以從鍵盤上修改;沒有READ時,GET 后的變量只能顯示內(nèi)容,不能修改;一個READ可以修改它前面的多個GET項(xiàng)的內(nèi)容,但它可以由CLEARGETS命令隔斷。 注: :該變量應(yīng)在其前面定義過( 賦初值 ) 。結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求 8, 18 SAY “* 數(shù)據(jù)表操作命令菜單 *” 9, 18 SAY “ 1.打開工作數(shù)據(jù)表 ” 10, 18 SAY “ 2. 增加數(shù)據(jù)表記錄 ” 11, 18 SAY “ 3. 刪除數(shù)據(jù)表記錄 ” 12, 1

8、8 SAY “ 4. 修改數(shù)據(jù)表記錄 ” 13, 18 SAY “ 5. 打印數(shù)據(jù)表記錄 ” 14, 18 SAY “ 6. 關(guān)閉工作數(shù)據(jù)表 ” 18, 28 SAY “您選擇的是:” + LTRIM(STR(CHOICE) 16, 28 SAY “ 請選擇相應(yīng)代碼:” GET CHOICEREAD例9-5:結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求二輸出類語句1. 非格式輸出語句 格式1: ? 內(nèi)存變量名表格式2: ? 內(nèi)存變量名表注:語句1 是在光標(biāo)所在行的下一行開始顯示, 語句2 則是在當(dāng)前光標(biāo)位置開始顯示。功 能:顯示內(nèi)存變量、常量或表達(dá)式的值。結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求格式: SAY FUNCT

9、ION PICTURE 2. 格式輸出語句功能:按指定的坐標(biāo)位置在屏幕上輸出表達(dá)式的值。 注: 若選用PICTURE、 FUNCTION子句,則按一定的格式輸出 ,分別見教材P131的表、。結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求格式: TEXT ENDTEXT 3. 文本輸出語句功能:在屏幕上原樣顯示TEXT和ENDTEXT之間的內(nèi)容。 注: TEXT、ENDTEXT是一條子句,不能省略其中任一條子句。結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求* 數(shù)據(jù)表操作命令菜單 *打開工作數(shù)據(jù)表增加數(shù)據(jù)表記錄刪除數(shù)據(jù)表記錄修改數(shù)據(jù)表記錄打印數(shù)據(jù)表記錄關(guān)閉工作數(shù)據(jù)表? “您選擇的是第” + CHOICE + “個選項(xiàng)”WAIT “

10、請選擇相應(yīng)代碼:” TO CHOICE例6-6TEXTENDTEXT結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求三. 設(shè)置會話狀態(tài)語句語句格式2: SET TALK OFF功能 語句1:設(shè)置會話狀態(tài)開通。 語句2:設(shè)置會話狀態(tài)關(guān)閉。語句格式1: SET TALK ON結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求四. 清屏與注釋語句語句格式: CLEAR1. 清屏語句功 能 :清除屏幕上所有顯示內(nèi)容,光標(biāo)回到屏幕左上角。結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求2. 注釋語句語句格式2: * 注:語句1、2、3 在程序中,系統(tǒng)不執(zhí)行。語句格式1: NOTE 功 能 : 在程序中加入說明性語句。語句格式3: & 結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求五

11、. RETURN命令注:一般RETURN出現(xiàn)于程序末尾。格式: RETURN /TO MASTER/TO 功能 : 結(jié)束一個程序的執(zhí)行。結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求六. 終止程序執(zhí)行語句語句格式2: QUIT注: 語句1:在終止程序執(zhí)行后,返回到VFP命令狀態(tài); 語句2:返回到操作系統(tǒng)狀態(tài)。語句格式1: CANCEL功能:終止程序執(zhí)行,關(guān)閉所有打開的命令文件。結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求順序結(jié)構(gòu)程序:按語句的先后順序組織的程序,即把處理過程的各個步驟按執(zhí)行的先后順序列出。其流程圖如右圖所示。順序結(jié)構(gòu)程序設(shè)計 A B C N圖中箭頭表示程序執(zhí)行的方向,方框代表不同的可執(zhí)行語句。 結(jié)構(gòu)化程序設(shè)計和

12、程序調(diào)試要求例9-7 變量的初始化和變量的賦值。SET TALK OFF STORE 0 TO X,Y,ZA=3B=A+1C=A*B? X, Y, Z? A, B, CSET TALK ON 結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求例9-8 執(zhí)行以下命令序列,問答問題:最后顯示的值是:所有職工的平均工資;所有工資在1000元以上的職工的平均工資;所有工資在1000元以上的職工人數(shù);所有職工人數(shù) 。USEzgbSUM 基本工資 FOR 基本工資1000 TO SGZCOPY FOR 基本工資1000 TO GZK2USE GZK2num=reccount( )ave=sgz/num? ave結(jié)構(gòu)化程序設(shè)計和

13、程序調(diào)試要求在計算機(jī)應(yīng)用的許多場合,要求程序根據(jù)不同的條件采用不同的處理方法。如果條件滿足,則執(zhí)行某一些語句;如果條件不滿足,則執(zhí)行另一些語句。這些需要根據(jù)判斷條件來控制程序走向的程序設(shè)計稱為選擇結(jié)構(gòu)程序設(shè)計,又稱分支結(jié)構(gòu)程序設(shè)計。Visual FoxPro提供雙分支選擇語句、多分支選擇語句兩種選擇結(jié)構(gòu)。9.3 選擇結(jié)構(gòu)程序設(shè)計結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求 ENDIF后的語句語句序列1 ENDIF后的語句語句格式:IF 條件 語句序列1ENDIF 條件9.3.1 雙分支選擇語句(選擇判斷語句) 條件.T.F.語句序列1.Y.N.語句序列2 ELSE 語句序列2結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求注:(

14、1) IF和ENDIF必須配對使用,而ELSE可選。(2)IF、ELSE、ENDIF必須各占一行。(3) 可以為關(guān)系表達(dá)式、邏輯表達(dá)式。(4)在語句序列1和語句序列2中可以嵌套IF語句。執(zhí)行過程:如果成立,就執(zhí)行語句序列1;如果不成立,執(zhí)行語句序列2。 結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求例 請改用分支結(jié)構(gòu)語句編程計算電費(fèi): 不超過50度, 每度元; 超過50度時, 超出部分每度元。SET TALK OFFINPUT “請輸入所用電量: TO DLDF=IIF(DL=50,0.52*DL,0.52*50+0.75*(DL-50))? “應(yīng)繳電費(fèi)為:” + LTRIM(STR(DF,10,2) + 元S

15、ET TALK ONRETURN 結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求SET TALK OFF INPUT 請輸入行李重量: TO WIF 1 YF=0.22*W ELSE YF= 0.22*40 + 1ENDIF ? 應(yīng)交托運(yùn)費(fèi)為:+LTRIM(STR(YF,10,2)+元SET TALK ONRETURN 例 火車托運(yùn)行李: 每人不超過40公斤,每公斤元;超過40公斤時, 超出部分每公斤元。填空完成以下程序。W 40結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求SET TALK OFFSet defa to f:jfvfpprgUSE zgbACCEPT “請輸入要查找人的姓名: ” TO NLOCATE ALL

16、FOR XM=NIF FOUND( ) DISP ELSE ? 查無此人ENDIFUSESET TALK ONRETURN例 編程:在中查找某人。結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求9.3.2 多分支選擇語句(選擇語句|情況語句)說明:DO CASE和第一個CASE子句之間不能插入任何語句。DO CASE和ENDCASE必須配對使用,且DO CASE,CASE,OTHERWISE和ENDCASE各子句必須各占一行。在語句序列中可嵌套情況語句。 語句格式: DO CASE CASE 條件表達(dá)式1 語句序列1 CASE 條件表達(dá)式2 語句序列2 CASE 條件表達(dá)式n 語句序列n OTHERWISE 語句

17、序列n+1 ENDCASE 結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求功能:系統(tǒng)依次測試語句中各個條件表達(dá)式的值: 若為真,即執(zhí)行相應(yīng)條件表達(dá)式后的語句序列, 然后脫離情況語句,執(zhí)行ENDCASE的下一語句。若所有的條件表達(dá)式的值均為假,則執(zhí)行OTHERWISE后面的語句序列, 然后脫離情況語句,執(zhí)行ENDCASE下一語句 。 開始判斷語句序列1序列2序列n序列n+1ENDCASE后面的語句條件1條件2條件n其它結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求例 已知中包含xingming,avcj等字段。試用avcj來判斷該生成績屬于優(yōu)(90)、良(80)、及格(60)或不及格(60)。USE cjbACCEPT 請輸入姓名

18、: TO xmLOCATE FOR ALLTRIM(xingming)=ALLTRIM(xm)navcjDO CASE CASE n=90 dj=優(yōu) CASE n=80 dj=良 CASE n=60 dj=及格 OTHERWISE dj=不及格ENDCASE5,10 SAY xingming+同學(xué)的成績等級為:+ dj結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求A=3000DO CASE CASE A=1000 B=A CASE A=2000 B=2*A CASE A=3000 B=3*AENDCASE? B例 閱讀下列程序段,寫出運(yùn)行結(jié)果: 結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求Set talk offSet def

19、a to f:yyfoxclearcho=0 8, 18 SAY “* 數(shù)據(jù)表操作命令菜單 *” 9, 18 SAY “ 1. 打開工作數(shù)據(jù)表 ” 10, 18 SAY “ 2. 增加數(shù)據(jù)表記錄 ” 11, 18 SAY “ 3. 刪除數(shù)據(jù)表記錄 ” 12, 18 SAY “ 4. 修改數(shù)據(jù)表記錄 ” 14, 18 SAY “ 5. 關(guān)閉工作數(shù)據(jù)表 ” 15, 28 SAY “ 請選擇相應(yīng)代碼:” GET choReadDo case case cho=1 accept “請輸入表文件名:” to bm use &bm例 利用CASE語句實(shí)現(xiàn)簡單的菜單功能 結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求 cas

20、e cho=2 append case cho=3 input “請輸入要刪除的記錄號:” to jlh go jlh dele case cho=4 browse case cho=5 use otherwise 15, 28 SAY “ 選擇代碼錯!” endcaseSet talk on return結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求 循環(huán),就是按給定的條件連續(xù)地重復(fù)執(zhí)行一段特定功能的程序。循環(huán)結(jié)構(gòu)也稱為重復(fù)結(jié)構(gòu)。9.4 循環(huán)結(jié)構(gòu)程序設(shè)計 Visual FoxPro給出了三種循環(huán)結(jié)構(gòu):條件循環(huán)(DO WHILEENDDO)計算循環(huán)(FORENDFOR)掃描循環(huán)(SCANENDSCAN)結(jié)構(gòu)化程

21、序設(shè)計和程序調(diào)試要求語句格式: DO WHILE LOOP EXIT ENDDO 循環(huán)體 ENDDO后的語句條件.T.F.條件循環(huán)結(jié)構(gòu)流程圖一、條件循環(huán)循環(huán)體功能:有條件連續(xù)地重復(fù)執(zhí)行DO WHILE與ENDDO之間的語句序列,直到為假或因執(zhí)行EXIT語句而結(jié)束。條件結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求(2)循環(huán)體中的LOOP是可選項(xiàng)。遇到LOOP時,不再執(zhí)行后面的語句,轉(zhuǎn)回DO WHILE處重新判斷。其作用相當(dāng)于一個特殊的“短路”返回控制。(3)循環(huán)體中的EXIT也是可選項(xiàng)。遇到它時便無條件地退出循環(huán),轉(zhuǎn)到ENDDO后面的語句。其作用相當(dāng)于一個緊急出口。(4)通常LOOP或EXIT出現(xiàn)在循環(huán)體內(nèi)嵌套

22、的分支語句中,根據(jù)條件來決定是LOOP回去,還是EXIT出去。功能說明:(1)系統(tǒng)執(zhí)行該語句時,先判斷循環(huán)開始DO WHILE的條件是否成立, 如果條件為真,則執(zhí)行循環(huán)體中的語句序列。當(dāng)執(zhí)行到ENDDO時,返回到DO WHILE,再次判斷條件是否為真,以確定是否再次執(zhí)行循環(huán)體。若條件為假,則結(jié)束循環(huán) ,執(zhí)行ENDDO后面的語句。 如果第一次判斷條件時,條件即為假,則循環(huán)體一次都不執(zhí)行,這就是稱為“先判斷后執(zhí)行”的語句。結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求SET TALK OFF SET TALK ONRETURNCLEAR?OK?OK?OK例 在屏幕上換行顯示字符串“OK”20次結(jié)構(gòu)化程序設(shè)計和程序調(diào)

23、試要求i=1? OKi=i+1ENDDODO WHILESET TALK OFF SET TALK ONRETURNCLEARi=20循環(huán)次數(shù)循環(huán)前i值循環(huán)后i值112223202021&設(shè)置循環(huán)變量初值&修改循環(huán)變量例 在屏幕上換行顯示字符串OK20次? OK結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求 DO WHILE 語句之前一定要有設(shè)置循環(huán)變量初 值的語句。 在以循環(huán)變量作為循環(huán)控制參數(shù)的條件循環(huán)中 循環(huán)體內(nèi)一定要有修改循環(huán)變量的語句,否則 就會出現(xiàn)死循環(huán)。注意結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求例 求自然數(shù)1至4的和。 分析算法:s= s+i ;i= i+1 ;1. i=1 , s=0 ;2. 累加第 i

24、個數(shù)3. 累加次數(shù)加1 4. 當(dāng) i= 4 重復(fù)做2 ;5. ? s 。結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求例 求自然數(shù)1至4的和。 SET TALK OFFS=0 &定義一個變量表示和,并初始化&指定以循環(huán)次數(shù)作判斷條件 S=S+i&把S的值加上i后再賦給S,即求和&修改循環(huán)變量i=1DO WHILE i=4i=i+1ENDDO? S&輸出求和的結(jié)果 SET TALK ON RETURN&設(shè)置循環(huán)變量的初值結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求程序流程圖S=0i=11=4S=0+1i=1+1.T.2=4S=1+2i=2+13=4S=3+3i=3+14=4S=6+4i= 4+15=4.F.? 10SET TAL

25、K OFFS=0i=1DO WHILE i=4 S=S+i i=i+1ENDDO? SSET TALK ONRETURN結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求 若求自然數(shù)1至N的和呢? 程序:求自然數(shù)1至4的和SET TALK OFFS=0 i=1INPUT 請輸入N的值: TO N DO WHILE i=4 S=S+ii=i+1ENDDO?S SET TALK ON RETURNi=N推廣1結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求 若求自然數(shù)1至N的積呢? 程序:求自然數(shù)1至N的和SET TALK OFFS=0 i=1INPUT 請輸入N的值: TO N DO WHILE i=N S =S + ii =i + 1

26、ENDDO?S SET TALK ON RETURN推廣2S=1S=S*i結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求例 閱讀程序,并說出程序的運(yùn)行結(jié)果IF i=3 LOOPENDIF程序結(jié)果23456程序結(jié)果2456 RETURN SET TALK ONSET TALK OFFi=1DO WHILE i=5 i=i+1 ENDDO ? i? “E”EE結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求例 求1100以內(nèi)所有奇數(shù)的和。 SET TALK OFFS=0I=0Do while I100 I = I + 1 If int(I/2) = I/2 Loop endif S = S + IEnddo? “1到100的奇數(shù)和 S

27、= ”, SSET TALK ONReturn以循環(huán)變量作為控制參數(shù)控制循環(huán)。S=0I=1Do while I 720 EXITENDIF結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求例 求1,100內(nèi)所有能被3或被5整除的數(shù)的個數(shù)。i=1DO WHILE i=100i=i+1ENDDO IF MOD(i,3)=0 .OR. MOD(i,5)=0N=N+1ENDIFN= 0&定義一個變量表示個數(shù),并初始化&總個數(shù)增加1 SET TALK OFF? 滿足條件的數(shù)的個數(shù)為,NSET TALK ON RETURN? i&顯示滿足條件的這個數(shù)結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求語句格式: FOR XA TO B STEP C

28、LOOP EXIT ENDFOR | NEXT 二、計數(shù)循環(huán)循環(huán)體功能:將FORENDFOR循環(huán)中的執(zhí)行指定的次數(shù)。循環(huán)變量循環(huán)初值步長值循環(huán)終值結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求例 求1100之和。 SET TALK OFFClear S=0for I=1 to 100 S = S + IEndfor? “S = ”, SSET TALK ONReturn 若求100的階乘呢?思考1結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求例 求1100之奇數(shù)和。 SET TALK OFFClear S=0for I=1 to 100 step 2 S = S + INext ? “S = ”, SSET TALK ONRet

29、urn 若求1100的偶數(shù)和呢?思考2結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求例 閱讀程序,寫出程序運(yùn)行結(jié)果 SET TALK ONSET TALK OFFS=0 FOR K=1 TO 10 STEP 2 S=S+K ENDFOR ? S RETURNIF K=7LOOPENDIF思考3若改成EXIT呢?結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求語句格式: SCAN FOR LOOP EXIT ENDSCAN 三、表文件掃描循環(huán)循環(huán)體功能:在指定的范圍內(nèi),掃描滿足給定條件的記錄,執(zhí)行相應(yīng)的語句。結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求SET TALK OFFUSE zgbACCEPT “請輸入要查找人的姓名: ” TO NSCAN

30、 FOR XM=N DISP WAIT “按任意鍵繼續(xù),按ESC鍵退出”ENDSCANUSE?“查找結(jié)束”SET TALK ONRETURN例 用SCAN語句編程:在中查找某人。結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求對數(shù)據(jù)表掃描時三種循環(huán)的等價格式表文件掃描循環(huán): SCAN FOR ENDSCAN條件循環(huán): DO WHILE .NOT. EOF()SKIP ENDDO計數(shù)循環(huán): n=RECCOUNT() FOR i=1 TO n GO i ENDFOR結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求循環(huán)嵌套循環(huán)體內(nèi)又設(shè)置循環(huán)的情況稱為多重循環(huán),又稱為循環(huán)嵌套。內(nèi)外循環(huán)的層次必須分明,不允許有交叉現(xiàn)象出現(xiàn)。循環(huán)結(jié)構(gòu)可以與分支

31、結(jié)構(gòu)嵌套,同樣不允許有交叉現(xiàn)象出現(xiàn)。 以下交叉情形不允許出現(xiàn): 結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求例 已知S1=1,S2=1+2,S3=1+2+3, Sn=1+2+3+N,編程求S1+S2+S100的和。s=0n=1Do while n=100 i=1 sub=0 Do while i800時退出,求此時最小的S值(4)求(5)求結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求9.5 程序的模塊化 9.5.1 子程序、過程和函數(shù) 1.子程序(1).子程序的結(jié)構(gòu)子程序與其他程序文件的惟一區(qū)別是其末尾或返回處必須有返回語句。命令格式:RETURN.TO.程序文件名表達(dá)式 結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求 (2).子程序的調(diào)用

32、子程序調(diào)用命令與主程序執(zhí)行命令相同,其格式都是:DO程序文件名過程名WITH.參數(shù)表(3).子程序的嵌套調(diào)用 主程序可以調(diào)用子程序,子程序還可以調(diào)用另外的子程序,這就是子程序的嵌套調(diào)用。實(shí)際上,子程序和主程序都是相對的,任何一個程序可以調(diào)用其他程序,也可以被其他程序調(diào)用。每個被調(diào)用程序的末尾或返回處都要加上RETURN命令。 結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求2.自定義函數(shù)(1).自定義函數(shù)的結(jié)構(gòu) FUNCTION.函數(shù)名PARAMETERS.參數(shù)表命令組 RETURN.表達(dá)式(2).自定義函數(shù)的調(diào)用 調(diào)用格式是: 函數(shù)名(自變量表) 結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求3.過程與過程文件(1).過程的結(jié)構(gòu) 過程的一般格式是:PROCEDURE過程名PARAMETERS參數(shù)表命令組 RETURN (2).過程文件 一個過程可以以文件形式單獨(dú)存在,也可以將多個過程合并到一個文件中,這個文件稱為過程文件。在過程文件中,每個過程仍然是獨(dú)立的,可以單獨(dú)調(diào)用。 結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求(3).過程文件的打開與關(guān)閉 打開過程文件命令格式是: SET.PROCEDURE.TO.過程文件名關(guān)閉過程文件命令格式是:或者CLOSE.PROCEDURE 結(jié)構(gòu)化程序設(shè)計和程序調(diào)試要求9.5.

溫馨提示

  • 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

提交評論