版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程式設計
4.1引例例如“學生管理系統”應用軟體的用戶登陸介面。只有輸入正確的用戶名和密碼,才能進入管理系統。
當密碼正確時進入主菜單,如左圖所示。當密碼不正確時顯示提示資訊,如右圖所示。此例是如何實現,其中的程式是如何設計的呢?
具體執行的程式為:
LPARAMETERSnKeyCode,nShiftAltCtrl&&定義參數ifnkeycode=13&&判斷密碼輸入後是否按回車
ifthisform.text2.value="ABCDEFG"&&判斷輸入密碼是否為”ABCDEFG”DO系統菜單.mpr&&若為”ABCDEFG”,則執行“系統菜單.mpr”thisform.tabstop=.t.&&游標移至下一處
thisform.release&&釋放當前表單
else&&若密碼不是”ABCDEFG”waitwindow"對不起,口令不正確,您不能使用本系統!"
&&顯示密碼錯誤時的提示資訊
this.value=””&&設置當前表單的text2為空
thisform.tabstop=.f.&&游標仍停在該文本框
endifendif
4.2語言基礎4.2.1常量、變數與數組
4.2.2運算式
4.2.3函數
4.2.1常量、變數與數組常量是指在程式執行過程中其值不改變的量,而變數在程式執行過程中允許其值隨時改變。VisualFoxPro6.0中常量有數值型常量、字元型常量、邏輯型常量、日期型常量、日期時間型常量和貨幣型常量,不同類型的常量有不同的書寫格式;VisualFoxPro6.0的變數有字段變數、系統記憶體變數和用戶記憶體變數三類。1.常量數值型常量(N)
例如:80,12.56,-5.76,5.87E10(表示5.87×1010),3.64E-12字元型常量(C)
例如:"abcd",‘1234’,[中華民族],"VisualFoxPro6.0"邏輯型常量(L)
例如:.T.,.Y.,.f.,.N.
注意:兩邊的小圓點不能省略。
日期型常量(D)
例如:{^1993/02/12},{^1999-12-05},{^2002.07.24}日期時間型常量(T)
例如:{^1993/02/1210:15:25am},{^1999-12-0511:22:37am},{^2002.07.2409:14:38am}貨幣型常量(Y)
例如:$48.25,$57.272.變數VisualFoxPro6.0的變數有字段變數、用戶記憶體變數和系統記憶體變數三類,用戶記憶體變數簡稱記憶體變數。字段變數、用戶記憶體變數的名稱要求以字母(或漢字)、下劃線打頭後面跟字母、下劃線和數字,系統記憶體變數名則由系統自行設定。
(1)字段變數數據表結構中每一個資料項目都是一個字段變數,VisualFoxPro6.0字段變數的數據類型有13種類型。每個字段變數是在建立表時定義的,其字段變數名稱由1-128個字元組成,它是個多值變數,其值隨記錄指針移動而發生改變,它的當前值是記錄指針所指記錄(當前記錄)的相應字段值。
(2)記憶體變數
1)變數的引用記憶體變數的引用是通過記憶體變數名來訪問該記憶體變數的,當某個記憶體變數名與當前表中某字段變數同名時,對該記憶體變數的引用必須在變數名前加上首碼M.(或M->),否則系統將訪問同名的字段變數。如:若當前表為XSDA.DBF,其中有XM字段變數,此時執行XM=123後則記憶體中存在一個名為XM的記憶體變數,要想引用XM這個記憶體變數應為:M.XM或M->XM。2)記憶體變數的賦值:
記憶體變數不需事先定義,要使用一個記憶體變數可直接賦值,記憶體變數賦值有兩種格式:格式一:<記憶體變數名>=<運算式>格式二:STORE<運算式>TO<記憶體變數名表>
注意:賦值號(=)一次只能給一個記憶體變數賦值;STORE…TO…命令可一次給若干個記憶體變數賦予相同的值3)記憶體變數的顯示:
顯示記憶體變數有以下四種格式:格式一:?[<運算式表>]格式二:??<運算式表>格式三:LISTMEMORY[LIKE<通配符>][TOPRINTER|TOFILE<檔案名>]格式四:DISPLAYMEMORY[LIKE<通配符>][TOPRINTER|TOFILE<檔案名>]
【例4.1】定義常用類型的記憶體變數並賦值後顯示在命令窗口鍵入如下命令:STORE28.45TOAX&&定義記憶體變數AX,數值型,其值為28.45STORE"中華民族"TOB&&定義記憶體變數B,字元型,其值為”中華民族”STORE.T.TOC&&定義記憶體變數C,邏輯型,其值為.T.STORE$128TOD5&&定義記憶體變數D5,貨幣型,其值為$128E={^1998.04.06}&&定義記憶體變數E,日期型,其值為1998年4月6日F={^2001/04/089:28:35am}&&定義記憶體變數F,日期時間型,其值為2001年4月8日上午9點28分35秒STORE27TOX,Y,Z&&定義記憶體變數X,Y,Z,數值型,其值都為27LISTMEMOLIKE?
&&顯示記憶體變數,LIKE?表示記憶體變數名為任意一個字元記憶體變數,本命令顯示所有變數名為一個字元的記憶體變數屬性。
再在命令窗口輸入LISTMEMOLIKE??&&顯示所有變數名最多為二個字元的記憶體變數屬性。螢幕顯示執行的結果如下:4)記憶體變數的釋放格式一:RELEASE[<記憶體變數表>][ALL[LIKE|EXCEPT<通配符>]]格式二:CLEARALL
例如:
RELEASEx,y&&清除記憶體變數x,yRELEASEALL&&清除用戶定義的所有記憶體變數
(3)系統記憶體變數系统内存变量是VisualFoxPro6.0自動生成與維護的變數,用於控制輸出和顯示資訊的格式。為了與一般的記憶體變數有所區別,系統記憶體變數名前一律加下劃線“_”。3.數組
數組是按一定的順序排列的一組記憶體變數,數組中的各個變數稱為數組元素。數組必須先定義後使用。
(1)數組的定義
(2)數組與表間傳遞數據
(1)數組的定義命令格式:格式一:DIMENSION<數組名1>(<下標1.>[,<下標2>])[,<數組名2>(<下標3>[,<下標4>])…]格式二:DECLARE<數組名1>(<下標1.>[,<下標2>])[,<數組名2>(<下標3>[,<下標4>])…]
注意:系統規定數組元素下標的下限為1。例如命令“DIMENSIONX(3),A(2,3)”分別定義了數組名為X的一維數組和數組名為A的二維數組。數組X的下標下限為1,上限為3,故數組X的元素為:X(1)、X(2)、X(3);二維數組A的下標下限為(1,1),上限為(2,3),因而數組A有二行三列共6個元素:
A(1,1)A(1,2)A(1,3)A(2,1)A(2,2)A(2,3)
數組的輸入:dimea(10)a(1)=5a(2)=10
數組的輸出:?a(1),a(2)
(2)數組與表間傳遞數據数组与表之间、变量与表之间都可以交换数据,通过数组不仅传送的数据多、速度快,且能自动定位。數組與表間傳遞數據分為:1)表數據傳遞到數組
2)數組內容傳遞到表1)表數據傳遞到數組格式一:COPYTOARRAY<數組名>[FIELDS<字段名>][範圍][FOR|WHILE<條件>]
功能:將當前工作區中打開的表當前記錄開始的若干滿足條件記錄的指定字段內容複製到指定數組中。格式二:SCATTER[FIELDS<字段名>][MEMO]TO<數組名>|TO<數組名>BLANK|MEMVAR|MEMVARBLANK
功能:將當前工作區中打開的表當前記錄內容複製到一組與字段名同名的記憶體變數或數組中。
【例4.2】將xsda.dbc表中男生的姓名複製到x_m中,並顯示該數組的值。CLEARUSExsdaLISTxmFORxb="男"COPYTOARRAYx_mFIELDSxmFORxb="男"FORI=1TOalen(x_m)&&函數alen(x_m)返回數組x_m的長度
?x_m(i)ENDFORRETURN2)數組內容傳遞到表格式一:APPENDFROMARRAY<數組名>[FIELDS<字段名表>][FOR<條件>]
功能:將指定數組中的內容添加到當前表的末尾(不包括備註型和通用型字段)。格式二:GATHERFROM<數組名>|MEMVAR[FIELDS<字段名表>][MEMO]
功能:將指定數組或一組與表字段名同名記憶體變數中的內容複製到當前表的當前記錄中。格式三:INSERTINTO<表檔案名>FROMARRAY<數組名>|MEMVAR
功能:將指定數組或一組與表字段名同名記憶體變數中的內容插入或追加到指定表中。4.2.2運算式
運算式是VisualFoxPro6.0命令的重要組成部分,它是通過運算符將常量、變數、函數等運算對象連接起來的式子。根據運算式結果值的數據類型不同,VisualFoxPro6.0運算式分為:
1.數值運算式
2.字元運算式
3.日期運算式
4.邏輯運算式
1.數值運算式用算術運算符將數值型常量、變數、函數連接起來的式子,其結果值的數據類型為N型。例如:?24*3^2/454?3*9^2%5+36
2.字元運算式
使用字串運算符將字元型數據連接起來形成的式子,其運算結果的數據類型仍是字元型。例如:A="Hello"B="Friend!"?A+BHelloFriend!?A-BHelloFriend!3.日期運算式使用算術運算符將日期型數據、數值型數據連接起來的式子,其運算結果的數據類型是日期型或數值型。例如:?{^2001/12/12}+1212/24/01?{^2001/12/12}-1012/02/01?{^2002/07/28}-{^2002/06/08}504.邏輯運算式使用邏輯運算符將邏輯型數據或關係運算式連接起來的式子,其運算結果的數據類型是邏輯型。(1)關係運算式用關係運算符將兩個運算對象連接起來的式子,其運算結果的數據類型是邏輯型。具體格式為:<運算式1><關係運算符><運算式2>
例如:?0>5.F.?{^2001/06/03}<{^2001/07/08}日期型數據比較
.T.
(2)邏輯運算式邏輯運算符有三個,它們是:.NOT.或!(邏輯非),.AND.(邏輯與),.OR.(邏輯或)。其運算優先順序由高到低依次是:NOT、AND、OR。
RXF>=450ANDXB=“男”表示的是:入學分(字段名為RXF)在450分以上的男生。
注意:在某個運算式中既有關係運算,又有邏輯運算時,先進行關係運算,再進行邏輯運算。4.2.3函數函數是用程式來實現的一種數據運算或轉換。VisualFoxPro6.0提供了十分豐富的函數,並且提供了用戶自定義函數的功能。使用起來十分方便、靈活。
每一函數都有三個要素:函數名、參數和返回值。
函數調用格式:函數名(<參數表>)例如:SUBSTR("ABCDEFG",3,2)下面将介绍VisualFoxPro6.0的部分常用函數數值型常用函數字元型常用函數日期時間型常用函數數據類型轉換常用函數表操作常用函數分支函數IIF()
1.數值型函數
ABS(n)、SQRT(n)、EXP(n)、LOG(n)、LOG10(n)、INT(n)、SIGN(n)、MAX(n1,n2)、MIN(n1,n2)、MOD(n1,n2)、ROUND(n1,n2)、RAND([n])2.字元型函數
SUBSTR(C,[N1[,N2]])、LEFT(C,N)、LEN(C)、
RIGHT(C,N)、AT(C1,C2)、TRIM(C)、ALLTRIM(C)、
SPACE(N)、UPPER(C)、LOWER(C)、&<字元型記憶體變數>3.日期時間型函數
DATE()、TIME()、DATETIME()、YEAR(D)、MONTH(D)、DAY(D)4.轉換函數
VAL(C)、STR(N1[,N2,N3])、CHR(N)、ASC(C)、CTOD(C)、DTOC(D)、CTOT(C)、TTOC(T)5.表操作函數
BOF()、EOF()、RECCOUNT([N])、FCOUNT([N])、FOUND([N])、RECNO()、DELETE(N|表名)、DBF(N)
6.分支函數格式:IIF(<條件運算式>,<運算式1>,<運算式2>)
功能:當<條件運算式>成立,即結果為真(.T.)時,函數返回<運算式1>的值;若<條件運算式>不成立,即結果為假(.F.)時,函數返回<運算式2>的值。示例例:USEXSDA?BOF().F.SKIP-1?BOF().T.?RECNO()1GOBOTTOM?EOF().F.SKIP1?EOF().T.4.3程式檔VisualFoxPro6.0的命令執行方式有交互方式、菜單方式和程式方式。從本節開始我們將學習利用程式方式來執行VisualFoxPro6.0命令以完成一些具體任務。
4.3程式檔4.3.1程式檔的建立
4.3.2程式檔的修改
4.3.3程式檔的運行
4.3.1程式檔的建立
程式是能夠完成一定任務的命令有序集合。這些命令的集合被放在一個有特定擴展名(.prg)的檔中,這個檔稱為程式檔或命令檔。建立程式檔有三種方式:命令方式、菜單方式和專案管理器方式。
(1)命令方式格式:MODIFYCOMMAND[<檔案名>]
功能:打開一個程式編輯窗口,錄入或修改程式,程式檔的擴展名為.prg。程式編輯窗口
(2)菜單方式使用菜單方式創建程式的步驟為:
①單擊“檔”菜單中“新建”菜單項或單擊“新建”工具按鈕,打開“新建”對話框,如圖所示。
②在“新建”對話框中,選擇“程式”,然後單擊“新建檔”,出現程式編輯窗口。
③在程式編輯窗口錄完程式內容後,存盤退出,關閉窗口。(3)專案管理器方式
使用專案管理器方式創建程式的步驟為:①打開專案管理器對話框。②切換至“全部”頁面,打開“代碼”檔夾,從中選擇“程式”項;或選“代碼”頁,從中選擇“程式”項,如圖所示。③單擊“新建(N)…”按鈕,進入程式編輯窗口。4.3.2程式檔的修改編輯好的程式檔可以再次進行修改,具體方式也有三種。1.命令方式格式:格式:MODIFYCOMMAND<檔案名>功能:打開一個程式編輯窗口,修改程式。2.菜單方式使用菜單方式修改程式的步驟為:
①單擊“檔”菜單中“打開”菜單項出現“打開”對話框,如圖所示。
②在“打開”對話框選“檔類型”為“程式”,選擇要編輯的程式檔案名,單擊“確定”後,就會打開程式編輯窗口。
③用戶編輯修改完成後存盤退出,修改即告完成。3.專案管理器方式
使用项目管理器方式修改程序的步骤为:
①打開專案管理器對話框。
②切換至“全部”頁面,打開“代碼”檔夾,選擇“程式”檔夾並展開,或打開“代碼”頁從中選擇“程式”項並展開,,選擇要修改的程式檔。
③單擊“修改(M)…”按鈕,進入程式編輯窗口。
④修改程式內容後,存盤退出同時關閉程式編輯窗口。4.3.3程式檔的運行
程式檔的運行也有三種方式,即命令方式、菜單方式和專案管理器方式。
1.命令方式格式:DO<程式檔案名>
功能:運行指定的程式檔。
2.菜單方式
在主菜單“程式”中選擇“運行”菜單項,將出現如圖所示的運行對話框,從中選擇要運行的程式檔,然後雙擊程式檔案名或單擊“運行”按鈕即可。
3.项目管理器方式在專案管理器中運行某個程式檔的步驟為:
①打開專案管理器對話框。
②切換至“全部”頁面,打開“代碼”檔夾,選擇“程式”檔夾並展開,或打開“代碼”頁從中選擇“程式”項並展開,選擇要運行的程式檔。
③單擊“運行(U)…”按鈕,則執行所選的程式。4.4結構化編程我們已經學習了如何創建程式,但如何編寫程式檔呢?這一節我們就來學習VisualFoxPro6.0結構化程式設計的內容。VFP程式的基本結構有三種,它們是順序結構、分支結構和迴圈結構。各種程式都是由這三種基本結構經不同組合而成。在介紹這三種基本結構之前,我們先來學習VFP程式編寫的一些規則。程式的書寫規則:
①命令分行:程式中每條命令都以回車鍵結束,一行只能寫一條命令。若命令一行書寫不下需分行書寫時,應在一行終了處鍵入續行符“;”,然後回車寫續行。
②命令注釋:程式中可插入注釋,以提高程式的可讀性。格式一:*<注釋內容>在要解釋的命令前,又稱行首注釋。格式二:&&<注釋內容>在要解釋的命令後,又稱行尾注釋。4.4結構化編程4.4.1順序結構
4.4.2分支結構
4.4.3迴圈結構
4.4.1順序結構
1.基本輸入輸出命令
(1)基本輸入命令
1)INPUT命令格式:INPUT[<字元運算式>]TO<記憶體變數>
功能:等待用戶從鍵盤輸入數據,存入到指定的記憶體變數中。
2)ACCEPT命令格式:ACCEPT[<字元運算式>]TO<記憶體變數>
功能:等待用戶從鍵盤輸入字元型數據,並存入到指定的記憶體變數中。從鍵盤輸入的字串不需要引號作為定界符。3)WAIT命令格式:WAIT[<字元運算式>][TO<記憶體變數>][WINDOWS[AT<行>,<列>]][TIMEOUT<等待時限>]
功能:顯示<字元運算式>的內容(提示資訊)並暫停系統的執行,直到用戶按下任一鍵或單擊滑鼠後,程式再繼續執行。
4)@…SAY…GET命令格式:@<行,列>SAY<字元運算式>GET<變數>
…READ
功能:在指定的位置顯示提示資訊,等待用戶編輯變數。
GET語句的一般使用格式為:
①變數的初值設定
②@<行,列>SAY<字元運算式>GET<變數>READ
(2)基本輸出命令
VisualFoxPro6.0基本輸出命令有?、??、@…SAY…三條命令和MessageBox()函數,其中?和??在本章4.2.1已作了簡單的介紹,下麵將進一步介紹這幾條輸出命令。
1)?|??命令
2)@…SAY命令
3)MessageBox()函數1)?|??命令格式:
?|??[<運算式1>][PICTURE<字元運算式>][FUNCTION<字元運算式>][AT<數值運算式>][,<運算式2>]……
功能:計算運算式的值,並將結果送往螢幕、印表機或同時送往二者。2)@…SAY命令格式:@<行,列>SAY<運算式>功能:在指定的行、列位置輸出運算式的值。有關函數:ROW()返回當前螢幕游標所處的行位置COL()返回當前螢幕游標所處的列位置PROW()返回印表機當前列印所處的行位置PCOL()返回印表機當前列印所處的列位置@4,10say"現在是北京時間:"&&在(4,10)位置顯示"現在是北京時間:"@6,24sayttoc(datetime())&&在(6,24)位置顯示當前日期時間3)MessageBox()函數格式:MessageBox(<資訊內容>[,<對話框類型>[,<對話框標題>]])
功能:顯示一個自定義對話框。示例:MessageBox()函數應用舉例在命令窗口輸入:MessageBox("請選擇按鈕")2.順序結構:按命令在程式中出現的選後次序依次執行。為了表示程式的執行次序,經常用流程圖來描述程式的執行,順序結構流程圖可表示為如圖所示。從流程圖可以看出,順序結構程式執行時無分支,它是依據命令在程式中出現的次序(命令A—>命令B—>命令n)依次執行的,也就是順序結構的流程是單一直線式的。順序結構流程圖命令A命令B命令…命令n順序結構流程圖現實生活中許多任務往往比較複雜,經常需要根據不同的具體情況選擇相應的解決方案。如“學生管理系統”中,如以每位同學的成績(表XSCJ.DBF中的CJ)來核定其課程的等級。是優秀還是良好…,就要根據各位同學CJ高低的不同來分別處理。這種情況反映到程式設計中,僅僅靠單一直線式流程的順序結構程式解決起來就比較困難,這時就需要分支結構程式來完成。4.4.2分支結構分支結構是指程式流程發生了分支,程式執行時根據條件選擇其中某一分支執行的程式結構,又稱選擇結構。VisualFoxPro6.0的分支結構按分支多少分為雙分支(IF/ENDIF)和多分支(DOCASE/ENDCASE)兩類。1.雙分支結構——IF/ENDIF語句2.多分支結構——DOCASE/ENDCASE語句
雙分支單分支格式:IF<條件>格式:IF<條件>[<語句組1>][<語句組>][ELSEENDIF[<語句組2>]]ENDIF1.雙分支結構
雙分支流程圖單分支語句流程圖條件語句組1語句組2ENDIF的下一條語句N條件語句組ENDIF的下一條語句YN條件語句組1ENDIF的下一條語句條件N語句組2ENDIF的下一條語句條件Y語句組1ENDIF的下一條語句NENDIF的下一條語句YY【例4.6】根據學生的年齡,輸出學生的姓名和性別。年齡大於等於20輸出大,年齡小於20且大於等於18的輸出中,年齡小於18的輸出小。SNAME=""SSEX=""SOLD=0@10,10SAY"請輸入學生姓名:"GETSNAME@11,10SAY"請輸入學生性別:"GETSSEX@12,10SAY”請輸入學生年齡:”GETSOLDREADIFSOLD>=20?SNAME,SSEX,"大"ELSEIFSOLD<20ANDSOLD>=18?SNAME,SSEX,"中"ELSE?SNAME,SSEX,"小"ENDIFENDIF2.多分支結構格式:
DOCASECASE<條件1>[<語句組1>][CASE<條件2>][<語句組2>]
…[CASE<條件n>][<語句組n>][OTHERWISE[<語句組n+1>]]ENDCASE採用DOCASE語句改寫例4.6的程式。SNAME=""SSEX=""SOLD=0@10,10SAY"請輸入學生姓名:"GETSNAME@11,10SAY"請輸入學生性別:"GETSSEX@12,10SAY"請輸入學生年齡:"GETSOLDREADDOCASECASESOLD>=20?SNAME,SSEX,"大"CASESOLD<20ANDSOLD>=18?SNAME,SSEX,"中"CASESOLD<18?SNAME,SSEX"小"ENDCASE4.4.3迴圈結構在程式設計過程中,經常會遇到反復執行某幾條命令或程式段的問題。如“學生管理系統”中,要查詢表XSCJ.DBF中符合給定條件的每位同學並顯示,如用LOCATE命令將會非常複雜。若採用順序結構,將要重複給出相同或相似的命令組合,這樣使得程式顯得累贅,編碼效率低。這時如果採用迴圈結構來完成,將使程式變得簡潔。迴圈結構是指根據條件是否成立,決定是否重複執行某程式段。
VisualFoxPro6.0的迴圈結構有
1.FOR迴圈
2.DOWHILE迴圈
3.SCAN迴圈
4.循环嵌套1.FOR迴圈
格式:
FOR<記憶體變數>=<初值>TO<終值>[STEP<增量>][<循環體>][EXIT][LOOP]ENDFOR|NEXT
功能:首先給迴圈變數賦初值,判斷迴圈變數是否超過終值,若沒有超過終值則執行循環體,使迴圈變數增加一個增量;若超過終值則跳出迴圈,執行ENDFOR|NEXT後面的語句。執行LOOP轉至迴圈的開始處執行;執行EXIT退出迴圈。【例4.13】FOR迴圈示例一。FORI=1TO5??IENDFOR程式執行結果為:
12345
【例4.15】輸出斐波納契(fibonacci)數列的前20項,數列的規律是:第一、二個數是1,從第三個數起,每個數是前面兩個數之和。
CLEARf1=1f2=1?f1,f2FORi=3TO20f3=f1+f2?f3f1=f2f2=f3ENDFORRETURN2.WHILE迴圈
格式:
DOWHILE<條件>[<循環體>][EXIT][LOOP]ENDDO
功能:首先判斷迴圈變數是否滿足條件,若滿足則執行循環體,在循環體中使迴圈變數發生改變;若不滿足條件則跳出迴圈,執行ENDDO後面的語句。DOWHILE迴圈流程圖【例4.18】用DOWHILE實現FOR迴圈的功能
CLEARK=2&&相當於FORK=2DOWHILEK<=10&&相當於TO10?"K=",KK=K+2&&相當於STEP2ENDDORETURN
運行結果:
K=2K=4K=6K=8K=103.SCAN迴圈
格式:
SCAN[<範圍>][<FOR|WHILE<條件>]<循環體>[<LOOP>][<EXIT>]ENDSCAN
功能:在指定範圍內,掃描滿足給定條件的記錄,若滿足條件,則執行循環體。【例4.19】顯示XSDA.DBF表中前8個記錄裏性別為女的記錄。CLEARUSExsdaSCANNEXT8FORxb="女"DISPLAYENDSCANRETURN運行結果:4.迴圈嵌套在一個循環體內又完整地包含另一個迴圈,稱為迴圈的嵌套。FOR
DOWHILESCANFOR
DOWHILESCAN
…
…
…ENDFORENDDOENDSCANENDFORENDDOENDSCAN4.5過程前面我們介紹了程式設計的三種基本結構,通過順序結構、分支結構、迴圈結構能夠設計出一些簡單的程式。在實際運用中問題往往較複雜,如果僅僅採用這三種基本結構,程式設計工作難度將大大增加,程式代碼也顯得累贅。
VisualFoxPro6.0的副程式結構分為:過程、函數和方法三類。一般來說,過程與函數的區別在於函數要返回一個值而過程不一定有返回值,方法則是限制在一個對象中的副程式。下麵分別介紹。
1.過程
2.自定義函數
3.自定义方法
4.参数传递
5.变量作用域1.過程(1)過程定義:格式:PROCEDURE<過程名>[PARAMETERS|LPARAMETERS<形式參數表>]<語句組>[RETURN[<運算式>]][ENDPROC]功能:定義一個指定名稱的過程和其具體的內容。
(2)過程調用過程調用語句:
DO<過程名>[WITH<實參表>][IN<過程檔>]
功能:調用<過程名>所指定的過程。打開過程檔的語句:格式:SETPROCEDURETO<過程檔案名1>,[<過程檔案名2>,…][ADDITIVE]
關閉過程檔命令:格式一:SETPROCEDURETO格式二:RELEASEPROCEDURE<過程檔1>[,<過程檔2>,…]
功能:格式一命令關閉所有打開的過程檔格式二命令關閉指定的過程檔【例4.23】將本節前面的多次間斷調用相似程式段程式結構示意用過程調用表示:settalkoffproceduresubSETPROCEDURETOS1<命令1>clear<命令2><命令序列A><命令3>DOSUBreturn<命令序列B>DOSUB<命令序列C>DOSUB
……
SETPROCEDURETOsettalkonreturn2.自定義函數VisualFoxPro6.0函數分為兩類:標準函數和自定義函數。標準函數是VFP已經定義好的副程式,可供用戶直接調用,如前面介紹的LEN()、SUBSTR()、AT()、ROUND()等,自定義函數則需要用戶自己編定程式。(1)建立函數格式:FUNCTION<函數名>
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 纺织面料设计师岗位核心实操考核试卷含答案
- 热力管网运行工安全管理评优考核试卷含答案
- 轧制原料工岗位安全责任制模拟考核试卷含答案
- 2026年生物质液体燃料生产行业投资前景报告及未来五至十年战略布局与增长路径
- 2025-2026四川版六年级劳动技术下学期测试卷
- 2025-2026华东师大版高二级语文期末测试卷
- 2025-2026湘教高一生物上学期模拟卷
- 安全注射督导汇报
- 安全主任竞聘模板
- 2026年医学检验科学血常规检验试题及答案
- 天津港集团招聘笔试真题
- 【初中 地理】知识点汇Z-2025-2026学年七年级地理上学期(湘教版2024)
- 广东省广州市2026届高三年级上学期12月调研测试(广州零模)历史试卷
- 2025届高三下学期《十八而志大任始承-高三成人礼》主题班会课件
- 船舶船员心理卫生指南
- 仪表管理标准制度
- 宫颈癌疫苗接种知识培训课件
- 检验室现场管理制度
- 学校交通安全家长会课件
- 临床技术操作规范麻醉学分册
- 泰勒《课程与教学的基本原理》讲义
评论
0/150
提交评论