計(jì)算機(jī)課件第7章 程序設(shè)計(jì)_第1頁
計(jì)算機(jī)課件第7章 程序設(shè)計(jì)_第2頁
計(jì)算機(jī)課件第7章 程序設(shè)計(jì)_第3頁
計(jì)算機(jī)課件第7章 程序設(shè)計(jì)_第4頁
計(jì)算機(jī)課件第7章 程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩71頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

5

&

Q

第7章結(jié)構(gòu)化程序設(shè)計(jì)

-7-1程序的建立與維護(hù)

-7-2程序的流程控制

?7-3模塊結(jié)構(gòu)程序設(shè)計(jì)

?7?4MESSAGEBOX。函數(shù)的使1

?7?5調(diào)試程序

?7?6小結(jié)

第2頁共76頁目錄上一步下一步關(guān)閉

7-1程序的建立與維護(hù)克

VisualFoxPro程序文件,是一個(gè)以(.PRG)為擴(kuò)展名的文本文件。任

何可以建立、編輯文本文件的工具,都可以創(chuàng)建和編輯VisualFoxPro

程序文件。這些文本編輯工具,可以是VisualFoxPro系統(tǒng)提供的內(nèi)部

編輯器,也可以是其它常用文本編輯軟件。在文本編輯環(huán)境下,不僅

可以對程序文件進(jìn)行輸入和修改,還可以實(shí)現(xiàn)字符串查找、替換、刪

除和編輯功能。

7-1-1用菜單選擇方式建立及維護(hù)程序

1.創(chuàng)建與修改程序文件

?命令方式

MODIFYCOMMAND〈程序文件名〉

?菜單方式

打開“文件”菜單,選擇“新建”;在“新建”窗口,選擇

“程序”,再選擇“新建文件”;在“程序文件”編輯窗口,

輸入程序文件,并保存,此時(shí)建立程序文件的操作結(jié)束。

第3頁共76頁I目錄)I上一步)I下一步)I關(guān)閉

2.運(yùn)行程序文件

調(diào)用程序文件,即運(yùn)行程序文件,是程序文件建立的最終

目的。在VisualFoxPro系統(tǒng)中,調(diào)用程序文件有很多方法,

在這里僅介紹其中兩種方法。

?菜單方式

以菜單方式調(diào)用程序文件,操作方法如下:

(1)在VisualFoxPro系統(tǒng)主菜單下,打開“程序”菜單,

選擇“運(yùn)行”。

(2)在“運(yùn)行”窗口,輸入被調(diào)用的程序文件名即可。

?命令方式

在Command窗口中,輸入如下命令,則程序文件被調(diào)用。

DO〈程序文件名〉

第4頁共76頁I目錄)I上一步)I下一步)I關(guān)閉

3.維護(hù)程序我L

修改程序文件時(shí),可以從菜單“文件”中選擇“打開”命

令,從屏幕顯示的“打開”對話框中選擇要修改的文件,

在文件編輯器窗口中進(jìn)行編輯修改程序。

7-1-2用命令方式建立及維護(hù)程序

1.創(chuàng)建程序

在VisualFoxPro“命令”窗口中直接輸入命令來建立和運(yùn)行

程序,更方便簡捷。在命令窗口中輸入:

MODIFYCOMMAND〈程序文件名〉

打開在文本編輯器窗口中,等待用戶輸入新文件的內(nèi)容。

第5頁共76頁I目錄)I上一步)I下一步)I關(guān)閉

2.保存程序

■在編輯過程中,按Ctrl+Q或Esc鍵,中止程序的編輯,

按Ctrl+W鍵,保存編輯的程序,并返回到“命令”窗

口中。程序文件名默認(rèn)的擴(kuò)展名為.PRG。如果省略

“程序文件名”,系統(tǒng)會自動(dòng)以“程序1”為程序文件

名存盤。

3.維護(hù)程序

在編輯過程中,如果內(nèi)存空間足夠大,可以同時(shí)打開多

個(gè)文本編輯窗口編輯多個(gè)文件,在一個(gè)文件或多個(gè)文件

之間對文本進(jìn)行剪切、復(fù)制、粘貼等操作。為了便于維

護(hù)程序和提高編程效率,系統(tǒng)提供了豐富的編程環(huán)境。

可以在程序窗口中單擊鼠標(biāo)右鍵,在彈出的快捷鍵中選

擇所需要的功能命令按鈕。

第6頁共76頁I目錄)|上一步)|卜一步)|關(guān)閉

-

4.運(yùn)行程序

在命令窗口中鍵入:

DO(程序文件名)

執(zhí)行一個(gè)VisualFoxPro程序,程序文件名前根據(jù)需

要可以加上路徑。如:

DOd:\VFP\程序1

該命令可以在命令窗口發(fā)出,也可以出現(xiàn)在某個(gè)

程序文件中,這樣就使得一個(gè)程序在執(zhí)行的過程

中還可以調(diào)用執(zhí)行另一個(gè)程序。

當(dāng)程序被執(zhí)行時(shí),文件中包含的命令被依次執(zhí)行,

直到程序執(zhí)行完畢,或遇到以下命令:

第7頁共76頁I目錄)I上一步)I下一步)I關(guān)閉

①CANCAL:終止程序運(yùn)行,清除所有私有變量,返回命令

窗口。

②DO:轉(zhuǎn)去執(zhí)行另一個(gè)程序。

③RETURN:結(jié)束當(dāng)前程序的執(zhí)行,返回到調(diào)用它的上級

程序,若無上級程序則返回到命令窗口。

④QUIT:退出VFP系統(tǒng),返回到操作系統(tǒng)。

VisualFoxPro程序文件通過編譯、連編,可以產(chǎn)生不

同的目標(biāo)代碼文件。如果沒有對程序進(jìn)行編譯,而且程

序中存在錯(cuò)誤,則在執(zhí)行程序過程中VisualFoxPro會

指出程序中存在的錯(cuò)誤,出現(xiàn)錯(cuò)誤提示對話框。此時(shí),

可以取消操作,中止程序的運(yùn)行,修改后再運(yùn)行。

第8頁共76頁I目錄)I上一步)I下一步)I關(guān)閉

7-1-3程序的編譯j

在運(yùn)行程序時(shí),系統(tǒng)提供了兩種方式:先編譯后執(zhí)

行和一邊編譯一邊執(zhí)行。

先編譯后執(zhí)行是在編輯窗口打開要編譯的程序,然

后在菜單“程序”中選定編譯”。

7-1-4編程時(shí)的一般規(guī)則

L每行為能寫一條命令,每條命令以回車換行作為

結(jié)束標(biāo)志;

2.條命令一行寫不下時(shí),可以分多行輸入,在未輸

入完的數(shù)據(jù)后加分號,然后回車換行,系統(tǒng)會把

此行作為前一行的續(xù)行;

3."&&",“NOTE”用來作為程序的說明的符號

和命令;“*”及“NOTE”只能放在一行的前面,

而“&&”可以放在前面或后面。

第9頁共76頁I目錄)I上一步)I下一步)I關(guān)閉

7-1-5簡單的輸入輸出命令

1.鍵盤輸入語句

(1).ACCEPT命令

-格式:accept[<提示信息習(xí)to〈內(nèi)存變量)

-功能:在屏幕上顯示提示信息,等待用戶輸入一個(gè)

字符串,賦值給一個(gè)內(nèi)存變量

-注意:該命令只能接受字符型常量,輸入一個(gè)字符

串(不必加引號)且按回車鍵后,程序繼續(xù)執(zhí)行

(2).INPUT命令

-格式:input[<提示信息習(xí)to〈內(nèi)存變量)

第10頁共76頁I目錄)I上一步)I下一步)I關(guān)閉

-功能:與accept相似,不同的是能接受字符型答

數(shù)字型、日期型和邏輯型數(shù)據(jù)。

-說明:除輸入數(shù)值型數(shù)據(jù)外,其他幾種類型的

數(shù)據(jù)一律使用定界符;輸入的信息可以是表達(dá)

式,i叩ut命令有計(jì)算功能

(3).WAIT命令

【格式】WAIT[〈提示符表達(dá)式〉][TO〈內(nèi)存變量

>][Windows[Nowait]][CLEAR][TIMEOUT〈數(shù)值表

達(dá)式式

【功能】等待用戶從鍵盤上輸入一個(gè)字符存入指定

變量中。

第11頁共76頁I目錄)I上一步)I下一步)I關(guān)閉

2.格式輸出語句

無論是內(nèi)存變量還是字段變量都可以使用?或??命令

輸出,這種輸出方式簡單,但是不能按照用戶指定

的位置輸出。格式輸出語句能按用戶的要求來設(shè)計(jì)

屏幕格式,使之美觀、方便。

【格式】@<行號,列號〉SAY〈表達(dá)式》

【功能】從指定的行、列號開始輸出表達(dá)式的值。

【說明】

L〈表達(dá)式)可以是常量、字段變量及由它們組成的

表達(dá)式。

2.定位輸出時(shí),一次只能輸出一個(gè)表達(dá)式。

第12頁共76頁I目錄)I上一步)I下一步)I關(guān)閉

3.程序設(shè)計(jì)輔助語句命令獨(dú)

(1)CLEAR語句:

【格式】CLEAR

【功能】清除屏幕信息語句

(2)SETTALKON/OFF語句:

【格式】SETTALKON/OFF

【功能】命令執(zhí)行的結(jié)果傳送/不傳送到屏幕上

1(3)程序運(yùn)行結(jié)束命令:

?QUIT&&返回操作系統(tǒng)

?CANCEL&&返回VisualFoxPro6.0“命令”窗

?RETURN&&(返回調(diào)用處」止一止]-

第13頁共76頁t廣上一少)|卜少)I關(guān)閉

7-2程序的流程控制覆

VisualFoxPro系統(tǒng)提供的命令豐富,

且功能強(qiáng)大,把這些命令和程序設(shè)計(jì)語句有

效地組織在一起,就形成了實(shí)現(xiàn)某一特定功

能的程序。

VisualFoxPro系統(tǒng)的程序有兩個(gè)特點(diǎn):

一是程序控制流模式,由順序、分支、循環(huán)

三種基本結(jié)構(gòu)構(gòu)成。二是面向?qū)ο罂梢暬?/p>

結(jié)構(gòu)程序模塊,在每個(gè)模塊的內(nèi)部也是由程

序控制流組成。常見的控制結(jié)構(gòu)如下:

第14頁共76頁I目錄)I上一步)I下一步)I關(guān)閉

程序的3種基本結(jié)構(gòu)

?任何一種計(jì)算機(jī)語言程序主體是由3種基

本結(jié)構(gòu)組成:)11頁序結(jié)構(gòu)、選擇結(jié)構(gòu)和循

環(huán)結(jié)構(gòu)。1^--------------

<一6

順序結(jié)構(gòu)

循環(huán)結(jié)構(gòu)

第15頁共76頁[―I錄上T下f)|關(guān)閉

-------------------/\__________________________________/X___________________________________?X_____________________

7-2-1順序結(jié)構(gòu)方

在結(jié)構(gòu)化程序設(shè)計(jì)方法中,程序基本控制

結(jié)構(gòu)有三種,即順序結(jié)構(gòu)、分支結(jié)構(gòu)和循

環(huán)結(jié)構(gòu)。順序結(jié)構(gòu)是一種線形結(jié)構(gòu),是最

基本的程序結(jié)構(gòu),它是按照命令或語句的

排列順序,依次執(zhí)行。

7-2-2選擇結(jié)構(gòu)

分支結(jié)構(gòu)是在程序執(zhí)行時(shí),根據(jù)不同的條

件,選擇執(zhí)行不同的程序語句,用來解決

有選擇、有轉(zhuǎn)移的諸多問題。

第16頁共76頁I目錄)[上一步】I下一步)I關(guān)閉

選擇結(jié)構(gòu)的基本形式

有三種基本形式:

1>單條件選擇結(jié)構(gòu)

?單分支結(jié)構(gòu)

是一種工F—END1F分支結(jié)構(gòu)

格式:

[F<條件表達(dá)式〉

〈語句序列〉

EDNIF

功能:條件表達(dá)式的值為真(.工)則執(zhí)行“語句

序列”,否則為假(F.)則直接執(zhí)行EDN1F

后續(xù)語句

第17頁共76頁I目錄)I上一步)I下一步)I關(guān)閉

?例1:從鍵盤輸入一個(gè)數(shù),若為正數(shù)則輸出陰

若為非正數(shù)則結(jié)束。

此題學(xué)生自己分析。

?例2:求一元二次方程AX2+BX+C=0的實(shí)根。

分析:用根的判別式:D=B2—4AC進(jìn)行判別,

如果:DzO,說明有實(shí)根,如果:D<0,則

說明無實(shí)根。

第18頁共76頁I目錄)[上一步】I下一步)I關(guān)閉

輸入A、B、C

D=B*B—4*A*C

如果D>=0

XI二(-B+SQRT(D))/(2*A)

真X2二(-B-SQRT(D))/(2*A)

輸出XI、X2

第19頁共76頁I目錄)I上一步)I下一步)I關(guān)閉

?雙向分支結(jié)構(gòu)―

雙向分支語句,即根據(jù)用戶設(shè)置的條件表達(dá)式的信,

選擇兩個(gè)操作中的一個(gè)來執(zhí)行。是一種工F—ELSE—

END訐選擇結(jié)構(gòu)

格式:

[F<條件表達(dá)式〉

〈語句序列1〉

ELSE

(語句序列2〉

ENDIF

功能:表達(dá)式為真,則執(zhí)行“語句序列1”,再執(zhí)行

EDNJZF的后續(xù)語句;為假,則執(zhí)行“語句序列2”,

再執(zhí)行EDN1F的后續(xù)語句。

第20頁共76頁I目錄)I上一步)I下一步)I關(guān)閉

?例:用工F—ELSE—END1F方法,再做

一次求解一元二次方程的根,若有實(shí)根,

則輸出實(shí)根,否則輸出“無實(shí)根”。

■例:從鍵盤輸入一個(gè)自然數(shù),若是偶數(shù)

貝愉出“偶數(shù)”,否則輸出“奇數(shù)”。

第21頁共76頁目錄)[上一步〕|下一步)|關(guān)閉

2、多分支條件選擇語句(多路選擇)£

是一種DOCASE—ENDCASE分支結(jié)構(gòu)

格式:

?DOCASE

?CASEV條件表達(dá)式1>

?〈語句序列1>N

O

?CASEV條件表達(dá)式2>O

?〈語句序列2〉

?CASEV條件表達(dá)式n〉

?〈語句序列n>?---------------------------------------------------------

?[OTHERWISE

?〈語句序列n+l>]

?ENDCASE

第22頁共76頁〔目錄)L上f下f)1關(guān)閉

_________________________/X_______________________________?X____________________

?功能:依次判斷條件l—n的表達(dá)式,

當(dāng)遇到第一個(gè)條件為真時(shí),則執(zhí)行該

表達(dá)式對應(yīng)的語句序列,然后轉(zhuǎn)去執(zhí)

行ENDCASE的后續(xù)語句,若前幾個(gè)

表達(dá)式都為假,則執(zhí)行

OTHERWISE的語句序列,然后執(zhí)

行ENDCASE的后續(xù)語句。

第23頁共76頁I目錄)[上一步】I下一步)I關(guān)閉

使用分支語句應(yīng)注意的幾點(diǎn)£

(1)IF......ENDIF和DOCASE…ENDCASE必須

配對使用,DOCASE與第一個(gè)CASE〈條件表達(dá)

式〉之間不應(yīng)有任何命令。

(2)〈條件表達(dá)式〉可以是各種表達(dá)式或函數(shù)

的組合,其值必須是邏輯值。

(3)〈命令行序列〉可以由一個(gè)或多個(gè)命令組

成,可以是條件控制語句組成的嵌套結(jié)構(gòu)。

(4)DOCASE....ENDCASE命令,每次最多只

能執(zhí)行一個(gè)〈命令行序列〉。在多個(gè)CASE項(xiàng)的

〈條件表達(dá)式〉值為真時(shí),只執(zhí)行第一個(gè)〈條

件表達(dá)式〉值為真的〈命令行序列〉,然后執(zhí)

行ENDCASE的后面的第一條命令。

第24頁共76頁I目錄)I上一步)I下一步)I關(guān)閉

■例:從鍵盤輸入一個(gè)學(xué)生的成績,按下述規(guī)

定輸出:

90分一100分輸出“優(yōu)秀”

80分一9分輸出“良好”

70分一79分輸出“中等”

60分一69分輸出“及格”

0分一59分輸出“不及格”

參考P135【例7-10】

第25頁共76頁I目錄)I上一步)I下一步)I關(guān)閉

練習(xí)

1.編寫程序,輸入一個(gè)數(shù),判斷這個(gè)數(shù)

能否被6整除。

2.編寫一正整數(shù)存于變量X中,判斷它是

幾位數(shù)。

第26頁共76頁I目錄)I上一步)I下一步)I關(guān)閉

7-2-3循環(huán)結(jié)構(gòu)

常用的循環(huán)語句有以下三種形式:

1.DOWHILE.?.ENDDO循環(huán)

“當(dāng)”型循環(huán)控制語句,即根據(jù)條件表達(dá)式的值,決定循環(huán)

體內(nèi)語句的執(zhí)行次數(shù)。

語句格式:

DOWHILE〈條件表達(dá)式〉

〈命令行序列〉

ENDDO

語句功能:

該語句通過〈條件表達(dá)式〉的值來控制循環(huán)。執(zhí)行語句時(shí),

反復(fù)判斷〈條件表達(dá)式〉的值,當(dāng)〈條件表達(dá)式〉的值為

“真”時(shí),執(zhí)行〈命令行序列〉;否則,結(jié)束循環(huán),并執(zhí)行

ENDDO后面的第一條命令。

第27頁共76頁I目錄)I上一步)I下一步)I關(guān)閉

舉例

?例1計(jì)算S=l+2+3+……+99+

100的值。

?例2從鍵盤輸入一組數(shù)據(jù),分別計(jì)算

出正負(fù)數(shù)的個(gè)數(shù),輸入“0”時(shí)程序結(jié)束。

?例3逐條輸出1982年出生的學(xué)生記錄

第28頁共76頁I目錄)I上一步)I下一步)I關(guān)閉

輸入X

m=0&&m用于統(tǒng)計(jì)正數(shù)的個(gè)數(shù)

n=0&&n用于統(tǒng)計(jì)負(fù)數(shù)的個(gè)數(shù)

當(dāng)X<>0

如果X>0

真m=m+l

假n=n+l

輸入X

輸出m、n

第29頁共76頁I目錄)I上一步)I下一步)I關(guān)閉

2.FOR…ENDFOR循環(huán)M

FOR…ENDFOR循環(huán),即根據(jù)用戶設(shè)置的循

環(huán)變量的初值、終值和步長,決定循環(huán)體內(nèi)語

句的執(zhí)行次數(shù)據(jù)。

語句格式:

FOR〈循環(huán)變量〉=〈循環(huán)變量初值〉TO

〈循環(huán)變量終值〉

[STEP〈循環(huán)變量步長〉]

〈命令行序列〉

ENDFORINEXT

第30頁共76頁I目錄)I上一步)I下一步)I關(guān)閉

語句功能:物

該語句用〈循環(huán)變量〉來控制〈命令行序列〉

的執(zhí)行次數(shù)。執(zhí)行語句時(shí),首先將〈循環(huán)變

量初值〉賦給〈循環(huán)變量〉,然后判斷〈循

環(huán)變量〉是否大于或小于〈循環(huán)變量終值〉,

若結(jié)果為“真”,則結(jié)束循環(huán),執(zhí)行ENDFOR

后面的第一條命令;否則,執(zhí)行〈命令行序

歹U〉,〈循環(huán)變量〉自動(dòng)按〈循環(huán)變量步長〉

增加或減少,再重新判斷〈循環(huán)變量〉當(dāng)前

的值是否大于或小于〈循環(huán)變量終值〉,直

到其結(jié)果為真。

第31頁共76頁I目錄)I上一步)I下一步)I關(guān)閉

舉例

?例1計(jì)算1至肛00中所有奇數(shù)之和。

?例2找出100?999之間的所有“水仙

花數(shù)”(三位數(shù)中各位數(shù)的立方和等于

該數(shù)本身)。

?例3從鍵盤輸入10個(gè)數(shù),找出其中最

大和最小數(shù)。

第32頁共76頁I目錄)I上一步)I下一步)I關(guān)閉

3.SCAN...ENDSCAN循環(huán)星

SCAN...ENDSCAN循環(huán),即根據(jù)用戶設(shè)

置的表中的當(dāng)前記錄指針,決定循環(huán)體內(nèi)

語句的執(zhí)行次數(shù)據(jù)。

語句格式:

SCAN[〈范圍〉][FOR〈條件表達(dá)式1〉

[WHILE〈條件表達(dá)式2〉]]

〈命令行序列〉

ENDSCAN

第33頁共76頁I目錄)I上一步)I下一步)I關(guān)閉

語句功能:£

該語句在指定的范圍內(nèi),用數(shù)據(jù)記錄指針

來控制循環(huán)次數(shù)。執(zhí)行語句時(shí),首先判斷函

數(shù)EOF()的值,若其值為“真”,則結(jié)束

循環(huán),否則,結(jié)合〈條件表達(dá)式1〉或〈條

件表達(dá)式2〉,執(zhí)行〈命令行序列〉,記錄

指針移到指定的范圍和條件內(nèi)的下一條記錄,

重新判斷函數(shù)EOF()的值,直到函數(shù)EOF()

的值為真時(shí)結(jié)束循環(huán)。

第34頁共76頁I目錄)I上一步)I下一步)I關(guān)閉

舉例

?例1統(tǒng)計(jì)“學(xué)生”數(shù)據(jù)表專業(yè)代碼為03

的男、女生人數(shù)。

?例2編寫對“學(xué)生”數(shù)據(jù)表按任意條件

查詢的程序。Ck.prg

第35頁共76頁I目錄)I上一步)I下一步)I關(guān)閉

4.三種循環(huán)的比較受

(1)DOWHILE和ENDDO、FOR和

ENDFOR>SCAN和ENDSCAN必須配對

使用。

(2)〈命令行序列〉可以是任何

FoxPro命令或語句,也可以是循環(huán)

語句,即可以為多重循環(huán)。

(3)〈循環(huán)變量〉應(yīng)是數(shù)值型的內(nèi)

存變量或數(shù)組元素。

第36頁共76頁I目錄)I上一步)I下一步)I關(guān)閉

?(4)EXIT和LOOP命令嵌入在循環(huán)體內(nèi),可

以改變循環(huán)次數(shù),但是不能單獨(dú)使用。

EXIT的功能是跳出循環(huán),轉(zhuǎn)去執(zhí)行ENDDO、

ENDFOR>ENDSCAN后面的第一條命令;LOOP

的功能是轉(zhuǎn)回到循環(huán)的開始處,重新對

“條件”進(jìn)行判斷,相當(dāng)于執(zhí)行了一次

ENDDO、ENDFOR、ENDSCAN命令,它可以改

變〈命令行序列〉中部分命令的執(zhí)行次數(shù)。

EXIT、LOOP可以出現(xiàn)在〈命令行序列〉的

任意位置。

第37頁共76頁I目錄)I上一步)I下一步)I關(guān)閉

7-3模塊結(jié)構(gòu)程序設(shè)計(jì)

應(yīng)用程序一般都是多模塊程序,可包含多個(gè)程序模塊。模塊

是可以命名的一個(gè)程序段,可指主程序、子程序和自定義函

數(shù)。

7-3-1子程序的調(diào)用

1.子程序的建立、調(diào)用與返回

對于兩個(gè)具有調(diào)用關(guān)系的程序文件,常稱調(diào)用程序?yàn)橹鞒绦?

被調(diào)用程序?yàn)樽映绦?。在VFP中,子程序與主程序享有相同

的“待遇”,即可以用“MODIFYCOMMAND”命令來建立和修

改,具有相同的擴(kuò)展名.prg,并以同樣的文件格式存儲在磁

盤上。所不同的是:在每個(gè)子程序中至少要有一個(gè)返回語句

RETURN(或RETURNMASTER)。

第38頁共76頁I目錄)I上一步)I下一步)I關(guān)閉

例:試編寫一程序求解W=X!+Y!+Z!(其中必

X,Y,Z的值均為一位正常數(shù))。

主程序:

*MAIN_1.PRG

SETTALKOFF

INPUTTOX

INPUT“Y二”TOY

INPUT“Z二”TOZ

N=X

DOSUB_2

A=T

N=Y

第39頁共76頁I目錄)I上一步)I下一步)I關(guān)閉

DOSUB_2%L

B二T

N二Z

DOSUB_2

W=A+B+T

?"W二"+STR(W,7)

SETTALKON

*SUB_2.PRG

PUBLICT

T=1&&給T賦初值1

FOR>1TON

T=T*I

ENDFOR

RETURN

第40頁共76頁I目錄)I上一步)I下一步)I關(guān)閉

由此例可以得出以下結(jié)論:

?主程序在調(diào)用子程序之前,要先為

子程序中的某些變量賦值,例如,

N二X,N二Y,N二Z,以做好調(diào)用子程序

的準(zhǔn)備;

子程序執(zhí)行完畢返回主程序時(shí),要

及時(shí)保存其運(yùn)算結(jié)果,例如,A=T,

B二T,以免再次調(diào)用子程序時(shí)將其破

壞。

第41頁共76頁I目錄)I上一步)I下一步)I關(guān)閉

2.子程序嵌套厚

主程序與子程序的概念是相對的,子程序

還可調(diào)用它自己的子程序,即子程序可以

嵌套調(diào)用。VFP的返回命令包含了因嵌套而

引出的多種返回方式。

命令格式:

RETURN[TOMASTER/TO〈程序文件名〉]

命令格式中的[TOMASTER]選項(xiàng),使返主時(shí)

直接返回到最外層主程序;可選項(xiàng)TO〈程

序文件名〉強(qiáng)制返回到指定的程序文件。

第42頁共76頁I目錄)I上一步)I下一步)I關(guān)閉

7-3-2過程及過程調(diào)用圓

VisualFoxPro與其他高級語言一樣,支持結(jié)構(gòu)化程

序設(shè)計(jì)方法,允許將若干命令或語句組合在一起作為

整體調(diào)用,這些可獨(dú)立存在并可整體調(diào)用的命令語句

組合稱為過程。

1.外部過程

外部過程也叫子程序,和主程序一樣是以程序文件

(?PRG)的形式單獨(dú)存儲在磁盤上。子程序是指能被

其他程序調(diào)用的程序。通常情況下,被調(diào)用的稱為子

程序,調(diào)用它的稱為主程序。子程序中必須使用

的一條命令是返回命令RETURN,格式為:

RETURN[<表達(dá)式>|TOMASTER]TOV程序文件名〉]

功能是返回到調(diào)用該子程序的上級程序

第43頁共76頁I目錄)I上一步)I下一步)I關(guān)閉

-

2.內(nèi)部過程:

把多個(gè)過程組織在一個(gè)文件中(這個(gè)文

件稱之為過程文件),或者把過程放在調(diào)

用它的程序文件的末尾。

VisualFoxPro為了識別過程文件或

者程序文件中的不同過程,規(guī)定過程文

件或者程序文件中的過程必需用

PROCEDURE語句說明。即過程文件的建立。

第44頁共76頁I目錄)I上一步)I下一步)I關(guān)閉

3.過程文件的建立行

【格式】

*過程文件名.

PROCEDURE〈過程名1〉

〈命令序列1〉

RETURN

???

PROCEDURE〈過程名n〉

〈命令序列n〉

RETURN

過程文件中的每個(gè)子過程必須以PROCEDURE語句開頭,

后面跟過程名,每個(gè)子過程以RETURN語句結(jié)束。

第45頁共76頁I目錄)I上一步)I下一步)I關(guān)閉

4.過程文件的打開

調(diào)用過程文件前,應(yīng)先打開相應(yīng)的過程文件。

【格式】SETPROCEDURETO[〈過程文件名1>.PRG,[文件

名2???]]ADDITIVE

【功能】打開過程文件。

在調(diào)用過程前,過程文件一旦被打開,過程文件中所有

的子過程都被打開,可以隨時(shí)被調(diào)用。在VisualFoxPro

中,如果要同時(shí)打開兩上以上的過程文件,可以在過程

文件名之間用逗號分開。如果分別打開多個(gè)過程文件,

則后打開的過程文件將會關(guān)閉先前所打開的過程文件,

為避免這種情況發(fā)生,在SETPROCEDURE命令中加入

ADDITIVE參數(shù)。

調(diào)用過程和調(diào)用于程序一樣,使用DO〈過程名)命令來調(diào)

用指定的子過程。

第46頁共76頁I目錄)I上一步)I下一步)I關(guān)閉

5.過程文件的調(diào)用是

【格式】DO〈過程名〉WITH〈參數(shù)表》

【功能】執(zhí)行以〈過程名〉為名的過程,即執(zhí)行已有的過

程。

6.過程文件的返回

【格式】RETURN[TOMASTERITO〈過程名〉]

【功能】將控制返回到調(diào)用程序中調(diào)用命令的下一語句,

即返回過程的調(diào)用處。

7.過程文件的關(guān)閉

當(dāng)過程文件調(diào)用結(jié)束后,應(yīng)及時(shí)關(guān)閉過程文件。使用

下列命令關(guān)閉過程文件:

(1)SETPROCEDURETO

(2)CLOSEPROCEDURE

第47頁共76頁I目錄)I上一步)I下一步)I關(guān)閉

7-3-3過程調(diào)用中的參數(shù)傳遞

過程可以沒有或有多個(gè)參數(shù),多個(gè)參數(shù)由逗號隔開。帶參程調(diào)

用命令在主程序中的調(diào)用格式:

1.有參過程中的形式參數(shù)定義

有參過程中的形式參數(shù)定義語句為:

【格式】PARAMETERS(參數(shù)表》

【功能】該語句必需是過程中第一條語句。〈參數(shù)表》中的參

數(shù)可以是任意合法的內(nèi)存變量名。

2.程序與被調(diào)用過程間的參數(shù)傳遞

程序與被調(diào)用過程間的參數(shù)傳遞是通過過程調(diào)用語句DO〈過程

名〉WITH〈參數(shù)表〉中WITH〈參數(shù)表》子句來實(shí)現(xiàn)的。

【格式】D0<文件名>|〈過程名〉WITH〈參數(shù)表〉

第48頁共76頁I目錄)I上一步)I下一步)I關(guān)閉

【說明】星

1.DO命令〈參數(shù)表)中參數(shù)稱為實(shí)際參數(shù),PARAMATERS特

令《參數(shù)表)中的參數(shù)稱為形式參數(shù)。兩個(gè)〈參數(shù)表)中的參數(shù)必

須相容,即個(gè)數(shù)相同,類型和位置——對應(yīng);

2.實(shí)際參數(shù)可以是任意合法表達(dá)式,形式參數(shù)是過程中的局

部變量,用來接收對應(yīng)實(shí)際參數(shù)的值;

3.參數(shù)的傳遞模式:

?按值傳遞

按值傳遞時(shí),傳遞給被調(diào)用過程(子過程)參數(shù)的是調(diào)用

過程(父過程)調(diào)用時(shí)所使用的值。一般實(shí)參是一個(gè)變量或

是一^表達(dá)式。

?按地址傳遞

如果實(shí)參是一個(gè)變量(而不是表達(dá)式),則傳遞給形參的是

該變量的地址。這是形參和實(shí)參是同一個(gè)變量,在過程中改

變形參的值,會同時(shí)改變實(shí)參的值。默認(rèn)模式下,變量按地

址傳遞方式向過程傳遞,按值傳遞方式向函傳遞。

第49頁共76頁I目錄)I上一步)I下一步)I關(guān)閉

練習(xí)

例1、對任意給的正整數(shù)A、B、C,編寫程序

計(jì)算S=A!+(3/5)B!+(C!/2)

nmi

例2、已知組合數(shù)的公式為:0nn\{m-71)!

?Cm”可寫為C(m,n)

?求8!+c(9,4)-c(10,5)的值

說明:寫階乘和組合數(shù)兩個(gè)過程,用主程序調(diào)

用這兩過程。

第50頁共76頁I目錄)I上一步)I下一步)I關(guān)閉

7-3-4變量的作用域

程序設(shè)計(jì)離不開變量,如果以變量的作用來分,

內(nèi)存變量分為公共變量、私有變量和局部變量。

1.公共變量

公共變量是指在所有程序模塊中都可以使

用的內(nèi)存變量。公共變量要先建立后使用。

【格式】PUBLIC〈內(nèi)存變量表》

【功能】該命令的功能是建立公共的內(nèi)存變量,

并為它們賦初值邏輯假.F.

第51頁共76頁I目錄)[上一步】I下一步)I關(guān)閉

2.局部變量整

局部變量是指在建立它的程序以及被此程序調(diào)用

的程序中有效的內(nèi)存變量。

【格式】LOCAL〈內(nèi)存變量表>

【功能】該命令的功能是建立指定的內(nèi)存變量,并為

它們賦初值邏輯假.F.

3.私有變量

在程序中直接使用而由系統(tǒng)自動(dòng)隱含建立的變量

都是私有變量。私有變量的作用域是建立它的模塊

及其下屬的各層模塊。一旦建立它的模塊程序運(yùn)行

結(jié)束,這些私有變量將自動(dòng)清除。

【格式】PRIVATE[〈內(nèi)存變量表〉]

[ALL[LIKE|EXCEPT(通配符〉]]

第52頁共76頁I目錄)I上一步)I下一步)I關(guān)閉

7-3-5自定義函數(shù)是

VisualFoxPro為用戶提供了幾百個(gè)內(nèi)部標(biāo)準(zhǔn)函數(shù),

但是并不能完全符合每個(gè)用戶的需要,因此,為了

程序設(shè)計(jì)的需要,必須自行設(shè)計(jì)函數(shù),用戶按一定

規(guī)則來定義的函數(shù),這種函數(shù)稱為自定義函數(shù)。

自定義函數(shù)的格式如下:

【格式】

FUNCTION〈函數(shù)名稱》(變量名稱)

〈語句序列》

RETURN[〈返回值〉]

ENDFUNC

第53頁共76頁I目錄)I上一步)I下一步)I關(guān)閉

【功能】用戶自己定義一個(gè)函數(shù)。

定義了函數(shù)之后,可將它保存在單獨(dú)的程序

文件中,也可放在一般程序的底部,但不能

將可執(zhí)行的主程序放在函數(shù)之后。調(diào)用自定

義函數(shù)與一般內(nèi)部函數(shù)相同,函數(shù)執(zhí)行后返

回一個(gè)數(shù)據(jù)給調(diào)用程序,《返回值)可以是常

數(shù)、變量或表達(dá)式等。如果沒在RETURN命

令后加入返回值,VisualFoxPro將自動(dòng)返

回.工。當(dāng)程序或用戶自定義函數(shù)執(zhí)行到

RETURN命令就會立刻返回到調(diào)用程序中。

第54頁共76頁I目錄)I上一步)I下一步)I關(guān)閉

【例】利用自定義函數(shù),求X!+Y!

CLEAR

INPUT〃輸入X的值:〃TOX

1>JC(X)&&調(diào)用函數(shù)JC

INPUT〃輸入Y的值:〃TOY

V二JC(Y)

?〃SUM=〃,U+V

FUNCTIONJC

PARAMETERSN

S=1

IFN>=1

FOR1=1TON

S=S*I在該例中定義了一個(gè)求階乘的函數(shù)。函數(shù)

NEXT名為JC,X!的求法是在主程序內(nèi)從鍵盤輸

ENDIF入X的值,再調(diào)用JC函數(shù)求得X!后將值帶

RETURN(S)回主程序。最后將兩個(gè)階乘值相加。

ENDFUNC

目錄)|上一步)|下一步)|關(guān)閉

第55頁共76頁----------------------------------------------------/\__________________________________________ZX__________________________________________?X___________________________

7-4用戶定義對話框MESSAGEBOX()函數(shù)的使用注

MessageBox函數(shù)用于顯示短信息。雖然,MessageBox顯

示的小窗口不具有什么功能,實(shí)際上它被認(rèn)為是一個(gè)對話框。

對話框是用戶與應(yīng)用程序之間交換信息的最佳途徑之一。使

用對話框函數(shù)可以得到VFP的內(nèi)部對話框,這種方法具有操

作簡單及快速的特點(diǎn)。

MESSAGEBOX函數(shù)在對話框中顯示信息,等待用戶單擊按鈕,

并返回一個(gè)整數(shù)以標(biāo)明用戶單擊了哪個(gè)按鈕。

1.格式

MESSAGEBOX

(CMessageText.tnbialogboxTypet.CTitleBarText]])

2.功能

該函數(shù)用于顯示一個(gè)信息框。

第56頁共76頁I目錄)I上一步)I下一步)I關(guān)閉

3.說明"

(1)CMessageText:表示顯示在信息框中的正

文內(nèi)容。

(2)nDialogboxType:確定消息框中要顯示哪些

按鈕和圖標(biāo),一般有3個(gè)參數(shù)。其取值和含義為:

?0-5:表示出現(xiàn)在信息框中的按鈕,如表所示。

值按鈕

0只有“確定”按鈕

1具有“確定”和“取消”按鈕

2具有“終止”、“重試”和“忽

3箕看按博,,、“否”和“取消”

4翼銀“是”和“否”按鈕

5具有“重試”和“取消”按鈕

第57頁共76頁I目錄)I上一步)I下一步)I關(guān)閉

?16,32,48,64:表示出現(xiàn)在消息框中的圖標(biāo);夕缸

值圖標(biāo)

r16停止圖標(biāo)

32問號圖標(biāo)

48感嘆號圖標(biāo)

64信息圖標(biāo)

?10,256,512:表示消息框中哪些是默認(rèn)按鈕。

值默認(rèn)按鈕

0第一個(gè)按鈕

256第二個(gè)按鈕

512第三個(gè)按鈕

目錄)[上一步〕|下一步)|關(guān)閉

第58頁共76頁----------------------------------------------------y/X__________________________________________/X__________________________

(3)CTitleBarText:表示出現(xiàn)在消息框標(biāo)題欄中’的:

文本。若缺省此項(xiàng),系統(tǒng)給出默認(rèn)的標(biāo)題十

MicrosoftVisualFoxPro

(4)MESSAGEBOX。函數(shù)的返回值是一個(gè)數(shù)值,用

于確定在消息框中選擇了哪個(gè)按鈕。

返回值圖標(biāo)

1“確定”按鈕

2“取消”按鈕

3“終止”按鈕

4“重試”按鈕

5“忽略”按鈕

6“是”按鈕

7“否”按鈕

第59頁共76頁I目錄)[上一步】I下一步)I關(guān)閉

(5)如果省略了某些可選項(xiàng),必須加入相'

應(yīng)的逗號分隔符。

?在程序運(yùn)行的過程中,有時(shí)需要顯示一些

簡單的信息如警告或錯(cuò)誤等,此時(shí)可以利

用“信息對話框”來顯示這些內(nèi)容。當(dāng)用

戶接收到信息后,可以單擊按鈕來關(guān)閉對

話框,并返回單擊的按鈕值。

第60頁共76頁目錄)[上一步]|下一步)|關(guān)閉

4.舉例

用MESSAGEBOX()函數(shù)顯示一個(gè)消息框,正文為“這

是一個(gè)教師工資管理的數(shù)據(jù)庫”,消息框中有“確

定”,“取消”按鈕,有問號圖標(biāo),“取消”按鈕

是默認(rèn)按鈕,消息框標(biāo)題欄中的文本為“消息框”。

通過窗口顯示該信息如圖例。

?MESSAGEBOX(“這是一個(gè)教師工資管理的數(shù)據(jù)

庫!”,3+64+512,"消息框”)

消息框

少這是一個(gè)教師工資管理的數(shù)據(jù)庫?

溫馨提示

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

評論

0/150

提交評論