【正文】
For A For B For C …… Next C Next B Next A For A For B For C …… Next B Next A Next C 不能交叉 正確的嵌套 錯誤的嵌套 【 例 】 分析下面程序的運行結(jié)果: clear For i = 1 To 3 For j = 5 To 7 ? I , j Next j Next i Return 1 5 1 6 1 7 2 5 2 6 2 7 3 5 3 6 3 7 對于兩個具有調(diào)用關(guān)系的程序文件,常稱調(diào)用程序為主程序,被調(diào)用程序為子程序。子程序的建立和一般命令文件的建立方法相同,都是 Modify Command,文件默認(rèn)的擴展名還是 Prg。調(diào)用方法是在主程序中用 Do命令。 主程序和子程序 Do 子程序文件名 Modify Command 〈 過程文件名 〉 文件格式: 與程序一樣 主程序調(diào)用: 返回主程序: Return [To Master] 建立子程序: 沒有可選項,返回到調(diào)用處,有可選項,返回到調(diào)用的最高一級。 1. 子程序的調(diào)用和返回 過程和用戶自定義函數(shù) 【 例 】 分析下面程序的運行結(jié)果: Clear Do JA Do JB Do JC Return ? *** Do JB Do JC Return ? Return ? ******* Return To Master 【 例 】 利用子程序計算圓的面積: *主程序: Do While .T. Clear Wait “是否要計算圓的面積 (Y/N)?” To ja If Upper(ja) =“Y” 為“ N”時結(jié)束程序 Do Else Exit Endif Enddo Return *子程序 zcx1: Clear Input 輸入圓的半徑 : to bj S=*bj**2 ?圓的面積為: ,s Return 2. 帶參數(shù)的子程序調(diào)用 調(diào)用子程序時參數(shù)表中的參數(shù)要傳送給子程序,子程序也必須設(shè)置相應(yīng)的參數(shù)接受語句。 Parameters可以完成此項功能,但是必須是子程序的第一條語句。 主程序調(diào)用: 子程序接收: Do 過程文件名 〉 With 實際參數(shù)表 Parameters 形式參數(shù)表 各種各類型的常數(shù)、有具體值的變量 沒有具體指的變量,個數(shù)、位置和類型要和主程序的實際參數(shù)一樣,但是名字可以不一樣。 例如 : 主程序: Do zcx With “張三” , 89,性別 子程序: Parameters a,b,c 變量姓名必須是賦過值的 變量沒有具體值 【 例 】 利用子程序計算圓的面積: *主程序: Clear ymj=0 初始化用于接收圓面積的變量 Input “請輸入圓的半徑: “ To bj Do zcx2 With bj,ymj 帶參數(shù)調(diào)用子程序 7,10 Say 圓的面積為: +Str(ymj,10,2) Return *子程序 zcx2: Parameters cj, s S=*cj**2 Return 變量 bj初始值為 0 計算后的面積 函數(shù)名 (實際參數(shù)表) 3. 自定義函數(shù) 自定義函數(shù)與子程序的區(qū)別在于自定義函數(shù)必須返回一個函數(shù)值,而子程序則無此限制。 主程序調(diào)用格式: [Function 函數(shù)名 ] [Parameters 形式參數(shù)表 ] 命令序列 Return 表達式 如果是單獨的程序,就可以省略這一句,如果自定義函數(shù)和主程序是一個程序,不能省略。 從表達式返回函數(shù)值到主程序 自定義函數(shù)格式: 例如 : 主程序: ?a1 (bb) 自定義函數(shù): Parameters bb …… Return bb 【 例 】 利用自定義函數(shù)計算圓的面積: *主程序: clear Input “請輸入圓的半徑: “ To bj 7,10 Say 圓的面積為: +str(zcx3(bj),10,2) Return 帶參數(shù)調(diào)用自定義函數(shù) zcx3 *自定義函數(shù) zcx3: Parameters r S=*r**2 Return s 調(diào)用時 bj是半徑,返回時,bj是面積 *主程序: clear Input “請輸入圓的半徑: “ To bj 7,10 Say 圓的面積為: +str(zcx3(bj),10,2) Return *自定義函數(shù) Function zcx3 Parameters r S=*r**2 Return s 如果主程序和自定義函數(shù)放在一個文件中,那么一定要加上這么一句。 過程文件 多個過程可以保存在一個過程文件中。過程文件打開后,其中的過程能被任何其它程序調(diào)用。稱為內(nèi)部過程調(diào)用。要調(diào)用內(nèi)部過程,需在主程序中首先打開過程文件,然后再調(diào)用過程文件中的過程。 打開過程文件: 調(diào)用過程: 關(guān)閉過程文件: Set Procedure To 過程文件名 Do 過程名 [ with 參數(shù)表 ] Set Procedure To 1. 打開、調(diào)用、關(guān)閉過程文件 2. 過程的建立 Procedure 表示一個過程的開始,并命名過程名,過程名必須以字母或下劃線開始。為 1~ 8 個字符; 過程執(zhí)行到 Return處返回到調(diào)用程序或命令窗口。 定義過程: Procedure 過程名 1 命令序列 Return [To Master] Procedure 過程名 2 命令序列 Return …… 說明: 過程文件可以單獨建立成命令文件,也可以放在主程序的后面 【 例 】 有 2個文件:程序文件 , 過程文件。 Clear Set Procedure To Input 請從鍵盤輸入一個數(shù): To a Input 請從鍵盤輸入一個數(shù): To b Do P1 Do P2 Set Procedure To ?a=,a,b=,b ?a+b=,a+b,ab=,ab ?a*b=,a*b,a/b=,a/b Return * Procedure P1 C=1 D=2 C=C+D D=D+C ?c=,C,d=,D Return Procedure P2 ?p2=,200 Return 打開 pp1過程文件放了 2個過程 P1和 P2 關(guān)閉 【 例 】 編寫計算園的面積和周長的程序 。 Clear Set Procedure to zcx1 N=0 Do while .t. Clear 10,10 say 請選擇以下功能: 11,10 say 1計算圓的面積 : 12,10 say 2計算圓的周長 : 13,10 say 3退出 14,10 say 請輸入您的選擇: get n Read Do case case n=1 do proc1 面積 Case n=2 do proc2 周長 Case n=3 Exit Endcase Enddo Set Procedure to Return 打開過程文件 關(guān)閉過程文件 *zcx1 Procedure proc1 Clear Input 請輸入半徑 : to bj s=**bj ?“圓的面積為: ,s Wait Return Procedure proc2 Clear Input 請輸入半徑 : to bj i=2**bj ?圓的周長為: ,i Wait Return 本章小結(jié) Visual FoxPro既是一種數(shù)據(jù)庫管理系統(tǒng),也是一種程序設(shè)計語言。本章介紹了 Visual FoxPro陳序設(shè)計的基本內(nèi)容,包括程序的概念、程序的基本結(jié)構(gòu)、多模塊程序設(shè)計等等。 實驗六 程序設(shè)計 作業(yè)要求 作業(yè) 上交實驗六的 Word文檔和所作的程序文件。 演講完畢,謝謝觀看!