第5章面向過程程序設(shè)計_第1頁
第5章面向過程程序設(shè)計_第2頁
第5章面向過程程序設(shè)計_第3頁
第5章面向過程程序設(shè)計_第4頁
第5章面向過程程序設(shè)計_第5頁
已閱讀5頁,還剩96頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第第5章章 面向過程程序設(shè)計面向過程程序設(shè)計n5.1 應(yīng)用程序的創(chuàng)建應(yīng)用程序的創(chuàng)建n5.2 應(yīng)用程序中的常用命令應(yīng)用程序中的常用命令n5.3 順序結(jié)構(gòu)程序設(shè)計順序結(jié)構(gòu)程序設(shè)計n5.4 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計n5.5 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計n5.6 過程結(jié)構(gòu)程序設(shè)計過程結(jié)構(gòu)程序設(shè)計n5.7 數(shù)組變量的應(yīng)用數(shù)組變量的應(yīng)用n5.8 面向過程程序設(shè)計舉例面向過程程序設(shè)計舉例本章學(xué)習(xí)目標本章學(xué)習(xí)目標n本章主要講解面向過程程序設(shè)計的相關(guān)知識本章主要講解面向過程程序設(shè)計的相關(guān)知識。通過本章學(xué)習(xí),讀者應(yīng)該掌握以下內(nèi)容:。通過本章學(xué)習(xí),讀者應(yīng)該掌握以下內(nèi)容:n應(yīng)用程序的創(chuàng)建應(yīng)用程序的創(chuàng)建n應(yīng)

2、用程序中常用命令的基本格式、功能和用應(yīng)用程序中常用命令的基本格式、功能和用法法n應(yīng)用程序中的各種結(jié)構(gòu)程序設(shè)計應(yīng)用程序中的各種結(jié)構(gòu)程序設(shè)計n數(shù)組變量的應(yīng)用數(shù)組變量的應(yīng)用5.1 應(yīng)用程序的創(chuàng)建應(yīng)用程序的創(chuàng)建n5.1.1 應(yīng)用程序的建立應(yīng)用程序的建立n5.1.2 應(yīng)用程序的運行應(yīng)用程序的運行n5.1.3 應(yīng)用程序的修改應(yīng)用程序的修改返回首頁返回首頁5.1.1 應(yīng)用程序的建立應(yīng)用程序的建立1菜單方式下應(yīng)用程序的建立,菜單方式下應(yīng)用程序的建立,如圖如圖5-1所示。所示。2命令方式下應(yīng)用程序的建立命令方式下應(yīng)用程序的建立n格式:格式:MODIFY COMMAND 程序名程序名 n說明:說明: 為主文件名,

3、其擴展名的默認值為為主文件名,其擴展名的默認值為.PRG。 當(dāng)在當(dāng)在中鍵入新文件名時,則是建立一個新中鍵入新文件名時,則是建立一個新命令文件。命令文件。 圖5-1 程序編輯窗口返回本節(jié)返回本節(jié)5.1.2 應(yīng)用程序的運行應(yīng)用程序的運行1菜單方式下應(yīng)用程序的運行菜單方式下應(yīng)用程序的運行 ,如圖如圖5-2所示。所示。 2在命令方式下應(yīng)用程序的運行在命令方式下應(yīng)用程序的運行n格式:格式:DO WITH n功能:將指定文件調(diào)入內(nèi)存并運行。功能:將指定文件調(diào)入內(nèi)存并運行。返回本節(jié)返回本節(jié)5.1.3 應(yīng)用程序的修改應(yīng)用程序的修改1菜單方式下應(yīng)用程序的修改菜單方式下應(yīng)用程序的修改2命令方式下應(yīng)用程序的修改命令

4、方式下應(yīng)用程序的修改命令格式與建立應(yīng)用程序的命令相同命令格式與建立應(yīng)用程序的命令相同 。返回本節(jié)返回本節(jié)5.2 應(yīng)用程序中的常用命令應(yīng)用程序中的常用命令n5.2.1 交互輸入命令交互輸入命令n5.2.2 常用輔助命令常用輔助命令返回首頁返回首頁5.2.1 交互輸入命令交互輸入命令1鍵入字符串命令格式:鍵入字符串命令格式:ACCEPT TO n功能:暫停程序的運行,等待用戶鍵入字符功能:暫停程序的運行,等待用戶鍵入字符型常量以賦給指定的內(nèi)存變量。型常量以賦給指定的內(nèi)存變量。2輸入單字符命令格式:輸入單字符命令格式:WAIT TO n功能:暫停程序的運行,等待用戶鍵入單個功能:暫停程序的運行,等待

5、用戶鍵入單個字符后再恢復(fù)程序運行。字符后再恢復(fù)程序運行。3鍵入表達式命令格式:鍵入表達式命令格式:INPUT TO n功能:暫停程序運行,等待鍵入表達式并將其值賦功能:暫停程序運行,等待鍵入表達式并將其值賦給指定的內(nèi)存變量,待按回車鍵后,繼續(xù)運行程序給指定的內(nèi)存變量,待按回車鍵后,繼續(xù)運行程序。n【例例】 試編寫一個試編寫一個Visual FoxPro程序,能夠根據(jù)程序,能夠根據(jù)鍵入的系別代號(單字符)在不同系的檔案表文件鍵入的系別代號(單字符)在不同系的檔案表文件中查找某一職工的情況。中查找某一職工的情況。 *LX2.PRGSET TALK OFFCLEARWAIT 請輸入系的代號:請輸入系

6、的代號: TO DHXH=DH+DHUSE &XHACCEPT 請輸入職工姓名:請輸入職工姓名: TO XMLOCATE FOR 姓名姓名=XM? 職工姓名:職工姓名:+姓名姓名? 性別:性別:+性別性別? 年齡:年齡:+STR(年齡年齡,2)WAIT? 職稱:職稱:+職稱職稱? 任教課程:任教課程:+任教課程任教課程? 教研室:教研室:+教研室教研室WAITSET TALK ONRETURN返回本節(jié)返回本節(jié)5.2.2 常用輔助命令常用輔助命令1注釋命令注釋命令n格式一:格式一:NOTE n格式二:格式二:*n功能:作為一個獨立的語句行注明程序的名稱、功功能:作為一個獨立的語句行注明程

7、序的名稱、功能或其他備忘標記。能或其他備忘標記。n格式三:格式三:&2環(huán)境設(shè)置命令環(huán)境設(shè)置命令n為了保證程序的正常運行,需要為其設(shè)置一為了保證程序的正常運行,需要為其設(shè)置一定的運行環(huán)境。定的運行環(huán)境。Visual FoxPro系統(tǒng)提供的系統(tǒng)提供的SET命令組就是用來設(shè)置程序運行環(huán)境狀態(tài)命令組就是用來設(shè)置程序運行環(huán)境狀態(tài)的。這些命令相當(dāng)于一個狀態(tài)轉(zhuǎn)換開關(guān),當(dāng)?shù)?。這些命令相當(dāng)于一個狀態(tài)轉(zhuǎn)換開關(guān),當(dāng)命令置為命令置為ON時,開啟指定的某種狀態(tài);而時,開啟指定的某種狀態(tài);而置為置為OFF時則關(guān)閉該種狀態(tài)。常用的時則關(guān)閉該種狀態(tài)。常用的SET命命令如表令如表5.1所示,其中大寫的所示,其中大寫的O

8、N或或OFF是該是該命令的系統(tǒng)默認值。命令的系統(tǒng)默認值。表5.1 環(huán)境設(shè)置命令 3清除命令清除命令n格式一:格式一:CLEAR n功能:清除當(dāng)前屏幕上的所有信息,并將光標置于功能:清除當(dāng)前屏幕上的所有信息,并將光標置于屏幕的左上角,同時從內(nèi)存中釋放指定項。屏幕的左上角,同時從內(nèi)存中釋放指定項。n格式二:格式二:CLEAR ALLn功能:關(guān)閉所有文件,釋放所有內(nèi)存變量,將當(dāng)前功能:關(guān)閉所有文件,釋放所有內(nèi)存變量,將當(dāng)前工作區(qū)置為工作區(qū)置為1號工作區(qū)。號工作區(qū)。n格式三:格式三:CLEAR TYPETHEADn功能:清除鍵盤緩沖區(qū),接收用戶鍵入的數(shù)據(jù)。功能:清除鍵盤緩沖區(qū),接收用戶鍵入的數(shù)據(jù)。 4

9、關(guān)閉文件命令關(guān)閉文件命令n格式一:格式一:CLOSE ALLn功能:關(guān)閉所有工作區(qū)中已打開的數(shù)據(jù)庫、功能:關(guān)閉所有工作區(qū)中已打開的數(shù)據(jù)庫、表以及索引文件,將工作區(qū)置為表以及索引文件,將工作區(qū)置為1號工作區(qū)號工作區(qū)。n格式二:格式二:CLOSE n功能:關(guān)閉功能:關(guān)閉指定的所有文件。如指定的所有文件。如表表5.2所示。所示。 表5.2 文件類型5運行中斷和結(jié)束命令運行中斷和結(jié)束命令 n格式一:格式一:QUIT n格式二:格式二:CANCEL n格式三:格式三:RETURN TO MASTER 6文本顯示命令文本顯示命令 n格式:格式:TEXT ENDTEXTn功能:將功能:將原樣顯示輸出原樣顯示

10、輸出 7定位輸出命令簡介定位輸出命令簡介 n格式:格式: SAY n功能:在指定的行、列坐標位置輸出數(shù)據(jù)。功能:在指定的行、列坐標位置輸出數(shù)據(jù)。n說明:該命令功能齊全、容易使用,為舊版說明:該命令功能齊全、容易使用,為舊版本本FoxPro中使用最為頻繁的命令之一,在中使用最為頻繁的命令之一,在Visual FoxPro中則用中則用LABEL控件取代??丶〈?。返回本節(jié)返回本節(jié)5.3 順序結(jié)構(gòu)程序設(shè)計順序結(jié)構(gòu)程序設(shè)計n程序設(shè)計的過程應(yīng)該包括:分析問題、確定任務(wù)、程序設(shè)計的過程應(yīng)該包括:分析問題、確定任務(wù)、劃分模塊、建立模型、組織數(shù)據(jù)、描述操作步驟(劃分模塊、建立模型、組織數(shù)據(jù)、描述操作步驟(如畫

11、流程圖)、編寫程序、上機調(diào)試、分析運行結(jié)如畫流程圖)、編寫程序、上機調(diào)試、分析運行結(jié)果,最后寫出程序說明書。果,最后寫出程序說明書。n在進行程序設(shè)計時,為了把解題的操作步驟(也稱在進行程序設(shè)計時,為了把解題的操作步驟(也稱算法)清晰地表達出來,常用流程圖進行描述,然算法)清晰地表達出來,常用流程圖進行描述,然后再根據(jù)流程圖編寫程序內(nèi)容,以提高編程效率和后再根據(jù)流程圖編寫程序內(nèi)容,以提高編程效率和減少邏輯錯誤。所謂流程圖減少邏輯錯誤。所謂流程圖 ,就是運用一些特定的,就是運用一些特定的圖形符號和必要的文字來描述解題步驟的圖示。如圖形符號和必要的文字來描述解題步驟的圖示。如圖圖5-3所示所示。返回

12、首頁返回首頁圖圖5-3 流程圖的標準化符號流程圖的標準化符號n圖圖5-4分別提供了順序、分支、循環(huán)三種基本程序結(jié)分別提供了順序、分支、循環(huán)三種基本程序結(jié)構(gòu)流程圖。這種矢線流程圖的特點是:單入口、單構(gòu)流程圖。這種矢線流程圖的特點是:單入口、單出口、結(jié)構(gòu)明了、步驟清晰、層次分明,尤其是能出口、結(jié)構(gòu)明了、步驟清晰、層次分明,尤其是能把程序內(nèi)部的來龍去脈描述得清清楚楚。把程序內(nèi)部的來龍去脈描述得清清楚楚。n順序結(jié)構(gòu)程序也稱直接程序或簡單程序。它自始至順序結(jié)構(gòu)程序也稱直接程序或簡單程序。它自始至終嚴格按照程序中語句的先后順序逐條執(zhí)行。它是終嚴格按照程序中語句的先后順序逐條執(zhí)行。它是任何一種語言程序中最基

13、本、最普遍的結(jié)構(gòu)形式。任何一種語言程序中最基本、最普遍的結(jié)構(gòu)形式。n設(shè)計順序結(jié)構(gòu)程序時,要目的明確、思路清晰,先設(shè)計順序結(jié)構(gòu)程序時,要目的明確、思路清晰,先用流程圖將操作步驟描述清楚,然后再用用流程圖將操作步驟描述清楚,然后再用Visual FoxPro命令予以實現(xiàn)。命令予以實現(xiàn)。圖5-4 三種基本程序結(jié)構(gòu)流程圖圖5-5 例5-4程序流程圖 n【例例】 試在表文件中查看某學(xué)生的有關(guān)情況。試在表文件中查看某學(xué)生的有關(guān)情況。 流程圖如圖流程圖如圖5-5所示。程序清單如下:所示。程序清單如下:*LX3.PRGSET TALK OFFCLEARUSE 學(xué)生表學(xué)生表.DBFLOCATE FOR 姓名姓名

14、=李廣志李廣志DISPLAYUSESET TALK ON運行該程序:運行該程序:DO L3.PRG運行結(jié)果為:運行結(jié)果為: 記錄號記錄號學(xué)號學(xué)號 姓名姓名 性別性別 班級班級 特長特長 家庭住址家庭住址 電話電話220032103李廣志李廣志男男注冊會計師注冊會計師memo西安市碑林區(qū)西安市碑林區(qū)72465520 n例例 根據(jù)鍵入的基期人口數(shù)根據(jù)鍵入的基期人口數(shù)A和人口的年增長率和人口的年增長率B,計算計算20年后的人口總數(shù)年后的人口總數(shù)C。 本程序的清單如下:本程序的清單如下: *LX4.PRG SET TALK OFF INPUT 基期人口數(shù)基期人口數(shù)A= TO A INPUT 年平均增長

15、率年平均增長率B= TO B C=A*(1+B)*20 ? 20年后的人口總數(shù)年后的人口總數(shù)C=+STR(C,10) SET TALK ON 運行本程序:運行本程序: DO L4.PRG 基期人口數(shù)基期人口數(shù)A=1.2E+08 年平均增長率年平均增長率B=0.05 Y20年后的人口總數(shù)年后的人口總數(shù)C=318395725返回本節(jié)返回本節(jié)5.4 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計n5.4.1 兩分支結(jié)構(gòu)兩分支結(jié)構(gòu)n5.4.2 多分支結(jié)構(gòu)多分支結(jié)構(gòu)返回首頁返回首頁5.4.1 兩分支結(jié)構(gòu)兩分支結(jié)構(gòu)1簡單分支簡單分支 n格式:格式:IF ENDIFn功能:首先對功能:首先對的值進行判斷,若其值的值進行判

16、斷,若其值為真,就順序執(zhí)行為真,就順序執(zhí)行;若其值為假,就;若其值為假,就跳過語句行序列,執(zhí)行跳過語句行序列,執(zhí)行ENDIF語句的后續(xù)語句。語句的后續(xù)語句。n 圖圖5-6是簡單分支結(jié)構(gòu)流程圖。是簡單分支結(jié)構(gòu)流程圖。 圖5-6 簡單分支結(jié)構(gòu)流程圖 圖5-7 例5-6的程序流程圖 2選擇分支選擇分支 n格式:格式:IF ELSE ENDIF n功能:首先對功能:首先對的值進行判斷,若其值為真,就的值進行判斷,若其值為真,就順序執(zhí)行順序執(zhí)行,然后轉(zhuǎn)去執(zhí)行,然后轉(zhuǎn)去執(zhí)行ENDIF后的語句;否后的語句;否則就執(zhí)行則就執(zhí)行, 然后順序執(zhí)行然后順序執(zhí)行ENDIF后續(xù)的語句。后續(xù)的語句。如圖如圖5-8所。所。

17、圖5-8 選擇判斷結(jié)構(gòu)流程圖 圖5-9 例5-7的程序流程圖 程序流程圖如圖程序流程圖如圖5-9所示。程序清單如下:所示。程序清單如下: *LX6.PRGSET TALK OFFUSE 分數(shù)分數(shù).DBFCLEARLOCATE FOR 學(xué)號學(xué)號=“99020203” IF 成績成績=60 ? 學(xué)號:學(xué)號:+學(xué)號學(xué)號 ? 課程號:課程號:+課程號課程號 ? 成績:成績:+STR(成績成績,6,2) ELSE ? 學(xué)號為學(xué)號為+學(xué)號學(xué)號+的學(xué)生應(yīng)參加補考的課程號為:的學(xué)生應(yīng)參加補考的課程號為:+課程號課程號ENDIF USESET TALK ON【例例】 根據(jù)鍵入的根據(jù)鍵入的X值,計算下面分段函數(shù)的

18、值,并顯示結(jié)果。值,計算下面分段函數(shù)的值,并顯示結(jié)果。 5X2+6X-1(X0) Y= X2-4X+1(020)程序如下:程序如下:*LX7.PRGSET TALK OFFCLEARINPUT 請輸入請輸入X的值:的值: TO XIF X0IF X20 Y=3*X*X+1 ELSE Y=X*X-4*X+1 ENDIFELSE Y=5*X*X+6*X-1ENDIF?分段函數(shù)的值為:分段函數(shù)的值為:+STR(Y)SET TALK ONRETURN 3判斷語句嵌套判斷語句嵌套n在解決具體問題時,需要進行判斷的條件往在解決具體問題時,需要進行判斷的條件往往不止一個,要多次進行判斷,形成條件判往不止一個

19、,要多次進行判斷,形成條件判斷的嵌套,使程序結(jié)構(gòu)發(fā)生多重走向。這時斷的嵌套,使程序結(jié)構(gòu)發(fā)生多重走向。這時就要根據(jù)具體條件選擇執(zhí)行其中的一個分支就要根據(jù)具體條件選擇執(zhí)行其中的一個分支。n例例5-8給出給出了一個了一個IF兩重嵌套兩重嵌套示例。系示例。系統(tǒng)允許使統(tǒng)允許使用的用的IF語語句多重嵌句多重嵌套示意結(jié)套示意結(jié)構(gòu)如下:構(gòu)如下:返回本節(jié)返回本節(jié)5.4.2 多分支結(jié)構(gòu)多分支結(jié)構(gòu)n格式:格式:DO CASE CASE CASE OTHERWISE ENDCASE 注釋內(nèi)容注釋內(nèi)容 n功能:功能:依次判斷多個條件表達式,選擇執(zhí)行第一個邏輯值為真的依次判斷多個條件表達式,選擇執(zhí)行第一個邏輯值為真的所對

20、應(yīng)的語句行序列。所對應(yīng)的語句行序列。圖5-10 多分支結(jié)構(gòu)執(zhí)行過程示意圖n【例】【例】 試根據(jù)我國試根據(jù)我國“個人所得稅法個人所得稅法”編寫個人所得編寫個人所得稅計算程序稅計算程序LX8.PRG。稅法規(guī)定:公民的工資、薪稅法規(guī)定:公民的工資、薪金及獎金所得應(yīng)按月征交個人所得稅,以每月收入金及獎金所得應(yīng)按月征交個人所得稅,以每月收入總額減去總額減去800元之后的余額,作為應(yīng)納稅所得額,并元之后的余額,作為應(yīng)納稅所得額,并采用九級超額累進稅率。其稅率表如表采用九級超額累進稅率。其稅率表如表5.3所示。所示。n(程序清單略)(程序清單略)表5.3 稅率表返回本節(jié)返回本節(jié)5.5 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)

21、構(gòu)程序設(shè)計n5.5.1 當(dāng)型循環(huán)結(jié)構(gòu)當(dāng)型循環(huán)結(jié)構(gòu)n5.5.2 固定次數(shù)的循環(huán)結(jié)構(gòu)固定次數(shù)的循環(huán)結(jié)構(gòu)n5.5.3 表掃描循環(huán)結(jié)構(gòu)表掃描循環(huán)結(jié)構(gòu)n5.5.4 多重循環(huán)結(jié)構(gòu)多重循環(huán)結(jié)構(gòu)返回首頁返回首頁5.5.1 當(dāng)型循環(huán)結(jié)構(gòu)當(dāng)型循環(huán)結(jié)構(gòu)n格式:格式: DO WHILE LOOP EXIT ENDDOn其中,其中,DO WHILE語句稱為循環(huán)起始語句;語句稱為循環(huán)起始語句;ENDDO語句稱為循環(huán)終端語句。這兩個語句之間語句稱為循環(huán)終端語句。這兩個語句之間的所有語句稱為循環(huán)體(即被循環(huán)執(zhí)行的語句)。的所有語句稱為循環(huán)體(即被循環(huán)執(zhí)行的語句)。 當(dāng)型循環(huán)語句的執(zhí)行過程示意圖如圖5-11所示。 n【例】【例

22、】 試用當(dāng)型循環(huán)語句設(shè)計一個有關(guān)檔案管理的主控程序試用當(dāng)型循環(huán)語句設(shè)計一個有關(guān)檔案管理的主控程序,用戶通過鍵盤選擇菜單,可以實現(xiàn)不同功能模塊的調(diào)用或,用戶通過鍵盤選擇菜單,可以實現(xiàn)不同功能模塊的調(diào)用或退出運行。退出運行。程序清單如下:程序清單如下:*LX9.PRGSET TALK OFFDO WHILE .T.CLEARTEXT & 文本輸出語句開始處文本輸出語句開始處計算中心檔案管理系統(tǒng)計算中心檔案管理系統(tǒng) 查詢查詢1 統(tǒng)計統(tǒng)計 2 修改修改3 退出退出 0 ENDTEXT WAIT 請鍵入功能選擇代號請鍵入功能選擇代號(03): TO X DO CASE CASE X=1 DO 查

23、詢查詢 & 調(diào)用調(diào)用“查詢查詢”子程序子程序 CASE X=2 DO 統(tǒng)計統(tǒng)計 & 調(diào)用調(diào)用“統(tǒng)計統(tǒng)計”子程序子程序 CASE X=3 DO 修改修改 & 調(diào)用調(diào)用“修改修改”子程序子程序 CASE X=0 EXIT OTHERWISE WAIT 選擇錯,按任意鍵后重新選擇!選擇錯,按任意鍵后重新選擇! ENDCASEENDDOSET TALK ON 返回本節(jié)返回本節(jié)5.5.2 固定次數(shù)的循環(huán)結(jié)構(gòu)固定次數(shù)的循環(huán)結(jié)構(gòu)n格式:格式:FOR =TO STEP LOOP EXIT ENDFOR/NEXT 注釋注釋n功能:按照設(shè)置好的循環(huán)變量參數(shù),執(zhí)行固定次數(shù)功能:按照設(shè)置好的循

24、環(huán)變量參數(shù),執(zhí)行固定次數(shù)的循環(huán)體的操作。的循環(huán)體的操作。n【例】【例】 用下列級數(shù)的前用下列級數(shù)的前21項之和計算自然項之和計算自然對數(shù)之底對數(shù)之底e的近似值。的近似值。n解:設(shè)內(nèi)存變量解:設(shè)內(nèi)存變量E寄放級數(shù)各項累加和;內(nèi)寄放級數(shù)各項累加和;內(nèi)存變量存變量T依次寄放依次寄放120的階乘積;內(nèi)存變量的階乘積;內(nèi)存變量X為循環(huán)控制變量,根據(jù)題意其初值、終值為循環(huán)控制變量,根據(jù)題意其初值、終值和步長分別設(shè)置為和步長分別設(shè)置為1,20和和1。該程序清單如下:該程序清單如下:*LX10.PRGSET TALK OFFSTORE 1 TO E,TFOR X=1 TO 20 T=T*X E=E+1/TEN

25、DFOR? 該級數(shù)前該級數(shù)前21項之和是:項之和是:+STR(E,7,5)SET TALK ONRETURN本程序的執(zhí)行情況是:本程序的執(zhí)行情況是:DO LX10該級數(shù)前該級數(shù)前21項之和是:項之和是:2.71828返回本節(jié)返回本節(jié)5.5.3 表掃描循環(huán)結(jié)構(gòu)表掃描循環(huán)結(jié)構(gòu)n格式:格式:SCAN FOR WHILE LOOP EXIT ENDSCAN 注釋注釋 n功能:在當(dāng)前表中從首記錄開始自動、逐個移動記功能:在當(dāng)前表中從首記錄開始自動、逐個移動記錄指針掃描全部記錄,對于符合條件的記錄執(zhí)行循錄指針掃描全部記錄,對于符合條件的記錄執(zhí)行循環(huán)體規(guī)定的操作。環(huán)體規(guī)定的操作。n說明:說明: 在循環(huán)起始語

26、句在循環(huán)起始語句SCAN中,中,子句指明了掃子句指明了掃描記錄的范圍,其默認值為描記錄的范圍,其默認值為ALL;FOR子句說明只子句說明只對使對使的值為真的記錄進行相應(yīng)操作的值為真的記錄進行相應(yīng)操作;WHILE子句則指定只對使子句則指定只對使的值為的值為真的記錄進行相應(yīng)操作,直至使其值為假的記錄為真的記錄進行相應(yīng)操作,直至使其值為假的記錄為止,即不再執(zhí)行本程序。止,即不再執(zhí)行本程序。 循環(huán)終端語句循環(huán)終端語句ENDSCAN標明了循環(huán)程序段的結(jié)束標明了循環(huán)程序段的結(jié)束,它必須與,它必須與SCAN語句成對出現(xiàn)。語句成對出現(xiàn)。 循環(huán)體中的語句序列說明了在掃描記錄時,對于符循環(huán)體中的語句序列說明了在掃

27、描記錄時,對于符合條件的記錄所進行的功能操作。合條件的記錄所進行的功能操作。 n【例】【例】 統(tǒng)計表文件統(tǒng)計表文件“學(xué)生表學(xué)生表.DBF”中各個班級的人中各個班級的人數(shù)。數(shù)。該程序的清單如下:該程序的清單如下:*LX11.PRGSET TALK OFFSTORE 0 TO A,BCLEARUSE 學(xué)生表學(xué)生表.DBFSCANDO CASE CASE 班級班級=注冊會計師注冊會計師 A=A+1 CASE 班級班級=會計學(xué)會計學(xué) B=B+1 ENDCASEENDSCAN? 注冊會計師班的人數(shù)為:注冊會計師班的人數(shù)為:+STR(A,3)? 會計學(xué)班的人數(shù)為:會計學(xué)班的人數(shù)為:+STR(B,3)USE

28、SET TALK ON返回本節(jié)返回本節(jié)5.5.4 多重循環(huán)結(jié)構(gòu)多重循環(huán)結(jié)構(gòu)n以當(dāng)型循環(huán)結(jié)構(gòu)為例,其多重循環(huán)結(jié)構(gòu)一般格式如下:以當(dāng)型循環(huán)結(jié)構(gòu)為例,其多重循環(huán)結(jié)構(gòu)一般格式如下:DO WHILE DO WHILE DO WHILE ENDDO3 ENDDO2 ENDDO1 n說明:說明: 在在Visual FoxPro系統(tǒng)中,循環(huán)嵌套的層次系統(tǒng)中,循環(huán)嵌套的層次不限,但內(nèi)層循環(huán)的所有語句必須完全嵌套不限,但內(nèi)層循環(huán)的所有語句必須完全嵌套在外層循環(huán)之中。否則就會出現(xiàn)循環(huán)的交叉在外層循環(huán)之中。否則就會出現(xiàn)循環(huán)的交叉,造成邏輯上的混亂。,造成邏輯上的混亂。 循環(huán)結(jié)構(gòu)與分支結(jié)構(gòu)允許混合嵌套使用,循環(huán)結(jié)構(gòu)與分

29、支結(jié)構(gòu)允許混合嵌套使用,但不允許交叉。其入口語句與其相應(yīng)的出口但不允許交叉。其入口語句與其相應(yīng)的出口語句必須成對出現(xiàn)。語句必須成對出現(xiàn)。n【例】【例】 試用固定次數(shù)循環(huán)的嵌套格式編寫一個打印試用固定次數(shù)循環(huán)的嵌套格式編寫一個打印九九乘法口訣表的程序。九九乘法口訣表的程序。設(shè)置內(nèi)存變量設(shè)置內(nèi)存變量X,Y和和Z分別寄存乘法口訣中的乘數(shù)、被乘數(shù)和分別寄存乘法口訣中的乘數(shù)、被乘數(shù)和積。該程序清單如下:積。該程序清單如下:*LX12.PRGSET TALK OFFFOR Y=1 TO 9 FOR X=1 TO 9 Z=X*Y ?STR(Y,1)+ *+STR(X,1)+ =+STR(Z,2)+ ENDF

30、OR X ?ENDFOR YSET TALK ON該程序運行結(jié)果為:該程序運行結(jié)果為:1*1=1 1*2=2 1*3=3 1*9=92*1=2 2*9=18 9*1=9 9*9=81返回本節(jié)返回本節(jié)5.6 過程結(jié)構(gòu)程序設(shè)計過程結(jié)構(gòu)程序設(shè)計n5.6.1 過程的建立與調(diào)用過程的建立與調(diào)用n5.6.2 過程文件過程文件n5.6.3 內(nèi)存變量作用域內(nèi)存變量作用域n5.6.4 過程的帶參調(diào)用過程的帶參調(diào)用返回首頁返回首頁5.6.1 過程的建立與調(diào)用過程的建立與調(diào)用n在在Visual FoxPro系統(tǒng)中,過程是一個具有特系統(tǒng)中,過程是一個具有特定功能的命令文件,享有與主程序相同的待定功能的命令文件,享有與

31、主程序相同的待遇:它可以用遇:它可以用MODIFY COMMAND 命令建命令建立和修改,用立和修改,用DO 命令運行,具有相同的擴命令運行,具有相同的擴展名展名.PRG,并以同樣的文件格式存儲在磁并以同樣的文件格式存儲在磁盤上。所不同的是在每個過程中至少要有一盤上。所不同的是在每個過程中至少要有一個返回語句。個返回語句。n返回語句的格式為:返回語句的格式為: RETURN TO MASTERn功能:結(jié)束過程的運行,將程序的控制權(quán)交功能:結(jié)束過程的運行,將程序的控制權(quán)交還到調(diào)用它的上一級或最高一級主控程序。還到調(diào)用它的上一級或最高一級主控程序。 DOIN WITHn功能:調(diào)用功能:調(diào)用所指定的

32、過程。所指定的過程。圖5-12 過程調(diào)用嵌套示意圖n【例】【例】 試編寫一程序求解試編寫一程序求解W=X!+Y!+Z!(其中:其中:X,Y,Z的值均為一位正整數(shù))。的值均為一位正整數(shù))。主程序主程序過程過程*MAIN_1.PRG*SUB_1.PRGSET TALK OFFT=1INPUT X= TO XFOR I=1 TO NINPUT Y= TO Y T=T*IINPUT Z= TO ZENDFORN=X RETURNDO SUB_1X=TN=YDO SUB_1Y=TN=ZDOU SUB_1W=X+Y+T? W=+STR(W,7)SET TALK ON程序執(zhí)行結(jié)果如下:程序執(zhí)行結(jié)果如下:DO

33、 MAIN_1X=3Y=5Z=9W=363006返回本節(jié)返回本節(jié)5.6.2 過程文件過程文件n所謂過程文件就是過程的集合。所謂過程文件就是過程的集合。Visual FoxPro在一在一個過程文件中包含過程個數(shù)未作限制,其中每個過個過程文件中包含過程個數(shù)未作限制,其中每個過程用程用PROCEDURE 給以標識。當(dāng)某一程給以標識。當(dāng)某一程序需要調(diào)用過程文件中的過程時,只需一次性地打序需要調(diào)用過程文件中的過程時,只需一次性地打開該過程文件,然后按照過程名稱調(diào)用其中的某個開該過程文件,然后按照過程名稱調(diào)用其中的某個過程。從而大大減少了訪問磁盤的次數(shù),提高了調(diào)過程。從而大大減少了訪問磁盤的次數(shù),提高了調(diào)

34、用速度。用速度。n過程文件中的過程又稱作內(nèi)部過程,不能作為一個過程文件中的過程又稱作內(nèi)部過程,不能作為一個命令文件而單獨存盤或運行。它的入口語句必須是命令文件而單獨存盤或運行。它的入口語句必須是帶有其名稱的標識語句:帶有其名稱的標識語句:PROCEDURE 。而獨立存儲在磁盤上的過程文件則同其他文件一。而獨立存儲在磁盤上的過程文件則同其他文件一樣,可以單獨存盤和運行,稱作外部過程。樣,可以單獨存盤和運行,稱作外部過程。n過程文件的一般結(jié)構(gòu)形式如下:過程文件的一般結(jié)構(gòu)形式如下: PROCEDURERETURNPROCEDURE RETURN PROCEDURE RETURNn過程文件的建立和修改

35、命令同命令文件。其過程文件的建立和修改命令同命令文件。其格式為:格式為:MODIFY COMMAND nVisual FoxPro系統(tǒng)規(guī)定,在調(diào)用過程文件中的系統(tǒng)規(guī)定,在調(diào)用過程文件中的過 程 時 , 必 須 在 調(diào) 用 程 序 中 先 用過 程 時 , 必 須 在 調(diào) 用 程 序 中 先 用S E T PROCEDURE TO命令打開過程文件。命令打開過程文件。n格式:格式:SET PROCEDURE TO n功能:關(guān)閉已經(jīng)打開的過程文件并打開功能:關(guān)閉已經(jīng)打開的過程文件并打開所指定的文件,以備調(diào)用其中的所指定的文件,以備調(diào)用其中的過程。過程。n【例例】 試求試求3100之間的所有素數(shù)并顯示

36、。之間的所有素數(shù)并顯示。 主程序主程序 過程文件過程文件*MAIN_2.PRG *SUB_2.PRGSET TALK OFFPROCEDURE JCSET PROCEDURE TO SUB_2FOR M=3 TO 100 STEP 2RETURNI=3PROCEDURE QSN=INT(SQRT(M)FOR I=3 TO N STEP 2DO QS IF INT(M/I)=M/IENDFOR RETURNSET PROCEDURE ENDIFENDFOR?MRETURN運行該程序:運行該程序:DO MAIN_2.PRG3 5 7 11 13 17 19 2329 31 37 41 43 47

37、53 5961 67 71 73 79 83 89 97 返回本節(jié)返回本節(jié)5.6.3 內(nèi)存變量作用域內(nèi)存變量作用域1全局變量全局變量 n全局變量是指在程序的任何嵌套中及在程序執(zhí)行期全局變量是指在程序的任何嵌套中及在程序執(zhí)行期間始終有效的變量。它的全局屬性必須用間始終有效的變量。它的全局屬性必須用PUBLIC命令予以定義。程序執(zhí)行完畢,它們不會在內(nèi)存中命令予以定義。程序執(zhí)行完畢,它們不會在內(nèi)存中自動釋放,必須使用自動釋放,必須使用RELEASE命令予以清除。命令予以清除。n全局變量的定義格式如下:全局變量的定義格式如下:格式一:格式一:PUBLIC 功能:將功能:將中指定的內(nèi)存變量定義為全局中指

38、定的內(nèi)存變量定義為全局變量。變量。格式二:格式二:PUBLIC (,)(,)功能:定義數(shù)組變量并將其元素定義為全局變量。功能:定義數(shù)組變量并將其元素定義為全局變量。n【例例】 在過程調(diào)用中,運用全局變量傳遞數(shù)據(jù)。在過程調(diào)用中,運用全局變量傳遞數(shù)據(jù)。 主程序主程序 過程過程*MAIN_3.PRG *SUB_3.PRGSET TALK OFF PUBLIC B,CCLEAR ALL B=2PUBLIC A D=3A=1 ?在過程中:在過程中:A,B,C,D=,A,B,C,DDO SUB_3 RETURN? 返回主程序:返回主程序:A,B,C,D=,A,B,C,DSET TALK ON程序執(zhí)行情況如

39、下:程序執(zhí)行情況如下:DO MAIN_3在過程中:在過程中:A,B,C,D=1 2 .F. 3返回主程序:返回主程序:A,B,C,D=1 2 .F.變量沒找到變量沒找到 2局部變量局部變量n所謂局部變量是指未經(jīng)所謂局部變量是指未經(jīng)PUBLIC命令定義且命令定義且只在建立它的過程及其下級過程中有效的內(nèi)只在建立它的過程及其下級過程中有效的內(nèi)存變量。建立局部變量的程序執(zhí)行完畢,局存變量。建立局部變量的程序執(zhí)行完畢,局部變量的值將被自動清除。部變量的值將被自動清除。 n格式:格式:PRIVATE ALL LIKE/EXCEPT n功能:定義選定的內(nèi)存變量為局部變量。功能:定義選定的內(nèi)存變量為局部變量。

40、返回本節(jié)返回本節(jié)5.6.4 過程的帶參調(diào)用過程的帶參調(diào)用1帶參過程調(diào)用命令帶參過程調(diào)用命令 n格式:格式:DO WITH n功能:調(diào)用一般過程或過程文件中的過程,并為被功能:調(diào)用一般過程或過程文件中的過程,并為被調(diào)用過程提供參數(shù)。調(diào)用過程提供參數(shù)。n說明:說明: 該語句只能在調(diào)用過程的程序中使用,被調(diào)用的過該語句只能在調(diào)用過程的程序中使用,被調(diào)用的過程名中的擴展名可以省略。程名中的擴展名可以省略。 又稱實參表,其中的參數(shù)可以是常量、已又稱實參表,其中的參數(shù)可以是常量、已賦值變量或數(shù)值表達式,參數(shù)之間應(yīng)用逗號分開。賦值變量或數(shù)值表達式,參數(shù)之間應(yīng)用逗號分開。2接收參數(shù)命令接收參數(shù)命令 n格式:格

41、式:PARAMETERS n功能:接收調(diào)用過程的命令中傳遞過來的參數(shù)。功能:接收調(diào)用過程的命令中傳遞過來的參數(shù)。n說明:說明: 該命令必須位于被調(diào)用過程第該命令必須位于被調(diào)用過程第1條可執(zhí)行語句處。條可執(zhí)行語句處。 又稱形參表,其中的參數(shù)一般為內(nèi)存變量又稱形參表,其中的參數(shù)一般為內(nèi)存變量。形參與實參的個數(shù)應(yīng)相等、數(shù)據(jù)類型應(yīng)按照順序。形參與實參的個數(shù)應(yīng)相等、數(shù)據(jù)類型應(yīng)按照順序?qū)?yīng)相同。對應(yīng)相同。n【例例】 利用帶參調(diào)用方法計算梯形面積。利用帶參調(diào)用方法計算梯形面積。主程序主程序 過程過程*MAIN_5.PRG *SUB_5.PRGSET TALK OFF PARAMETERS P,Q,TINPU

42、T 輸入梯形上底邊長:輸入梯形上底邊長: TO A T=P*Q/2INPUT 輸入梯形下底邊長:輸入梯形下底邊長: TO B RETURNINPUT 輸入梯形的高:輸入梯形的高: TO HSTORE 0 TO SDO SUB_5.PRG WITH A+B,H,S? 所求梯形面積為:所求梯形面積為:,SSET TALK ONRETURN程序執(zhí)行情況如下:程序執(zhí)行情況如下:DO MAIN_5輸入梯形上底邊長:輸入梯形上底邊長:40輸入梯形下底邊長:輸入梯形下底邊長:60輸入梯形的高:輸入梯形的高:20所求梯形面積為:所求梯形面積為:1000返回本節(jié)返回本節(jié)5.7 數(shù)組變量的應(yīng)用數(shù)組變量的應(yīng)用n5.

43、7.1 數(shù)組變量的建立數(shù)組變量的建立n5.7.2 數(shù)組變量的使用數(shù)組變量的使用n5.7.3 數(shù)組元素的賦值、運算與輸出數(shù)組元素的賦值、運算與輸出n5.7.4 應(yīng)用示例應(yīng)用示例返回首頁返回首頁5.7.1 數(shù)組變量的建立數(shù)組變量的建立n數(shù)組名的命名規(guī)則與普通內(nèi)存變量完全一樣數(shù)組名的命名規(guī)則與普通內(nèi)存變量完全一樣,可含有字母、漢字、數(shù)字和下劃線,但須,可含有字母、漢字、數(shù)字和下劃線,但須以字母或漢字開頭。以字母或漢字開頭。n此外,與普通內(nèi)存變量一樣,內(nèi)存數(shù)組變量此外,與普通內(nèi)存變量一樣,內(nèi)存數(shù)組變量也有局部變量與全局變量之分。用前面介紹也有局部變量與全局變量之分。用前面介紹的的PUBLIC命令可建立

44、全局性的內(nèi)存數(shù)組變命令可建立全局性的內(nèi)存數(shù)組變量,即:量,即:n格式:格式:PUBLIC ( ,)返回本節(jié)返回本節(jié)5.7.2 數(shù)組變量的使用數(shù)組變量的使用n數(shù)組變量建立后,數(shù)組中的每一個元素只是一個帶數(shù)組變量建立后,數(shù)組中的每一個元素只是一個帶下標的內(nèi)存變量而已,因而其性質(zhì)及使用方法與普下標的內(nèi)存變量而已,因而其性質(zhì)及使用方法與普通內(nèi)存變量是一樣的,即:通內(nèi)存變量是一樣的,即:n可用可用STORE命令或其他各種能對內(nèi)存變量賦值的命命令或其他各種能對內(nèi)存變量賦值的命令對某個數(shù)組元素賦值。令對某個數(shù)組元素賦值。n可用可用LIST/DISPLAY MEMORY,RELEASE,CLEAR MEMOR

45、Y等命令查看、釋放或清除已建立等命令查看、釋放或清除已建立的數(shù)組變量。的數(shù)組變量。n可用可用SAVE命令將數(shù)組存入內(nèi)存變量文件命令將數(shù)組存入內(nèi)存變量文件(.MEM),用用RESTORE命令將其恢復(fù)到內(nèi)存中來。命令將其恢復(fù)到內(nèi)存中來。n例例 數(shù)組使用示例。數(shù)組使用示例。CLEAR MEMORYDIMENSION AA(2,3)LIST MEMORY LIKE AA結(jié)果顯示:結(jié)果顯示:AA Pub A(1,1) L.F.(1,2) L.F.(1,3) L.F.(2,1) L.F.(2,2) L.F.(2,3) L.F.如前所述,如前所述,Visual FoxPro的數(shù)組元素是以行排列的,這可從以下

46、的例子中看出:的數(shù)組元素是以行排列的,這可從以下的例子中看出:DIMENSION Y(2,3)Y(1,1)= 20031102Y(2)= 劉利軍劉利軍STORE 女女 TO Y(1,3)Y(5)= 會計電算化會計電算化?Y(1),Y(1,2),Y(3),Y(4),Y(2,2)結(jié)果顯示:結(jié)果顯示:20031102 劉利軍劉利軍 女女 .F. 會計電算化會計電算化返回本節(jié)返回本節(jié)5.7.3 數(shù)組元素的賦值、運算與輸出數(shù)組元素的賦值、運算與輸出1一維數(shù)組一維數(shù)組 n由只有一個下標的一批變量組成的數(shù)組叫做由只有一個下標的一批變量組成的數(shù)組叫做一維數(shù)組,其數(shù)組元素叫做單下標變量。數(shù)一維數(shù)組,其數(shù)組元素叫

47、做單下標變量。數(shù)組元素的下標可以是數(shù)值型常量,也可以是組元素的下標可以是數(shù)值型常量,也可以是已賦值的簡單變量、下標變量及數(shù)值型表達已賦值的簡單變量、下標變量及數(shù)值型表達式,但其值必須是正整數(shù),若為負數(shù)時,系式,但其值必須是正整數(shù),若為負數(shù)時,系統(tǒng)自動給出錯誤信息;若含有小數(shù)時,系統(tǒng)統(tǒng)自動給出錯誤信息;若含有小數(shù)時,系統(tǒng)將自動對其取整。將自動對其取整。 2二維數(shù)組二維數(shù)組n二維數(shù)組元素即雙下標變量的賦值是通過雙二維數(shù)組元素即雙下標變量的賦值是通過雙重循環(huán)語句中的內(nèi)循環(huán)體內(nèi)的賦值語句(重循環(huán)語句中的內(nèi)循環(huán)體內(nèi)的賦值語句(=)或鍵入表達式語句()或鍵入表達式語句(INPUT)來完成的。來完成的。n為

48、了說明雙下標變量的命名、賦值、運算和為了說明雙下標變量的命名、賦值、運算和輸出等處理情況,通過表輸出等處理情況,通過表5.4予以說明。予以說明。 表5.4 銷售情況統(tǒng)計表 n上述數(shù)組中各個元素按行賦值的程序段如下:上述數(shù)組中各個元素按行賦值的程序段如下: FOR I=1 TO 4 FOR J=1 TO 5 INPUT TO B(I,J) NEXT JNEXT I在執(zhí)行這段程序時,由鍵盤輸入的數(shù)據(jù)依次是:在執(zhí)行這段程序時,由鍵盤輸入的數(shù)據(jù)依次是:13,27,34,36,0;10,11,13,16,0;17,22,33,54,0;0,0,0,0,0。返回本節(jié)返回本節(jié)5.7.4 應(yīng)用示例應(yīng)用示例n已

49、知某公司下屬門市部的代號和利潤值。試編寫一已知某公司下屬門市部的代號和利潤值。試編寫一程序,按照利潤值由大到小的順序排列名次,并依程序,按照利潤值由大到小的順序排列名次,并依次輸出各門市部的名次、代號和利潤值。次輸出各門市部的名次、代號和利潤值。n解:排序是數(shù)據(jù)處理中的一項重要內(nèi)容。排序方法解:排序是數(shù)據(jù)處理中的一項重要內(nèi)容。排序方法有多種,本例中采用的是比較交換法。有多種,本例中采用的是比較交換法。n程序中用程序中用N數(shù)組存放門市部代號,用數(shù)組存放門市部代號,用L數(shù)組存放利潤數(shù)組存放利潤額,用簡單變量額,用簡單變量B作為過渡存儲單元。其程序清單作為過渡存儲單元。其程序清單如下:如下: *LX

50、13.PRGSET TALK OFFDIMENSION N(10),L(10)FOR I=1 TO 10 INPUT 代號代號 TO N(I) INPUT 利潤額利潤額 TO L(I)NEXT IFOR I=1 TO 9 FOR J=I+1 TO 10IF L(I)L(J) B=L(I) L(I)=L(J)L(J)=B B=N(I) N(I)=N(J) N(J)=B ENDIF NEXT JNEXT I? 名次名次,代號代號,利潤額利潤額FOR I=1 TO 10 ?I,N(I),L(I)NEXT ISET TALK ON返回本節(jié)返回本節(jié)5.8 面向過程程序設(shè)計舉例面向過程程序設(shè)計舉例n為了說明面向過程程序設(shè)計的方法,針對職為了說明面向過程程序設(shè)計的方法,針對職工檔案數(shù)據(jù)表文件(工檔案數(shù)據(jù)表文件(ZGDA.DBF)編寫一個編寫一個簡單的檔案管理應(yīng)用程序。設(shè)該程序在主控簡單的檔

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論