4講至8講第7章程序設(shè)計(jì).ppt_第1頁(yè)
4講至8講第7章程序設(shè)計(jì).ppt_第2頁(yè)
4講至8講第7章程序設(shè)計(jì).ppt_第3頁(yè)
4講至8講第7章程序設(shè)計(jì).ppt_第4頁(yè)
4講至8講第7章程序設(shè)計(jì).ppt_第5頁(yè)
已閱讀5頁(yè),還剩109頁(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、第七章 Visual FoxPro 7.0,7.1 程序文件的建立、修改與運(yùn)行 7.2 簡(jiǎn)單的交互式輸入輸出命令 7.3 結(jié)構(gòu)化程序設(shè)計(jì) 7.4 過(guò)程與過(guò)程調(diào)用,Visual FoxPro的工作方式,所謂單命令方式,即輸入一條命令,完成一個(gè)操作的工作方式。 所謂菜單方式,即通過(guò)打開(kāi)不同的菜單選擇并完成不同的操作。 所謂程序方式,即批命令方式,是把一系列有序的命令放到一個(gè)文件中,再執(zhí)行該文件整體。,建立程序文件有兩種方法:一是命令方式,二是菜單方式。 1、命令方式 命令格式:Modify Command Modify file 2、菜單方式 選擇菜單【文件】| “新建”菜單項(xiàng),打開(kāi)【新建】對(duì)話框

2、。|選中“程序”單選按鈕。,7.1.1 建立程序文件,7.1.2 修改程序文件,1、【文件】|【打開(kāi)】,找到要修改的程序文件。 2、命令方式:modify command 文件名 程序文件編輯完后,選擇【文件】|【保存】選項(xiàng) 按“CTRL+W”鍵,ctrl+S來(lái)保存程序,按ESC鍵放棄程序的編輯并返回命令窗口。,7.1.3 運(yùn)行程序文件,1、命令方式: DO 2、在菜單方式下運(yùn)行 【程序】|【運(yùn)行】 3、打開(kāi)要運(yùn)行的程序文件,并單擊常用工具欄上的“運(yùn)行”命令按鈕(即 ),來(lái)運(yùn)行該程序文件 。 4、 快捷方式 Ctrl+E表示運(yùn)行打開(kāi)的當(dāng)前程序。,1、非格式化的輸入命令 FoxPro提供了如下三

3、個(gè)非格式化輸入命令: (1)數(shù)據(jù)輸入命令 (重點(diǎn)) 命令格式:Input To 內(nèi)存變量名 功能:顯示提示信息,暫停正在運(yùn)行的程序,等待用戶從鍵盤(pán)輸入數(shù)據(jù)或表達(dá)式并按回車(chē)鍵后,將數(shù)據(jù)或表達(dá)式的值存入指定的內(nèi)存變量中,再執(zhí)行中斷了的程序。,7.2.1 交互式輸入命令,7.2 簡(jiǎn)單的交互式輸入輸出命令,例1:從鍵盤(pán)隨機(jī)輸入一個(gè)正數(shù),以該正數(shù)為半徑,求圓的周長(zhǎng)和面積。 *L1.prg set talk off clear input 半徑= to r l=2*PI()*r s=PI()*r*r ?圓周長(zhǎng)=,l ?圓面積=,s set talk on return,該程序可以無(wú)數(shù)次運(yùn)行,從而求出無(wú)數(shù)個(gè)

4、半徑值不同的圓的周長(zhǎng)和面積。,思考:從鍵盤(pán)輸入兩個(gè)任意正數(shù),編程求以兩數(shù)為邊長(zhǎng)的長(zhǎng)方形面積。,SET TALK OFF CLEAR INPUT “長(zhǎng)方形一邊的長(zhǎng)為:” TO A INPUT “長(zhǎng)方形另一邊的長(zhǎng)為:” TO B S=A*B ? “長(zhǎng)方形的面積為:” , S SET TALK ON RETURN,(2)字符串輸入命令 命令格式:Accept To 內(nèi)存變量名 功能:將用戶輸入的字符串賦值給指定的內(nèi)存變量。 說(shuō)明: 輸入的任何數(shù)據(jù)均被當(dāng)作字符型賦值給內(nèi)存變量。 如輸入字符串為非空格打頭,則不需要輸入定界符 輸入字符串長(zhǎng)度不超過(guò)254個(gè)字符 命令提示信息與INPUT 相同。,7.2.1

5、 交互式輸入命令,例2:重寫(xiě)例1題程序。 *L2.prg set talk off clear accept 半徑= to r l=2*PI()*val(r) s=PI()*val(r)*val(r) ?圓周長(zhǎng)=,l ?圓面積=,s set talk on return 程序運(yùn)行結(jié)果同例題2。,7.2.1 交互式輸入命令,(3)輸入單字符命令 命令格式:Wait提示信息To 內(nèi)存變量名 功能:暫停程序執(zhí)行,等待鍵入一個(gè)字符,繼續(xù)執(zhí)行。 說(shuō)明: 只能接受一個(gè)字符,輸入完以后立即響應(yīng),不要按回車(chē)鍵。 如有TO 語(yǔ)句,則輸入字符保存到指定變量,否則不保存。 若該語(yǔ)句不帶子句,則暫停程序運(yùn)行,屏幕顯示

6、 Press any key to continue ,7.2.1 交互式輸入命令,例3:重寫(xiě)例1題程序。 *L3.prg set talk off clear input 半徑= to r l=2*PI()*val(r) s=PI()*val(r)*val(r) ?圓周長(zhǎng)=,l wait ?圓面積= ,s set talk on return,7.2.1 交互式輸入命令,三條輸入命令的異同: ACCEPT命令只能接受字符型數(shù)據(jù),不需定界符,輸入完畢按回車(chē)鍵結(jié)束。 WAIT命令只能輸入單個(gè)字符,且不需定界符,輸入完畢不需按回車(chē)鍵。 INPUT命令可接受數(shù)值型、字符型、邏輯型、日期型和日期時(shí)間型

7、數(shù)據(jù),數(shù)據(jù)形式可以是常量、變量、函數(shù)和表達(dá)式,如果是字符串,需用定界符,輸入完畢按回車(chē)鍵結(jié)束。,FoxPro系統(tǒng)把屏幕橫向分成70格,用079表示,每格能輸出一個(gè)英文字符(一個(gè)漢字占2格);縱向分成25行,用024表示,每行能輸出一行字符。 命令格式: , Say Get Read 功能:在指定位置輸出表達(dá)式的值并在其后的位置輸入變量的值。,2、格式化輸入命令,Eg:建立程序文件,要求通過(guò)程序方式在“讀者”表中添加一條新記錄。 CLEAR USE 讀者 APPEND BLANK 2, 7 SAY 讀者基本情況輸入界面: 4,10 SAY 讀者編號(hào): GET 讀者編號(hào) 6,10 SAY 讀者姓名

8、: GET 姓名 7,10 SAY 讀者性別: GET 性別 10,10 SAY 出生日期: GET 出生日期 12,10 SAY 少數(shù)民族否: GET 少數(shù)民族否 14,10 SAY 籍貫 GET 籍貫 READ USE,編寫(xiě)程序文件,修改讀者表中第三條記錄的姓名和籍貫兩個(gè)字段。 SET TALK OFF USE 讀者 GO 3 2,20 SAY “姓名”GET 姓名 4,20 SAY 籍貫 GET 籍貫 READ DISPLAY USE RETURN,思考:若將上例中的要求改為對(duì)任意一條記錄進(jìn)行修改,程序該做何改動(dòng)?,Clear Use 讀者 Input “要修改的記錄號(hào):” to n G

9、o n 2,20 SAY “姓名”GET 姓名 4,20 SAY 籍貫 GET 籍貫 READ DISPLAY USE RETURN,行輸出命令有兩種使用方式,一種是將表達(dá)式結(jié)果輸出到屏幕當(dāng)前的光標(biāo)位置,另一種方式則可以對(duì)表達(dá)式的輸出結(jié)果進(jìn)行格式化,而且可以輸出到屏幕的指定位置。但無(wú)論是那種方式都可以輸出表達(dá)式列表的結(jié)果。 1、行輸出命令(?|?) 2、格式化輸出命令 , SAY 行列坐標(biāo)可以為數(shù)值型常量、變量、表達(dá)式,行坐 標(biāo)的取值為024,列坐標(biāo)的取值為079;,7.2.2 交互式輸出命令,7.2.3 其它功能性命令,1、清屏命令 命令格式:clear 功能:清除屏幕或用戶自定義的窗口 2

10、、顯示文件內(nèi)容命令 命令格式:type 功能:在屏幕或打印機(jī)上輸出指定文件的內(nèi)容 3、文本輸出命令 命令格式:text endtext 功能:原樣輸出內(nèi)容。,4、終止執(zhí)行命令 命令格式:cancel 功能:終止程序的執(zhí)行,釋放所有的內(nèi)存變量,系統(tǒng)返回到命令窗口狀態(tài)。 5、注釋命令 命令格式1:note 命令格式2:* 命令格式3:& 功能:三個(gè)命令的功能相同,都是對(duì)程序做注釋。,7.3 結(jié)構(gòu)化程序設(shè)計(jì),結(jié)構(gòu)化程序設(shè)計(jì)由若干結(jié)構(gòu)組成,每一個(gè)基本結(jié)構(gòu)可以包含一個(gè)或多個(gè)命令,它主要包括順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)三種。使用結(jié)構(gòu)化程序設(shè)計(jì)有如下優(yōu)點(diǎn): 1、可讀性強(qiáng):每個(gè)模塊功能明確、模塊間的關(guān)系簡(jiǎn)單、

11、清晰。 2、獨(dú)立性好:每個(gè)模塊內(nèi)部的修改盡可能不影響其它模塊。 3、易驗(yàn)證:每個(gè)模塊的正確性容易驗(yàn)證,各個(gè)模塊連接起來(lái)后整個(gè)程序也就容易驗(yàn)證。,7.3.1 順序結(jié)構(gòu)程序設(shè)計(jì),順序結(jié)構(gòu)指計(jì)算機(jī)按程序語(yǔ)句的先后順序依次逐條執(zhí)行程序中各個(gè)語(yǔ)句,是程序中最基本、最簡(jiǎn)單的一種結(jié)構(gòu)。 順序結(jié)構(gòu)流程圖如圖7-5所示,該結(jié)構(gòu)先執(zhí)行A操作,再執(zhí)行B操作,兩者是順序執(zhí)行的關(guān)系。,例10:從鍵盤(pán)輸入一個(gè)大寫(xiě)字母,要求改用小寫(xiě)字母輸出。 *L10.PRG set talk off clear wait 請(qǐng)輸入一個(gè)大寫(xiě)字母: to a x=asc(a) y=chr(x+32) ?y set talk on return

12、,思考:,1、修改如下程序: clear S=0 Input “請(qǐng)輸入第一個(gè)數(shù)” to x S=s+x Input “請(qǐng)輸入第二個(gè)數(shù)” to x S=s+x Input “請(qǐng)輸入第三個(gè)數(shù)” to x S=s+x ?x 2、參看下例,為什么可以用這種方法交換兩個(gè)變量的值。 Input “a=” to a Input “b=” to b ?“交換前a,b:”,a,b T=a A=b B=t ?“交換后a,b:”,a,b,7.3.2分支結(jié)構(gòu)程序設(shè)計(jì),1、單分支結(jié)構(gòu) 語(yǔ)句格式:If 條件表達(dá)式 語(yǔ)句序列 Endif 功能:執(zhí)行if 語(yǔ)句時(shí),首先判斷條件表達(dá)式的值,若為.T.,則執(zhí)行If 到Endif

13、之間的語(yǔ)句序列,再執(zhí)行Endif后面的語(yǔ)句,若為.F. , 則不執(zhí)行If 到Endif之間的語(yǔ)句,直接執(zhí)行Endif后面的語(yǔ)句,程序執(zhí)行過(guò)程就發(fā)生了跳轉(zhuǎn)。If和Endif必須成對(duì)出現(xiàn),缺一不可,語(yǔ)句序列可以是一條或多條語(yǔ)句。,例13:輸入兩個(gè)實(shí)數(shù),依其值由大到小輸出這兩個(gè)數(shù) * L13.PRG set talk off input a= to a input b= to b if ab t=a a=b b=t endif ?a,b set talk on return,思考2:用ifendif結(jié)構(gòu)判斷用戶輸入的數(shù)能否同時(shí)被4和6整除。,思考3:如何求解一元二次方程的實(shí)數(shù)解。,思考1:若輸入三個(gè)

14、數(shù)由大小的順序輸出呢?,2、選擇分支結(jié)構(gòu) 語(yǔ)句格式:If 條件表達(dá)式 語(yǔ)句序列1 Else 語(yǔ)句序列2 Endif 功能:如條件表達(dá)式的值為.T.,則執(zhí)行語(yǔ)句序列1,然后執(zhí)行Endif 后面的語(yǔ)句,否則執(zhí)行語(yǔ)句序列2,然后執(zhí)行Endif后的語(yǔ)句。 其中條件表達(dá)式可以是各種表達(dá)式的組合,其值必須是邏輯值,可以是邏輯常量或變量。If 、Else、Endif語(yǔ)句應(yīng)單獨(dú)占一行。,思考:若要輸出輸入的三個(gè)數(shù)中最大的數(shù)(最小的數(shù))?,clear input 數(shù)據(jù)1: to a input 數(shù)據(jù)2: to b input 數(shù)據(jù)3: to c if ab t=a else t=b endif,if tc s=

15、t else s=c endif ?s return,思考:,1、用雙向分支結(jié)構(gòu)編程輸入一個(gè)數(shù)返回其絕對(duì)值。 2、用雙向分支求一元二次方程的實(shí)數(shù)解,有,則輸出解的值,無(wú)解,輸出“此方程無(wú)實(shí)數(shù)解!”,3、多分支結(jié)構(gòu) 語(yǔ)句格式:Do Case Case條件表達(dá)式1 語(yǔ)句序列1 Case條件表達(dá)式2 語(yǔ)句序列2 Case條件表達(dá)式n 語(yǔ)句序列n Otherwise 語(yǔ)句序列n+1 Endcase,功能:系統(tǒng)依次檢查每個(gè)Case的條件表達(dá)式,只要遇到第一個(gè)條件為 .T. 時(shí),則執(zhí)行該條件下的語(yǔ)句序列,之后不再判斷其他條件,也不再執(zhí)行其他語(yǔ)句序列,直接執(zhí)行Endcase后的語(yǔ)句。若所有條件均不成立,如有

16、選擇項(xiàng)Otherwise 語(yǔ)句,則執(zhí)行它后面的語(yǔ)句,否則執(zhí)行ENDCASE后面的語(yǔ)句。 說(shuō)明: (1)Do case結(jié)構(gòu)中至少有一個(gè)case語(yǔ)句 (2)Do case與第一個(gè)case之間的語(yǔ)句不會(huì)被執(zhí)行。 (3)如果有多個(gè)條件表達(dá)式為.T.,則只有第一個(gè)有效,其他case子句的條件不會(huì)被判斷,其對(duì)應(yīng)的語(yǔ)句序列也就不會(huì)被執(zhí)行。,7.3.2分支結(jié)構(gòu)程序設(shè)計(jì),例16:CJ.DBF(成績(jī)表)中,按學(xué)生XM(姓名)進(jìn)行查詢,如該生存在,判斷其英語(yǔ)成績(jī)ENGLISH是否為優(yōu)(70分以上),中(70分到70分),及格(60分到70分),不及格(小于60分)。,set talk off clear use c

17、j accept請(qǐng)輸入查看英語(yǔ)成績(jī)的學(xué)生姓名: to name locate for xm=name if found ( ) do case case english=70 ?優(yōu) case english=70 ?中,case english=60 ?及格 otherwise ?不及格 endcase else ?找不到該學(xué)生 endif use set talk on return,例如: x=2.5 Do case case x1 y=1 case x2 y=2 endcase ?y,1,例如:如何判定用戶輸入的分?jǐn)?shù)是哪個(gè)級(jí)別? clear input 請(qǐng)輸入分?jǐn)?shù): to score D

18、o case case score100 ?輸入錯(cuò)誤!,case score=90 ?優(yōu)秀! case score=75 ?良好! case score=60 ?及格! case score=0 ?不及格! case score0 ?輸入錯(cuò)誤! Endcase,clear input 請(qǐng)輸入分?jǐn)?shù): to score Do case case score0 ?輸入錯(cuò)誤! case score60 ?不及格!,case score100 ?輸入錯(cuò)誤! Endcase,思考:若將上例題的分?jǐn)?shù)由低到高顯示判斷,程序該做何改動(dòng)?,練習(xí):假設(shè)收入(P)與稅率(R)的關(guān)系如 下表,編程求稅金。 0 P700

19、 R= 0.05 700 P2000 0.07 2000P5000 0.1 P5000,CLEAR INPUT “請(qǐng)輸入收入:” TO P DO CASE CASE P700 tax=0 CASE P2000 tax=0.05*(P-700) CASE P5000 tax=1400*0.05+(p-2000)*0.07 OTHERWISE tax=1400*0.05+3000*0.07+(p-5000)*0.1 ENDCASE ? “你要繳納的稅金為:”,TAX RETURN,7.3.3循環(huán)結(jié)構(gòu)程序設(shè)計(jì),1、條件循環(huán)語(yǔ)句 格式:Do While 條件表達(dá)式 語(yǔ)句序列(又稱(chēng)為循環(huán)體,其中可以使用

20、Loop、Exit等強(qiáng)制退出語(yǔ)句) Enddo 功能:重復(fù)判斷條件表達(dá)式的值,其值為.T.時(shí),重復(fù)執(zhí)行Do While和Enddo 之間的語(yǔ)句,直到條件表達(dá)式的值是 .F. 時(shí)結(jié)束。,7.3.3循環(huán)結(jié)構(gòu)程序設(shè)計(jì),1DO WHILE循環(huán)語(yǔ)句(適用于任何循環(huán)情況) 【格式1】DO WHILE ENDDO,一個(gè)循環(huán)結(jié)構(gòu)一般應(yīng)具備如下的條件: (1)循環(huán)的初始條件:一般為給循環(huán)控制變量賦初值; (2)循環(huán)頭:循環(huán)語(yǔ)句的起始,設(shè)置、判斷循環(huán)條件; (3)循環(huán)尾:循環(huán)語(yǔ)句的結(jié)尾; (4)循環(huán)體:位于循環(huán)頭和循環(huán)尾之間、循環(huán)控制重復(fù)執(zhí)行的語(yǔ)句 序列。,【格式2】DO WHILE LOOP EXIT ENDD

21、O,LOOP語(yǔ)句:強(qiáng)行返回到循環(huán)開(kāi)始語(yǔ)句。 EXIT語(yǔ)句:強(qiáng)行跳出循環(huán),接著執(zhí)行ENDDO后的語(yǔ)句,編程求123100之和。 SET TALK OFF CLEAR S=0 j=1 &循環(huán)變量的初值(循環(huán)的初始條件) DO WHILE j=100 &循環(huán)頭 S=S+j j=j+1 &循環(huán)體 ENDDO &循環(huán)尾 ? ”123100”,S SET TALK ON RETURN,【例如】用Do While 的第二種格式編程求1到100之內(nèi)所有奇數(shù)的和。,CLEAR S=0 I=0 DO WHILE I100 I=I+1 if int(I/2)=I/2 loop else S=S+I endif EN

22、DDO ? 135+99=,S RETURN,思考將上例題用格式一完成程序,1到100之內(nèi)所有奇數(shù)的和。,SET TALK OFF CLEAR S=0 I=1 DO WHILE I=100 S=S+I I=I+2 ENDDO ? 135+99=,S SET TALK ON RETURN,編程求出1*2*3*.,當(dāng)積大于720時(shí)退出。 clear i=1 s=1 do while .t. s=s*i i=i+1 if s720 exit endif enddo ?s,i return,clear i=1 s=1 do while s=720 s=s*i i=i+1 enddo ?s,i retu

23、rn,思考:用Do while 循環(huán)編寫(xiě)程序求100到999內(nèi)水仙花數(shù)的個(gè)數(shù)?,n=0 x=100 do while x=999 a=int(x/100) b=int(mod(x,100)/10) c=mod(x,10) if a3+b3+c3=x n=n+1 endif x=x+1 enddo ?n return,2FOR循環(huán)語(yǔ)句 (比較適用于已知循環(huán)次數(shù)的時(shí)候) 【格式】 FOR = TO STEP LOOP EXIT ENDFOR/NEXT FOR語(yǔ)句的執(zhí)行流程如右圖所示。,使用FOR循環(huán)語(yǔ)句的有關(guān)說(shuō)明: 省略STEP ,則步長(zhǎng)為默認(rèn)值1; 初值、終值和步長(zhǎng)都可以是數(shù)值表達(dá)式,但這些表達(dá)

24、式僅在循環(huán)語(yǔ)句開(kāi)始執(zhí)行時(shí)計(jì)算一次。循環(huán)語(yǔ)句執(zhí)行過(guò)程中,初值、終值和步長(zhǎng)是不會(huì)改變的,并由此確定循環(huán)的次數(shù); 可以在循環(huán)體內(nèi)改變循環(huán)變量的值,但會(huì)改變循環(huán)執(zhí)行次數(shù); EXIT和LOOP命令可以出現(xiàn)在循環(huán)體內(nèi)。執(zhí)行LOOP命令時(shí),結(jié)束本次循環(huán),循環(huán)變量增加一個(gè)步長(zhǎng)值,返回FOR循環(huán)頭判斷循環(huán)條件是否成立。執(zhí)行EXIT命令時(shí),程序跳出循環(huán),執(zhí)行循環(huán)尾后面的語(yǔ)句 。,【例如】從鍵盤(pán)輸入10個(gè)數(shù),編程找出其中的最大值和最小值。 CLEAR INPUT 請(qǐng)從鍵盤(pán)輸入一個(gè)數(shù)做為初始值: TO B STORE B TO MAX, MIN FOR I=2 TO 10 &或者寫(xiě)成for I=1 to 9表示9次循

25、環(huán)即可 INPUT 請(qǐng)從鍵盤(pán)輸入一個(gè)數(shù): TO A IF MAXA MIN=A ENDIF ENDFOR ?最大值為: , MAX ?最小值為:, MIN SET TALK ON RETURN,也可以用如下方法:,CLEAR Max=0 Min=100000 FOR I=1 TO 10 &表示10次循環(huán)即可 INPUT 請(qǐng)從鍵盤(pán)輸入一個(gè)數(shù): TO A IF MAXA MIN=A ENDIF ENDFOR ?最大值為: , MAX ?最小值為:, MIN SET TALK ON RETURN,&給最大值的變量賦一個(gè)較小的初值 &給最小值的變量賦一個(gè)較大的初值,【例如】編程判斷一個(gè)數(shù)是否素?cái)?shù)。(非

26、常重要) 1)做什么 2)怎樣做(算法問(wèn)題):根據(jù)素?cái)?shù)的定義來(lái)做。,方法一: SET TALK OFF CLEAR INPUT 請(qǐng)輸入一個(gè)數(shù): TO x FOR i=2 TO x-1 IF Mod(x,i)=0 EXIT ENDIF ENDFOR IF i=x ?STR(X)+是素?cái)?shù) ELSE ?STR(X)+不是素?cái)?shù) ENDIF,方法二: Clear Input 請(qǐng)輸入數(shù): to x Flag=1 &標(biāo)準(zhǔn)變量 For I=2 to x-1 if mod(x,i)=0 flag=2 &此處的flag只要不等于原來(lái)的1就可以 exit &此程序中最有用的一條命令。 endif Endfor If

27、 flag=1 ?str(x)+是素?cái)?shù) Else ? str(x)+不是素?cái)?shù) Endif return,方法三: CLEAR INPUT 請(qǐng)輸入數(shù): TO x FOR i=2 TO INT(SQRT(x) IF Mod(x,i)=0 EXIT ENDIF ENDFOR IF i=int(SQRT(x)+1 ?STR(X)+是素?cái)?shù) ELSE ?STR(X)+不是素?cái)?shù) ENDIF RETURN,從鍵盤(pán)輸入任意的10個(gè)數(shù),按從大到小的順序依次輸出 。 dime a(10) For I=1 to 10 INPUT 請(qǐng)輸入一個(gè)數(shù) TO a(i) ?a(i) ENDFOR FOR i=1 TO 9 FOR

28、 j=1 TO 10-i IF a(j)a(j+1) t=a(j) a(j)=a(j+1) a(j+1)=t ENDIF ENDFOR ENDFOR for i=1 to 10 ?a(i) endfor,思考將最后一個(gè)輸出的For 循環(huán)去掉可不可以,若可以,應(yīng)做何改動(dòng)?,3“指針”型循環(huán)控制語(yǔ)句 “指針”型循環(huán)控制語(yǔ)句,即根據(jù)用戶設(shè)置的表中的當(dāng)前記錄指針,決定循環(huán)的次數(shù)。 終止的條件:記錄指針指向表尾時(shí)結(jié)束循環(huán)。 【語(yǔ)句格式】 SCAN范圍FOR條件表達(dá)式1 WHILE 條件表達(dá)式2 命令行序列 ENDSCAN 【語(yǔ)句功能】 該語(yǔ)句在指定的范圍內(nèi),用數(shù)據(jù)記錄指針來(lái)控制循環(huán)次數(shù)。執(zhí)行語(yǔ)句時(shí),首先

29、判斷函數(shù)EOF()的值,若其值為“真”,則結(jié)束循環(huán),否則,結(jié)合(條件表達(dá)式1)或(條件表達(dá)式2),執(zhí)行(命令行序列),記錄指針移到指定的范圍和條件內(nèi)的下一條記錄,重新判斷函數(shù)EOF( )的值,直到函數(shù)EOF( )的值為真時(shí)結(jié)束循環(huán)。,輸出STUDENT數(shù)據(jù)庫(kù)的STUD表中所有團(tuán)員的姓名和地址。 SET TALK OFF CLEAR OPEN DATABASE STUDENT USE STUD SCAN FOR 是否團(tuán)員 ? 姓名,地址 ENDSCAN CLOSE DATABASE SET TALK ON RETURN,4使用循環(huán)語(yǔ)句時(shí)應(yīng)注意的幾點(diǎn) (1)DO WHILE和ENDDO、FOR和E

30、NDFOR、SCAN和ENDSCAN必須配對(duì)使用。 (2)命令行序列可以是任何FoxPro命令或語(yǔ)句,也可以是循環(huán)語(yǔ)句,即可以為多重循環(huán)。 (3)循環(huán)變量應(yīng)是數(shù)值型的內(nèi)存變量或數(shù)組元素。 (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)的開(kāi)始處,重新對(duì)“條件”進(jìn)行判斷,相當(dāng)于執(zhí)行了一次ENDDO、ENDFOR、ENDSCAN命令,它可以改變命令行序列中部分命令的執(zhí)行次數(shù)。EXIT、LOOP可以出現(xiàn)在命令行序列的任意位置。,5多重循環(huán) 多重循環(huán)即循

31、環(huán)的嵌套,是在一個(gè)循環(huán)結(jié)構(gòu)的循環(huán)體中又包含另一個(gè)循環(huán)。我們稱(chēng)外層循環(huán)為外循環(huán),被包含的循環(huán)為內(nèi)循環(huán)。嵌套層數(shù)一般沒(méi)有限制,但內(nèi)循環(huán)的循環(huán)體必須完全包含在外循環(huán)的循環(huán)體中,不能相互交叉。第一種正確的嵌套關(guān)系如: DO WHILE DO WHILE DO WHILE ENDDO ENDDO ENDDO,第二種正確的嵌套關(guān)系如: for &外層循環(huán) for &內(nèi)層循環(huán) for &最內(nèi)層循環(huán) endfor endfor endfor 注意:1、不同的循環(huán)之間可以嵌套使用。 2、內(nèi)層循環(huán)變量的值的變化速度比外層循環(huán)變 量的值的變化速度要快。,【例6-19】編程輸出如下下三角形乘法口訣表。程序文件名為“乘

32、法表.PRG”。,方法一:用DO while循環(huán)來(lái)做 SET TALK OFF CLEAR X=1 DO WHILE X=9 Y=1 DO WHILE Y=X S=X*Y ?STR(Y,1)+*+STR(X,1)+=+STR(S,2)+ Y=Y+1 ENDDO ? &僅僅用于換行輸出 X=X+1 ENDDO SET TALK ON RETURN,方法二:以for 循環(huán)來(lái)解決 SET TALK OFF CLEAR for x=1 to 9 for y=1 to x S=X*Y ?STR(Y,1)+*+STR(X,1)+=+STR(S,2)+ next ? &僅僅用于換行輸出 next SET T

33、ALK ON RETURN,編程序求出 2+4+7+16+32+這樣的數(shù)之和。如果累加和大于500時(shí),則程序終止并輸出結(jié)果。,clear s=0 n=2 DO while s=500 s=s+n n=n*2 enddo ?s return,clear s=0 for j=1 to 500 I=2j s=s+i if s500 exit endif endfor ?s return,5、兩種循環(huán)的比較使用:,典型程序?qū)嵗?實(shí)例1、計(jì)算1!+2!+10! 思路:先計(jì)算出n!,之后再求和。 如先計(jì)算10! 方法:10!=1*2*3*4*10,實(shí)質(zhì)上就是求數(shù)的累乘。,P=1 & 變量p用來(lái)存放10!的

34、結(jié)果。 For I=1 to 10 p=p*I Endfor,再在原來(lái)的基礎(chǔ)上求和,方法有兩種: 一、直接在循環(huán)內(nèi)進(jìn)行累加 P=1 S=0 For I=1 to 10 p=p*I S=s+p Endfor ?s return,P=1 For I=1 to 10 p=p*I Endfor,二、運(yùn)用兩重循環(huán),內(nèi)層執(zhí)行求某個(gè)數(shù)的階乘,外層執(zhí)行累加,S=0 for n=1 to 10 p=1 for I=1 to n p=p*I Endfor s=s+p Endfor ?s return,思考:編寫(xiě)程序求出14!+15!+17!,clear S=0 for n=14 to 17 p=1 for I=1

35、 to n p=p*I Endfor s=s+p Endfor ?s return,實(shí)例2:可以用數(shù)組來(lái)完成程序的例子,方法一: set talk off clear a=1 b=1 c=2 do while c10000000,a=b b=c c=a+b enddo ?10000000以內(nèi)最大的斐波那契數(shù)為:,b set talk on,斐波那契數(shù)列的前兩項(xiàng)是1,1,其后每一項(xiàng)都是前兩項(xiàng)之和,求10000000以內(nèi)最大的斐波那契數(shù)?,方法2:用數(shù)組解決上例的程序: clear dime a(1000) a(1)=1 a(2)=1 for n=3 to 1000 a(n)=a(n-1)+a(n

36、-2) if a(n)=10000000 exit endif endfor ?a(n-1),方法1: clear a=1 b=1 s=0 & s是表示個(gè)數(shù)的變量 for n=3 to 1000 c=(n-1)*b+(n-2)*a a=b b=c,數(shù)列:e(1)=e(2)=1,e(n)=(n-1)*e(n-1)+(n-2)*e(n-2) n2每個(gè)e(n)稱(chēng)為E數(shù),求1,30000之內(nèi)E數(shù)的個(gè)數(shù)?,if c=1 and c=30000 s=s+1 endif endfor ?s+2 Return,方法2: clear dimension e(30000) s=0 e(1)=1 e(2)=1 fo

37、r n=3 to 30000 e(n)=(n-1)*e(n-1)+(n-2)*e(n-2) if e(n)=1 and e(n)=30000 s=s+1 endif endfor ?s+2 return,思考:f(0)=f(1)=1,f(2)=0,f(n)=f(n-1)-2*f(n-2)+f(n-3) (n2),求f(0)到f(50)中最大值。 597325,思考:已知:f(n)=f(n-1)+2*f(n-2)-5*f(n-3),f(0)=1,f(1)=2,f(2) =3,求f(0)+f(1)+f(30),clear dime f(31) s=6 f(1)=1 f(2)=2 f(3)=3 fo

38、r n=4 to 31 f(n)=f(n-1)+2*f(n-2)-5*f(n-3) s=s+f(n) endfor ?s return,百馬馱百瓦問(wèn)題(與此類(lèi)似的還有百錢(qián)買(mǎi)百雞),大馬、小馬和馬駒共100匹,大馬一馱三,小馬一馱二,馬駒二馱一,共100片瓦一次馱完,三種馬都馱,共有多少種組合?,clear s=0 dm=1 do while dm=100/3 xm=1 do while xm=(100-dm*3)/2 mj=100-dm-xm,if dm*3+xm*2+mj*(1/2)=100 s=s+1 endif xm=xm+1 enddo dm=dm+1 enddo ?s return,

39、綜合練習(xí):,1、用一元紙幣兌換一分、兩分和五分的硬幣,要求兌換硬幣的總數(shù)為60枚,問(wèn)共有多少種換法?(注:在兌換中一分、兩分或五分的硬幣數(shù)可以為0枚) 11,set talk off clear n=0 for yi=0 to 100 for er=0 to 50 for wu=0 to 20 if yi+er+wu=60 and yi+2*er+5*wu=100 n=n+1 endif endfor endfor endfor ?n set talk on return,2、編程序求出100到200之間同時(shí)滿足除3余2和除5余3條件的數(shù)的個(gè)數(shù)。 6,set talk off clear n=

40、0 for x=100 to 200 if mod(x,3)=2 and mod(x,5)=3 n=n+1 endif endfor ?n set talk on return,3、編寫(xiě)程序,求四位數(shù)的奇數(shù)中,所有各位數(shù)字之積(且不為0)是125的倍數(shù)的數(shù)的和。161095,方法一: set talk off clear n=0 for i=1000 to 9999 a=int(i/1000) b=int(i-a*1000)/100) c=int(i-a*1000-b*100)/10) d=mod(i,10) if mod(i,2)=1 and mod(a*b*c*d,125)=0 and a

41、!=0 and b!=0 and c!=0 and d!=0 n=n+i endif endfor ?n set talk on return,方法二: set talk off clear n=0 for i=1001 to 9999 step 2 a=int(i/1000) b=int(i-a*1000)/100) c=int(i-a*1000-b*100)/10) d=mod(i,10) if mod(a*b*c*d,125)=0 and at(0,str(i,4)=0 n=n+i endif endfor ?n set talk on return,方法三: set talk off

42、clear n=0 for i=1001 to 9999 step 2 a=int(i/1000) b=int(i-a*1000)/100) c=int(i-a*1000-b*100)/10) d=mod(i,10) if mod(a*b*c*d,125)=0 and at(“0”,str(i,4)=0 或用occurs( )函數(shù) n=n+i endif endfor ?n set talk on return,4、編程序求出 2+4+6+7+10+這樣的數(shù)之和。如果累加數(shù)大于500時(shí),則程序終止并輸出結(jié)果。 510,clear s=0 n=2 DO while s=500 s=s+n n=n

43、+2 enddo ?s return,clear s=0 for i=2 to 500 step 2 s=s+i if s500 exit endif endfor ?s return,7.4 程序的模塊化,結(jié)構(gòu)化程序設(shè)計(jì)方法要求將一個(gè)大的系統(tǒng)分解成若干個(gè)子系統(tǒng),每個(gè)子系統(tǒng)就構(gòu)成一個(gè)程序模塊。模塊是一個(gè)相對(duì)獨(dú)立的程序段,它可以為其他模塊所調(diào)用,也可以去調(diào)用其他模塊。將一個(gè)應(yīng)用程序劃分成一個(gè)個(gè)功能相對(duì)簡(jiǎn)單、單一的模塊程序,不僅有利于程序的開(kāi)發(fā),也有利于程序的閱讀和維護(hù)。VFP模塊化在具體實(shí)現(xiàn)上提供三種形式,它們是子程序、過(guò)程和函數(shù)。,主程序與子程序調(diào)用關(guān)系示意圖,一、子程序,子程序也叫外部過(guò)程,

44、是以程序文件(.PRG)的形式單獨(dú)存儲(chǔ)在磁盤(pán)上。子程序只需錄入一次,就可反復(fù)被調(diào)用執(zhí)行 。 1子程序的結(jié)構(gòu) 在VFP中,子程序的結(jié)構(gòu)與一般的程序文件一樣,可以用MODIFY COMMAND命令來(lái)建立、修改、和存盤(pán),擴(kuò)展名也默認(rèn)為.PRG。 子程序與其他程序文件的唯一區(qū)別是其末尾或返回處必須有返回語(yǔ)句RETURN。 【語(yǔ)句格式】 RETURN TO MASTER|TO 程序文件名|表達(dá)式 【語(yǔ)句功能】該命令中止一個(gè)程序、過(guò)程、或用戶自定義函數(shù)的執(zhí)行,返回上一級(jí)調(diào)用程序、最高級(jí)調(diào)用程序、另外一個(gè)程序或命令窗口。,【語(yǔ)句說(shuō)明】 (1)通常程序執(zhí)行到RETURN時(shí),會(huì)自動(dòng)返回到上級(jí)調(diào) 用程序調(diào)用語(yǔ)句的

45、下一條語(yǔ)句繼續(xù)執(zhí)行。如果是在最高一級(jí)主程序中,則返回命令窗口。 (2)選用TO MASTER 子句時(shí),則返回最高一級(jí)調(diào)用程序,即在命令窗口下,調(diào)用的第一個(gè)主程序。 (3)TO 程序文件名表示程序?qū)⑥D(zhuǎn)向到指定的程序。 (4)如選用表達(dá)式,表示將表達(dá)式的值返回調(diào)用程序,通常用于自定義函數(shù)。 (5) 在程序最后,如果沒(méi)有RETURN命令,則程序運(yùn) 行完畢后,將自動(dòng)默認(rèn)執(zhí)行一個(gè)RETURN命令,但 過(guò)程文件除外。,2子程序的調(diào)用: 【語(yǔ)句格式】 DO |WITH 參數(shù)表 【語(yǔ)句功能】執(zhí)行以或?yàn)槊倪^(guò)程。 【語(yǔ)句說(shuō)明】 WITH參數(shù)表子句用來(lái)指定傳遞到程序或過(guò)程的參數(shù),在參數(shù)表中列出的參數(shù)可以是表達(dá)式、

46、內(nèi)存變量、常量、字段名或用戶自定義函數(shù),各參數(shù)間用逗號(hào)分隔。 【例6-20】分別建立如下程序文件。 * MAIN.PRG SET TALK OFF ? ”正在執(zhí)行主程序” DO SUB1 SET TALK ON *SUB1.PRG ? ”正在執(zhí)行SUB1” RETURN,【例】利用子程序方法求M!/(N!*(M-N)!)(MN) *main.prg *子程序sub.prg clear input M: to m input N: to n s=0 x=m do sub s2=s x=n do sub s3=s x=m-n do sub s4=s s1=s2/(s3*s4) ?s1,s=1 fo

47、r i=1 to x s=s*i endfor return s,二、過(guò)程(內(nèi)部過(guò)程),內(nèi)部過(guò)程:把多個(gè)過(guò)程組織在一個(gè)文件中(這個(gè)文件稱(chēng)之為過(guò)程文件),或者把過(guò)程放在調(diào)用它的程序文件的末尾。 Visual FoxPro為了識(shí)別過(guò)程文件或者程序文件中的不同過(guò)程,規(guī)定過(guò)程文件或者程序文件中的過(guò)程必需用PROCEDURE語(yǔ)句說(shuō)明。其格式為: PROCEDURE PARAMETER RETURN 過(guò)程有兩種存放方式: (1)把所有的過(guò)程集中寫(xiě)入一個(gè)被稱(chēng)為過(guò)程文件(.prg文件)的磁盤(pán)文件中 (2)直接把過(guò)程寫(xiě)在調(diào)用它的主程序文件中,主程序被打開(kāi)時(shí),過(guò)程同時(shí)被調(diào)入內(nèi)存。,1過(guò)程與主程序?qū)懺谕粋€(gè)程序文件

48、里 主程序與過(guò)程的相互關(guān)系如下圖所示。 過(guò)程和子程序都是用DO來(lái)調(diào)用,當(dāng)出現(xiàn)了同名的過(guò)程和子程序時(shí),調(diào)用的順序首先從過(guò)程與主程序在同一文件中調(diào)用,其次從過(guò)程文件中調(diào)用,最后從子程序中調(diào)用。,2過(guò)程寫(xiě)在過(guò)程文件里 主程序與過(guò)程的相互關(guān)系如下圖所示。 調(diào)用過(guò)程之前,首先要打開(kāi)存放該過(guò)程的過(guò)程文件,任何時(shí)候只能打開(kāi)一個(gè)過(guò)程文件。 打開(kāi)過(guò)程文件的命令: SET PROCEDURE TO 關(guān)閉過(guò)程文件的命令: SET PROCEDURE TO或用: CLOSE PROCEDURE,三、過(guò)程文件的建立,過(guò)程文件的建立方法與程序文件相同??捎肕ODIFY COMMAND 命令或調(diào)用其他文字編輯軟件來(lái)建立。

49、過(guò)程文件的結(jié)構(gòu)一般為: PROCEDURE RETURN PROCEDURE RETURN PROCEDURE RETURN,1過(guò)程文件的調(diào)用 調(diào)用某過(guò)程文件中的過(guò)程時(shí),必須先打開(kāi)該過(guò)程文件,打開(kāi)過(guò)程文件命令為: 【格式】SET PROCEDURE TO 任何時(shí)候系統(tǒng)只能打開(kāi)一個(gè)過(guò)程文件,當(dāng)打開(kāi)一個(gè)新的過(guò)程文件時(shí),原已打開(kāi)的過(guò)程文件自動(dòng)關(guān)閉。 2過(guò)程文件的關(guān)閉 關(guān)閉過(guò)程文件可用下列命令: 【格式一】SET PROCEDURE TO 【格式二】CLOSE PROCEDURE,【例】請(qǐng)考察下述程序運(yùn)行流向,求出正確運(yùn)行結(jié)果。 *prog2.prg CLEAR STORE 2 TO I,C,T DO

50、 WHILE I=4 DO PR ? F(+STR(I,1)+ )=+STR(C,2) I=I+1 ENDDO ? T=+STR(T,2) RETURN PROCEDURE PR C=C+2 T=T+C RETURN,四、自定義函數(shù),自定義函數(shù)和過(guò)程一樣,可以以獨(dú)立的程序文件形式單獨(dú)存儲(chǔ)在磁盤(pán)上,也可以放在過(guò)程文件或直接放在程序文件中。 自定義函數(shù)具有如下語(yǔ)法結(jié)構(gòu): FUNCTION PARAMETER RETURN 自定義函數(shù)的調(diào)用語(yǔ)法與系統(tǒng)函數(shù)的調(diào)用相同。和過(guò)程一樣,自定義函數(shù)可以是常規(guī)程序文件的一部分,也可以是獨(dú)立的程序文件。不同的是調(diào)用過(guò)程或子程序使用DO命令,調(diào)用函數(shù)名稱(chēng)后面加上括號(hào)

51、。注意:函數(shù)不是命令,函數(shù)調(diào)用只能出現(xiàn)在表達(dá)式中。,【例】計(jì)算圓面積 *PROG24.PRG SET TALK OFF CLEAR INPUT ”請(qǐng)輸入圓的半徑:” TO R ? ”圓的面積為:”,AREA(R) SET TALK ON FUNCTION AREA & 計(jì)算面積的函數(shù) PARAMETER X & 形參說(shuō)明 RETURN (3.1416*X*2),思考:使用自定義函數(shù)完成:用戶輸入矩形的長(zhǎng)和寬,求出對(duì)應(yīng)的面積。,SET TALK OFF CLEAR INPUT 請(qǐng)輸入矩形一邊的長(zhǎng): TO a INPUT 請(qǐng)輸入矩形另外一邊的長(zhǎng): TO b ? 矩形的面積為: ,AREA(a,b)

52、 SET TALK ON FUNCTION AREA & 計(jì)算面積的函數(shù) PARAMETER x,y & 形參說(shuō)明 RETURN (x*y),五、變量的作用域,1公共(全局)變量 公共變量是指在所有程序模塊中都有效的內(nèi)存變量。 在程序或過(guò)程中定義公共變量的語(yǔ)句為: 【格式】PUBLIC 該命令的功能是建立公共變量,并為它們賦初值為邏輯假.F. 例如,PUBLIC a,b,c(5)建立了三個(gè)公共內(nèi)存變量,它們的初值都是.F. 在命令窗口直接使用的內(nèi)存變量(不必用PUBLIC定義)都是全局變量。,【說(shuō)明】 (1)當(dāng)定義多個(gè)變量時(shí),各變量名之間用逗號(hào)隔開(kāi); (2)用PUBLIC語(yǔ)句定義過(guò)的內(nèi)存變量,

53、在程序執(zhí)行期間可以在任何層次的程序模塊中使用; (3)變量定義語(yǔ)句要放在使用此變量的語(yǔ)句之前,否則會(huì)出錯(cuò); (4)任何已經(jīng)定義為全局變量的變量,可以用PUBLIC語(yǔ)句再定義,但不允許重新定義為局部變量; (5)使用全局變量可以增強(qiáng)模塊間的通信,但會(huì)降低模塊間的獨(dú)立性。,2私有變量 在程序中直接使用(沒(méi)有通過(guò)PUBLIC和LOCAL命令事先聲明)而由系統(tǒng)自動(dòng)隱含建立的變量都是私有變量。私有變量的作用域是建立它的模塊及其下屬各層模塊,一旦建立它的模塊運(yùn)行結(jié)束,這些私有變量將自動(dòng)清除。 3局部變量 局部變量只能在定義它的模塊中使用,不能在上層或下層模塊中使用。當(dāng)定義它的模塊運(yùn)行結(jié)束時(shí),局部變量自動(dòng)釋

54、放。局部變量用LOCAL命令建立: 【格式】LOCAL 【功能】該命令建立指定的局部?jī)?nèi)存變量,并為它們賦初值為邏輯假.F.。,【例如】分析下面程序中變量的作用域 *prog27.prg clear PUBLIC x1 &建立公共變量X1 LOCAL x2 &建立局部變量X2 STORE f TO x3 &建立私有變量X3 DO proc1 ?主程序中- &三個(gè)變量在主程序中都可使用 ?x1=,x1 ?x2=,x2 ?x3=,x3 RETURN PROCEDURE proc1 ? 子程序中- &公共變量和私有變量在子程序中可以使用 ?x1=,x1 ?x3=,x3 RETURN,4變量的隱藏 根據(jù)結(jié)構(gòu)化程序設(shè)計(jì)方法,將應(yīng)用程序分成若干層不同的模塊,有可能在各層模塊中有變量同名的情況。為了解決此問(wèn)題,可以在子程序中使用PRIVATE命令隱藏主程序中可能存在的變量,使得這些變量在子程序中暫時(shí)無(wú)效。其語(yǔ)法格式為: PRIVATE 內(nèi)存變量表| ALL LIKE 通配符EXCEPT 通配符 該命令并不建立內(nèi)存變量,它的作用是:隱藏指定的上層模塊中可能已經(jīng)存在的內(nèi)存變量,使得這些變量在當(dāng)前模塊程序中暫時(shí)無(wú)效。于是這些變量名就可以用來(lái)命名在當(dāng)前模塊或其下屬模塊中需要的私有變量或局部變量,并且不會(huì)

溫馨提示

  • 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)論