第六章-Visual-FoxPro程序設計基礎_第1頁
第六章-Visual-FoxPro程序設計基礎_第2頁
第六章-Visual-FoxPro程序設計基礎_第3頁
第六章-Visual-FoxPro程序設計基礎_第4頁
第六章-Visual-FoxPro程序設計基礎_第5頁
已閱讀5頁,還剩67頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第六章VisualFoxPro程序設計基礎1程序概念參見Wiki解釋/wiki?title=%E7%A8%8B%E5%BA%8F&variant=zh-cn計算機程序或者軟件程序(通常簡稱程序)是指一組指示計算機每一步動作的指令,通常用某種程序設計語言編寫,運行于某種目標體系結構上。打個比方,一個程序就像一個用漢語(程序設計語言)寫下的紅燒肉菜譜(程序),用于指導懂漢語的人(體系結構)來做這個菜。通常,計算機程序要經過編譯和鏈接而成為一種人們不易理解而計算機理解的格式,然后運行。未經編譯就可運行的程序通常稱之為腳本程序。參見Wiki解釋/wiki?title=%E7%A8%8B%E5%BA%8F&variant=zh-cn計算機程序或者軟件程序(通常簡稱程序)是指一組指示計算機每一步動作的指令,通常用某種程序設計語言編寫,運行于某種目標體系結構上。打個比方,一個程序就像一個用漢語(程序設計語言)寫下的紅燒肉菜譜(程序),用于指導懂漢語的人(體系結構)來做這個菜。通常,計算機程序要經過編譯和鏈接而成為一種人們不易理解而計算機理解的格式,然后運行。未經編譯就可運行的程序通常稱之為腳本程序。26.1VisualFoxPro程序的建立與執行VisualFoxPro中程序的基本組成程序文件的建立和編輯程序文件的編譯和執行VisualFoxPro命令方式的輸入輸出語句36.1.1程序的基本組成(1)在VisualFoxPro中,程序文件又稱為命令文件,它是由VisualFoxPro中的命令和一些程序控制語句所組成的,程序文件擴展名為.PRG。46.1.1程序的基本組成(2)程序的基本組成規則是:(1)程序由若干程序行組成。(2)每一程序行由一條語句或一條命令組成。(3)每一行都以“Enter”鍵結束。若一行寫不完一條命令,可在該行末尾處加上續行符號“;”。(4)程序末尾通常可加上程序結束語句,如CANCEL、RETURN或QUIT等;也可不加,VisualFoxPro將在程序結束處自動添加程序結束語句。(5)在程序的開始或每一程序行的后面可加上注釋語句對整個程序和某個程序行做一說明,以增加程序的可讀性。56.1.1程序的基本組成(3)程序的編制過程為:程序的建立、程序的編譯、程序的運行。66.1.2程序文件的建立和編輯建立和編輯有兩種方式:命令和菜單1.命令方式命令格式:MODIFYCOMMAND[<程序文件名>|?]命令功能:啟動文本編輯器。2.菜單方式詳見課本6.1.2節76.1.3程序文件的編譯和執行(1)1.編譯編譯是將源程序轉換成目標程序。編譯有命令和菜單兩種方式。(1)命令方式命令格式:Compile<程序文件名>|?命令功能:對指定的程序文件進行編譯。(2)菜單方式詳見課本6.1.3節86.1.3程序文件的編譯和執行(2)2.執行程序文件輸入存盤或再經編譯后,系統可自動連續執行文件中的每條命令或語句。程序文件的執行有命令和菜單兩種方式。(1)命令方式命令格式:DO<程序文件名>|?功能:將程序文件從磁盤調入內存并執行。(2)菜單方式詳見課本6.1.3節96.1.4命令方式的輸入輸出語句(1)1.注釋符*/&&語句格式1:*[<注釋>]語句格式2:&&[<注釋>]功能:*或&&的功能是在程序中起注釋作用,給程序注釋的目的是使程序易于自己和別人理解,即有好的可讀性。注釋語句在VisualFoxPro中是非執行語句,即包含注釋語句的程序,在執行時,VisualFoxPro將忽略這些注釋語句,因為它們僅起注釋作用。說明:*的功能是注釋一整行,它通常放在最前面。&&的功能是放在語句后起注釋作用。通常*用來對整個程序進行注釋,即說明該程序的功能;&&用來對一條語句進行注釋,即說明該語句的功能。106.1.4命令方式的輸入輸出語句(2)例6-2:注釋示例程序,*程序名稱為ex6-2.prg *我的第一個程序

clear &&清屏

settalkoff &&關閉回顯

a=3 &&給a賦值為3 b=3^a &&求3的立方值

?a,b &&輸出結果116.1.4命令方式的輸入輸出語句(3)2.交互式輸入語句VisualFoxPro提供三種交互式輸入語句。功能:系統執行上述命令時自動停下,等待用戶從鍵盤輸入信息到計算機內存變量中,系統接收到信息后自動往下繼續執行。12

6.1.4命令方式的輸入輸出語句(4)2.交互式輸入語句(1)INPUT語句格式1:INPUT[<提示信息>]TO<內存變量>在語句1中,可輸入N、C、L和D型數據。輸入C型數據時,要使用單引號或雙引號作為定界符。輸入L型數據時,.T.和.F.兩邊的小圓點不能省略。輸入D型數據時,要用CtoD()函數或大括號“{}”將字符串轉換成日期型變量。13

6.1.4命令方式的輸入輸出語句(5)2.交互式輸入語句(2)ACCEPT語句格式2:ACCEPT[<提示信息>]TO<內存變量>語句2只能輸入C型數據,輸入數據時可不用定界符。14

6.1.4命令方式的輸入輸出語句(6)2.交互式輸入語句(3)WAIT語句格式3:WAIT[<提示信息>][TO<內存變量>][TIMEOUT<等待時間>]語句3只能輸入一個字符的C型數據,并可指定等待時間。若超過等待時間仍無輸入,則系統自動將0作為輸入值,使程序繼續執行。語句3輸入結束后可不按Enter鍵。156.1.4命令方式的輸入輸出語句(7)注意:INPUT命令和ACCEPT命令以及后面介紹的格式化輸出命令在VisualFoxPro中很少使用。它們的功能是為兼容原來的FoxPro程序。WAIT命令是等待用戶按任意鍵后程序繼續運行。166.1.4命令方式的輸入輸出語句(8)例6-3:在“學生表”中,按姓名查找某學生的情況。程序編制如下:

*程序名為ex6-3.prg clear

xm='' &&為空串

setdefaultto"D:\我的數據庫項目\數據庫"&&設置默認的目錄位置

use學生表

accept'請輸入姓名:'toxm listfor姓名=xm wait'按任意鍵繼續' clear ?'查詢完畢' cancel176.1.4命令方式的輸入輸出語句(9)4.程序結束語句(1)CANCEL命令語法:CANCEL說明:停止當前VisualFoxPro程序的執行。當交互使用VisualFoxPro時,控制權返回命令窗口。若執行一個獨立的發布應用程序,CANCEL終止該應用程序并將控制權返回Windows;若設計時在VisualFoxPro中執行一個程序,CANCEL終止該程序,并將控制權返回命令窗口。執行CANCEL將釋放所有私有變量。186.1.4命令方式的輸入輸出語句(10)4.程序結束語句(2)RETURN命令將程序控制權返回給調用程序。語法:RETURN[<表達式>|TOMASTER|TO<過程名>](3)QUIT命令結束當前VisualFoxPro程序的運行,退出VisualFoxPro,返回到操作系統。注意:請始終使用QUIT命令來終止VisualFoxPro程序。如果打開了VisualFoxPro,沒有發出QUIT命令而直接關閉了計算機,那么可能有數據丟失的危險。196.1.4命令方式的輸入輸出語句(11)4.程序結束語句(4)SUSPEND命令SUSPEND語句的功能是將正在運行的程序掛起,這使得程序進入到交互狀態。此時我們可以使用?|??、DISPLAYMEMORY等命令查看內存變量的值。在程序掛起狀態下,可以用命令CANCEL終止程序的運行。一般情況下,我們僅使用SUSPEND命令來調試程序。(5)RESUME命令當程序運行到SUSPEND語句被掛起后,程序進入交互狀態,在查看完相關的變量值后,如果在命令窗口輸入RESUME命令,可以使程序繼續運行。206.1.4命令方式的輸入輸出語句(12)CLEAR命令CLEAR用來清屏。CLEAR的另一項功能是從內存中釋放指定項。語法:CLEAR[ALL|WINDOWS]ALL表示從內存中釋放所有的變量和數組以及所有用戶自定義菜單欄、菜單和窗口的定義;CLOSEALL也能關閉所有表,包括所有相關的索引、格式和備注文件,并且選擇工作區1。216.2結構化程序設計基礎程序設計過程算法程序流程圖及示例226.2.1程序設計過程程序設計即是計算機用戶根據解決某一問題的步驟,按一定的邏輯關系,將一系列的指令組合在一起。23真否真否否真有無錯誤分析問題編寫程序確定算法畫流程圖運行并調試程序錯誤修改程序錄入錯誤修改算法結束246.2.2算法(1)程序的設計過程,核心問題是設計一個合理、有效的算法。一般認為,算法就是在有限的時間內,可以根據明確規定的運算規則,在有窮步驟內得出確切計算結果的機械步驟或能運行的計算程序。256.2.2算法(2)算法特性:(1)有限性,即解題步驟是有限的,無窮的步驟意味無解。(2)確定性,每一步驟的操作是確定的,這樣可以保證后繼操作的輸入是可以確定的。(3)有序性,每一步驟都是可行的。此外,算法可以沒有輸入(因為輸入由計算機自動產生),但一定要有輸出,輸出用來表示問題是否有解。266.2.2算法(3)三種基本控制結構:順序、分支、循環順序結構是程序設計中最基本的結構。在該結構中,程序的執行是按命令出現的先后順序依次執行的。分支結構是按給定的選擇條件成立與否來確定程序的走向。分支結構可分為雙重分支選擇和多重分支選擇。在任何條件下,無論分支多少,只能選擇其一。276.2.2算法(4)三種基本控制結構:順序、分支、循環循環結構是一種重復結構,即某一程序段將被反復執行若干次。按循環的嵌套層次,循環可分為簡單循環結構和循環嵌套(也稱為多重循環)結構。按循環體執行的條件性質,循環又可分為While循環和Until循環。無論何種類型的循環結構,都要確保循環的重復執行能夠終止。286.2.2算法(5)結構化程序是指僅由三種基本控制結構組成的程序,它具有以下特點:(1)整個程序模塊化。(2)每個模塊只有一個入口和一個出口。(3)每個模塊都應能單獨執行,且無死循環。(4)采用黑箱的思想,宏觀地描述任何一個程序,可以將它看成為順序結構。296.2.3程序流程圖及示例ANSI流程圖N-S圖301.ANSI流程圖(1)判斷框箭頭:表示程序流向連接符號:表示圖標之間相互連接關系判斷框:表示根據條件決定程序走向過程:表示該流程部分是一個過程輸入/輸出框:表示數據的輸入、輸出操作處理框:表示對數據進行處理起止框:表示程序的開始或結束311.ANSI流程圖(2)順序結構語句塊1語句塊2語句塊3321.ANSI流程圖(3)條件分支結構假真條件語句塊1語句塊233真假循環條件循環體1.ANSI流程圖(4)循環結構假真循環條件循環體Until型循環結構While型循環結構341.ANSI流程圖(5)多重條件分支結構真假假真假真條件1語句塊1語句塊條件2語句塊2…真語句塊n假條件n352.N-S圖(1)順序結構語句塊1語句塊2語句塊3362.N-S圖(2)條件分支結構

語句塊1語句塊2條件真假372.N-S圖(3)多重分支選擇語句CASE<條件>值1值2…值n其它語句塊1語句塊2…語句塊n語句塊382.N-S圖(4)循環結構循環條件循環體循環體循環條件Until型循環結構While型循環結構396.3程序的控制語句結構順序結構程序分支結構程序循環結構程序402.分支結構程序(1)雙重分支選擇語句語句格式:

IF<條件> <語句塊1> [ELSE <語句塊2>] ENDIF假真條件語句塊1語句塊2412.分支結構程序(2)

雙重分支選擇語句

語句塊1語句塊2條件真假語句格式:

IF<條件> <語句塊1> [ELSE <語句塊2>] ENDIF422.分支結構程序(3)多重分支選擇語句DOCASE CASE<條件表達式1> <語句塊1> CASE<條件表達式2> <語句塊2> CASE<條件表達式n> <語句塊n> OTHERWISE <語句塊> ENDCASE

真假假真假真條件1語句塊1語句塊條件2語句塊2…真語句塊n假條件n432.分支結構程序(4)多重分支選擇語句DOCASE CASE<條件表達式1> <語句塊1> CASE<條件表達式2> <語句塊2> CASE<條件表達式n> <語句塊n> OTHERWISE <語句塊> ENDCASE

CASE<條件>值1值2…值n其它語句塊1語句塊2…語句塊n語句塊442.分支結構程序(5)例6-8:從鍵盤隨機輸入成績分數,根據成績分數來判斷該成績屬于優、良、中還是差。規定:90≤成績≤100為優;80≤成績<90為良;60≤成績<80為中;成績<60為差;其它為非法輸入。使用多重分支結構,程序編制如下:452.分支結構程序(6)clearsettalkoffrate='' &&表示等級input'請輸入成績:'togradedocasecase90<=grade.and.grade<=100 ?str(grade,3)+‘的成績為:’+‘優’&&縮格目的是增加可讀性

case80<=grade.and.grade<90 ?str(grade,3)+'的成績為:'+'良' case60<=grade.and.grade<80 ?str(grade,3)+'的成績為:'+'中' case0<=grade.and.grade<60 ?str(grade,3)+'的成績為:'+'差' otherwise ?'您輸入的成績不對!'endcasereturn463.循環結構程序(1)DOWHILE循環語句格式:

DOWHILE<條件表達式> <語句塊> [LOOP] [EXIT] ENDDO循環條件循環體473.循環結構程序(2)循環語句的使用要注意下列幾點:(1)DOWHILE和ENDDO子句要配對使用,ENDDO的作用是使循環回到循環的開始,即DOWHILE語句。(2)在第一次執行到DOWHILE語句時,循環條件必須為真,才能進入循環體。在執行完成循環體語句后,再判斷循環條件是否為真,如果為真,則繼續循環,直到循環條件為假時,才退出循環語句,執行ENDDO后面的語句。483.循環結構程序(3)循環語句的使用要注意下列幾點:(3)循環體中,一定存在一條或若干條語句在改變循環條件。如果循環條件恒為真,則是死循環。(4)要小心改變循環條件,如果不適當的修改循環條件,則循環將不能按預先的設想進行,程序也達不到預期的效果。(5)為增加程序的可讀性,使程序清晰易懂,必須使用縮格。(6)關于LOOP和EXIT語句使用參見本節后面的內容。493.循環結構程序(4)例6-11:求1加到10的累加和,即S=1+2+3+…+8+9+10settalkoffs=0 &&求累加和的變量i=1 &&循環變量賦初值dowhilei<=10 &&循環條件,使用縮格,提高可讀性

?i &&此處輸出變量i的值是方便理解循環的過程

s=s+i &&求累加,即循環不變式

??s &&輸出s的結果,理解每次累加結果的變化

i=i+1 &&改變循環變量的值enddo?s &&循環體外輸出結果503.循環結構程序(5)循環閱讀理解循環條件是什么?什么時候進入循環?什么時候退出循環?循環體內如何改變循環條件?循環變量的作用?513.循環結構程序(6)在循環中處理循環不變式的一般結構循環前的預處理,如循環控制變量賦初值循環條件,初始必須為真循環不變式改變循環控制變量的值根據需要輸出結果523.循環結構程序(7)在循環中處理記錄一般結構打開數據表(默認指向第一條記錄)記錄指針指向第一條記錄(可忽略)判記錄指針沒有到底(.NOT.EOF())根據給定的條件對當前記錄進行處理記錄指針下移(Skip)根據需要輸出結果533.循環結構程序(8)循環結構中的LOOP命令LOOP真假條件語句塊2假真循環條件語句塊1DOWHILE<循環條件>

語句塊1 IF<條件> LOOP ENDIF

語句塊2ENDDO543.循環結構程序(9)循環結構中的EXIT命令EXIT真假條件語句塊2假真循環條件語句塊1DOWHILE<循環條件>

語句塊1 IF<條件> EXIT ENDIF

語句塊2ENDDO553.循環結構程序(10)FOR循環語句格式:FOR<循環變量>=<循環初值>TO<循環終值>

[STEP<步長>] <語句塊> [LOOP] [EXIT]ENDFOR|NEXT563.循環結構程序(11)求運行結果fori=10to1step-2?"i=",inext?"i=",i例6-15:求N!,即求N的階乘。573.循環結構程序(12)循環的嵌套循環體內又嵌套循環的情況稱為多重循環或循環嵌套。處于循環體內的循環稱為內循環,處于外層的循環稱為外循環。內外循環的層次必須分明,不允許有交叉現象出現。內外循環的循環變量不要同名。在嵌套情況下,EXIT語句使控制跳到下方離其最近的ENDDO之后,而LOOP語句使控制跳到其上方離其最近的DO...WHILE語句中。58DOWHILEDOWHILELOOPEXITENDDOLOOPEXITENDDO3.循環結構程序(13)593.循環結構程序(14)例6-19:打印如圖所示對稱三角圖形,要求第一行的*在第10列。****************例6-20:輸入一個大于1的正整數,判斷該數是否是素數。606.4數組的應用數組在使用之前,必須加以定義,然后才能使用該數組。數組定義或數組說明語句格式為:DIMENSION

<數組名1>(<數值表達式1>[,<數值表達式2>,...])

[,<數組名2>(<數值表達式1>[,<數值表達式2>,...])...]61例子dimensionA(N)dimensionB(n,m)A(1)A(2)…A(N-1)A(N)B(1,1),B(1,2),...,B(1,m)B(2,1),B(2,2),...,B(2,m)…B(n,1),B(n,2),...,B(n,m

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論