VFP數(shù)據(jù)庫系統(tǒng)第9章_第1頁
VFP數(shù)據(jù)庫系統(tǒng)第9章_第2頁
VFP數(shù)據(jù)庫系統(tǒng)第9章_第3頁
VFP數(shù)據(jù)庫系統(tǒng)第9章_第4頁
VFP數(shù)據(jù)庫系統(tǒng)第9章_第5頁
已閱讀5頁,還剩55頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第九章第九章 程序設(shè)計程序設(shè)計 結(jié)構(gòu)化程序設(shè)計功能模塊(即過程、自定義函數(shù))編制各個功能模塊,再用主程序?qū)⑺鼈兇饋韺?yīng)用程序分解成若干功能模塊,通過各模塊的相互調(diào)用來完成整個執(zhí)行過程,是過程驅(qū)動的。面向?qū)ο蟪绦蛟O(shè)計類、對象、屬性、事件、方法設(shè)計類、子類、對象(設(shè)計外觀、設(shè)置屬性、為事件編寫方法程序)將應(yīng)用程序分解成具有特定屬性的對象,通過調(diào)用各對象的不同方法來完成相關(guān)事件,是事件驅(qū)動的 。 第九章第九章 程序設(shè)計程序設(shè)計9.1 程序的建立和執(zhí)行程序的建立和執(zhí)行9.2 程序中的常用語句程序中的常用語句9.3 順序結(jié)構(gòu)程序設(shè)計順序結(jié)構(gòu)程序設(shè)計9.4 選擇結(jié)構(gòu)程序設(shè)計選擇結(jié)構(gòu)程序設(shè)計9.5 循環(huán)結(jié)

2、構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計 9.6 自定義函數(shù)、過程及其調(diào)用自定義函數(shù)、過程及其調(diào)用9.7 程序的調(diào)試程序的調(diào)試9.8 習(xí)題習(xí)題99.1 程序的建立和執(zhí)行程序的建立和執(zhí)行9.1.1. 基本概念程 序:為解決某一問題而設(shè)計的一系列指令。主程序:通常被用戶直接執(zhí)行的程序。子程序:在程序中被調(diào)用的程序。源程序:由人用源語言編寫的計算機(jī)程序,必須翻譯成機(jī)器語言后才能被執(zhí)行。目標(biāo)程序:是源程序經(jīng)過編譯后所產(chǎn)生的機(jī)器語言程序??蓤?zhí)行程序:源程序被編譯后產(chǎn)生的可被機(jī)器直接執(zhí)行的程序,具有 .EXE 擴(kuò)展名。在VFP中是指由項目管理器連編生成的、可脫離VFP環(huán)境運(yùn)行的程序。應(yīng)用程序: 指為完成專門工作而設(shè)計的

3、一組相互聯(lián)系的例行程序和子程序。在VFP中是指一組 Visual FoxPro 程序、表單、菜單和其他文件經(jīng)項目管理器連編后形成的單個程序,不能脫離VFP環(huán)境運(yùn)行,擴(kuò)展名為.APP。例行程序: 按某種順序排列的、使計算機(jī)能執(zhí)行某種任務(wù)的指令集合,可以是一種專用的程序或作為程序的一部分。它可由若干個子程序組成。 9.1 程序的建立和執(zhí)行程序的建立和執(zhí)行9.1.2 程序的建立和執(zhí)行此前我們學(xué)習(xí)的命令,都是在交互狀態(tài)下,輸入一條命令即回車,馬上即可見到結(jié)果。但這種工作方式不能完全滿足我們的工作需要,有時,我們需要系統(tǒng)能自動、批量地完成一系列命令。在vfp中,這一功能可通過程序文件來完成。一、程序文件

4、的建立:方式一:(1) 在項目管理器中依次展開“全部”“代碼”,選中“程序”,單擊右側(cè)的“新建”按鈕。如圖9-1所示。圖9-1程序文件的建立圖9-1程序文件的建立(2) 在彈出的編輯窗口中輸入代碼,按ctrl+w保存,在“另存為”對話框中選保存位置,并輸入文件名9.1 程序的建立和執(zhí)行程序的建立和執(zhí)行9.1.2 程序的建立和執(zhí)行方式二: (1).使用命令,格式:modify command 路徑文件名 (2).程序文件的執(zhí)行:在命令窗口輸入do 文件名,回車。三.說明:程序文件的擴(kuò)展名為.prg,使用命令創(chuàng)建和運(yùn)行程序文件時,使用文件主名即可,擴(kuò)展名系統(tǒng)自動會加上。四.使用命令編制一個程序文件

5、并運(yùn)行它 1.輸入命令modify command F:myvfpabc,彈出編輯窗口,如圖9-2所示。圖9-2使用命令編制程序文件 2.在編輯窗口中輸入兩條命令,按ctrl+w保存 圖9-2使用命令編制程序件 3.在命令窗口輸入do abc命令運(yùn)行程序文件abc.prg,會出現(xiàn)一個對話框,我們點了對話框中的“確定”后,系統(tǒng)就自動退出了,為什么會這樣呢?程序文件執(zhí)行時,會批量、依次執(zhí)行文件中的命令.執(zhí)行第1個消息框函數(shù),程序進(jìn)入暫停,等待用戶選擇。我們單擊了“確定”按鈕后,程序繼續(xù)執(zhí)行下一條命令“quit”,退出系統(tǒng)vfp支持3種基本程序控制構(gòu)造:順序結(jié)構(gòu),選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。后面的章節(jié)將對其

6、分別介紹。9.2 程序中的常用語句程序中的常用語句一.屏幕輸出語句:格式:?|?表達(dá)式 功能:在屏幕上輸出表達(dá)式的內(nèi)容。1個問號為換行輸出,2個問號為不換行輸出【例9.1】編制1個命令文件text.prg,保存到f:myvfp中,統(tǒng)計“教師工資表”中的獎金和工資總額。程序文件內(nèi)容:use 教師工資表count all to msum all 工資 to n?“獎金為:”,m?“工資總額為:”,n運(yùn)行結(jié)果如圖9-3所示。圖9-3教師獎金工資統(tǒng)計結(jié)果9.2 程序中的常用語句程序中的常用語句二.注釋語句: 格式:&注釋內(nèi)容 功能:為程序中的語句作注釋,注釋內(nèi)容不會執(zhí)行。 三.輸入字符串語句:

7、 格式:accept 字符串 to 內(nèi)存變量 功能:執(zhí)行該語句時,暫停程序的運(yùn)行,在屏幕上顯示“字符串”的內(nèi)容作為提示信息,等待用戶通過鍵盤輸入數(shù)據(jù);輸入數(shù)據(jù)后回車,輸入的內(nèi)容保存到指定的內(nèi)存變量中,同時,程序繼續(xù)向下執(zhí)行?!纠?.2】:編寫命令文件test.prg,輸入1個人名,在“學(xué)生情況表”中查詢該學(xué)生的基本信息。程序文件內(nèi)容:use 學(xué)生情況表accept “請輸入待查學(xué)生姓名:” to namedisplay 學(xué)號,姓名,性別 for 姓名=nameusereturn &該語句的功能是返回調(diào)用處運(yùn)行結(jié)果如圖9-4所示。 圖9-4查詢學(xué)生的基本信息顯示9.2 程序中的常用語句程

8、序中的常用語句四、輸入表達(dá)式語句: 格式:input 表達(dá)式 to 內(nèi)存變量 說明: (1).該命令功能比accept強(qiáng),accept只能輸入字符型數(shù)據(jù);而input可輸入字符型、數(shù)值型、邏輯型和日期型。 (2).使用input時,輸入字符型數(shù)據(jù)時,必須加雙引號等定界符;輸入邏輯型數(shù)據(jù)時,要用圓點定界符(如.T.);輸入日期型數(shù)據(jù)要用轉(zhuǎn)換函數(shù),如ctod(“11/15/2005”)?!纠?.3】:編寫程序文件test1.prg,輸入1個工資,查詢工資為此數(shù)值的有多少人。程序文件內(nèi)容:use 教師工資表input “請輸入待查工資:”to gzlist 教師編號,工資 for 工資=gzuser

9、eturn運(yùn)行結(jié)果如圖9-5所示 圖9-5工資查詢顯示9.2 程序中的常用語句程序中的常用語句五.清屏語句: 格式:clear 功能:清除主屏幕上的顯示信息。六.交互狀態(tài)控制: 格式:set talk off/on 說明:該命令規(guī)定是否將命令執(zhí)行結(jié)果顯示在屏幕上。默認(rèn)為on,此時,每執(zhí)行完1條命令,結(jié)果即顯示在屏幕上;設(shè)置為off時,不顯示執(zhí)行結(jié)果。一般,我們在程序文件的開頭都加上該語句,抑制顯示中間結(jié)果。七.顯示提示信息: 格式:wait window 提示信息字符串 at 行,列 timeout 秒數(shù) 功能:在屏幕的指定位置出現(xiàn)提示窗口。例:在命令窗口輸入如下命令回車:wait windo

10、w “請等待”AT SROW()/2, (SCOLS()-LEN(M)/2在屏幕中央出現(xiàn)提示窗口,利用wait clear命令可將該窗口消除。說明:“timeout 秒數(shù)”用于規(guī)定延時秒數(shù),比如,我們輸入wait window “請等待”AT SROW()/2, (SCOLS()-LEN(n)/2 timeout 3則提示窗口顯示3秒后,自動關(guān)閉。八.返回語句: 格式:return 功能:返回調(diào)用處或命令窗口。該語句可省略,因為在每個程序執(zhí)行的最后,系統(tǒng)都會自動執(zhí)行1個return語句。9.3 順序結(jié)構(gòu)程序設(shè)計順序結(jié)構(gòu)程序設(shè)計在順序結(jié)構(gòu)中,各種操作塊按照出現(xiàn)的先后次序依次執(zhí)行。9.3.1 基本

11、語句 1、賦值語句在程序中若要使用(引用)變量,必須在使用(引用)前為變量設(shè)定一個初值,或者有時要改變它的現(xiàn)行值,這都需要給變量賦值。一般格式是:STORE TO 或=說明: (1)表達(dá)式可以是算術(shù)表達(dá)式、字符串表達(dá)式、日期表達(dá)式、關(guān)系表達(dá)式或邏輯表達(dá)式。 (2)STORE可以給多個變量賦同一個值,=一次只給一個變量賦值。例如:STORE 5 TO X,Y,ZA=10 (3)內(nèi)存變量的類型由表達(dá)式的類型決定。 (4)賦值號(=)不同于數(shù)學(xué)上的等號,A=5應(yīng)讀作“將數(shù)值5賦值給變量A”或“使變量A的值等于5”,下面的語句作用不同:x=yy=x(5)z=x+y 不能寫成 x+y=z,賦值號左邊只能

12、是變量,不能是表達(dá)式。 2、程序的注釋 (1)行首注釋NOTE 注釋內(nèi)容 或* 注釋內(nèi)容注釋內(nèi)容可以是任何文字,程序不執(zhí)行以NOTE或*開頭的語句,只起給程序說明的作用。 (2)行尾注釋&注釋內(nèi)容。9.3 順序結(jié)構(gòu)程序設(shè)計順序結(jié)構(gòu)程序設(shè)計3、程序暫停語句WAIT 提示信息 TO WINDOWS AT TIMEOUT n。說明: (1)“提示信息”是指要顯示的自定義信息。若省略,則顯示系統(tǒng)默認(rèn)信息“請按任意鍵繼續(xù).”。 (2)TO 將按下的鍵以字符形式保存到變量中。 (3)WINDOWS AT 行,列指定顯示信息的窗口在屏幕上的位置。若省略AT則在屏幕右上角。 (4)TIMEOUT n

13、指定在自動等待鍵盤或鼠標(biāo)輸入的秒數(shù),必須放在語句最后。在n秒內(nèi)沒有按鍵或按鼠標(biāo),程序繼續(xù)向下執(zhí)行。4、程序結(jié)束語句RELEASE 語句的格式:RELEASE THISFORMRELEASE方法的格式為:THISFORM.RELEASETHISFORMSET.RELEASE作用終止表單運(yùn)行。9.3 順序結(jié)構(gòu)程序設(shè)計順序結(jié)構(gòu)程序設(shè)計9.3.2 程序舉例下面是最簡單的1種程序結(jié)構(gòu)【例9.4】:順序結(jié)構(gòu)例程程序名為test2.prg。程序文件內(nèi)容:set talk offclearinput “請輸入圓的半徑:”to rs=3.1415926*r*r?“圓的面積是:”,sreturn說明:執(zhí)行程序時,

14、屏幕上顯示提示信息:請輸入圓的半徑。當(dāng)用戶鍵入半徑并按回車時,vfp計算出圓的面積并顯示在屏幕上。運(yùn)行情況如圖9-6所示。圖9-6計算圓的面積9.4 選擇結(jié)構(gòu)程序設(shè)計選擇結(jié)構(gòu)程序設(shè)計 在科學(xué)計算中,只有順序結(jié)構(gòu)是不夠的,只有能根據(jù)某個給定條件選擇不同的執(zhí)行流程才能真正體現(xiàn)計算機(jī)的另一大功能邏輯判斷。實際應(yīng)用中選擇結(jié)構(gòu)就是對指定的條件進(jìn)行判斷,如果條件成立,則執(zhí)行指定的語句序列。在VFP中條件語句有二種:1、IFELSEENDIF2、DO CASEENDCASE 這些語句又叫做條件語句。9.4 選擇結(jié)構(gòu)程序設(shè)計選擇結(jié)構(gòu)程序設(shè)計9.4.1、單條件選擇語句IF雙分支結(jié)構(gòu)格式一: IF ENDIF執(zhí)行

15、過程是:如果所給定的條件為真,則執(zhí)行“語句序列”,否則執(zhí)行ENDIF之后的語句。流程圖見圖9-7。 格式二: IF ELSE ENDIF執(zhí)行過程是:如果所給定的條件為真,則執(zhí)行“語句序列1”,否則執(zhí)行“語句序列2”。流程圖見圖9-8。說明:(1)語句序列又可以是IF結(jié)構(gòu),稱為IF語句的嵌套。(2)IF和ENDIF必須成對出現(xiàn)。 圖9-7 單條件選擇結(jié)構(gòu) 圖9-8 單條件選擇結(jié)構(gòu)條件語句序列TF條件A序列B序列TF9.4 選擇結(jié)構(gòu)程序設(shè)計選擇結(jié)構(gòu)程序設(shè)計【例9.5】:設(shè)計1個名為test3.prg的查詢程序,希望當(dāng)待人不存在時有信息提示。程序文件內(nèi)容:clearaccept “請輸入待查人姓名”

16、to xmlocate for 姓名=xmif .not.eof()displayelsemessagebox(“查無此人”)endifuseReturn運(yùn)行結(jié)果如圖9-9所示。 圖9-9無查詢結(jié)果顯示說明:程序執(zhí)行時,執(zhí)行l(wèi)ocate命令時,記錄指針從表的首記錄一直找到最后1條記錄都未發(fā)現(xiàn)該姓名記錄時,記錄指針才最后停在文件尾,此時eof()為真值;相反,若eof()取假值,則表示記錄指針停在待查人的記錄上。即當(dāng).not.eof()為真時,記錄指針停在待查人的記錄上,查到的指定的記錄。也可用found()來代替程序中的.not.eof()。9.4 選擇結(jié)構(gòu)程序設(shè)計選擇結(jié)構(gòu)程序設(shè)計2、IIF函

17、數(shù)IIF函數(shù)可以實現(xiàn)一些簡單的選擇。其語法結(jié)構(gòu)為:IIF(條件,表達(dá)式1,表達(dá)式2)說明:(1)當(dāng)條件為真時,函數(shù)返回表達(dá)式1的值。 (2)當(dāng)條件為假時,函數(shù)返回表達(dá)式2的值。 (3)Y=IIF(條件,表達(dá)式1,表達(dá)式2)相當(dāng)于:IF 條件 Y=表達(dá)式1ELSE Y=表達(dá)式2ENDIF。9.4 選擇結(jié)構(gòu)程序設(shè)計選擇結(jié)構(gòu)程序設(shè)計9.4.2多分支條件選擇語句DO CASE格式:DO CASE CASE 條件1 語句序列1 CASE 條件2 語句序列2 OTHERWISE 語句序列n ENDCASE說明:(1)DO CASE、CASE、OTHERWISE和ENDCASE必須各占一行。DO CASE和

18、ENDCASE必須成對出現(xiàn)。 (2)在執(zhí)行DO CASE語句時,依次判斷各條件是否成立。若條件N成立,就執(zhí)行相應(yīng)的語句序列N,直到遇到下一個CASE或OTHERWISE或ENDCASE。 (3)某一語句序列執(zhí)行后,不再判斷別的條件,直接轉(zhuǎn)向ENDCASE后面的語句。因此,在一個CASE結(jié)構(gòu)中,一次只執(zhí)行一個語句序列。 (4)如果沒有一個條件成立,就執(zhí)行OTHERWISE后面的語句序列,如果沒有OTHERWISE就不作任何操作,就轉(zhuǎn)向ENDCASE后面的語句。9.4 選擇結(jié)構(gòu)程序設(shè)計選擇結(jié)構(gòu)程序設(shè)計【例9.6】:設(shè)計1個程序名為test4.prg,使用do case語句在“學(xué)生情況表”中按學(xué)號或

19、姓名查詢程序文件內(nèi)容:clearuse 學(xué)生情況表wait “請選擇按姓名或按學(xué)號查詢(M/X)” to xzdo casecase xz$“Mm” &此條件為真,說明選擇了M,即按姓名查詢accept “請輸入待查人姓名:” to xmlocate for 姓名=xmcaxe xz$“Xx”accept “請輸入待查學(xué)號:” to xhlocate for 學(xué)號=xhotherwisewait “查詢選擇錯誤!按任意鍵退出!” windendcasedisplayusereturn 運(yùn)行結(jié)果如圖9-10,圖9-11,圖9-12所示9.4 選擇結(jié)構(gòu)程序設(shè)計選擇結(jié)構(gòu)程序設(shè)計圖9-10按姓

20、名查詢結(jié)果顯示圖9-11按學(xué)號查詢結(jié)果顯示圖9-12查詢選擇出錯顯示9.5 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計 前面我們學(xué)習(xí)的順序結(jié)構(gòu)和選擇結(jié)構(gòu)有一個共同點,即程序語句不能重復(fù)執(zhí)行。在編程中常常遇到這樣的情況:某一類問題的計算和處理方法完全一樣,只是要要求重復(fù)計算多次,而每次使用的數(shù)據(jù)都按照一定的規(guī)律改變。程序設(shè)計中的循環(huán)結(jié)構(gòu)(簡稱循環(huán))是指在該程序中,從某處開始有規(guī)律地反復(fù)執(zhí)行某一操作(或程序塊)的現(xiàn)象。被重復(fù)執(zhí)行的的部分稱為循環(huán)體,循環(huán)體的執(zhí)行與否及次數(shù)多少視循環(huán)類型與條件而定。當(dāng)然,無論何種類型的循環(huán),其共同特點是必須確保循環(huán)的重復(fù)執(zhí)行能被終止(無死循環(huán))。按照循環(huán)體執(zhí)行的方式和條件,循環(huán)

21、結(jié)構(gòu)分為當(dāng)型、直到型與步長型三種。由于“直到型”循環(huán)是“當(dāng)型”循環(huán)派生出來的循環(huán)形式,二者可以互換,所以在VFP中只提供了“當(dāng)型”和“步長型”和“表掃描型”三種循環(huán)語句:DO WHILEENDDO(當(dāng)型)、 FOR RNDFOR(步長型)、SCANENDSCAN(表掃描型)。9.5 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計9.5.1當(dāng)型循環(huán)命令DO WHILE格式:DO WHILE 語句序列 EXIT 語句序列 LOOP 語句序列ENDDO說明:(1)可以是條件表達(dá)式或邏輯常量。根據(jù)的邏輯值進(jìn)行判斷,若為真,則執(zhí)行DO WHILE與ENDDO之間的循環(huán)體。若為假,則結(jié)束循環(huán),轉(zhuǎn)去執(zhí)行ENDDO之后的語

22、句。每執(zhí)行一次循環(huán)體,程序自動返回到DO WHILE語句,判斷一次。 (2)EXIT是無條件結(jié)束循環(huán)命令。它使程序跳出循環(huán),轉(zhuǎn)去執(zhí)行ENDDO之后的語句。 (3)LOOP是無條件循環(huán)命令。它將控制直接轉(zhuǎn)回到DO WHILE語句,而不執(zhí)行LOOP和ENDDO之間的語句。 (4)DO WHILE和ENDDO必須各占一行,且必須成對出現(xiàn)。9.5 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計9.5.2步長型循環(huán)命令FOR若事先知道循環(huán)次數(shù),則可以用步長型循環(huán)結(jié)構(gòu)。步長型循環(huán)可以根據(jù)給定的次數(shù)重復(fù)執(zhí)行循環(huán)體。其語法:FOR = TO STEP 語句序列 EXIT 語句序列 LOOP 語句序列 ENDFOR說明:(1

23、)是一個作為計數(shù)器的內(nèi)存變量,在該結(jié)構(gòu)之前可以不存在。是計數(shù)器的初值,是計數(shù)器值的增長或減小量。如果步長值是負(fù)數(shù),則計數(shù)器是減小。如果少略STEP子句,則默認(rèn)步長為1。 (2)其余情況與DO WHILE結(jié)構(gòu)相似。9.5 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計【例9.7】:在屏幕上輸出乘法口訣表程序名為test5.prg程序文件內(nèi)容如下:?“九九乘法表”?for i=1 to 9for j=1 to i?alltrim(str(i)+“*”+alltrim(str(j)+“=”+alltrim(str(i*j)+“ ”next?next運(yùn)行結(jié)果如圖9-13所示 圖9-13輸出乘法口訣表9.5 循環(huán)結(jié)構(gòu)

24、程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計【例9.8】:求1!+2!+3!+20!的值??稍谟嬎惆粹o的Click事件中編寫如下代碼:S=0FOR N=1 TO 20 T=1 FOR M=1 TO N T=T*M ENDFOR S=S+TENDFORTHISFORM.TEXT1.VALUE9.5 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計9.5.3. 表掃描型SCANENDSCAN格式:scan 范圍for 條件語句序列endscan功能: 對表中指定范圍,滿足條件的記錄執(zhí)行循環(huán)體語句,每執(zhí)行一次循環(huán),記錄指針自動移動到下一條記錄。操作表時,使用該語句功能強(qiáng),效率高?!纠?.9】:使用scan語句編程,顯示“教師基本信息表

25、”中的黨員的姓名和職稱。程序名為test6.prg。use 教師基本信息表scan for .not.黨員否display 姓名,職稱endscanusereturn運(yùn)行結(jié)果如圖9-14所示。 圖9-14顯示黨員的姓名和職稱9.6 自定義函數(shù)、過程及其調(diào)用自定義函數(shù)、過程及其調(diào)用9.6.1 自定義函數(shù) 自定義函數(shù)是用戶根據(jù)需要把特定的需重復(fù)調(diào)用的子程序編寫成函數(shù),這有別于VFP的標(biāo)準(zhǔn)函數(shù)。標(biāo)準(zhǔn)函數(shù)是VFP系統(tǒng)自帶的,是開發(fā)VFP系統(tǒng)的設(shè)計人員設(shè)計的常用的某些固定的功能,用戶可以直接調(diào)用。但它們的調(diào)用方法是一樣的,即:函數(shù)名()。 自定義函數(shù)的格式為:FUNCTION PARAMETERS RE

26、TURN 說明: (1)函數(shù)名 指用戶自定義的函數(shù)名,不能與系統(tǒng)函數(shù)名或內(nèi)存變量名相同。 (2)參數(shù)表 是函數(shù)中使用的形式參數(shù)。 (3)語句序列 函數(shù)體語句。自定義函數(shù)可以放到過程文件中存儲,也可以放到調(diào)用程序作為程序的一部分。若使用FUNCTION命令來指出函數(shù)名,表示該函數(shù)包含在調(diào)用程序中;若缺省FUNCTION行,表示該函數(shù)是一個獨(dú)立的文件,函數(shù)名將在建立文件時確定,其擴(kuò)展名仍然為.PRG??墒褂妹頜ODIFY COMMAND 函數(shù)名建立或編輯自定義函數(shù)。自定義函數(shù)與系統(tǒng)函數(shù)的調(diào)用方法相同,其形式為:函數(shù)名參數(shù)表9.6 自定義函數(shù)、過程及其調(diào)用自定義函數(shù)、過程及其調(diào)用9.6.2 過程

27、1. 過程的概念: 在程序設(shè)計時,常遇到這種情況,在同一個程序的不同處,或在不同程序中重復(fù)出現(xiàn)具有相同功能的程序段。如果每次都重復(fù)編寫,將使程序變得十分冗長,而且浪費(fèi)存儲空間。解決這個問題的方法是單獨(dú)設(shè)計這些共用程序段,需要時再調(diào)用。這些共用程序在有些高級語言中稱為子程序,在vfp中稱為過程。調(diào)用過程的程序就稱為主程序或調(diào)用程序。調(diào)用程序與過程之間的關(guān)系是調(diào)用關(guān)系,調(diào)用的特點是:從調(diào)用程序中哪個地方調(diào)用過程,在執(zhí)行完過程后將返回調(diào)用程序調(diào)用處的下一條語句繼續(xù)執(zhí)行。從結(jié)構(gòu)和調(diào)用方法上看,過程分外部過程和內(nèi)部過程。建立外部過程的方法與建立源程序(即程序文件)的方法完全相同,其擴(kuò)展名也是.prg。內(nèi)

28、部過程是指調(diào)用程序尾部所附過程和過程文件中的過程。注意:過程文件現(xiàn)在已很少使用。9.6 自定義函數(shù)、過程及其調(diào)用自定義函數(shù)、過程及其調(diào)用2 內(nèi)部過程的結(jié)構(gòu): 程序尾部所附的過程和過程文件中的過程都屬內(nèi)部過程,其結(jié)構(gòu)如下:PROCEDURE ProcedureNamePARAMETERS ParameterList CommandsRETURNeExpression 說明:ProcedureName 指定要創(chuàng)建的過程名PARAMETERS ParameterList 參數(shù)表,是過程中使用的形式參數(shù),用于接收調(diào)用程序中傳過來的實參表所對應(yīng)的數(shù)據(jù)。Commands 過程體語句。該命令的功能是在程序文

29、件中標(biāo)識一個過程的開始。過程作為程序的一部分時,通常列在程序的末尾。9.6 自定義函數(shù)、過程及其調(diào)用自定義函數(shù)、過程及其調(diào)用3外部過程的結(jié)構(gòu): 一個外部過程就是一個程序,在程序中用DO命令運(yùn)行一個程序,就是過程調(diào)用,又稱外部過程調(diào)用。被調(diào)用的程序必須有一條RETURN語句,以返回調(diào)用它的主程序。DO命令的格式如下:DO ProgramName1|ProcedureNameIN ProgramName2WITH ParameterList說明:ProgramName1 指定要執(zhí)行的程序名ProcedureName 指定要執(zhí)行的過程名IN ProgramName2 執(zhí)行有ProgramName2指

30、定的程序文件中的過程。WITH ParameterList 指定要傳給程序或過程的參數(shù)。ParameterList中的參數(shù)可以是表達(dá)式、變量、字母或數(shù)字、字段或用戶自定義函數(shù)。RETURN命令的格式如下:RETURN eExpression|TO MASTER|TO ProcedureName說明:eExpression 指定返回給調(diào)用程序的表達(dá)式。TO MASTER 將控制返回給最高層的調(diào)用程序。TO ProcedureName 將控制權(quán)返回給指定過程。該命令終止程序、過程或函數(shù)的運(yùn)行,將程序控制權(quán)返回給調(diào)用程序、最高層調(diào)用程序、另一個程序或命令窗口。9.6 自定義函數(shù)、過程及其調(diào)用自定義函

31、數(shù)、過程及其調(diào)用9.6.3 過程的調(diào)用 在vfp中,無論內(nèi)部過程還是外部過程,都可用do命令調(diào)用格式:do 過程名 with 表達(dá)式表列【例9.10】:設(shè)計一個通過調(diào)用內(nèi)部過程計算圓面積的程序。主程序的功能是輸入圓的半徑,并顯示所求得的面積;內(nèi)部過程的功能是計算圓的面積程序名為test7.prg。程序文件內(nèi)容如下:clearinput“請輸入圓的半徑:”to r1s1=0do area with r1,s1?“所求圓的面積=:”?s1returnprocedure area &定義內(nèi)部過程,過程名為areaparameters r,ss=3.1415926*r*rreturn運(yùn)行結(jié)果如

32、圖9-15所示。 圖9-15計算圓的面積9.7 程序的調(diào)試程序的調(diào)試9.7.1 查錯的常用方法。 一、如果在我們程序中有語法性的錯誤,當(dāng)程序運(yùn)行到錯誤的語句時系統(tǒng)就會停下來,并提示我們程序有錯,往往還會說出是什么錯誤,如“命令中含有不能識別的短語或關(guān)鍵字”,并給出選擇“取消”、“掛起”、“忽略”、“幫助”四個選擇如圖9-16所示。圖9-16程序中有語法性錯誤顯示它們的意思分別是:取消中止程序運(yùn)行,回到命令窗口,相當(dāng)于執(zhí)行了cancel命令,在程序中創(chuàng)建的所有變量被釋放(除公共變量),但數(shù)據(jù)庫及數(shù)據(jù)表一般保持當(dāng)時的狀態(tài),您可以用browse命令查看數(shù)據(jù)表的內(nèi)容即記錄指針?biāo)诘奈恢玫鹊?;掛起暫停?/p>

33、序,相當(dāng)于執(zhí)行了suspend命令,這時程序中的所有變量都保持原值,您可以用?命令查看變量的值,當(dāng)然也可以查看數(shù)據(jù)表的情況;忽略忽略所出現(xiàn)的錯誤,即跳過出錯的語句繼續(xù)執(zhí)行后面的語句;幫助顯示有關(guān)出錯的幫助信息,對于錯誤做更詳細(xì)的說明。不過很多時候都沒什么幫助。9.7 程序的調(diào)試程序的調(diào)試 如果這時您一眼就能看出問題出在哪,那么您可以用取消,然后進(jìn)到程序中找出錯誤所在,將其改正。在選擇了取消后,可能這時有表單是打開的,那么用鼠標(biāo)點一下該窗口,然后調(diào)菜單上的文件關(guān)閉。如果菜單是您自己的自定義菜單,用set sysmenu to default回到系統(tǒng)菜單。改完后,再次運(yùn)行程序前,最好將所有的數(shù)據(jù)庫

34、及表關(guān)閉,以免在程序打開一個數(shù)據(jù)表時出現(xiàn)表已打開的錯誤,比較好的辦法是在程序開頭先關(guān)閉所有的數(shù)據(jù)庫及表。關(guān)閉所有數(shù)據(jù)庫的命令是:close databases all,關(guān)閉所有表的命令是:close tables all。 如果您不知道問題出在程序的哪個地方,那么就選擇掛起,系統(tǒng)會彈出一個調(diào)試器窗口顯示出錯的語句,如圖9-16,在跟蹤窗口的黃色箭頭所指的語句就是出錯的語句。這時不要馬上改程序,因為程序還沒有結(jié)束運(yùn)行,如要改程序應(yīng)先終止程序運(yùn)行,按調(diào)試中的終止按鈕 ,然后退出調(diào)試器(菜單上的文件退出),接下來與上面選擇取消后的處理方法相同。 一般不要選擇忽略,因為程序中上下語句都有很緊密的關(guān)系,

35、當(dāng)一條語句出錯后,如果繼續(xù)運(yùn)行,可能會出現(xiàn)很多錯誤,而后面出錯的語句可能并沒有錯,是因為前面錯了才導(dǎo)致后面的語句出錯,如果前面正確,后面也會正確,因此對于初學(xué)者來說,選擇忽略不利于找出錯誤所在。9.7 程序的調(diào)試程序的調(diào)試二、 有些時候,程序中的語句并沒有出錯,但是運(yùn)行的結(jié)果卻不是我們所要的結(jié)果,這往往是因為我們用錯了語句,雖然語句本身是正確的,但用在了不該用的地方、或者該用的地方?jīng)]有用、又或者語句的先后順序錯了等等,都可能導(dǎo)致這種情況。一旦出現(xiàn)這種情況往往比上一種情況麻煩些,不容易一下看出問題出在哪里,那么需要我們仔細(xì)分析程序中的語句,看是否用的對,是否達(dá)到了我們的要求。比如在我們前面九九乘

36、法管理程序中,在程序的開始多了一條“i=1”語句,導(dǎo)致運(yùn)行的結(jié)果出錯。圖9-18程序中用錯了語句 有時光看語句,怎么也看不出問題在哪,這就用采用一些輔助手段,最常用的輔助手段是在可能發(fā)生問題的地方將程序掛起,即在程序中加一句suspend,當(dāng)程序運(yùn)行到這里時將程序掛起,然后在命令窗口中查看各有關(guān)變量的值或數(shù)據(jù)表的情況。另外在程序掛起時我們可以調(diào)出調(diào)試器,看程序執(zhí)行到什么地方。調(diào)的方法是在菜單上的工具調(diào)試器,可以在其中的監(jiān)視窗口查看各表達(dá)式的值,在局部窗口查看各變量的值,而且您可以在窗口中長條文本框(如圖9-19)中輸入一個表達(dá)式或變量,調(diào)試器會顯示出它們的值。9.7 程序的調(diào)試程序的調(diào)試圖9-

37、18程序中語句用錯了圖9-19調(diào)試器中的監(jiān)視窗口如還不能找到問題,按可單步執(zhí)行程序,即按一下運(yùn)行一條語句,這樣可以更有助于找到問題。9.7 程序的調(diào)試程序的調(diào)試9.7.2 常見錯誤 啟動一個表單后,再用代表這個表單的變量去調(diào)用它時卻不行。調(diào)用表單的變量與其它變量一樣,如是在一個子程序中創(chuàng)建的,當(dāng)這個程序運(yùn)行結(jié)束后,這個變量也就釋放了,即這個變量不再存在了,雖然表單還在,故不能用這個變量去調(diào)用該表單了。解決的方法是將其設(shè)為公共變量,或在更高層的程序中創(chuàng)建,還可以在調(diào)用表單命令中加上“l(fā)inked”子句(do .linked)。 常常在表格中或其它地方看不到數(shù)據(jù)表中的記錄。這往往

38、是因為記錄指針到尾部,即EOF()真。 修改記錄時卻修改了另一個記錄。這往往是因為進(jìn)入修改后又做了查詢,查詢后沒有將記錄指針返回到原記錄。 進(jìn)入一個循環(huán)后就死機(jī)了。這是因為沒有設(shè)置跳出循環(huán)的條件,或者條件永遠(yuǎn)不能滿足,比如一個循環(huán)的跳出條件是當(dāng)一個變量的值達(dá)到某一數(shù)值,每循環(huán)一次應(yīng)將該變量加1,但忘了加1的語句,就會造成死循環(huán),因為變量的值永遠(yuǎn)達(dá)不到預(yù)定的數(shù)值。 查詢英文時,明明有的記錄查不到。這可能是大小寫不一樣造成的,比如:locate for name=“crops”,如果數(shù)據(jù)表中的是“CROPS”那么就查不到。解決的辦法:locate for upper(name)=“CROPS”。

39、不管是英文還是中文,還是查不到所要的記錄。這種情況很可能是輸入的查詢值后面有空格,比如上面那個查詢語句,如果操作者不小心在文本框中輸入了“crops_”(下劃線代表有一個空格),而這個空格往往是不容易被發(fā)現(xiàn)的,那么查詢時就可能找不到,除非數(shù)據(jù)表中的數(shù)據(jù)也剛好是這樣,這里要注意一點一個字符字段的內(nèi)容如小于字段的長度,系統(tǒng)會自動為該字符后面加上空格,比如上面那個例子,如果name的長度是8,則“crops”這個記錄name的值就是“crops_”(后面有三個空格),那么有三個空格和有一個空格就不相等。解決的辦法是用trim()函數(shù)將輸入的查詢值后面的空格去掉,更進(jìn)一步,為了防止不小心前面也加了空格

40、,可用alltrim()將前后的空格都去掉。 當(dāng)在數(shù)據(jù)表中移動記錄指針等操作時出現(xiàn)意想不到的錯誤。往往是因為沒有記錄。 習(xí)題習(xí)題9一、選擇題一、選擇題1在Visual FoxPro環(huán)境下,執(zhí)行命令文件exp.prg可以在命令窗口中輸入命令_ 。 . DOexp . exp.prg . exp.exe . DO exp.exe2在FOR.ENDFOR循環(huán)結(jié)構(gòu)中,如省略步長則系統(tǒng)默認(rèn)步長為( )A.0 B.-1C.1 D.23在DO WHILE 循環(huán)中,若循環(huán)條件設(shè)置為.T.,則下列說法正確的是 ( )A. 程序一定出現(xiàn)死循環(huán) B. 程序不會出現(xiàn)死循環(huán)C. 在語句組中設(shè)置EXIT防止出現(xiàn)死循環(huán)D.

41、 在語句組中設(shè)置LOOP防止出現(xiàn)死循環(huán)4. 以下程序的運(yùn)行結(jié)果為 ( ) X=1.5 do case casex2 y=2 casex1 y=1 endcase return A. 1 B. 2 C. O D. 語法錯誤習(xí)題習(xí)題95循環(huán)結(jié)構(gòu)中EXIT語句的功能是( ) A,放棄本次循環(huán),重新執(zhí)行該循環(huán)結(jié)構(gòu) B,放棄本次循環(huán),進(jìn)入下次循環(huán) C,退出循環(huán),執(zhí)行循環(huán)結(jié)構(gòu)的下一條語句 D,退出循環(huán),結(jié)束程序的運(yùn)行6下列程序段有語法錯誤的行為第( )行1 if b*b-4*a*c02 s=sqrt(d)3 else s=sqrt(-d)4 endifA.1 B.2 C.3 D.47下列程序段有語法錯誤的

42、行為第( )行1 for I=1.50 to 12.34 step 0.832 I=I+13 nextA.1 B.2 C.3 D.無8以下關(guān)于循環(huán)的敘述正確的有( )A.循環(huán)語句的入口語句與出口語句必須配對出現(xiàn)B.循環(huán)體可以為空C.三種循環(huán)語句各有分工,不能相互轉(zhuǎn)換D.循環(huán)體的執(zhí)行次數(shù)不能也不可能為0次習(xí)題習(xí)題99下列程序段有語法錯誤的行為第( )行 1 do case 2 case a0 3 s=1 4 else 5 s=0 6 endcase A.2 B.4 C.5 D.610設(shè)有下列程序段: 1 do while 2 do while 3 enddo 2 4 exit 5 enddo 1

43、 則執(zhí)行到exit 語句時,將執(zhí)行( ) A.第1行 B.第3行的下一個語句 C.第2行 D.第5行的下一個語句11執(zhí)行下列命令后: D=* ?5&D8=+STR(5&D8,2) 命令?輸出的值為 ( ) A.5&D8=0 B.5&D8=40 C.5*.8=4.0 D.5*8=40習(xí)題習(xí)題912執(zhí)行下列命令后: XYZ=123.456 CH=XYZ ?INT(CH) 命令?輸出的值為( ) A.0 B.123.456 C.123 D.出錯13. 以下循環(huán)體共執(zhí)行了( )次 ForI=1 to 10 ? I I=I+1 Endfor A 10 B 5 C 0 D

44、語法錯14有關(guān)LOOP語句和EXIT語句敘述正確的是 ( ) A. LOOP和EXIT語句可以寫在循環(huán)體的外面 B. LOOP語句的作用是把控制轉(zhuǎn)到ENDDO語句 C. EXIT語句的作用是把控制轉(zhuǎn)到ENDDO語句 D. LOOP和EXIT語句一般寫在循環(huán)結(jié)構(gòu)里面嵌套的分支結(jié)構(gòu)中習(xí)題習(xí)題915閱讀程序,正確的運(yùn)行結(jié)果是 ( ) DO WHILE NOT EOF( ) LOCATE FOR XB =“男” DISPLAY CONTINUE ENDDO A.程序出錯 B.屏幕上顯示STUDENT.DBF數(shù)據(jù)庫中所有性別為男的記錄 C.屏幕上顯示STUDENT.DBF數(shù)據(jù)庫的所有記錄 D.程序死循環(huán)

45、,屏幕上一直顯示STUDENT.DBF數(shù)據(jù)庫的第一條性別為男的記錄16閱讀程序,正確的運(yùn)行結(jié)果是 ( ) CLEA USE student INDEX ON xb TO xbindex SEEK男 DO WHILE NOT EOF() DISPLAY SKIP ENDDO A.程序出錯 B.屏幕上顯示STUDENT.DBF數(shù)據(jù)庫中所有性別為男的記錄 C.屏幕上顯示STUDENT.DBF數(shù)據(jù)庫的所有記錄 D.程序死循環(huán),屏幕上一直顯示STUDENT.DBF數(shù)據(jù)庫第一條性別為男的記錄習(xí)題習(xí)題917. 有關(guān)SCAN 循環(huán)結(jié)構(gòu),敘述正確的是( ) A.SCAN循環(huán)結(jié)構(gòu)中的LOOP語句,可將程序流程直接

46、指向循環(huán)開始語句SCAN.首先判斷EOF() 函數(shù)的真假 B.在使用SCAN循環(huán)結(jié)構(gòu)時,必須打開苛一個數(shù)據(jù)庫 C.SCAN循環(huán)結(jié)構(gòu)的循環(huán)體中必須寫有SKIP語句 D.SCAN循環(huán)結(jié)構(gòu),如果省略了SCOPE子句、FOREXPLL和WHILEEXP12條件子句,則直接退出循環(huán)18有關(guān)FOR 循環(huán)結(jié)構(gòu),敘述正確的是 ( ) A.對于FOR循環(huán)結(jié)構(gòu),循環(huán)的次數(shù)是未知的 B.FOR循環(huán)結(jié)構(gòu)中,可以EXIT語句,但不能使用LOOP語句 C.FOR循環(huán)結(jié)構(gòu)中,不能人為地修改循環(huán)控制變量,否則會導(dǎo)致循環(huán)次數(shù)出錯 D.FOR循環(huán)結(jié)構(gòu)中,可以使用LOOP語句,但不能使用EXIT語句19FoxPro的應(yīng)用程序由三種

47、基本結(jié)構(gòu)組合而成,它們是( ) A.順序結(jié)構(gòu).選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu) B.順序結(jié)構(gòu).循環(huán)結(jié)構(gòu)和模塊結(jié)構(gòu) C.邏輯結(jié)構(gòu).物理結(jié)構(gòu)和程序結(jié)構(gòu) D.分支結(jié)構(gòu).重復(fù)結(jié)構(gòu)和子程式結(jié)構(gòu)20在vfp的“程序”單中選擇“運(yùn)行”命令,被執(zhí)行文件的擴(kuò)展名不能為 ( ) A. .prg B. .spr C. .pjx D. .fxp習(xí)題習(xí)題921.下列關(guān)于過程的說法中不正確的是( )A.過程文件可以放在任何程序文件代碼的后面,也可以保存在稱為過程文件的單獨(dú)文件里B.過程文件只包含過程,這些過程只能被過程文件調(diào)用C.如果需要打開多個過程文件,可以在調(diào)用過程語句中加ADDITVE,那么在打開過程文件時,并不關(guān)閉原先已打開的

48、過程文件D.關(guān)閉個別過程文件的命令格式是:RELESE PROCEDURE22有Visual FoxPro程序如下:SET TALK OFFUSE CJM - ZF=0DO WHILE.NOT.EOF()M - ZF=M - ZF+ZFSKIPENDDO?M - ZFRETURN其中數(shù)據(jù)庫文件CJ.DBF中有2條記錄,內(nèi)容如下: XM ZF 1 李四 500.00 2 張三 600.00運(yùn)行該程序的結(jié)果應(yīng)當(dāng)是 A.1100 B.1000 C.1600 D.1200習(xí)題習(xí)題923在D盤的根目錄下新建一個名為AA的程序文件,應(yīng)在命令窗口鍵入哪條命令,打開程序編輯窗口( ) Amodify comm

49、and d:aa B. modify command aa Ccreate d:aa D. create aa24本程序運(yùn)行后,輸出結(jié)果是( ) a=10 c=d b=11 a=c c=12 endif d=13 ?a if ba A.10 B.11 C.12 D.1325本程序是否有錯,如果有錯,是什么類型的錯誤( ) 。 r=6 s=3.14*r*h ?“圓面積=”,s A. 本程序正確 B. 語法錯誤 C. 邏輯(語序)錯誤 D. 該程序太大,超出2GB,無法運(yùn)行 習(xí)題習(xí)題926正確地編輯并運(yùn)行了一個VFP程序文件后,在程序所在文件夾會發(fā)現(xiàn)有幾個主名相同的文件?它們的擴(kuò)展名都是什么( )

50、。 A3個文件,它們的擴(kuò)展名分別是 .dbf .fpt .bak B1個源程序文件,即 .prg C3個文件,它們的擴(kuò)展名分別是 .prg .fxp .bak D. 1個目標(biāo)程序文件,即 .fxp 27編寫程序時,為了以后閱讀修改程序方便,可以在寫源程序時加入注釋。必須要在注釋信息前加上規(guī)定的符號( ),使注釋信息變?yōu)榫G色,方不被程序執(zhí)行。 A B ! C & D & 或 * 28 .程序的控制結(jié)構(gòu)有幾種( )。 A. 3種:順序結(jié)構(gòu),分支結(jié)構(gòu),循環(huán)結(jié)構(gòu) B. 3種:單分支結(jié)構(gòu),雙分支結(jié)構(gòu),多分支結(jié)構(gòu) C. 程序多種多樣,結(jié)構(gòu)有無限多種 D. 1種:多分支結(jié)構(gòu) 29下面這個語句

51、系列是什么類型的循環(huán)語句結(jié)構(gòu)( ) DO while. . Enddo A. 步長循環(huán) B. 條件循環(huán) C. 掃描循環(huán) D. 非循環(huán) 習(xí)題習(xí)題930. 下面這個語句系列是什么類型的循環(huán)語句結(jié)構(gòu)( ) For. . Endfor/next A. 步長循環(huán) B. 條件循環(huán) C. 掃描循環(huán) D. 非循環(huán) 31.下面這個語句系列是什么類型的分支結(jié)構(gòu)( ) If. . else . Endif A. 雙分支 B. 單分支 C. 不是分支語句 D. 多分支 32. 下面這個程序,如果程序執(zhí)行了Loop語句,下一步執(zhí)行哪一句( ) store 0 to i,s,t do while i100 i=i+1 s

52、=s+i if int(i/2)=i/2 loop endif t=t+i enddo A. endif B. if int(i/2)=i/2 C. store 0 to i,s,t D. do while i100 習(xí)題習(xí)題933Visual FoxPro中程序文件的擴(kuò)展名是_。 A. IDX B. PRG C. EXE D. DBF 34. 函數(shù)實質(zhì)上就是具有特定功能的程序。VFP自帶了200多個函數(shù),此外,我們還可以通過編程的方式創(chuàng)造新的函數(shù),這個新的函數(shù)叫做( ) A. 子程序 B. 過程 C. 自定義函數(shù) D. 系統(tǒng)函數(shù) 35. 在主程序中,調(diào)用子程序的命令是( ) A. go B.

53、 to C. seek D. do 36在VFP環(huán)境下,調(diào)出程序調(diào)試器的方法有2種,即( ) A. 菜單“文件/打開”;菜單“顯示/瀏覽” B. 菜單命令“工具/調(diào)試器”;或在命令窗口鍵入 debug C. 菜單命令“工具/調(diào)試器”;或在命令窗口鍵入 edit D. 菜單命令“工具/調(diào)試器”;或在命令窗口鍵入 modify37結(jié)構(gòu)化程序設(shè)計常用有3種方法,即( ) A. 順序結(jié)構(gòu),分支結(jié)構(gòu),循環(huán)結(jié)構(gòu) B. 程序,模塊,命令 C. 錄入,調(diào)試,運(yùn)行 D. 自頂向下,模塊化,層次化 習(xí)題習(xí)題938本程序是求N!(N的階乘)的值,留有一句未寫,請選擇一個答案。 SET TALK OFF _ FOR

54、Y=1 TO N P=P*Y ENDFOR RETUA. P=P*X B. P=1 C. Y=1 D. Y=0 39試寫出程序執(zhí)行后的結(jié)果: SET TALK OFF STORE 0 TO M FOR N=1 TO 8 M=M+N ENDFOR ?“M=”,M 結(jié)果為_.A. 36 B. 35 C. 30 D. 26 習(xí)題習(xí)題940已有職工登記庫ZGDJ.DBF,記錄如下: 分析以下程序的執(zhí)行結(jié)果: SET TALK OFF USE ZGDJ SCAN FOR NOT HF IF XB=“女” REPLACE JBGZ WITH JBGZ+50 ENDIF ?XM+“基本工資為”+STR(JB

55、GZ) ENDSCAN 執(zhí)行結(jié)果為:_. A. 李麗基本工資為2220 B. 李麗基本工資為2250 C. 李麗基本工資為2240 D. 李麗基本工資為2200RECORD#XMXBZCJBGZHF1王非女助教1500.T.2劉華男工程師2500.F.3周發(fā)男教授3000.T.4李麗女講師2200.F.習(xí)題習(xí)題941. 已有職工登記庫ZGDJ.DBF,記錄如下: 現(xiàn)有一程序,計算最大基本工資的值,在_處填上內(nèi)容使程序完整。 USE ZGDJ MAX=JBGZ N=RECCOUNT FOR I=2 TO N GO i IF MAX2000 SKIP -1 ?RECNO( )A. 1 B. 2 C

56、. 3 D. 4RECORD#XMXBZCJBGZHF1王非女助教1500.T.2劉華男工程師2500.F.3周發(fā)男教授3000.T.4李麗女講師2200.F.習(xí)題習(xí)題9 42. 已有職工登記庫ZGDJ.DBF,記錄如下:現(xiàn)有一程序,目的是顯示劉華的姓名和職稱。請將程序補(bǔ)充完整(命令不要縮寫) USE ZGDJ LOCATE FOR XM=“劉華” _ USE A. DISPLAY FIELDS XM B. DISPLAY FIELDS XM,ZC C. DISPLAY FIELDS D. DISPLAY RECORD#XMXBZCJBGZHF1王非女助教1500.T.2劉華男工程師2500.

57、F.3周發(fā)男教授3000.T.4李麗女講師2200.F.習(xí)題習(xí)題944在命令窗口,輸入下列命令后,可以打開_個命令文件編輯窗口。 MODIFY COMMAND JJ MODIFY COMMAND KK A. 0 B. 1 C. 2 D. 錯誤 二、填空題1VFP中程序控制分為 、_ _、_ _ _三種。2常用的循環(huán)語句有_ _ 、_ _ _和_ _。3在DO WHILEENDDO 結(jié)構(gòu)中可以用_語句直接跳到DOWHILE開始處繼續(xù)循環(huán) ,可以用_語句直接跳到 ENDDO后即退出循環(huán)。4設(shè)某表中有一數(shù)值型字段gz,共有5條記錄,gz的值依次為500、560、480、510、600,當(dāng)執(zhí)行SCAN

58、 WHILE gz480ENDSCAN循環(huán)后,共有_記錄經(jīng)過處理。5VFP系統(tǒng)中,程序控制結(jié)構(gòu)分為:順序、分支、_ _和_ _四類。6常用的分支語句有_語句和_語句。常有的循環(huán)語句有_語句、_語句和_語句。習(xí)題習(xí)題97過程是一個子程序 ,以_語句開始,調(diào)用過程使用命令_ 8有如下程序: *主程序:MAIN。PRGSET TALK OFFCLEAR S=0DO SUB WITH 10,S?SRETU*子程序SUB。PRGPARAMETERS D1,D2D1=D1+D1D2=D1*2RETURN執(zhí)行主程序后S的值是_。習(xí)題習(xí)題99設(shè)成績庫CJK.DBF中“數(shù)學(xué)”(數(shù)值型字段)這門課程的學(xué)分為4,其

59、學(xué)分計算的方法如下:數(shù)學(xué)=90,學(xué)分值為480=數(shù)學(xué)90,學(xué)分值為370=數(shù)學(xué)80,學(xué)分值為260=數(shù)學(xué)70,學(xué)分值為1數(shù)學(xué)60,學(xué)分值為0計算任一學(xué)生數(shù)學(xué)這門課程的學(xué)分值的程序如下:SET TALK OFFUSE CJKACCEPT “輸入學(xué)號:” TO XHXF=0LOCATE FOR學(xué)號=XHDO CASECASE_XH=40CASE_XH=3CASE_ XF=2CASE_ XF=1OTHERWISE XF=0ENDCASE?“學(xué)號:”,XH?“數(shù)學(xué)的學(xué)分值:”,XFUSERETURN習(xí)題習(xí)題910填空完成下列程序,要求該程序能夠三次從右向左顯示變量S內(nèi)容的字幕程序。CLEAR S=SPACE(80)+“關(guān)系數(shù)據(jù)庫語言VFP計算機(jī)級教程。關(guān)系數(shù)據(jù)庫.” +SPACE(60) N=0 _ I=1 DO WHILE I160 20,0SAY SUBSTR(S,I,80) H=INKEY(0.1,“h”) I=I+2 _ _ ENDDO11為

溫馨提示

  • 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

提交評論