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

下載本文檔

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

文檔簡(jiǎn)介

1、 VFPFP提供一種程序執(zhí)行方式,這種方式就是預(yù)先把提供一種程序執(zhí)行方式,這種方式就是預(yù)先把需要執(zhí)行的多條命令按一定的結(jié)構(gòu)組成一個(gè)有機(jī)序列以需要執(zhí)行的多條命令按一定的結(jié)構(gòu)組成一個(gè)有機(jī)序列以文件的形式存儲(chǔ)在磁盤上,文件的形式存儲(chǔ)在磁盤上,而用于存儲(chǔ)這些由命令組成而用于存儲(chǔ)這些由命令組成的文件,即為命令文件,的文件,即為命令文件,又稱為程序文件,這些序列的稱為程序文件,這些序列的設(shè)計(jì)、編碼和調(diào)試的過程就是程序設(shè)計(jì)。設(shè)計(jì)、編碼和調(diào)試的過程就是程序設(shè)計(jì)。9.1 程序設(shè)計(jì)基礎(chǔ)程序設(shè)計(jì)基礎(chǔ) 9.1.1 9.1.1 程序設(shè)計(jì)的概念程序設(shè)計(jì)的概念 圖9.1程序的控制結(jié)構(gòu) 9.1.4 9.1.4 程序文件的建立

2、與執(zhí)行程序文件的建立與執(zhí)行 1 1命令方式建立或修改程序文件命令方式建立或修改程序文件命令格式:命令格式: MODIFY COMMAND MODIFY COMMAND ? MODIFY FILE 文件名文件名? 功能:?jiǎn)?dòng)功能:?jiǎn)?dòng)VFPVFP提供的文本編輯器來(lái)建立或編輯程序提供的文本編輯器來(lái)建立或編輯程序文件。文件。2 2菜單方式建立編輯程序文件菜單方式建立編輯程序文件 命令格式:命令格式: DO DO 程序文件名程序文件名 功功 能能 : 將程序文件從磁盤調(diào)入內(nèi)存將程序文件從磁盤調(diào)入內(nèi)存, , 編譯成編譯成.FXP.FXP目目標(biāo)文件后并執(zhí)行標(biāo)文件后并執(zhí)行。3 3. .程序文件的執(zhí)行程序文件

3、的執(zhí)行 菜單方式:菜單方式:. .CANCELCANCEL:終止程序運(yùn)行,清除所有的私:終止程序運(yùn)行,清除所有的私有變量,返回命令窗口。有變量,返回命令窗口。. .RETURNRETURN:結(jié)束程序執(zhí)行,返回調(diào)用它的上級(jí)程序,:結(jié)束程序執(zhí)行,返回調(diào)用它的上級(jí)程序,若無(wú)上級(jí)程序則返回命令窗口。若無(wú)上級(jí)程序則返回命令窗口。. .QUITQUIT:結(jié)束程序執(zhí)行并退出:結(jié)束程序執(zhí)行并退出Visual.FoxProVisual.FoxPro系統(tǒng),返系統(tǒng),返回操作系統(tǒng)。回操作系統(tǒng)。 9.2.1 9.2.1 程序文件中的輔助命令程序文件中的輔助命令 一輸入類語(yǔ)句一輸入類語(yǔ)句 格格 式式1 1: STORE

4、STORE 表達(dá)式表達(dá)式 TOTO 內(nèi)存變量名表內(nèi)存變量名表 格格 式式2 2: 內(nèi)存變量?jī)?nèi)存變量 表達(dá)式表達(dá)式 功功 能:給內(nèi)存變量賦值。能:給內(nèi)存變量賦值。. . 賦值語(yǔ)句賦值語(yǔ)句. . 交互式語(yǔ)句交互式語(yǔ)句/ /鍵盤輸入命令鍵盤輸入命令 1. 1. 字符串?dāng)?shù)據(jù)輸入命令字符串?dāng)?shù)據(jù)輸入命令格式:格式: ACCEPT ACCEPT TOTO 功能:在屏幕上顯示提示信息,等待用戶從鍵盤輸入,功能:在屏幕上顯示提示信息,等待用戶從鍵盤輸入,再把輸入內(nèi)容賦值給指定的內(nèi)存變量。再把輸入內(nèi)容賦值給指定的內(nèi)存變量。 注:注:ACCEPTACCEPT命令只能接受字符型常量,輸入時(shí)不需加命令只能接受字符型常量

5、,輸入時(shí)不需加定界符。定界符。 鍵盤輸入命令主要用于程序執(zhí)行過程中原始數(shù)據(jù)的輸入鍵盤輸入命令主要用于程序執(zhí)行過程中原始數(shù)據(jù)的輸入。例例9-1:要求用戶從鍵盤上輸入用戶名,然后把輸入的:要求用戶從鍵盤上輸入用戶名,然后把輸入的用戶名顯示出來(lái)。用戶名顯示出來(lái)。ACCEPT “請(qǐng)輸入用戶名:請(qǐng)輸入用戶名:” TO NAME?NAME+”你還好嗎?你還好嗎?”例例 9.1CLEARSET TALK OFFUSE g:vf學(xué)習(xí)學(xué)習(xí)vf文件文件學(xué)生學(xué)生.dbf EXCLUSIVEACCEPT 請(qǐng)輸入待查學(xué)生的學(xué)號(hào):請(qǐng)輸入待查學(xué)生的學(xué)號(hào): to bhlocate for 學(xué)號(hào)學(xué)號(hào)=bhdisp 學(xué)號(hào)學(xué)號(hào),姓

6、名姓名,入學(xué)成績(jī)?nèi)雽W(xué)成績(jī)use格式:格式:INPUTINPUT TOTO 2.2. 數(shù)據(jù)輸入命令數(shù)據(jù)輸入命令功能:在屏幕上顯示提示信息,等待用戶從鍵盤輸入,功能:在屏幕上顯示提示信息,等待用戶從鍵盤輸入,再把輸入內(nèi)容賦值給指定的內(nèi)存變量。再把輸入內(nèi)容賦值給指定的內(nèi)存變量。 注注:INPUTINPUT命令能接受任何類型的表達(dá)式:命令能接受任何類型的表達(dá)式: 輸入輸入C 型數(shù)據(jù)時(shí),要使用型數(shù)據(jù)時(shí),要使用 或或 “ ” 作為定界符;作為定界符; 輸入輸入L 型數(shù)據(jù)時(shí),型數(shù)據(jù)時(shí),.T. 和和 .F. ,兩邊的,兩邊的 . 不能??;不能??; 輸入輸入D 型數(shù)據(jù)時(shí),要用型數(shù)據(jù)時(shí),要用 或或CTOD( )

7、將字符串轉(zhuǎn)成將字符串轉(zhuǎn)成日期型變量。日期型變量。例例9-2:求任意兩數(shù)之和。求任意兩數(shù)之和。INPUT “INPUT “請(qǐng)輸入一個(gè)數(shù)請(qǐng)輸入一個(gè)數(shù)x x:” ” TO XTO XINPUT “請(qǐng)輸入另一個(gè)數(shù)請(qǐng)輸入另一個(gè)數(shù)y:” TO Y?X+Y J=2800 J=2800 INPUT “ INPUT “輸入輸入 J+200 J+200 :” ” TO ATO A ACCEPT “ ACCEPT “輸入輸入 J+200 J+200 :” ” TO BTO B ?“A=”A=”,A A ? “B=” ? “B=”,B B 注:執(zhí)行時(shí),先后兩次輸入同樣的內(nèi)容:注:執(zhí)行時(shí),先后兩次輸入同樣的內(nèi)容:J+2

8、00J+200例例9-39-3: 給出下列給出下列A A、B B的結(jié)果的結(jié)果格式:格式:WAITWAIT TOTO TIMEOUT TIMEOUT 3.3. 只能輸入一個(gè)字符的命令只能輸入一個(gè)字符的命令功能:當(dāng)程序執(zhí)行某一處需要暫停時(shí)使用此命令。功能:當(dāng)程序執(zhí)行某一處需要暫停時(shí)使用此命令。 注:注:WAIT命令響應(yīng)速度快,它只接受一個(gè)字符,不命令響應(yīng)速度快,它只接受一個(gè)字符,不需用戶鍵入回車鍵。需用戶鍵入回車鍵。TextText* * * * * 數(shù)據(jù)表操作命令菜單數(shù)據(jù)表操作命令菜單 * * * * *1.1.打開工作數(shù)據(jù)表打開工作數(shù)據(jù)表2.2.增加數(shù)據(jù)表記錄增加數(shù)據(jù)表記錄3.3.刪除數(shù)據(jù)表記

9、錄刪除數(shù)據(jù)表記錄4.4.修改數(shù)據(jù)表記錄修改數(shù)據(jù)表記錄5.5.打印數(shù)據(jù)表記錄打印數(shù)據(jù)表記錄6.6.關(guān)閉工作數(shù)據(jù)表關(guān)閉工作數(shù)據(jù)表EndtextEndtextWAIT 請(qǐng)選擇相應(yīng)代碼請(qǐng)選擇相應(yīng)代碼: TO CHOICE? 您選擇的是第您選擇的是第 + CHOICE + 個(gè)選項(xiàng)個(gè)選項(xiàng)例例9-4:格式:格式: SAY SAY GETGET RANGE RANGE 1, 2 READREAD4.4. 格式輸入語(yǔ)句格式輸入語(yǔ)句功能:在屏幕指定的坐標(biāo)位置上顯示提示或輸入數(shù)據(jù)。功能:在屏幕指定的坐標(biāo)位置上顯示提示或輸入數(shù)據(jù)。 READ 一般與一般與GET 聯(lián)合起來(lái)用:聯(lián)合起來(lái)用:當(dāng)有當(dāng)有READ時(shí),時(shí), GET

10、 的內(nèi)容可以從鍵盤上修改;的內(nèi)容可以從鍵盤上修改;沒有沒有READ時(shí),時(shí),GET 后的變量只能顯示內(nèi)容,不能修改;后的變量只能顯示內(nèi)容,不能修改;一個(gè)一個(gè)READ可以修改它前面的多個(gè)可以修改它前面的多個(gè)GET項(xiàng)的內(nèi)容,但它可以項(xiàng)的內(nèi)容,但它可以由由CLEARGETS命令隔斷。命令隔斷。 注:注: :該變量應(yīng)在其前面定義過:該變量應(yīng)在其前面定義過 ( 賦初值賦初值 ) 。24,79 8, 18 SAY * 數(shù)據(jù)表操作命令菜單數(shù)據(jù)表操作命令菜單 * 9, 18 SAY 1.1.打開工作數(shù)據(jù)表打開工作數(shù)據(jù)表 10, 18 SAY 2. 增加數(shù)據(jù)表記錄增加數(shù)據(jù)表記錄 11, 18 SAY 3. 刪除數(shù)

11、據(jù)表記錄刪除數(shù)據(jù)表記錄 12, 18 SAY 4. 修改數(shù)據(jù)表記錄修改數(shù)據(jù)表記錄 13, 18 SAY 5. 打印數(shù)據(jù)表記錄打印數(shù)據(jù)表記錄 14, 18 SAY 6. 關(guān)閉工作數(shù)據(jù)表關(guān)閉工作數(shù)據(jù)表 18, 28 SAY 您選擇的是您選擇的是: + LTRIM(STR(CHOICE) 16, 28 SAY 請(qǐng)選擇相應(yīng)代碼:請(qǐng)選擇相應(yīng)代碼: GET CHOICEREAD例例9-5:二輸出類語(yǔ)句二輸出類語(yǔ)句1. 1. 非格式輸出語(yǔ)句非格式輸出語(yǔ)句 格式格式1 1: ? 內(nèi)存變量名表內(nèi)存變量名表格式格式2: ? 內(nèi)存變量名表內(nèi)存變量名表注:注:語(yǔ)句語(yǔ)句1 1 是在光標(biāo)所在行的下一行開始顯示,是在光標(biāo)所

12、在行的下一行開始顯示, 語(yǔ)句語(yǔ)句2 2 則是在當(dāng)前光標(biāo)位置開始顯示。則是在當(dāng)前光標(biāo)位置開始顯示。功功 能:顯示內(nèi)存變量、常量或表達(dá)式的值。能:顯示內(nèi)存變量、常量或表達(dá)式的值。格式:格式: SAY SAY FUNCTIONFUNCTION PICTUREPICTURE 2.2. 格式輸出語(yǔ)句格式輸出語(yǔ)句功能:按指定的坐標(biāo)位置在屏幕上輸出表達(dá)式的值。功能:按指定的坐標(biāo)位置在屏幕上輸出表達(dá)式的值。 注:注: 若選用若選用PICTUREPICTURE、 FUNCTIONFUNCTION子句,則按一定的格式子句,則按一定的格式輸出輸出 . . 11,12 SAY welcome home! FUNCTI

13、ON ! 13,12 SAY welcome home! pICTURE !格式:格式: TEXTTEXT ENDTEXT ENDTEXT 3.3. 文本輸出語(yǔ)句文本輸出語(yǔ)句功能:在屏幕上原樣顯示功能:在屏幕上原樣顯示TEXTTEXT和和ENDTEXTENDTEXT之間的內(nèi)容。之間的內(nèi)容。 注:注: TEXTTEXT、ENDTEXTENDTEXT是一條子句,不能省略其中任一條是一條子句,不能省略其中任一條子句子句。* 數(shù)據(jù)表操作命令菜單數(shù)據(jù)表操作命令菜單 * * * * *1.1. 打開工作數(shù)據(jù)表打開工作數(shù)據(jù)表2.2. 增加數(shù)據(jù)表記錄增加數(shù)據(jù)表記錄3.3. 刪除數(shù)據(jù)表記錄刪除數(shù)據(jù)表記錄4.4.

14、 修改數(shù)據(jù)表記錄修改數(shù)據(jù)表記錄5.5. 打印數(shù)據(jù)表記錄打印數(shù)據(jù)表記錄6.6. 關(guān)閉工作數(shù)據(jù)表關(guān)閉工作數(shù)據(jù)表?您選擇的是第您選擇的是第 + CHOICE + 個(gè)選項(xiàng)個(gè)選項(xiàng)WAIT 請(qǐng)選擇相應(yīng)代碼:請(qǐng)選擇相應(yīng)代碼: TO CHOICE例例6-6TEXTENDTEXT三三. . 設(shè)置會(huì)話狀態(tài)語(yǔ)句設(shè)置會(huì)話狀態(tài)語(yǔ)句語(yǔ)句格式語(yǔ)句格式2 2: SET TALK OFFSET TALK OFF功能功能 語(yǔ)句語(yǔ)句1 1:設(shè)置會(huì)話狀態(tài)開通。:設(shè)置會(huì)話狀態(tài)開通。 語(yǔ)句語(yǔ)句2 2:設(shè)置會(huì)話狀態(tài)關(guān)閉。:設(shè)置會(huì)話狀態(tài)關(guān)閉。語(yǔ)句格式語(yǔ)句格式1 1: SET TALK ONSET TALK ON四四. . 清屏與注釋語(yǔ)句清屏

15、與注釋語(yǔ)句語(yǔ)句格式:語(yǔ)句格式: CLEARCLEAR1.1. 清屏語(yǔ)句清屏語(yǔ)句功功 能能 :清除屏幕上所有顯示內(nèi)容,光標(biāo)回到屏幕左:清除屏幕上所有顯示內(nèi)容,光標(biāo)回到屏幕左上角上角。2.2. 注釋語(yǔ)句注釋語(yǔ)句語(yǔ)句格式語(yǔ)句格式2 2: * * 注注:語(yǔ)句:語(yǔ)句1 1、2 2、3 3 在程序中,系統(tǒng)不執(zhí)行。在程序中,系統(tǒng)不執(zhí)行。其中其中, ,語(yǔ)句語(yǔ)句1 1、2 2在程序中各單獨(dú)占一行在程序中各單獨(dú)占一行語(yǔ)句格式語(yǔ)句格式1 1: NOTE NOTE 功功 能能 : 在程序中加入說明性語(yǔ)句。在程序中加入說明性語(yǔ)句。語(yǔ)句格式語(yǔ)句格式3 3: & & 順序結(jié)構(gòu)程序順序結(jié)構(gòu)程序:按語(yǔ)句的:按語(yǔ)

16、句的先后順序組織的程序,即把處先后順序組織的程序,即把處理過程的各個(gè)步驟按執(zhí)行的先理過程的各個(gè)步驟按執(zhí)行的先后順序列出。后順序列出。其流程圖如右圖所示。其流程圖如右圖所示。順序結(jié)構(gòu)程序設(shè)計(jì)順序結(jié)構(gòu)程序設(shè)計(jì) A B C N圖中箭頭表示程序執(zhí)行的圖中箭頭表示程序執(zhí)行的方向,方框代表不同的可執(zhí)行方向,方框代表不同的可執(zhí)行語(yǔ)句。語(yǔ)句。 例例9-7 變量的初始化和變量的賦值變量的初始化和變量的賦值。SET TALK OFF STORE 0 TO X,Y,ZA=3B=A+1C=A*B? X, Y, Z? A, B, CSET TALK ON 例例9-8 執(zhí)行以下命令序列,問答問題:執(zhí)行以下命令序列,問答問

17、題:最后顯示的值是:最后顯示的值是:A.A. 所有職工的平均工資;所有職工的平均工資;B.B. 所有工資在所有工資在10001000元以上元以上的職工的平均工資;的職工的平均工資;C.C. 所有工資在所有工資在10001000元以上元以上的職工人數(shù);的職工人數(shù);D.D. 所有職工人數(shù)所有職工人數(shù) 。USEUSEzgbzgbSUM SUM 基本工資基本工資 FOR FOR 基本工資基本工資1000 TO SGZ1000 TO SGZCOPY FOR COPY FOR 基本工資基本工資1000 TO GZK21000 TO GZK2USE GZK2USE GZK2num=reccountnum=r

18、eccount( )( )ave=sgzave=sgz/num/num? ave? ave在計(jì)算機(jī)應(yīng)用的許多場(chǎng)合,要求程序根據(jù)不同的在計(jì)算機(jī)應(yīng)用的許多場(chǎng)合,要求程序根據(jù)不同的條件采用不同的處理方法。如果條件滿足,則執(zhí)行某條件采用不同的處理方法。如果條件滿足,則執(zhí)行某一些語(yǔ)句;如果條件不滿足,則執(zhí)行另一些語(yǔ)句。這一些語(yǔ)句;如果條件不滿足,則執(zhí)行另一些語(yǔ)句。這些需要根據(jù)判斷條件來(lái)控制程序走向的程序設(shè)計(jì)稱為些需要根據(jù)判斷條件來(lái)控制程序走向的程序設(shè)計(jì)稱為選擇結(jié)構(gòu)程序設(shè)計(jì),又稱分支結(jié)構(gòu)程序設(shè)計(jì)。選擇結(jié)構(gòu)程序設(shè)計(jì),又稱分支結(jié)構(gòu)程序設(shè)計(jì)。Visual FoxProVisual FoxPro提供提供雙分支選擇

19、語(yǔ)句、多分支選雙分支選擇語(yǔ)句、多分支選擇語(yǔ)句兩種選擇結(jié)構(gòu)。擇語(yǔ)句兩種選擇結(jié)構(gòu)。 ENDIFENDIF后的語(yǔ)句后的語(yǔ)句語(yǔ)句序列語(yǔ)句序列1 1 ENDIFENDIF后的語(yǔ)句后的語(yǔ)句語(yǔ)句格式:語(yǔ)句格式:IFIF 條件條件 語(yǔ)句序列語(yǔ)句序列1 1ENDIFENDIF 條件條件9.3.1 9.3.1 雙分支選擇語(yǔ)句雙分支選擇語(yǔ)句( (選擇判斷語(yǔ)句選擇判斷語(yǔ)句) ) 條件條件.T.F.語(yǔ)句序列語(yǔ)句序列1 1.Y.N.語(yǔ)句序列語(yǔ)句序列2 2 ELSEELSE 語(yǔ)句序列語(yǔ)句序列2 2 條件命令序列Endif的下一條語(yǔ)句NY條件命令序列2Endif的下一條命令命令序列1YN注:注:(1)(1) IFIF和和EN

20、DIFENDIF必須配對(duì)使用,而必須配對(duì)使用,而ELSEELSE可選可選。(2)(2) IFIF、ELSEELSE、ENDIFENDIF必須各占一行必須各占一行。(3) (3) 可以為關(guān)系表達(dá)式、邏輯表達(dá)式。可以為關(guān)系表達(dá)式、邏輯表達(dá)式。(4)(4)在語(yǔ)句序列在語(yǔ)句序列1 1和語(yǔ)句序列和語(yǔ)句序列2 2中可以嵌套中可以嵌套IFIF語(yǔ)句。語(yǔ)句。執(zhí)行過程:執(zhí)行過程:如果如果 成立,就執(zhí)行成立,就執(zhí)行語(yǔ)句序列語(yǔ)句序列1 1;如果如果 不成立,執(zhí)行不成立,執(zhí)行語(yǔ)句序列語(yǔ)句序列2 2。 求圓的面積和周長(zhǎng)。求圓的面積和周長(zhǎng)。通過鍵盤輸入半徑通過鍵盤輸入半徑的值,當(dāng)半徑大于的值,當(dāng)半徑大于等于等于0,則輸出園

21、,則輸出園的面積,當(dāng)半徑小的面積,當(dāng)半徑小于于0,則輸出提示,則輸出提示信息信息“輸入值無(wú)輸入值無(wú)效效”。Set talk offInput 請(qǐng)輸入半徑的值:請(qǐng)輸入半徑的值: to rIf r=0 mj=3.14*r*r zc =2*3.14*r ?圓的面積為圓的面積為: ,mj ?圓的周長(zhǎng)為:圓的周長(zhǎng)為: ,zcElse ?輸入值無(wú)效輸入值無(wú)效EndifSet talk onuse studAccept 請(qǐng)輸入學(xué)號(hào):請(qǐng)輸入學(xué)號(hào): to xhlocate for 學(xué)號(hào)學(xué)號(hào)=xhif found() ?學(xué)號(hào)學(xué)號(hào):+學(xué)號(hào)學(xué)號(hào) ?姓名姓名:+姓名姓名 ?“入學(xué)成績(jī)?nèi)雽W(xué)成績(jī):”,入學(xué)成績(jī)?nèi)雽W(xué)成績(jī)els

22、e ?無(wú)此學(xué)號(hào)!無(wú)此學(xué)號(hào)!endifuse在在stud表中根據(jù)從表中根據(jù)從鍵盤輸入的學(xué)號(hào)進(jìn)鍵盤輸入的學(xué)號(hào)進(jìn)行查找,找到則顯行查找,找到則顯示該學(xué)生的學(xué)號(hào),示該學(xué)生的學(xué)號(hào),姓名,入學(xué)成績(jī);姓名,入學(xué)成績(jī);找不到,則顯示找不到,則顯示“無(wú)此學(xué)號(hào)無(wú)此學(xué)號(hào)”。clearset talk offaccept 請(qǐng)輸入查看記錄性別,男-1,女-2: to sexuse studif sex=1 顯示顯示stud表中男同學(xué)的記錄表中男同學(xué)的記錄else 判斷輸入數(shù)據(jù)是否為判斷輸入數(shù)據(jù)是否為2,或其他符號(hào),或其他符號(hào)endifuse set talk on 編寫程序完成以下功能:當(dāng)通過鍵盤輸入編寫程序完成以下功

23、能:當(dāng)通過鍵盤輸入1時(shí)顯示時(shí)顯示stud表中男同學(xué)表中男同學(xué)的記錄;輸入的記錄;輸入2時(shí)顯示女同學(xué)的記錄;若輸入其他符號(hào)時(shí)則顯示時(shí)顯示女同學(xué)的記錄;若輸入其他符號(hào)時(shí)則顯示“輸入的數(shù)據(jù)不合法!輸入的數(shù)據(jù)不合法!”。 clearset talk offaccept 請(qǐng)輸入查看記錄性別,男-1,女-2: to sexuse studentif sex=1 顯示顯示student表中男同學(xué)的記錄表中男同學(xué)的記錄else 判斷輸入數(shù)據(jù)是否為判斷輸入數(shù)據(jù)是否為2,或其他符號(hào),或其他符號(hào)endifuse set talk on 編寫程序完成以下功能:當(dāng)通過鍵盤輸入編寫程序完成以下功能:當(dāng)通過鍵盤輸入1時(shí)顯示

24、時(shí)顯示student表中男同表中男同學(xué)的記錄;輸入學(xué)的記錄;輸入2時(shí)顯示女同學(xué)的記錄;若輸入其他符號(hào)時(shí)則顯示時(shí)顯示女同學(xué)的記錄;若輸入其他符號(hào)時(shí)則顯示“輸入的數(shù)據(jù)不合法!輸入的數(shù)據(jù)不合法!”。 list for list for 性別性別=男男 clearset talk offaccept 請(qǐng)輸入查看記錄性別,男-1,女-2: to sexuse studentif sex=1 顯示顯示student表中男同學(xué)的記錄表中男同學(xué)的記錄else 判斷輸入數(shù)據(jù)是否為判斷輸入數(shù)據(jù)是否為2,或其他符號(hào),或其他符號(hào)endifuse set talk on 編寫程序完成以下功能:當(dāng)通過鍵盤輸入編寫程序完成

25、以下功能:當(dāng)通過鍵盤輸入1時(shí)顯示時(shí)顯示student表中男同表中男同學(xué)的記錄;輸入學(xué)的記錄;輸入2時(shí)顯示女同學(xué)的記錄;若輸入其他符號(hào)時(shí)則顯示時(shí)顯示女同學(xué)的記錄;若輸入其他符號(hào)時(shí)則顯示“輸入的數(shù)據(jù)不合法!輸入的數(shù)據(jù)不合法!”。 if sex=2 list for 性別性別=女女 else wait 輸入的數(shù)據(jù)不合法!輸入的數(shù)據(jù)不合法! windowendif clearset talk offUSE g:vf學(xué)習(xí)學(xué)習(xí)vf文件文件學(xué)生學(xué)生.dbf EXCLUSIVEname=space(8)10,5 say請(qǐng)輸入學(xué)生的姓名請(qǐng)輸入學(xué)生的姓名: GET namereadloca for 姓名姓名=na

26、meif found() dispelse 12,5 say 對(duì)不起!該單位找不到您要查找的人!對(duì)不起!該單位找不到您要查找的人!endifset talk onusereturn例例9.2Y條件1條件n條件2其它否Endcase的下一條命令命令序列1命令序列n命令序列2命令序列n+1YYYNNNNY條件1條件n條件2其它否Endcase的下一條命令命令序列1命令序列n命令序列2命令序列n+1YYYNNNN自上而下依次判斷命令中自上而下依次判斷命令中列出的條件,只要找到某列出的條件,只要找到某一條件為一條件為“真真”,就執(zhí)行,就執(zhí)行與之相關(guān)的命令序列,余與之相關(guān)的命令序列,余下的條件便不再判斷

27、,有下的條件便不再判斷,有關(guān)的命令也不執(zhí)行。在沒關(guān)的命令也不執(zhí)行。在沒有一個(gè)條件取值為有一個(gè)條件取值為“真真”時(shí),若有時(shí),若有otherwise,就執(zhí),就執(zhí)行命令序列行命令序列+1,否則什,否則什么也不做??梢娫诒姸嗟拿匆膊蛔???梢娫诒姸嗟拿钚蛄兄?,多重選擇命令序列中,多重選擇最最多只選擇執(zhí)行其中的一個(gè)多只選擇執(zhí)行其中的一個(gè)命令序列命令序列,也可能一個(gè)也,也可能一個(gè)也不執(zhí)行不執(zhí)行 通過鍵盤輸入學(xué)生的姓名、性別和年齡,然后根據(jù)輸入的學(xué)生年通過鍵盤輸入學(xué)生的姓名、性別和年齡,然后根據(jù)輸入的學(xué)生年齡輸出學(xué)生的姓名和性別,年齡大于等于齡輸出學(xué)生的姓名和性別,年齡大于等于25時(shí),輸出時(shí),輸出“大大”,

28、年,年齡小于齡小于25且大于等于且大于等于20時(shí)輸出時(shí)輸出“中中”,年齡小于,年齡小于20時(shí)輸出時(shí)輸出“小小”。 set talk off輸入學(xué)生的姓名、性別和年齡輸入學(xué)生的姓名、性別和年齡do case case age=25 ?姓名:姓名:, xm, sex, 大大 case age=20 ?姓名:姓名:, xm, sex, 中中 case age=25 ?姓名:姓名:, xm, sex, 大大 case age=20 ?姓名:姓名:, xm, sex, 中中 case age20 ?姓名:姓名:, xm, sex, 小小endcase set talk on10,10 say 輸入學(xué)生姓

29、名: get xm default 11,10 say 輸入該生性別: get sex default 12,10 say 輸入該生年齡: get age default 0 read Y=2x-1 (x0)3x+5 (0 x5)X+1 (x5)求下列函數(shù)的值。求下列函數(shù)的值。X的的值通過鍵盤輸入。值通過鍵盤輸入。set talk offy=0input 請(qǐng)輸入請(qǐng)輸入x的值:的值: to xdo case case x=0 .and. x=5 y=x+1endcase ?y=, yset talk on 9.3.2 9.3.2 多分支選擇語(yǔ)句多分支選擇語(yǔ)句( (選擇語(yǔ)句選擇語(yǔ)句| |情況語(yǔ)句情

30、況語(yǔ)句) )說明說明:DO CASEDO CASE和第一個(gè)和第一個(gè)CASECASE子句之間不能插入任何子句之間不能插入任何語(yǔ)句。語(yǔ)句。DO CASEDO CASE和和ENDCASEENDCASE必必須配對(duì)使用,且須配對(duì)使用,且DO CASEDO CASE,CASECASE,OTHERWISEOTHERWISE和和ENDCASEENDCASE各子句必須各占各子句必須各占一行。一行。在語(yǔ)句序列中可在語(yǔ)句序列中可嵌套情況語(yǔ)句。嵌套情況語(yǔ)句。 語(yǔ)句格式語(yǔ)句格式: : DO CASEDO CASE CASECASE 條件表達(dá)式條件表達(dá)式1 1 語(yǔ)句序列語(yǔ)句序列1 1 CASECASE 條件表達(dá)式條件表達(dá)

31、式2 2 語(yǔ)句序列語(yǔ)句序列2 2 CASE CASE 條件表達(dá)式條件表達(dá)式n n 語(yǔ)句序列語(yǔ)句序列n n OTHERWISEOTHERWISE 語(yǔ)句序列語(yǔ)句序列n+1n+1 ENDCASE ENDCASE 功能:系統(tǒng)依次測(cè)試語(yǔ)句中各個(gè)條件表達(dá)式的值功能:系統(tǒng)依次測(cè)試語(yǔ)句中各個(gè)條件表達(dá)式的值: : 若為真,若為真,即執(zhí)行相應(yīng)條件表達(dá)式后的語(yǔ)句序列即執(zhí)行相應(yīng)條件表達(dá)式后的語(yǔ)句序列, , 然后脫離情然后脫離情況語(yǔ)句況語(yǔ)句, ,執(zhí)行執(zhí)行ENDCASEENDCASE的下一語(yǔ)句。若所有的條件表達(dá)式的值的下一語(yǔ)句。若所有的條件表達(dá)式的值均為假,則執(zhí)行均為假,則執(zhí)行OTHERWISEOTHERWISE后面的語(yǔ)

32、句序列后面的語(yǔ)句序列, , 然后脫離情況然后脫離情況語(yǔ)句語(yǔ)句, ,執(zhí)行執(zhí)行ENDCASEENDCASE下一語(yǔ)句下一語(yǔ)句 。 開始判斷開始判斷語(yǔ)句序列語(yǔ)句序列1 1序列序列2 2序列序列n n序列序列n+1n+1ENDCASEENDCASE后面的語(yǔ)句后面的語(yǔ)句條件條件1條件條件2條件條件n其它其它例例 已知已知cjb.dbf中包含中包含xingming,avcj等字段。試用等字段。試用avcj來(lái)判來(lái)判斷該生成績(jī)屬于優(yōu)斷該生成績(jī)屬于優(yōu)(90)、良、良(80)、及格、及格(60)或或不及格不及格(60)。USE cjbUSE cjbACCEPT ACCEPT 請(qǐng)輸入姓名:請(qǐng)輸入姓名: TO xm T

33、O xmLOCATE FOR ALLTRIM(xingming)=ALLTRIM(xmLOCATE FOR ALLTRIM(xingming)=ALLTRIM(xm) )n navcjavcjDO CASEDO CASE CASE CASE n n=90=90 djdj=優(yōu)優(yōu) CASE CASE n n=80=80 djdj=良良 CASE CASE n n=60=60 djdj=及格及格 OTHERWISEOTHERWISE djdj=不及格不及格ENDCASEENDCASE 5,10 SAY xingming5,10 SAY xingming+同學(xué)同學(xué)的成績(jī)等級(jí)為:的成績(jī)等級(jí)為:+ dj+

34、 djA=3000A=3000DO CASEDO CASE CASE CASE A1000 A=1000 A=1000 B=A B=A CASE CASE A=2000 A=2000 B=2 B=2* *A A CASECASE A=3000 A=3000 B=3 B=3* *A AENDCASEENDCASE? B? B例例 閱讀下列程序段,寫出運(yùn)行結(jié)果: 循環(huán),就是按給定的條件連續(xù)地重復(fù)執(zhí)行一段特循環(huán),就是按給定的條件連續(xù)地重復(fù)執(zhí)行一段特定功能的程序。循環(huán)結(jié)構(gòu)也稱為重復(fù)結(jié)構(gòu)。定功能的程序。循環(huán)結(jié)構(gòu)也稱為重復(fù)結(jié)構(gòu)。 Visual FoxProVisual FoxPro給出了三種循環(huán)結(jié)構(gòu):給出

35、了三種循環(huán)結(jié)構(gòu):條件循環(huán)條件循環(huán)(DO WHILEDO WHILEENDDOENDDO)計(jì)算循環(huán)計(jì)算循環(huán)(FORFORENDFORENDFOR)掃描循環(huán)掃描循環(huán)(SCANSCANENDSCANENDSCAN)語(yǔ)句格式:語(yǔ)句格式: DO WHILE DO WHILE LOOPLOOP EXITEXIT ENDDOENDDO 循環(huán)體循環(huán)體 ENDDOENDDO后的語(yǔ)句后的語(yǔ)句條件條件.T.F.條件循環(huán)結(jié)構(gòu)流程圖條件循環(huán)結(jié)構(gòu)流程圖9.4.1當(dāng)循環(huán)(條件循環(huán))當(dāng)循環(huán)(條件循環(huán))循環(huán)體循環(huán)體功能:有條件連續(xù)地重復(fù)執(zhí)行功能:有條件連續(xù)地重復(fù)執(zhí)行DO WHILEDO WHILE與與ENDDOENDDO之間的

36、語(yǔ)句序列,直到之間的語(yǔ)句序列,直到 為為假或因執(zhí)行假或因執(zhí)行EXITEXIT語(yǔ)句而結(jié)束。語(yǔ)句而結(jié)束。條件條件(2 2)循環(huán)體中的)循環(huán)體中的是可選項(xiàng)。遇到是可選項(xiàng)。遇到LOOPLOOP時(shí),不再執(zhí)行后面的語(yǔ)句,時(shí),不再執(zhí)行后面的語(yǔ)句,轉(zhuǎn)回轉(zhuǎn)回DO WHILEDO WHILE處重新判斷。其作用相當(dāng)于一個(gè)特殊的處重新判斷。其作用相當(dāng)于一個(gè)特殊的“短路短路”返回控返回控制。制。(3 3)循環(huán)體中的)循環(huán)體中的也是可選項(xiàng)。遇到它時(shí)便無(wú)條件地退出循環(huán),轉(zhuǎn)也是可選項(xiàng)。遇到它時(shí)便無(wú)條件地退出循環(huán),轉(zhuǎn)到到ENDDOENDDO后面的語(yǔ)句。其作用相當(dāng)于一個(gè)緊急出口。后面的語(yǔ)句。其作用相當(dāng)于一個(gè)緊急出口。(4 4)通

37、常)通?;蚧虺霈F(xiàn)在循環(huán)體內(nèi)嵌套的分支語(yǔ)句中,根據(jù)條件來(lái)出現(xiàn)在循環(huán)體內(nèi)嵌套的分支語(yǔ)句中,根據(jù)條件來(lái)決定是決定是LOOPLOOP回去,還是回去,還是EXITEXIT出去。出去。功能說明:功能說明:(1 1)系統(tǒng)執(zhí)行該語(yǔ)句時(shí),先判斷循環(huán)開始)系統(tǒng)執(zhí)行該語(yǔ)句時(shí),先判斷循環(huán)開始DO WHILEDO WHILE的條件是否成立,的條件是否成立, 如果條件為真,則執(zhí)行循環(huán)體中的語(yǔ)句序列。當(dāng)執(zhí)行到如果條件為真,則執(zhí)行循環(huán)體中的語(yǔ)句序列。當(dāng)執(zhí)行到ENDDOENDDO時(shí),返回時(shí),返回到到DO WHILEDO WHILE,再次判斷條件是否為真,以確定是否再次執(zhí)行循環(huán)體。,再次判斷條件是否為真,以確定是否再次執(zhí)行循環(huán)體

38、。若條件為假,則結(jié)束循環(huán)若條件為假,則結(jié)束循環(huán) ,執(zhí)行,執(zhí)行ENDDOENDDO后面的語(yǔ)句。后面的語(yǔ)句。 如果第一次判斷如果第一次判斷條件時(shí),條件即為假,則循環(huán)體一次都不執(zhí)行,這就是稱為條件時(shí),條件即為假,則循環(huán)體一次都不執(zhí)行,這就是稱為“先判斷先判斷后執(zhí)行后執(zhí)行”的語(yǔ)句。的語(yǔ)句。SET TALK OFF SET TALK ONRETURNCLEAR?OK?OK?OK例例 在屏幕上換行顯示字符串在屏幕上換行顯示字符串“OK”20OK”20次次循環(huán)次數(shù)循環(huán)次數(shù)循環(huán)前循環(huán)前i值值循環(huán)后循環(huán)后i值值112223202021&設(shè)置循環(huán)變量初值&修改循環(huán)變量例例 在屏幕上換行顯示字符串在

39、屏幕上換行顯示字符串OK20OK20次次set talk offcleari=1do while i=20?ok!i=i+1EnddoSET TALK ONreturn DO WHILE DO WHILE 語(yǔ)句之前一定要有語(yǔ)句之前一定要有設(shè)置循環(huán)變量初設(shè)置循環(huán)變量初 值值的語(yǔ)句。的語(yǔ)句。在以循環(huán)變量作為循環(huán)控制參數(shù)的條件循環(huán)中在以循環(huán)變量作為循環(huán)控制參數(shù)的條件循環(huán)中 循環(huán)體內(nèi)一定要有循環(huán)體內(nèi)一定要有修改循環(huán)變量修改循環(huán)變量的語(yǔ)句,否則的語(yǔ)句,否則 就會(huì)出現(xiàn)就會(huì)出現(xiàn)死循環(huán)死循環(huán)。注意注意分析算法分析算法: :s= s+i s= s+i ; ;i= i+1 i= i+1 ; ;1.1. i=1 ,

40、 s=0 i=1 , s=0 ; ;2.2. 累加第累加第 i i 個(gè)數(shù)個(gè)數(shù)3.3. 累加次數(shù)加累加次數(shù)加1 1 4.4. 當(dāng)當(dāng) i= 4 i= 4 重復(fù)做重復(fù)做2 2 ;5.5. ? s ? s 。&定義一個(gè)變量表示和,并初始化&指定以循環(huán)次數(shù)作判斷條件&把S的值加上i后再賦給S,即求和&修改循環(huán)變量&輸出求和的結(jié)果&設(shè)置循環(huán)變量的初值SET TALK OFFS=0i=1DO WHILE i=4 S=S+i i=i+1ENDDO? SSET TALK ONRETURN程序流程圖程序流程圖S=0i=11=4S=0+1i=1+1.T.2=4S=1+

41、2i=2+13=4S=3+3i=3+14=4S=6+4i= 4+15=4.F.? 10SET TALK OFFS=0i=1DO WHILE i=4 S=S+i i=i+1ENDDO? SSET TALK ONRETURN 若求自然數(shù)若求自然數(shù)1 1至至N N的和呢?的和呢?推廣推廣1SET TALK OFFINPUT 請(qǐng)輸入請(qǐng)輸入N的值的值: TO N S=0i=1DO WHILE i=N S=S+i i=i+1ENDDO? SSET TALK ONRETURN 若求自然數(shù)若求自然數(shù)1 1至至N N的積呢?的積呢?SET TALK OFFS=0 i=1INPUT INPUT 請(qǐng)輸入請(qǐng)輸入N N

42、的值的值: : TO N TO N DO WHILE i=N S =S + ii =i + 1ENDDO?S SET TALK ON RETURN推廣推廣2S=1S=1S=SS=S* *i iSET TALK OFFINPUT 請(qǐng)輸入請(qǐng)輸入N的值的值: TO N S=1i=1DO WHILE i=N S=S*i i=i+1ENDDO? SSET TALK ONRETURN例例 閱讀程序,并說出程序的運(yùn)行結(jié)果閱讀程序,并說出程序的運(yùn)行結(jié)果IF i=3 LOOPENDIF程序結(jié)果程序結(jié)果23456程序結(jié)果程序結(jié)果2456 RETURN SET TALK ONSET TALK OFFi=1DO WH

43、ILE i=5 i=i+1 ENDDO ? i? “E”EE例例 求求1100以內(nèi)所有奇數(shù)的和。以內(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 1到到100100的奇數(shù)和的奇數(shù)和 S= ”, SSET TALK ONReturn以循環(huán)變量作為控以循環(huán)變量作為控制參數(shù)控制循環(huán)。制參數(shù)控制循環(huán)。S=0I=1Do while I 720 EXITENDIF&定義一個(gè)變量表示個(gè)數(shù),并初始化&總個(gè)數(shù)增加1&顯示滿足條件的這個(gè)數(shù)SE

44、T TALK OFFN=0i=1DO WHILE i=100 IF MOD(i,3)=0 .OR. MOD(i,5)=0 ? i n=n+1 endif i=i+1enddo? 這樣的數(shù)共有這樣的數(shù)共有,n, 個(gè)個(gè)set talk onreturn語(yǔ)句格式語(yǔ)句格式: FOR X XA A TO B B STEP C C LOOP EXIT ENDFOR | NEXT 9.4.2 計(jì)數(shù)循環(huán)(計(jì)數(shù)循環(huán)(for循環(huán))循環(huán))循環(huán)體循環(huán)體功能:將功能:將FORFORENDFORENDFOR循環(huán)中的循環(huán)中的 執(zhí)行指定的次數(shù)。執(zhí)行指定的次數(shù)。循環(huán)變量循環(huán)變量循環(huán)初值循環(huán)初值步長(zhǎng)值步長(zhǎng)值循環(huán)終值循環(huán)終值例例

45、閱讀程序,寫出程序運(yùn)行結(jié)果閱讀程序,寫出程序運(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 3若改成若改成EXITEXIT呢?呢?for k=1 to 6 step 2 j=knext ?j, k退出循環(huán)后循環(huán)變量的值(例):退出循環(huán)后循環(huán)變量的值(例):例例 求求1100之和。之和。 clearset talk offs=0for I=1 to 100 s = s + IEndfor? s = , sSET TALK onReturn 若求若求100100的階乘呢?的階乘呢?思考思考1例例 求求1100之奇數(shù)和。之奇數(shù)和。 SET TALK OFFSET TALK OFFClear Clear S=0S=0forfo

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論