VF 第章 結(jié)構(gòu)化程序的設(shè)計ppt課件_第1頁
VF 第章 結(jié)構(gòu)化程序的設(shè)計ppt課件_第2頁
VF 第章 結(jié)構(gòu)化程序的設(shè)計ppt課件_第3頁
VF 第章 結(jié)構(gòu)化程序的設(shè)計ppt課件_第4頁
VF 第章 結(jié)構(gòu)化程序的設(shè)計ppt課件_第5頁
已閱讀5頁,還剩76頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第第9章章 第第9 9章章9.1.2 9.1.2 程序的控制構(gòu)造程序的控制構(gòu)造 任何復(fù)雜的程序都由任何復(fù)雜的程序都由3 3種根本控制構(gòu)種根本控制構(gòu)造組成。它們是順序構(gòu)造、選擇構(gòu)造和循造組成。它們是順序構(gòu)造、選擇構(gòu)造和循環(huán)構(gòu)造。環(huán)構(gòu)造。 圖圖9.19.1程序的控制構(gòu)造程序的控制構(gòu)造 第第9 9章章9.1.3 構(gòu)造化程序設(shè)計方法 構(gòu)造化程序設(shè)計采用自頂向下、逐漸求精和模塊化的分析方法。 自頂向下是指對設(shè)計的系統(tǒng)要有一個全面的了解,從問題的全局入手,把一個復(fù)雜問題分解成假設(shè)干個相互獨立的子問題 。逐漸求精是指程序設(shè)計的過程是一個漸進的過程,先把一個子問題用一個程序模塊來描畫,再把每個模塊的功能逐漸分

2、解細化為一系列的詳細步驟 。模塊化是構(gòu)造化程序的重要原那么。所謂模塊化就是把大程序按照功能分為較小的程序。 第第9 9章章9.1.4 9.1.4 程序文件的建立與執(zhí)行程序文件的建立與執(zhí)行 1 1命令方式建立或修正程序文件命令方式建立或修正程序文件命令格式:命令格式: MODIFY COMMAND MODIFY COMMAND ? ? MODIFY.FILE.MODIFY.FILE.文件名文件名? ? 功能:啟動功能:啟動VFPVFP提供的文本編輯器來建立或提供的文本編輯器來建立或編輯程序文件。編輯程序文件。2 2菜一方式建立編輯程序文件菜一方式建立編輯程序文件 第第9 9章章命令格式:命令格式

3、: DO DO 程序文件名程序文件名 功功 能能 : 將程序文件從磁盤調(diào)入內(nèi)存將程序文件從磁盤調(diào)入內(nèi)存, , 編譯編譯成成.FXP.FXP目的文件后并執(zhí)行。目的文件后并執(zhí)行。3.3.程序文件的執(zhí)行程序文件的執(zhí)行 菜一方式:菜一方式:.CANCEL.CANCEL:終止程序運轉(zhuǎn),去除一:終止程序運轉(zhuǎn),去除一切的私有變量,前往命令窗口。切的私有變量,前往命令窗口。.RETURN.RETURN:終了程序執(zhí)行,前往調(diào)用它的上級:終了程序執(zhí)行,前往調(diào)用它的上級程序,假設(shè)無上級程序那么前往命令窗口。程序,假設(shè)無上級程序那么前往命令窗口。.QUIT.QUIT:終了程序執(zhí)行并退出:終了程序執(zhí)行并退出Visual

4、.FoxProVisual.FoxPro系統(tǒng),前往操作系統(tǒng)。系統(tǒng),前往操作系統(tǒng)。 第第9 9章章9.2 順序構(gòu)造程序 順序構(gòu)造是最簡單、最根本的一種程序構(gòu)順序構(gòu)造是最簡單、最根本的一種程序構(gòu)造。在順序構(gòu)造程序中,各命令按照各自出造。在順序構(gòu)造程序中,各命令按照各自出現(xiàn)的先后順序,依次執(zhí)行?,F(xiàn)的先后順序,依次執(zhí)行。第第9 9章章9.2.1 9.2.1 程序文件中的程序文件中的輔助命令輔助命令 一輸入類語句一輸入類語句 格格 式式1 1: STORE STORE 表達式表達式 TO TO 內(nèi)存變量名表內(nèi)存變量名表 格格 式式2 2: 內(nèi)存變量內(nèi)存變量 表達式表達式 功功 能:給內(nèi)存變量賦值。能:給

5、內(nèi)存變量賦值。. . 賦值語句賦值語句第第9 9章章. . 交互式語句交互式語句/ /鍵盤輸入命令鍵盤輸入命令 1. 1. 字符串?dāng)?shù)據(jù)輸入命令字符串?dāng)?shù)據(jù)輸入命令格式:格式: ACCEPT ACCEPT TO TO 功能:在屏幕上顯示提示信息,等待用戶從功能:在屏幕上顯示提示信息,等待用戶從鍵盤輸入,再把輸入內(nèi)容賦值給指定的內(nèi)存鍵盤輸入,再把輸入內(nèi)容賦值給指定的內(nèi)存變量。變量。 注:注:ACCEPTACCEPT命令只能接受字符型常量,輸入時不需加命令只能接受字符型常量,輸入時不需加定界符。定界符。 鍵盤輸入命令主要用于程序執(zhí)行過程中原始數(shù)據(jù)的輸入。鍵盤輸入命令主要用于程序執(zhí)行過程中原始數(shù)據(jù)的輸入

6、。第第9 9章章例例9-1:要求用戶從鍵盤上輸入用戶名,然后:要求用戶從鍵盤上輸入用戶名,然后把輸入的用戶名顯示出來。把輸入的用戶名顯示出來。ACCEPT “請輸入用戶名:請輸入用戶名: TO NAME?NAME第第9 9章章格式:格式:INPUT INPUT TO TO 2. 2. 數(shù)據(jù)輸入命令數(shù)據(jù)輸入命令功能:在屏幕上顯示提示信息,等待用戶從鍵盤輸入,功能:在屏幕上顯示提示信息,等待用戶從鍵盤輸入,再把輸入內(nèi)容賦值給指定的內(nèi)存變量。再把輸入內(nèi)容賦值給指定的內(nèi)存變量。 注:注:INPUTINPUT命令能接受任何類型的表達式:命令能接受任何類型的表達式: 輸入輸入C C 型數(shù)據(jù)時,要運用型數(shù)據(jù)

7、時,要運用 或或 “ 作為定界符;作為定界符; 輸入輸入L L 型數(shù)據(jù)時,型數(shù)據(jù)時,.T. .T. 和和 .F. .F. ,兩邊的,兩邊的 . . 不不能??;能??; 輸入輸入D D 型數(shù)據(jù)時,要用型數(shù)據(jù)時,要用 或或CTOD( ) CTOD( ) 將字符串轉(zhuǎn)將字符串轉(zhuǎn)成日期型變量。成日期型變量。第第9 9章章例例9-2:求恣意兩數(shù)之和。:求恣意兩數(shù)之和。?X+YX+YINPUT INPUT “請輸入另一個數(shù)請輸入另一個數(shù)y y: TO Y TO YINPUT INPUT “請輸入另一個數(shù)請輸入另一個數(shù)x x: TO x TO x第第9 9章章 J=2800 J=2800 INPUT INPUT

8、 “輸入輸入 J+200 J+200 : TO A TO A ACCEPT ACCEPT “輸入輸入 J+200 J+200 : TO B TO B ?“A=A=,A A ? ? “B=B=,B B 注:執(zhí)行時,先后兩次輸入同樣的內(nèi)容:注:執(zhí)行時,先后兩次輸入同樣的內(nèi)容:J+200J+200例例9-39-3: 給出以下給出以下A A、B B的結(jié)果的結(jié)果第第9 9章章格式:格式:WAIT WAIT TO TO TIMEOUT TIMEOUT 3. 3. 只能輸入一個字符的命令只能輸入一個字符的命令功能:當(dāng)程序執(zhí)行某一處需求暫停時運用此命令。功能:當(dāng)程序執(zhí)行某一處需求暫停時運用此命令。 注:注:W

9、AIT命令呼應(yīng)速度快,它只接受一個字符,不命令呼應(yīng)速度快,它只接受一個字符,不需用戶鍵入回車鍵。需用戶鍵入回車鍵。第第9 9章章* * * * * 數(shù)據(jù)表操作命令菜單數(shù)據(jù)表操作命令菜單 * * * * *翻開任務(wù)數(shù)據(jù)表翻開任務(wù)數(shù)據(jù)表添加數(shù)據(jù)表記錄添加數(shù)據(jù)表記錄刪除數(shù)據(jù)表記錄刪除數(shù)據(jù)表記錄修正數(shù)據(jù)表記錄修正數(shù)據(jù)表記錄打印數(shù)據(jù)表記錄打印數(shù)據(jù)表記錄封鎖任務(wù)數(shù)據(jù)表封鎖任務(wù)數(shù)據(jù)表? “您選擇的是第您選擇的是第 + CHOICE + “個選項個選項WAIT “請選擇相應(yīng)代碼:請選擇相應(yīng)代碼: TO CHOICE例例9-4:第第9 9章章格式:格式: SAY SAY GET GET RANGE RANGE

10、1, 2 READ READ4. 4. 格式輸入語句格式輸入語句功能:在屏幕指定的坐標(biāo)位置上顯示提示或輸入數(shù)據(jù)。功能:在屏幕指定的坐標(biāo)位置上顯示提示或輸入數(shù)據(jù)。 READ 普通與普通與GET 結(jié)合起來用:結(jié)合起來用:當(dāng)有當(dāng)有READ時,時, GET 的內(nèi)容可以從鍵盤上修正;的內(nèi)容可以從鍵盤上修正;沒有沒有READ時,時,GET 后的變量只能顯示內(nèi)容,不能修正;后的變量只能顯示內(nèi)容,不能修正;一個一個READ可以修正它前面的多個可以修正它前面的多個GET項的內(nèi)容,但它可以項的內(nèi)容,但它可以由由CLEARGETS命令隔斷。命令隔斷。 注:注: :該變量應(yīng)在其前面定義過:該變量應(yīng)在其前面定義過 (

11、賦初值賦初值 ) 。第第9 9章章 8, 18 SAY “* 數(shù)據(jù)表操作命令菜單數(shù)據(jù)表操作命令菜單 * 9, 18 SAY “ 1.翻開任務(wù)數(shù)據(jù)表翻開任務(wù)數(shù)據(jù)表 10, 18 SAY “ 2. 添加數(shù)據(jù)表記錄添加數(shù)據(jù)表記錄 11, 18 SAY “ 3. 刪除數(shù)據(jù)表記錄刪除數(shù)據(jù)表記錄 12, 18 SAY “ 4. 修正數(shù)據(jù)表記錄修正數(shù)據(jù)表記錄 13, 18 SAY “ 5. 打印數(shù)據(jù)表記錄打印數(shù)據(jù)表記錄 14, 18 SAY “ 6. 封鎖任務(wù)數(shù)據(jù)表封鎖任務(wù)數(shù)據(jù)表 18, 28 SAY “您選擇的是您選擇的是: + LTRIM(STR(CHOICE) 16, 28 SAY “ 請選擇相應(yīng)代碼

12、:請選擇相應(yīng)代碼: GET CHOICEREAD例例9-5:第第9 9章章二輸出類語句二輸出類語句1. 1. 非格式輸出語句非格式輸出語句 格式格式1 1: ? 內(nèi)存變量名表內(nèi)存變量名表格式格式2: ? 內(nèi)存變量名表內(nèi)存變量名表注:語句注:語句1 1 是在光標(biāo)所在行的下一行開場顯示,是在光標(biāo)所在行的下一行開場顯示, 語句語句2 2 那么是在當(dāng)前光標(biāo)位置開場顯示。那么是在當(dāng)前光標(biāo)位置開場顯示。功功 能:顯示內(nèi)存變量、常量或表達式的值。能:顯示內(nèi)存變量、常量或表達式的值。第第9 9章章格式:格式: SAY SAY FUNCTION FUNCTION PICTURE PICTURE 2. 2. 格式

13、輸出語句格式輸出語句功能:按指定的坐標(biāo)位置在屏幕上輸出表達式的值。功能:按指定的坐標(biāo)位置在屏幕上輸出表達式的值。 注:注: 假設(shè)選用假設(shè)選用PICTURE、 FUNCTION子句,那么按一子句,那么按一定的格式輸出定的格式輸出 ,分別見教材,分別見教材P131的表的表6.1、6.2。第第9 9章章格式:格式: TEXT TEXT ENDTEXT ENDTEXT 3. 3. 文本輸出語句文本輸出語句功能:在屏幕上原樣顯示功能:在屏幕上原樣顯示TEXTTEXT和和ENDTEXTENDTEXT之間的內(nèi)容。之間的內(nèi)容。 注:注: TEXT、ENDTEXT是一條子句,不能省略其中任是一條子句,不能省略其

14、中任一條子句。一條子句。第第9 9章章* 數(shù)據(jù)表操作命令菜單數(shù)據(jù)表操作命令菜單 *翻開任務(wù)數(shù)據(jù)表翻開任務(wù)數(shù)據(jù)表添加數(shù)據(jù)表記錄添加數(shù)據(jù)表記錄刪除數(shù)據(jù)表記錄刪除數(shù)據(jù)表記錄修正數(shù)據(jù)表記錄修正數(shù)據(jù)表記錄打印數(shù)據(jù)表記錄打印數(shù)據(jù)表記錄封鎖任務(wù)數(shù)據(jù)表封鎖任務(wù)數(shù)據(jù)表? “您選擇的是第您選擇的是第 + CHOICE + “個選項個選項WAIT “請選擇相應(yīng)代碼:請選擇相應(yīng)代碼: TO CHOICE例例6-6TEXTENDTEXT第第9 9章章三三. . 設(shè)置會話形狀語句設(shè)置會話形狀語句語句格式語句格式2 2: SET TALK OFF SET TALK OFF功能功能 語句語句1 1:設(shè)置會話形狀開通。:設(shè)置會

15、話形狀開通。 語句語句2 2:設(shè)置會話形狀封鎖。:設(shè)置會話形狀封鎖。語句格式語句格式1 1: SET TALK ON SET TALK ON第第9 9章章四四. . 清屏與注釋語句清屏與注釋語句語句格式:語句格式: CLEAR CLEAR1. 1. 清屏語句清屏語句功功 能能 :去除屏幕上一切顯示內(nèi)容,光標(biāo)回到屏幕左:去除屏幕上一切顯示內(nèi)容,光標(biāo)回到屏幕左上角。上角。第第9 9章章2. 2. 注釋語句注釋語句語句格式語句格式2 2: * * 注:語句注:語句1 1、2 2、3 3 在程序中,系統(tǒng)不執(zhí)行。在程序中,系統(tǒng)不執(zhí)行。語句格式語句格式1 1: NOTE NOTE 功功 能能 : 在程序中

16、參與闡明性語句。在程序中參與闡明性語句。語句格式語句格式3 3: & & 第第9 9章章五五. RETURN. RETURN命令命令注:普通注:普通RETURNRETURN出現(xiàn)于程序末尾。出現(xiàn)于程序末尾。格式:格式: RETURN RETURN /TO MASTER/TO /TO MASTER/TO 功能功能 : 終了一個程序的執(zhí)行。終了一個程序的執(zhí)行。第第9 9章章六六. . 終止程序執(zhí)行語句終止程序執(zhí)行語句語句格式語句格式2 2: QUIT QUIT注注: : 語句語句1 1:在終止程序執(zhí)行后,前往到:在終止程序執(zhí)行后,前往到VFPVFP命令形狀;命令形狀; 語句語句2 2:前往到操作系統(tǒng)

17、形狀。:前往到操作系統(tǒng)形狀。語句格式語句格式1 1: CANCEL CANCEL功能:終止程序執(zhí)行,封鎖一切翻開的命令文件。功能:終止程序執(zhí)行,封鎖一切翻開的命令文件。第第9 9章章順序構(gòu)造程序:按語句的順序構(gòu)造程序:按語句的先后順序組織的程序,即把處先后順序組織的程序,即把處置過程的各個步驟按執(zhí)行的先置過程的各個步驟按執(zhí)行的先后順序列出。后順序列出。其流程圖如右圖所示。其流程圖如右圖所示。順序構(gòu)造程序設(shè)計順序構(gòu)造程序設(shè)計 A B C N圖中箭頭表示程序執(zhí)行的圖中箭頭表示程序執(zhí)行的方向,方框代表不同的可執(zhí)行方向,方框代表不同的可執(zhí)行語句。語句。 第第9 9章章例例9-7 變量的初始化和變量的賦

18、值。變量的初始化和變量的賦值。SET TALK OFF STORE 0 TO X,Y,ZA=3B=A+1C=A*B? X, Y, Z? A, B, CSET TALK ON 第第9 9章章例例9-8 執(zhí)行以下命令序列,問答問題:執(zhí)行以下命令序列,問答問題:最后顯示的值是:最后顯示的值是:一切職工的平均工資;一切職工的平均工資;一切工資在一切工資在10001000元以上的職元以上的職工的平均工資;工的平均工資;一切工資在一切工資在10001000元以上的職元以上的職工人數(shù);工人數(shù);一切職工人數(shù)一切職工人數(shù) 。USEUSEzgbzgbSUM SUM 根本工資根本工資 FOR FOR 根本工資根本工

19、資1000 TO SGZ1000 TO SGZCOPY FOR COPY FOR 根本工資根本工資1000 TO GZK21000 TO GZK2USE GZK2USE GZK2num=reccount( )num=reccount( )ave=sgz/numave=sgz/num? ave? ave第第9 9章章在計算機運用的許多場所,要求程序根據(jù)不同的在計算機運用的許多場所,要求程序根據(jù)不同的條件采用不同的處置方法。假設(shè)條件滿足,那么執(zhí)行條件采用不同的處置方法。假設(shè)條件滿足,那么執(zhí)行某一些語句;假設(shè)條件不滿足,那么執(zhí)行另一些語句某一些語句;假設(shè)條件不滿足,那么執(zhí)行另一些語句。這些需求根據(jù)判

20、別條件來控制程序走向的程序設(shè)計。這些需求根據(jù)判別條件來控制程序走向的程序設(shè)計稱為選擇構(gòu)造程序設(shè)計,又稱分支構(gòu)造程序設(shè)計。稱為選擇構(gòu)造程序設(shè)計,又稱分支構(gòu)造程序設(shè)計。Visual FoxProVisual FoxPro提供雙分支選擇語句、多分支選提供雙分支選擇語句、多分支選擇語句兩種選擇構(gòu)造。擇語句兩種選擇構(gòu)造。第第9 9章章 ENDIF后的語句語句序列語句序列1 1 ENDIF后的語句語句格式:語句格式:IF IF 條件條件 語句序列語句序列1 1ENDIF ENDIF 條件條件9.3.1 9.3.1 雙分支選擇語句雙分支選擇語句( (選擇判別語句選擇判別語句) ) 條件條件.T.F.語句序列

21、語句序列1 1.Y.N.語句序列語句序列2 2 ELSE ELSE 語句序列語句序列2 2 第第9 9章章注:注:(1) IF(1) IF和和ENDIFENDIF必需配對運用,而必需配對運用,而ELSEELSE可選??蛇x。(2) IF(2) IF、ELSEELSE、ENDIFENDIF必需各占一行。必需各占一行。(3) (3) 可以為關(guān)系表達式、邏輯表達式??梢詾殛P(guān)系表達式、邏輯表達式。(4)(4)在語句序列在語句序列1 1和語句序列和語句序列2 2中可以嵌套中可以嵌套IFIF語句。語句。執(zhí)行過程:執(zhí)行過程:假設(shè)假設(shè) 成立,就執(zhí)行語句序列成立,就執(zhí)行語句序列1 1;假設(shè)假設(shè) 不成立,執(zhí)行語句序

22、列不成立,執(zhí)行語句序列2 2。 第第9 9章章例例 請改用分支構(gòu)造語句編程計算電費請改用分支構(gòu)造語句編程計算電費: : 不超越不超越5050度度, , 每度每度0.520.52元元; ; 超越超越5050度時度時, , 超出部分每度超出部分每度0.750.75元。元。SET TALK OFFSET TALK OFFINPUT INPUT “請輸入所用電量請輸入所用電量: TO DL: TO DLDF=IIFDF=IIFDL=50DL=50,0.520.52* *DLDL,0.520.52* *50+0.7550+0.75* *(DL-50)(DL-50)? ? “應(yīng)繳電費為應(yīng)繳電費為: : +

23、 LTRIM(STR(DF,10,2) + + LTRIM(STR(DF,10,2) + 元元 SET TALK ONSET TALK ONRETURN RETURN 第第9 9章章SET TALK OFF INPUT 請輸入行李分量請輸入行李分量: TO WIF 1 YF=0.22*W ELSE YF= 0.22*40 + 1ENDIF ? 應(yīng)交托運費為應(yīng)交托運費為:+LTRIM(STR(YF,10,2)+元元SET TALK ONRETURN 例例 火車托運轉(zhuǎn)李火車托運轉(zhuǎn)李: 每人不超越每人不超越40公斤公斤,每公斤每公斤0.22元;超越元;超越40公斤時公斤時, 超出部分每公斤超出部分每

24、公斤0.40元。填空完成以下程序。元。填空完成以下程序。W 40(W-40) * 0.4第第9 9章章SET TALK OFFSET TALK OFFSet defa to f:jfvfpprgSet defa to f:jfvfpprgUSE zgbUSE zgbACCEPT ACCEPT “請輸入要查找人的姓名請輸入要查找人的姓名: : TO N TO NLOCATE ALL FOR XM=NLOCATE ALL FOR XM=NIF FOUND( )IF FOUND( ) DISP DISP ELSE ELSE ? ? 查無此人查無此人 ENDIFENDIFUSEUSESET TALK

25、ONSET TALK ONRETURNRETURN例例 編程:在編程:在ZGB.DBF中查找某人。中查找某人。第第9 9章章9.3.2 9.3.2 多分支選擇語句多分支選擇語句( (選擇語句選擇語句| |情況語句情況語句) )闡明:闡明:DO CASEDO CASE和第一個和第一個CASECASE子句之間不能插入任何子句之間不能插入任何語句。語句。DO CASEDO CASE和和ENDCASEENDCASE必必需配對運用,且需配對運用,且DO CASEDO CASE,CASECASE,OTHERWISEOTHERWISE和和ENDCASEENDCASE各子句必需各占各子句必需各占一行。一行。在

26、語句序列中可在語句序列中可嵌套情況語句。嵌套情況語句。 語句格式語句格式: : DO CASE DO CASE CASE CASE 條件表達條件表達式式1 1 語語句序列句序列1 1 CASE CASE 條件表達條件表達式式2 2 語語句序列句序列2 2 CASE CASE 條件表達條件表達式式n n 語語句序列句序列n n OTHERWISE OTHERWISE 語語句序列句序列n+1n+1 ENDCASE ENDCASE 第第9 9章章功能:系統(tǒng)依次測試語句中各個條件表達式的值功能:系統(tǒng)依次測試語句中各個條件表達式的值: : 假設(shè)為真,假設(shè)為真,即執(zhí)行相應(yīng)條件表達式后的語句序列即執(zhí)行相應(yīng)條

27、件表達式后的語句序列, , 然后脫離情然后脫離情況語句況語句, ,執(zhí)行執(zhí)行ENDCASEENDCASE的下一語句。假設(shè)一切的條件表達式的的下一語句。假設(shè)一切的條件表達式的值均為假,那么執(zhí)行值均為假,那么執(zhí)行OTHERWISEOTHERWISE后面的語句序列后面的語句序列, , 然后脫離然后脫離情況語句情況語句, ,執(zhí)行執(zhí)行ENDCASEENDCASE下一語句下一語句 。 開場判別開場判別語句序列語句序列1 1序列序列2 2序列序列n n序列序列n+1n+1ENDCASEENDCASE后面的語句后面的語句條件條件1條件條件2條件條件n其它其它第第9 9章章例例 知知cjb.dbf中包含中包含xi

28、ngming,avcj等字段。試用等字段。試用avcj來判別來判別該生成果屬于優(yōu)該生成果屬于優(yōu)(90)、良、良(80)、及格、及格(60)或不及格或不及格(60)。USE cjbACCEPT 請輸入姓名: TO xmLOCATE FOR ALLTRIM(xingming)=ALLTRIM(xm)navcj第第9 9章章DO CASE CASE n=90 dj=優(yōu) CASE n=80 dj=良 CASE n=60 dj=及格 OTHERWISE dj=不及格ENDCASE5,10 SAY xingming+同窗的成果等級為:+ dj第第9 9章章A=3000DO CASE CASE A=1000

29、 B=A CASE A=2000 B=2*A CASE A=3000 B=3*AENDCASE? B例例 閱讀以下程序段,寫出運轉(zhuǎn)結(jié)果:閱讀以下程序段,寫出運轉(zhuǎn)結(jié)果: 第第9 9章章Set talk offSet talk offSet defa to f:yyfoxSet defa to f:yyfoxclearclearcho=0cho=0 8, 18 SAY 8, 18 SAY “* * * * * 數(shù)據(jù)表操作命令菜單數(shù)據(jù)表操作命令菜單 * * * * * 9, 18 SAY 9, 18 SAY “ 1. 1. 翻開任翻開任務(wù)數(shù)據(jù)表務(wù)數(shù)據(jù)表 10, 18 SAY 10, 18 SAY “

30、 2. 2. 添加數(shù)據(jù)添加數(shù)據(jù)表記錄表記錄 11, 18 SAY 11, 18 SAY “ 3. 3. 刪除數(shù)據(jù)刪除數(shù)據(jù)表記錄表記錄 12, 18 SAY 12, 18 SAY “ 4. 4. 修正數(shù)據(jù)修正數(shù)據(jù)表記錄表記錄 14, 18 SAY 14, 18 SAY “ 5. 5. 封鎖任務(wù)封鎖任務(wù)數(shù)據(jù)表數(shù)據(jù)表 15, 28 SAY 15, 28 SAY “ 請選擇相應(yīng)代碼:請選擇相應(yīng)代碼: GET GET chochoReadReadDo caseDo case case cho=1 case cho=1 accept accept “請輸入表文件名:請輸入表文件名: to bm to bm

31、 use &bm use &bm例例 利用利用CASECASE語句實現(xiàn)簡單的菜單功能語句實現(xiàn)簡單的菜單功能 第第9 9章章 case 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第第9 9章章 循環(huán),就是按給定的條件延續(xù)地反復(fù)執(zhí)行一段特循環(huán),就是按給定的條件延續(xù)地反復(fù)執(zhí)行一段特定功能的程序。循環(huán)構(gòu)造也稱為反復(fù)構(gòu)

32、造。定功能的程序。循環(huán)構(gòu)造也稱為反復(fù)構(gòu)造。 Visual FoxPro給出了三種循環(huán)構(gòu)造:給出了三種循環(huán)構(gòu)造:條件循環(huán)條件循環(huán)DO WHILEENDDO計算循環(huán)計算循環(huán)FORENDFOR掃描循環(huán)掃描循環(huán)SCANENDSCAN第第9 9章章語句格式:語句格式: DO WHILE DO WHILE 1 LOOPLOOP 2 EXITEXIT 3 ENDDO ENDDO 循環(huán)體循環(huán)體 ENDDO后的語句條件條件.T.F.條件循環(huán)構(gòu)造流程圖條件循環(huán)構(gòu)造流程圖一、條件循環(huán)一、條件循環(huán)循環(huán)體循環(huán)體功能:有條件延續(xù)地反復(fù)執(zhí)行功能:有條件延續(xù)地反復(fù)執(zhí)行DO WHILEDO WHILE與與ENDDOENDDO之

33、間的語句序列,直到之間的語句序列,直到 為為假或因執(zhí)行假或因執(zhí)行EXITEXIT語句而終了。語句而終了。條件條件第第9 9章章2 2循環(huán)體中的循環(huán)體中的LOOPLOOP是可選項。遇到是可選項。遇到LOOPLOOP時,不再執(zhí)行后面的語句,時,不再執(zhí)行后面的語句,轉(zhuǎn)回轉(zhuǎn)回DO WHILEDO WHILE處重新判別。其作用相當(dāng)于一個特殊的處重新判別。其作用相當(dāng)于一個特殊的“短路前往控制。短路前往控制。3 3循環(huán)體中的循環(huán)體中的EXITEXIT也是可選項。遇到它時便無條件地退出循環(huán),轉(zhuǎn)也是可選項。遇到它時便無條件地退出循環(huán),轉(zhuǎn)到到ENDDOENDDO后面的語句。其作用相當(dāng)于一個緊急出口。后面的語句。其

34、作用相當(dāng)于一個緊急出口。4 4通常通常LOOPLOOP或或EXITEXIT出如今循環(huán)體內(nèi)嵌套的分支語句中,根據(jù)條件來出如今循環(huán)體內(nèi)嵌套的分支語句中,根據(jù)條件來決議是決議是LOOPLOOP回去,還是回去,還是EXITEXIT出去。出去。功能闡明:功能闡明:1 1系統(tǒng)執(zhí)行該語句時,先判別循環(huán)開場系統(tǒng)執(zhí)行該語句時,先判別循環(huán)開場DO WHILEDO WHILE的條件能否成立,的條件能否成立, 假設(shè)條件為真,那么執(zhí)行循環(huán)體中的語句序列。當(dāng)執(zhí)行到假設(shè)條件為真,那么執(zhí)行循環(huán)體中的語句序列。當(dāng)執(zhí)行到ENDDOENDDO時,前時,前往到往到DO WHILEDO WHILE,再次判別條件能否為真,以確定能否再次

35、執(zhí)行循環(huán)體。,再次判別條件能否為真,以確定能否再次執(zhí)行循環(huán)體。假設(shè)條件為假,那么終了循環(huán)假設(shè)條件為假,那么終了循環(huán) ,執(zhí)行,執(zhí)行ENDDOENDDO后面的語句。后面的語句。 假設(shè)第一次假設(shè)第一次判別條件時,條件即為假,那么循環(huán)體一次都不執(zhí)行,這就是稱為判別條件時,條件即為假,那么循環(huán)體一次都不執(zhí)行,這就是稱為“先先判別后執(zhí)行的語句。判別后執(zhí)行的語句。第第9 9章章SET TALK OFF SET TALK ONRETURNCLEAR?OK?OK?OK例例 在屏幕上換行顯示字符串在屏幕上換行顯示字符串“OKOK2020次次第第9 9章章i=1? OKi=i+1ENDDODO WHILESET T

36、ALK OFF SET TALK ONRETURNCLEARi=20循環(huán)次數(shù)循環(huán)次數(shù)循環(huán)前循環(huán)前i值值循環(huán)后循環(huán)后i值值112223202021&設(shè)置循環(huán)變量初值&修正循環(huán)變量例例 在屏幕上換行顯示字符串在屏幕上換行顯示字符串OK20OK20次次? OK第第9 9章章 DO WHILE DO WHILE 語句之前一定要有設(shè)置循環(huán)變量初語句之前一定要有設(shè)置循環(huán)變量初 值的語句。值的語句。 在以循環(huán)變量作為循環(huán)控制參數(shù)的條件循環(huán)中在以循環(huán)變量作為循環(huán)控制參數(shù)的條件循環(huán)中 循環(huán)體內(nèi)一定要有修正循環(huán)變量的語句,否那么循環(huán)體內(nèi)一定要有修正循環(huán)變量的語句,否那么 就會出現(xiàn)死循環(huán)。就會出現(xiàn)死循環(huán)。留意留意第

37、第9 9章章例 求自然數(shù)1至4的和。 分析算法分析算法: :s= s+i ;s= s+i ;i= i+1 ;i= i+1 ;1. i=1 , s=0 ;1. i=1 , s=0 ;2. 2. 累加第累加第 i i 個數(shù)個數(shù)3. 3. 累加次數(shù)加累加次數(shù)加1 1 4. 4. 當(dāng)當(dāng) i= 4 i= 4 反復(fù)做反復(fù)做2 2 ;5. ? s 5. ? s 。第第9 9章章例 求自然數(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&輸

38、出求和的結(jié)果 SET TALK ON RETURN&設(shè)置循環(huán)變量的初值第第9 9章章程序流程圖程序流程圖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 TALK OFFS=0i=1DO WHILE i=4 S=S+i i=i+1ENDDO? SSET TALK ONRETURN第第9 9章章 假設(shè)求自然數(shù)假設(shè)求自然數(shù)1 1至至N N的和呢?的和呢? 程序:求自然數(shù)1至4的和SET TALK OFFS=0 i=1INPUT INPUT 請輸入請輸入N N的值的值: : TO N TO N DO

39、 WHILE i=4 S=S+ii=i+1ENDDO?S SET TALK ON RETURNi=Ni=N第第9 9章章 假設(shè)求自然數(shù)假設(shè)求自然數(shù)1 1至至N N的積呢?的積呢? 程序:求自然數(shù)1至N的和SET TALK OFFS=0 i=1INPUT INPUT 請輸入請輸入N N的值的值: : TO N TO N DO WHILE i=N S =S + ii =i + 1ENDDO?S SET TALK ON RETURNS=1S=1S=SS=S* *i i第第9 9章章例例 閱讀程序,并說出程序的運轉(zhuǎn)結(jié)果閱讀程序,并說出程序的運轉(zhuǎn)結(jié)果IF i=3 LOOPENDIF程序結(jié)果程序結(jié)果234

40、56程序結(jié)果程序結(jié)果2456 RETURN SET TALK ONSET TALK OFFi=1DO WHILE i=5 i=i+1 ENDDO ? i? “EEE第第9 9章章例例 求求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到到100的奇數(shù)和的奇數(shù)和 S= , SSET TALK ONReturn以循環(huán)變量作為控以循環(huán)變量作為控制參數(shù)控制循環(huán)。制參數(shù)控制循環(huán)。S=0I=1Do while I 720 EXIT

41、ENDIF第第9 9章章例 求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ù)為滿足條件的數(shù)的個數(shù)為,N,NSET TALK ON RETURN? i&顯示滿足條件的這個數(shù)第第9 9章章語句格式:語句格式: FOR XA TO B STEP C LOOP EXIT ENDFOR | NEXT 二、計數(shù)循環(huán)二、計數(shù)循環(huán)循環(huán)體循環(huán)體功能:將功能:將FORENDFOR

42、FORENDFOR循環(huán)中的循環(huán)中的 執(zhí)行指定的次數(shù)。執(zhí)行指定的次數(shù)。循環(huán)變量循環(huán)變量循環(huán)初值循環(huán)初值步長值步長值循環(huán)終值循環(huán)終值第第9 9章章例例 求求1100之和。之和。 SET TALK OFFSET TALK OFFClear Clear S=0S=0for I=1 to 100 for I=1 to 100 S = S + I S = S + IEndforEndfor? ? “S = S = , S, SSET TALK ONSET TALK ONReturnReturn 假設(shè)求假設(shè)求100100的階乘呢?的階乘呢?第第9 9章章例例 求求1100之奇數(shù)和。之奇數(shù)和。 SET TAL

43、K OFFSET TALK OFFClear Clear S=0S=0for I=1 to 100 step 2for I=1 to 100 step 2 S = S + I S = S + INext Next ? ? “S = S = , S, SSET TALK ONSET TALK ONReturnReturn 假設(shè)求假設(shè)求1 1100100的偶數(shù)和呢?的偶數(shù)和呢?第第9 9章章例例 閱讀程序,寫出程序運轉(zhuǎn)結(jié)果閱讀程序,寫出程序運轉(zhuǎn)結(jié)果 SET TALK ONSET TALK OFFS=0 FOR K=1 TO 10 STEP 2 S=S+K ENDFOR ? S RETURNIF K

44、=7LOOPENDIF思索思索3 3假設(shè)改成假設(shè)改成EXITEXIT呢?呢?第第9 9章章語句格式:語句格式: SCAN FOR LOOP EXIT ENDSCAN 三、表文件掃描循環(huán)三、表文件掃描循環(huán)循環(huán)體循環(huán)體功能:在指定的范圍內(nèi),掃描滿足給定條件的記錄,執(zhí)行相應(yīng)的語句。功能:在指定的范圍內(nèi),掃描滿足給定條件的記錄,執(zhí)行相應(yīng)的語句。第第9 9章章SET TALK OFFSET TALK OFFUSE zgbUSE zgbACCEPT ACCEPT “請輸入要查找人的姓名請輸入要查找人的姓名: : TO N TO NSCAN FOR XM=N SCAN FOR XM=N DISP DISP

45、WAIT WAIT “按恣意鍵繼續(xù),按按恣意鍵繼續(xù),按ESCESC鍵退出鍵退出ENDSCANENDSCANUSEUSE?“查找終了查找終了SET TALK ONSET TALK ONRETURNRETURN例例 用用SCAN語句編程:在語句編程:在zgb.dbf中查找某人。中查找某人。第第9 9章章對數(shù)據(jù)表掃描時三種循環(huán)的等價錢式對數(shù)據(jù)表掃描時三種循環(huán)的等價錢式表文件掃描循環(huán):表文件掃描循環(huán): SCAN FOR ENDSCAN條件循環(huán):條件循環(huán): DO WHILE .NOT. EOF() DO WHILE .NOT. EOF()SKIPSKIP ENDDO ENDDO計數(shù)循環(huán):計數(shù)循環(huán): n=

46、RECCOUNT() n=RECCOUNT() FOR i=1 TO n FOR i=1 TO n GO i GO i ENDFOR ENDFOR第第9 9章章循環(huán)嵌套循環(huán)體內(nèi)又設(shè)置循環(huán)的情況稱為多重循環(huán),又稱為循環(huán)嵌循環(huán)體內(nèi)又設(shè)置循環(huán)的情況稱為多重循環(huán),又稱為循環(huán)嵌套。套。內(nèi)外循環(huán)的層次必需清楚,不允許有交叉景象出現(xiàn)。內(nèi)外循環(huán)的層次必需清楚,不允許有交叉景象出現(xiàn)。循環(huán)構(gòu)造可以與分支構(gòu)造嵌套,同樣不允許有交叉景象出循環(huán)構(gòu)造可以與分支構(gòu)造嵌套,同樣不允許有交叉景象出現(xiàn)?,F(xiàn)。 以下交叉情形不允許出現(xiàn):以下交叉情形不允許出現(xiàn): F O R I F F O R S C A N D O W H I L

47、E D O C A S E E N D F O R E N D I F E N D F O R E N D S C A N E N D D O E N D C A S E 圖6 . 7 嵌 套 不 允 許 交 叉 第第9 9章章例例 知知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 i800S800時退出,求此時最小的時退出,求此時最小的S S值值!1!21!111ns4 4求求ny211321121115 5求求第第9 9章章9.5 程序的模塊化

48、9.5.1 子程序、過程和函數(shù) 1.子程序(1).子程序的構(gòu)造子程序與其他程序文件的獨一區(qū)別是其末尾或前往處必需有前往語句。命令格式:RETURN.TO.MASTERTO.程序文件名表達式 第第9 9章章 (2). (2).子程序的調(diào)用子程序的調(diào)用 子程序調(diào)用命令與主程序執(zhí)行命令一樣,其格式都子程序調(diào)用命令與主程序執(zhí)行命令一樣,其格式都是:是:DODO程序文件名過程名程序文件名過程名WITH.WITH.參參數(shù)表數(shù)表(3).(3).子程序的嵌套調(diào)用子程序的嵌套調(diào)用 主程序可以調(diào)用子程序,子程序還可以調(diào)用另外的主程序可以調(diào)用子程序,子程序還可以調(diào)用另外的子程序,這就是子程序的嵌套調(diào)用。實踐上,子程

49、子程序,這就是子程序的嵌套調(diào)用。實踐上,子程序和主程序都是相對的,任何一個程序可以調(diào)用其序和主程序都是相對的,任何一個程序可以調(diào)用其他程序,也可以被其他程序調(diào)用。每個被調(diào)用程序他程序,也可以被其他程序調(diào)用。每個被調(diào)用程序的末尾或前往處都要加上的末尾或前往處都要加上RETURNRETURN命令。命令。 第第9 9章章2.2.自定義函數(shù)自定義函數(shù)(1).(1).自定義函數(shù)的構(gòu)造自定義函數(shù)的構(gòu)造 FUNCTION.FUNCTION.函數(shù)名函數(shù)名PARAMETERS.PARAMETERS.參數(shù)表參數(shù)表命令組命令組 RETURN.RETURN.表達式表達式(2).(2).自定義函數(shù)的調(diào)用自定義函數(shù)的調(diào)用

50、 調(diào)用格式是:調(diào)用格式是: 函數(shù)名函數(shù)名( (自變量表自變量表) ) 第第9 9章章3.過程與過程文件(1).過程的構(gòu)造 過程的普通格式是:PROCEDURE過程名PARAMETERS參數(shù)表命令組 RETURN (2).過程文件 一個過程可以以文件方式單獨存在,也可以將多個過程合并到一個文件中,這個文件稱為過程文件。在過程文件中,每個過程依然是獨立的,可以單獨調(diào)用。 第第9 9章章(3).(3).過程文件的翻開與封鎖過程文件的翻開與封鎖 翻開過程文件命令格式是:翻開過程文件命令格式是: SET.PROCEDURE.TO.SET.PROCEDURE.TO.過程文件名過程文件名封鎖過程文件命令格式

51、是:封鎖過程文件命令格式是:SET.PROCEDURE.TOSET.PROCEDURE.TO或者或者CLOSE.PROCEDURE CLOSE.PROCEDURE 第第9 9章章9.5.2 內(nèi)存變量的作用域 1.1.全局內(nèi)存變量全局內(nèi)存變量定義全局變量的命令格式:定義全局變量的命令格式:命令格式命令格式1 1:PUBLICPUBLIC內(nèi)存變量表內(nèi)存變量表ALLALLALL LINKALL LINK通配符通配符ALL ALL EXCEPTEXCEPT通配符通配符命令格式命令格式2 2:PUBLIC.PUBLIC.ARRAYARRAY數(shù)組名數(shù)組名( (下標(biāo)上界下標(biāo)上界1 1, ,下標(biāo)下標(biāo)上界上界2 2) ), ,數(shù)組名數(shù)組名( (下標(biāo)上界下標(biāo)上界1 1, ,下標(biāo)上界下標(biāo)上界2 2),),功能:定義全局內(nèi)存變量或數(shù)組。功能:定義全局內(nèi)存變量或數(shù)組。 第第9 9章章2.2.部分

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論