程序設(shè)計(jì)基礎(chǔ)與面向?qū)ο蟪绦蛟O(shè)計(jì)方法_第1頁(yè)
程序設(shè)計(jì)基礎(chǔ)與面向?qū)ο蟪绦蛟O(shè)計(jì)方法_第2頁(yè)
程序設(shè)計(jì)基礎(chǔ)與面向?qū)ο蟪绦蛟O(shè)計(jì)方法_第3頁(yè)
程序設(shè)計(jì)基礎(chǔ)與面向?qū)ο蟪绦蛟O(shè)計(jì)方法_第4頁(yè)
程序設(shè)計(jì)基礎(chǔ)與面向?qū)ο蟪绦蛟O(shè)計(jì)方法_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第五章 程序設(shè)計(jì)基礎(chǔ)與面向?qū)ο蟪绦蛟O(shè)計(jì)方法教學(xué)內(nèi)容 程序的建立、三種結(jié)構(gòu)的程序設(shè)計(jì)、過(guò)程的使用;面向?qū)ο蟪绦蛟O(shè)計(jì)的類、對(duì)象、屬性、事件與方法。教學(xué)目標(biāo) 掌握面向過(guò)程和面向?qū)ο蟪绦蛟O(shè)計(jì)的基本方法。重 點(diǎn) 順序、分支、循環(huán)結(jié)構(gòu)的程序;對(duì)象、屬性、事件與方法。難 點(diǎn) 循環(huán)及分支結(jié)構(gòu)程序設(shè)計(jì);理解面向?qū)ο蟪绦蛟O(shè)計(jì)思想。一、程序設(shè)計(jì)基礎(chǔ)5.1 程序及程序文件的建立與運(yùn)行n 基本概念n 程序是為了完成某一具體任務(wù)而編寫的一系列指令。n 程序設(shè)計(jì)是利用系統(tǒng)所提供的設(shè)計(jì)工具,按照程序語(yǔ)言的規(guī)范,編寫程序的過(guò)程。n VFP包含了過(guò)程化程序設(shè)計(jì)與面向?qū)ο蟪绦蛟O(shè)計(jì)n 程序的優(yōu)點(diǎn)n 程序自動(dòng)執(zhí)行多條命令n 程序可被修

2、改并重新運(yùn)行,且可多次運(yùn)行n 一個(gè)程序可調(diào)用其他程序程序流的控制n 順序(順序結(jié)構(gòu)由語(yǔ)句行組成,執(zhí)行時(shí)語(yǔ)句順序執(zhí)行)n 分支(根據(jù)邏輯表達(dá)式的值執(zhí)行不同的操作)n 循環(huán)(使得一組語(yǔ)句組重復(fù)執(zhí)行若干次)n 子程序創(chuàng)建程序n 創(chuàng)建:n “新建”按鈕n MODIFY COMMAND <程序文件名>n 修改:n “打開(kāi)”/“修改”按鈕n MODIFY COMMAND <程序文件名>n 運(yùn)行:n “運(yùn)行”按鈕n DO <程序文件名> 5.1 順序例1:Use jsAppend blankEditUse例2:交換兩個(gè)變量的值5.2 條件分支n IFELSEENDIFIf

3、 條件表達(dá)式 命令組1ELSE 命令組2ENDIF例1:若變量nWaterTemp(水溫度)的值小于100,則不執(zhí)行任何操作。 IF nWaterTemp>=100 lBoiling=.T. && 水已沸 ENDIF例2:根據(jù)變量X的正負(fù)符號(hào)情況決定變量Y的值為1或-1: IF X>0 Y=1 ELSE Y=-1 ENDIFn IF嵌套結(jié)構(gòu)不清晰,變化無(wú)窮(分段函數(shù),show)n DO CASEENDCASEDO CASE CASE <條件表達(dá)式1> <命令組1> CASE <條件表達(dá)式2 > <命令組2 > . CA

4、SE <條件表達(dá)式n> <命令組n > OTHERWISE <其他命令組 > ENDCASE5.3 循環(huán)n SCANENDSCANn FORENDFORn DO WHILEENDDOSCANENDSCAN 語(yǔ)句使用場(chǎng)合:對(duì)表中所有記錄執(zhí)行某一記錄語(yǔ)句格式 SCAN NOOPTIMIZE<范圍>FOR<條件> WHILE<條件> <語(yǔ)句組> ENDSCAN例:根據(jù)一元二次方程的系數(shù)a,b,c,判斷方程根的情況Delta=b*b-4*a*cDO CASE CASE delta>0 ?“方程有兩個(gè)不等的實(shí)數(shù)根:

5、” ?(-b+sqrt(delta)/(2*a) ? (-b-sqrt(delta)/(2*a) CASE delta=0 ?“方程有兩個(gè)相等的實(shí)數(shù)根:” ? b/(2*a) CASE delta<0 ?“方程有兩個(gè)復(fù)根:” real_part=-b/(2*a) img_part=sqrt(-delta)/(2*a) ?alltrim(str(real_part)+”+”+alltrim(str(img_part)+”I” ?alltrim(str(real_part)+”-”+alltrim(str(img_part)+”I”ENDCASEn 示例n 掃描JS 表中全部記錄,逢記錄號(hào)為

6、雙號(hào)的,顯示其工號(hào)和姓名: USE JSSCAN FOR RECNO()%2=0?JS.GH , JS.XMENDSCANFORENDFOR語(yǔ)句使用場(chǎng)合:已知循環(huán)次數(shù)語(yǔ)句格式FOR <循環(huán)變量>=<初值> TO <終值> STEP <步長(zhǎng)> <語(yǔ)句組>ENDFOR / NEXT循環(huán)變量即計(jì)數(shù)器執(zhí)行過(guò)程n 示例n 計(jì)算100以內(nèi)的奇數(shù)和S=1+3+5+99,100的階乘P=1*2*3*100 #DEFINE N 100 && 設(shè)置循環(huán)終值常量 s=0 && 累加器,初始化為0 * 以下循環(huán)計(jì)算n以內(nèi)的奇數(shù)

7、和 FOR i = 1 to N STEP 2 s = s + i ENDFOR ? N , “ 以內(nèi)的奇數(shù)和S=” ,S *以下循環(huán)計(jì)算N的階乘 p=1 && 累乘器,初始化為1 FOR I =1 TO N p = p * I ENDFOR ? N, “的階乘=”, pDO WHILEENDDO語(yǔ)句n 使用場(chǎng)合:循環(huán)次數(shù)未知n 語(yǔ)句格式 DO WHILE <條件> <語(yǔ)句組> ENDDO循環(huán)結(jié)構(gòu)中的LOOP命令和EXIT命令LOOP命令(短路語(yǔ)句)(與表有關(guān))例,求1100之間非3的倍數(shù)的所有奇數(shù)之和S=0 FOR I=1 TO 100 STEP 2I

8、F MOD(I,3)=0LOOPENDIFS=S+IENDFOR例,隨機(jī)產(chǎn)生一個(gè)要求在7080之間的數(shù)x=0do while .t. x=rand()*100 if x>70 and x<80 exit endif enddo5.4 子程序調(diào)用:DO 命令主程序(菜單程序)嵌套的DO調(diào)用層數(shù)為128層5.5 結(jié)構(gòu)的嵌套示例1(累加)n 計(jì)算 S=1+2+99 S=0 FOR K=1 TO 99 STEP 1 S=S+K ENDFORn 計(jì)算 S= 1*1+3*3+5*5+.+25*25S=0FOR K=1 TO 25 STEP 2 S=S+K*KENDFOR示例2(累乘)n 計(jì)算

9、P= 3*5*7*9*11*.*25P=1FOR K=3 TO 25 STEP 2 P=P*KENDFOR示例3(累加+累乘)n 計(jì)算 S=1!+2!+3!+20!S=0FOR I=1 TO 20 P=1FOR J=1 TO IP=P*JNEXT JS=S+PNEXT I(可以用單循環(huán))方法二: S=0P=1FOR I=1 TO 20 P=P*IS=S+PNEXT I示例4(隨機(jī)數(shù)的產(chǎn)生之一)n 產(chǎn)生50個(gè)隨機(jī)數(shù)。DIMENSION A(50), B(5,10)FOR I=1 TO 50A(I)=RAND()ENDFORFOR I=1 TO 5FOR J=1 TO 10B(I,J)=RAND(

10、)NEXT JNEXT I示例5(隨機(jī)數(shù)的產(chǎn)生之二)n 產(chǎn)生10個(gè)(10-50)之間的隨機(jī)整數(shù)。DIMENSION X(10)FOR I=1 TO 10N=5; 賦初值DO WHILE N<10 .OR. N>50N=INT(RAND()*100)ENDDO X(I)=NENDFOR 示例6(排序)n 將數(shù)組A(10)中的10個(gè)元素按升序進(jìn)行排序。(降序如何處理?)FOR I=1 TO 10FOR J=I+1 TO 10IF A(I) > A(J); 比較T=A(I)A(I)=A(J)A(J)=TENDIFENDFORENDFOR示例7(數(shù)組函數(shù)與FOR 配合使用)n 創(chuàng)建名

11、為 gaMyArray 的數(shù)組,數(shù)組中放置表customer 的字段信息,然后顯示字段名。CLOSE DATABASESOPEN DATABASE (HOME( ) + ; samplesdatatestdata)USE Customer && 打開(kāi)表CustomergnFieldcount = AFIELDS(gaMyArray)&&創(chuàng)建一個(gè)數(shù)組FOR nCount = 1 TO gnFieldcount ? gaMyArray(nCount,1)ENDFOR&& 顯示所有字段名二、面向?qū)ο蟮某绦蛟O(shè)計(jì)方法n 通過(guò)對(duì)類、子類和對(duì)象等的設(shè)計(jì)來(lái)體現(xiàn),

12、類是面向?qū)ο蟪绦蛟O(shè)計(jì)技術(shù)的核心。n 優(yōu)點(diǎn); 以對(duì)象為中心的問(wèn)題求解方法簡(jiǎn)化程序設(shè)計(jì),更接近現(xiàn)實(shí)世界,可降低開(kāi)發(fā)和維護(hù)的費(fèi)用; 提高程序代碼的可重用性; 可以和各種模型自然的融合1、基本概念n 對(duì)象:現(xiàn)實(shí)世界中的事物均可抽象為對(duì)象,對(duì)象是構(gòu)成程序的基本單位和運(yùn)行實(shí)體。n 類: 定義了對(duì)象特征以及對(duì)象外觀和行為的模板,它刻劃了一組具有共同特性的對(duì)象。n 屬性:對(duì)象的特征。 n 方法:對(duì)象能夠執(zhí)行的一個(gè)操作,是和對(duì)象相聯(lián)系的過(guò)程。n 事件:由對(duì)象識(shí)別的一個(gè)動(dòng)作。2、類n 基類: 系統(tǒng)本身提供的內(nèi)部定義的類稱為基類,可用于自定義類的基礎(chǔ)。n 子類: 以其他類的定義為起點(diǎn),為某一對(duì)象建立的新類。新類將繼

13、承任何對(duì)父類所做的修改。n 用戶自定義類: 與基類相似,由用戶自己定義,可用于派生子類n 類庫(kù): 存儲(chǔ)類的文件,每一個(gè)以可視方式設(shè)計(jì)的類都存儲(chǔ)在一個(gè)類庫(kù)中。類庫(kù)文件的擴(kuò)展名為 .VCX .VCT。類的特征:n 封裝性(encapsulation)隱藏類中對(duì)象的內(nèi)部數(shù)據(jù)或操作細(xì)節(jié),只看到外表信息。n 繼承性(inheritance)任何類都可以從其它已有的類中派生,新類保持了父類中的行為和屬性,但增加了新的功能。n 多態(tài)性(polymorphism)相同的操作可作用于多種類型的對(duì)象上,并獲得不同的結(jié)果。n 抽象性(abstraction)提取一個(gè)類或?qū)ο笈c眾不同的特征,而不對(duì)該類或?qū)ο蟮乃行畔?/p>

14、進(jìn)行處理。類的分類:§ 容器類(Container classes)是包容其他類的基類容器可以包含其它對(duì)象容器可以作為所包含的對(duì)象的父對(duì)象允許訪問(wèn)包含的對(duì)象n 控件類(Control classes)是可以包含在容器類中的基類控件對(duì)象可以包含在容器中不能作為其它對(duì)象的父對(duì)象n 基于類的不同類型,VFP的對(duì)象可分為容器對(duì)象和控件對(duì)象選項(xiàng)按鈕選項(xiàng)按鈕組命令按鈕命令按鈕組頁(yè)面頁(yè)框表格列表格頁(yè)框、任意控件、容器、自定義對(duì)象表單表單、工具欄表單集任意控件、容器和自定義對(duì)象頁(yè)面標(biāo)頭以及除表單、表單集、工具欄、計(jì)時(shí)器和其它列以外的任意對(duì)象表格列任意控件、頁(yè)框、容器工具欄任意控件容器能包含的對(duì)象容器

15、類3、對(duì)象n 對(duì)象:是類的一個(gè)實(shí)例,包括了數(shù)據(jù)和過(guò)程。具有所在類所定義的全部屬性和方法。n VFP有兩種對(duì)象:容器對(duì)象和控件對(duì)象。n 對(duì)象的引用 引用對(duì)象時(shí),對(duì)象與對(duì)象之間、對(duì)象與屬性之間需用分隔符 . 進(jìn)行分隔。(1) 絕對(duì)引用 從容器的最高層引用對(duì)象,給出對(duì)象的絕對(duì)地址。如:(2) 相對(duì)引用 在容器層次中相對(duì)于某個(gè)容器層次的引用。 如:thisform .text1.value選項(xiàng)按鈕選項(xiàng)按鈕組命令按鈕命令按鈕組頁(yè)面頁(yè)框表格列表格頁(yè)框、任意控件、容器、自定義對(duì)象表單表單、工具欄表單集任意控件、容器和自定義對(duì)象頁(yè)面標(biāo)頭以及除表單、表單集、工具欄、計(jì)時(shí)器和其它列以外的任意對(duì)象表格列任意控件、頁(yè)

16、框、容器工具欄任意控件容器能包含的對(duì)象容器類OOP方法:114、屬性l 每個(gè)對(duì)象都有屬性,可以對(duì)對(duì)象設(shè)置屬性 屬性可以在設(shè)計(jì)時(shí)設(shè)置也可在運(yùn)行時(shí)設(shè)置,但也有一些屬性是只讀的。l 設(shè)計(jì)時(shí)修改屬性在“屬性”窗口中進(jìn)行l(wèi) 程序代碼中,用以下語(yǔ)法進(jìn)行設(shè)置 <引用對(duì)象> . <屬性> = 值例:黑灰“黑體”5、事件和方法程序n 事件(Event):是由對(duì)象識(shí)別的一個(gè)動(dòng)作,可編寫相應(yīng)的代碼,對(duì)動(dòng)作進(jìn)行響應(yīng)。對(duì)象的事件集合是固定的,用戶不能創(chuàng)建新的事件例:click, dblclick, keypressn 方法程序(Method):是對(duì)象能夠執(zhí)行的一個(gè)操作,是與對(duì)象相關(guān)聯(lián)的過(guò)程,方法

17、可由用戶自己創(chuàng)建例:releasen 調(diào)用語(yǔ)法<引用對(duì)象>.<方法程序> 注:有返回值的方法程序以圓括號(hào)結(jié)尾當(dāng)鼠標(biāo)指針停在一個(gè)對(duì)象上時(shí),用戶釋放鼠標(biāo)按鈕 Mouseup用戶在對(duì)象上移動(dòng)鼠標(biāo) Mousemove當(dāng)鼠標(biāo)指針停在一個(gè)對(duì)象上時(shí),用戶按下鼠標(biāo)按鈕 Mousedown用戶按下或釋放鍵 Keypress對(duì)象失去焦點(diǎn),由用戶動(dòng)作引起Lostfocus對(duì)象接收焦點(diǎn),由用戶動(dòng)作引起Gotfocus用戶使用輔鼠標(biāo)按鈕單擊對(duì)象 Rightclick用戶使用主鼠標(biāo)按鈕雙擊對(duì)象 Dblclick用戶使用主鼠標(biāo)按鈕單擊對(duì)象 Click從內(nèi)存中釋放對(duì)象 Destroy創(chuàng)建對(duì)象Init從內(nèi)存中釋放表單或表單集 Unload表單或表單集被加載到內(nèi)存中 Load事件被激發(fā)后的動(dòng)作常用事件結(jié)束一個(gè)VFP6.0實(shí)例,返回到創(chuàng)建它的應(yīng)用程序。Object.QuitQuit從內(nèi)存中釋放表單或表單集Object.ReleaseRelease重畫表單或控件,并刷新所有值Object.RefreshRefresh把Visible屬性設(shè)置為 .T.,顯示并激活一個(gè)表單或表單集,并確定表單的顯示模式Object.ShowShow通過(guò)把Visible屬性設(shè)置為 .F.,來(lái)隱藏表單、表單集或工具欄Object.Hid

溫馨提示

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

評(píng)論

0/150

提交評(píng)論