第9章 結構化程序設計_第1頁
第9章 結構化程序設計_第2頁
第9章 結構化程序設計_第3頁
第9章 結構化程序設計_第4頁
第9章 結構化程序設計_第5頁
已閱讀5頁,還剩89頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

2、與執(zhí)行程序文件的建立與執(zhí)行 1 1命令方式建立或修改程序文件命令方式建立或修改程序文件命令格式:命令格式: MODIFY COMMAND MODIFY COMMAND ? MODIFY FILE 文件名文件名? 功能:啟動功能:啟動VFPVFP提供的文本編輯器來建立或編輯程序提供的文本編輯器來建立或編輯程序文件。文件。2 2菜單方式建立編輯程序文件菜單方式建立編輯程序文件 命令格式:命令格式: DO DO 程序文件名程序文件名 功功 能能 : 將程序文件從磁盤調入內存將程序文件從磁盤調入內存, , 編譯成編譯成.FXP.FXP目目標文件后并執(zhí)行標文件后并執(zhí)行。3 3. .程序文件的執(zhí)行程序文件

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

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

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

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

7、將字符串轉成將字符串轉成日期型變量。日期型變量。例例9-2:求任意兩數(shù)之和。求任意兩數(shù)之和。INPUT “INPUT “請輸入一個數(shù)請輸入一個數(shù)x x:” ” TO XTO XINPUT “請輸入另一個數(shù)請輸入另一個數(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í)行時,先后兩次輸入同樣的內容:注:執(zhí)行時,先后兩次輸入同樣的內容:J+2

8、00J+200例例9-39-3: 給出下列給出下列A A、B B的結果的結果格式:格式:WAITWAIT TOTO TIMEOUT TIMEOUT 3.3. 只能輸入一個字符的命令只能輸入一個字符的命令功能:當程序執(zhí)行某一處需要暫停時使用此命令。功能:當程序執(zhí)行某一處需要暫停時使用此命令。 注:注:WAIT命令響應速度快,它只接受一個字符,不命令響應速度快,它只接受一個字符,不需用戶鍵入回車鍵。需用戶鍵入回車鍵。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.關閉工作數(shù)據(jù)表關閉工作數(shù)據(jù)表EndtextEndtextWAIT 請選擇相應代碼請選擇相應代碼: TO CHOICE? 您選擇的是第您選擇的是第 + CHOICE + 個選項個選項例例9-4:格式:格式: SAY SAY GETGET RANGE RANGE 1, 2 READREAD4.4. 格式輸入語句格式輸入語句功能:在屏幕指定的坐標位置上顯示提示或輸入數(shù)據(jù)。功能:在屏幕指定的坐標位置上顯示提示或輸入數(shù)據(jù)。 READ 一般與一般與GET 聯(lián)合起來用:聯(lián)合起來用:當有當有READ時,時, GET

10、 的內容可以從鍵盤上修改;的內容可以從鍵盤上修改;沒有沒有READ時,時,GET 后的變量只能顯示內容,不能修改;后的變量只能顯示內容,不能修改;一個一個READ可以修改它前面的多個可以修改它前面的多個GET項的內容,但它可以項的內容,但它可以由由CLEARGETS命令隔斷。命令隔斷。 注:注: :該變量應在其前面定義過:該變量應在其前面定義過 ( 賦初值賦初值 ) 。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. 關閉工作數(shù)據(jù)表關閉工作數(shù)據(jù)表 18, 28 SAY 您選擇的是您選擇的是: + LTRIM(STR(CHOICE) 16, 28 SAY 請選擇相應代碼:請選擇相應代碼: GET CHOICEREAD例例9-5:二輸出類語句二輸出類語句1. 1. 非格式輸出語句非格式輸出語句 格式格式1 1: ? 內存變量名表內存變量名表格式格式2: ? 內存變量名表內存變量名表注:注:語句語句1 1 是在光標所在行的下一行開始顯示,是在光標所

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

13、ON ! 13,12 SAY welcome home! pICTURE !格式:格式: TEXTTEXT ENDTEXT ENDTEXT 3.3. 文本輸出語句文本輸出語句功能:在屏幕上原樣顯示功能:在屏幕上原樣顯示TEXTTEXT和和ENDTEXTENDTEXT之間的內容。之間的內容。 注:注: 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. 關閉工作數(shù)據(jù)表關閉工作數(shù)據(jù)表?您選擇的是第您選擇的是第 + CHOICE + 個選項個選項WAIT 請選擇相應代碼:請選擇相應代碼: TO CHOICE例例6-6TEXTENDTEXT三三. . 設置會話狀態(tài)語句設置會話狀態(tài)語句語句格式語句格式2 2: SET TALK OFFSET TALK OFF功能功能 語句語句1 1:設置會話狀態(tài)開通。:設置會話狀態(tài)開通。 語句語句2 2:設置會話狀態(tài)關閉。:設置會話狀態(tài)關閉。語句格式語句格式1 1: SET TALK ONSET TALK ON四四. . 清屏與注釋語句清屏

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

16、句的先后順序組織的程序,即把處先后順序組織的程序,即把處理過程的各個步驟按執(zhí)行的先理過程的各個步驟按執(zhí)行的先后順序列出。后順序列出。其流程圖如右圖所示。其流程圖如右圖所示。順序結構程序設計順序結構程序設計 A B C N圖中箭頭表示程序執(zhí)行的圖中箭頭表示程序執(zhí)行的方向,方框代表不同的可執(zhí)行方向,方框代表不同的可執(zhí)行語句。語句。 例例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ù)不同的條件采用不同的處理方法。如果條件滿足,則執(zhí)行某條件采用不同的處理方法。如果條件滿足,則執(zhí)行某一些語句;如果條件不滿足,則執(zhí)行另一些語句。這一些語句;如果條件不滿足,則執(zhí)行另一些語句。這些需要根據(jù)判斷條件來控制程序走向的程序設計稱為些需要根據(jù)判斷條件來控制程序走向的程序設計稱為選擇結構程序設計,又稱分支結構程序設計。選擇結構程序設計,又稱分支結構程序設計。Visual FoxProVisual FoxPro提供提供雙分支選擇

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

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

21、,則輸出園的面積,當半徑小的面積,當半徑小于于0,則輸出提示,則輸出提示信息信息“輸入值無輸入值無效效”。Set talk offInput 請輸入半徑的值:請輸入半徑的值: to rIf r=0 mj=3.14*r*r zc =2*3.14*r ?圓的面積為圓的面積為: ,mj ?圓的周長為:圓的周長為: ,zcElse ?輸入值無效輸入值無效EndifSet talk onuse studAccept 請輸入學號:請輸入學號: to xhlocate for 學號學號=xhif found() ?學號學號:+學號學號 ?姓名姓名:+姓名姓名 ?“入學成績入學成績:”,入學成績入學成績els

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

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

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

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

26、meif found() dispelse 12,5 say 對不起!該單位找不到您要查找的人!對不起!該單位找不到您要查找的人!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í)行與之相關的命令序列,余與之相關的命令序列,余下的條件便不再判斷

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

28、年,年齡小于齡小于25且大于等于且大于等于20時輸出時輸出“中中”,年齡小于,年齡小于20時輸出時輸出“小小”。 set talk off輸入學生的姓名、性別和年齡輸入學生的姓名、性別和年齡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 輸入學生姓

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 請輸入請輸入x的值:的值: to xdo case case x=0 .and. x=5 y=x+1endcase ?y=, yset talk on 9.3.2 9.3.2 多分支選擇語句多分支選擇語句( (選擇語句選擇語句| |情況語句情

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

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

32、句序列后面的語句序列, , 然后脫離情況然后脫離情況語句語句, ,執(zhí)行執(zhí)行ENDCASEENDCASE下一語句下一語句 。 開始判斷開始判斷語句序列語句序列1 1序列序列2 2序列序列n n序列序列n+1n+1ENDCASEENDCASE后面的語句后面的語句條件條件1條件條件2條件條件n其它其它例例 已知已知cjb.dbf中包含中包含xingming,avcj等字段。試用等字段。試用avcj來判來判斷該生成績屬于優(yōu)斷該生成績屬于優(yōu)(90)、良、良(80)、及格、及格(60)或或不及格不及格(60)。USE cjbUSE cjbACCEPT ACCEPT 請輸入姓名:請輸入姓名: 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+同學同學的成績等級為:的成績等級為:+ 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例例 閱讀下列程序段,寫出運行結果: 循環(huán),就是按給定的條件連續(xù)地重復執(zhí)行一段特循環(huán),就是按給定的條件連續(xù)地重復執(zhí)行一段特定功能的程序。循環(huán)結構也稱為重復結構。定功能的程序。循環(huán)結構也稱為重復結構。 Visual FoxProVisual FoxPro給出了三種循環(huán)結構:給出

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

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

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

38、。若條件為假,則結束循環(huán)若條件為假,則結束循環(huán) ,執(zhí)行,執(zhí)行ENDDOENDDO后面的語句。后面的語句。 如果第一次判斷如果第一次判斷條件時,條件即為假,則循環(huán)體一次都不執(zhí)行,這就是稱為條件時,條件即為假,則循環(huán)體一次都不執(zhí)行,這就是稱為“先判斷先判斷后執(zhí)行后執(zhí)行”的語句。的語句。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&設置循環(huán)變量初值&修改循環(huán)變量例例 在屏幕上換行顯示字符串在

39、屏幕上換行顯示字符串OK20OK20次次set talk offcleari=1do while i=20?ok!i=i+1EnddoSET TALK ONreturn DO WHILE DO WHILE 語句之前一定要有語句之前一定要有設置循環(huán)變量初設置循環(huán)變量初 值值的語句。的語句。在以循環(huán)變量作為循環(huán)控制參數(shù)的條件循環(huán)中在以循環(huán)變量作為循環(huán)控制參數(shù)的條件循環(huán)中 循環(huán)體內一定要有循環(huán)體內一定要有修改循環(huán)變量修改循環(huán)變量的語句,否則的語句,否則 就會出現(xiàn)就會出現(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 個數(shù)個數(shù)3.3. 累加次數(shù)加累加次數(shù)加1 1 4.4. 當當 i= 4 i= 4 重復做重復做2 2 ;5.5. ? s ? s 。&定義一個變量表示和,并初始化&指定以循環(huán)次數(shù)作判斷條件&把S的值加上i后再賦給S,即求和&修改循環(huán)變量&輸出求和的結果&設置循環(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 請輸入請輸入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 請輸入請輸入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 請輸入請輸入N的值的值: TO N S=1i=1DO WHILE i=N S=S*i i=i+1ENDDO? SSET TALK ONRETURN例例 閱讀程序,并說出程序的運行結果閱讀程序,并說出程序的運行結果IF i=3 LOOPENDIF程序結果程序結果23456程序結果程序結果2456 RETURN SET TALK ONSET TALK OFFi=1DO WH

43、ILE i=5 i=i+1 ENDDO ? i? “E”EE例例 求求1100以內所有奇數(shù)的和。以內所有奇數(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&定義一個變量表示個數(shù),并初始化&總個數(shù)增加1&顯示滿足條件的這個數(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, 個個set talk onreturn語句格式語句格式: FOR X XA A TO B B STEP C C LOOP EXIT ENDFOR | NEXT 9.4.2 計數(shù)循環(huán)(計數(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)初值步長值步長值循環(huán)終值循環(huán)終值例例

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

評論

0/150

提交評論