




版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中介購買合同正式合同范本
- 全職舞蹈老師合同范例
- 加盟分公司合同范本
- 加盟新鮮豬肉合同范本
- 2024年西安電力中心醫(yī)院招聘筆試真題
- 準(zhǔn)新車購車合同范本
- 2024年空港數(shù)字城市開發(fā)建設(shè)有限公司社會招聘考試真題
- 產(chǎn)權(quán)回購合同范本
- 公司雇傭會計(jì)合同范例
- 買雞合同范本
- 數(shù)字賦能農(nóng)村特色產(chǎn)業(yè)發(fā)展的實(shí)證研究
- 2024年湖南公務(wù)員考試申論試題(省市卷)
- 江蘇省中小學(xué)生金鑰匙科技競賽(初中組)考試題及答案
- 人教版三年級上冊數(shù)學(xué)應(yīng)用題100題及答案
- 小學(xué)科學(xué)質(zhì)量分析報(bào)告
- 駕照體檢表完整版本
- 設(shè)計(jì)構(gòu)成全套教學(xué)課件
- 班級管理交流-班主任工作經(jīng)驗(yàn)交流課件(共28張ppt)
- 井控系統(tǒng)操作維護(hù)與保養(yǎng)規(guī)程
- 建筑工程監(jiān)理周報(bào)_周報(bào)范文
- 化學(xué)工業(yè)工程建設(shè)交工技術(shù)文件規(guī)定(新版)
評論
0/150
提交評論